Merge "Thread: add multi-device test" into main
This commit is contained in:
commit
45d7e1cffd
4 changed files with 164 additions and 0 deletions
|
|
@ -11,5 +11,8 @@
|
|||
}
|
||||
],
|
||||
"postsubmit": [
|
||||
{
|
||||
"name": "ThreadNetworkMultiDeviceTests"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
43
thread/tests/multidevices/Android.bp
Normal file
43
thread/tests/multidevices/Android.bp
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
//
|
||||
// Copyright (C) 2024 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package {
|
||||
default_team: "trendy_team_fwk_thread_network",
|
||||
default_applicable_licenses: ["Android-Apache-2.0"],
|
||||
}
|
||||
|
||||
python_test_host {
|
||||
name: "ThreadNetworkMultiDeviceTestCases",
|
||||
main: "thread_network_multi_device_test.py",
|
||||
srcs: ["thread_network_multi_device_test.py"],
|
||||
test_config: "AndroidTest.xml",
|
||||
libs: [
|
||||
"mobly",
|
||||
],
|
||||
test_options: {
|
||||
unit_test: false,
|
||||
tags: ["mobly"],
|
||||
},
|
||||
test_suites: [
|
||||
"mts-tethering",
|
||||
"general-tests",
|
||||
],
|
||||
version: {
|
||||
py3: {
|
||||
embedded_launcher: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
51
thread/tests/multidevices/AndroidTest.xml
Normal file
51
thread/tests/multidevices/AndroidTest.xml
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2024 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<configuration description="Config for Thread Multi-device test cases">
|
||||
<option name="config-descriptor:metadata" key="component" value="threadnetwork" />
|
||||
<option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
|
||||
<option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
|
||||
<option name="config-descriptor:metadata" key="parameter" value="secondary_user" />
|
||||
<option name="config-descriptor:metadata" key="mainline-param" value="com.google.android.tethering.apex" />
|
||||
|
||||
<object class="com.android.tradefed.testtype.suite.module.DeviceFeatureModuleController"
|
||||
type="module_controller">
|
||||
<option name="required-feature" value="android.hardware.thread_network" />
|
||||
</object>
|
||||
<object type="module_controller" class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
|
||||
<option name="mainline-module-package-name" value="com.google.android.tethering" />
|
||||
</object>
|
||||
<!--
|
||||
Only run tests if the device under test is SDK version 34 (Android 14) or above.
|
||||
-->
|
||||
<object type="module_controller"
|
||||
class="com.android.tradefed.testtype.suite.module.Sdk34ModuleController" />
|
||||
|
||||
<device name="device1">
|
||||
<target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
|
||||
</device>
|
||||
<device name="device2">
|
||||
<target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
|
||||
</device>
|
||||
|
||||
<test class="com.android.tradefed.testtype.mobly.MoblyBinaryHostTest">
|
||||
<!-- The mobly-par-file-name should match the module name -->
|
||||
<option name="mobly-par-file-name" value="ThreadMultiDeviceTestCases" />
|
||||
<!-- Timeout limit in milliseconds for all test cases of the python binary -->
|
||||
<option name="mobly-test-timeout" value="180000" />
|
||||
</test>
|
||||
</configuration>
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
# Copyright (C) 2024 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# Lint as: python3
|
||||
|
||||
import logging
|
||||
import time
|
||||
|
||||
from mobly import asserts
|
||||
from mobly import base_test
|
||||
from mobly import test_runner
|
||||
from mobly.controllers import android_device
|
||||
|
||||
class ThreadNetworkMultiDeviceTest(base_test.BaseTestClass):
|
||||
def setup_class(self):
|
||||
self.node_a, self.node_b = self.register_controller(
|
||||
android_device, min_number=2)
|
||||
self.node_a.adb.shell([
|
||||
'ot-ctl', 'factoryreset',
|
||||
])
|
||||
self.node_b.adb.shell([
|
||||
'ot-ctl', 'factoryreset',
|
||||
])
|
||||
time.sleep(1)
|
||||
|
||||
def ot_ctl(self, node, cmd, expect_done=True):
|
||||
args = cmd.split(' ')
|
||||
args = ['ot-ctl'] + args
|
||||
stdout = node.adb.shell(args).decode('utf-8')
|
||||
if expect_done:
|
||||
asserts.assert_in('Done', stdout)
|
||||
return stdout
|
||||
|
||||
def test_b_should_be_able_to_discover_a(self):
|
||||
self.ot_ctl(self.node_a, 'dataset init new')
|
||||
self.ot_ctl(self.node_a, 'dataset commit active')
|
||||
self.ot_ctl(self.node_a, 'ifconfig up')
|
||||
self.ot_ctl(self.node_a, 'thread start')
|
||||
self.ot_ctl(self.node_a, 'state leader')
|
||||
stdout = self.ot_ctl(self.node_a, 'extaddr')
|
||||
extaddr = stdout.splitlines()[0]
|
||||
logging.info('node a extaddr: %s', extaddr)
|
||||
asserts.assert_equal(len(extaddr), 16)
|
||||
|
||||
stdout = self.ot_ctl(self.node_b, 'scan')
|
||||
asserts.assert_in(extaddr, stdout)
|
||||
logging.info('discovered node a')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# Take test args
|
||||
if '--' in sys.argv:
|
||||
index = sys.argv.index('--')
|
||||
sys.argv = sys.argv[:1] + sys.argv[index + 1:]
|
||||
|
||||
test_runner.main()
|
||||
Loading…
Reference in a new issue