[Thread] add ThreadNetworkIntegrationTests to mts-tethering
Bug: 299853805 Change-Id: I567142a8bf8c735b65048d985e94d958a7feef03
This commit is contained in:
parent
8f9544539b
commit
25bcfee4e3
3 changed files with 71 additions and 25 deletions
|
|
@ -41,11 +41,13 @@ android_test {
|
|||
name: "ThreadNetworkIntegrationTests",
|
||||
platform_apis: true,
|
||||
manifest: "AndroidManifest.xml",
|
||||
test_config: "AndroidTest.xml",
|
||||
defaults: [
|
||||
"framework-connectivity-test-defaults",
|
||||
"ThreadNetworkIntegrationTestsDefaults"
|
||||
"ThreadNetworkIntegrationTestsDefaults",
|
||||
],
|
||||
test_suites: [
|
||||
"mts-tethering",
|
||||
"general-tests",
|
||||
],
|
||||
srcs: [
|
||||
|
|
|
|||
44
thread/tests/integration/AndroidTest.xml
Normal file
44
thread/tests/integration/AndroidTest.xml
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
<?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 integration tests">
|
||||
<option name="test-tag" value="ThreadNetworkIntegrationTests" />
|
||||
<option name="test-suite-tag" value="apct" />
|
||||
|
||||
<!--
|
||||
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" />
|
||||
|
||||
<!-- Run tests in MTS only if the Tethering Mainline module is installed. -->
|
||||
<object type="module_controller"
|
||||
class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
|
||||
<option name="mainline-module-package-name" value="com.google.android.tethering" />
|
||||
</object>
|
||||
|
||||
<!-- Install test -->
|
||||
<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
|
||||
<option name="test-file-name" value="ThreadNetworkIntegrationTests.apk" />
|
||||
<option name="check-min-sdk" value="true" />
|
||||
<option name="cleanup-apks" value="true" />
|
||||
</target_preparer>
|
||||
|
||||
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
|
||||
<option name="package" value="com.android.thread.tests.integration" />
|
||||
</test>
|
||||
</configuration>
|
||||
|
|
@ -32,9 +32,10 @@ import static com.android.testutils.TestNetworkTrackerKt.initTestNetwork;
|
|||
import static com.android.testutils.TestPermissionUtil.runAsShell;
|
||||
|
||||
import static com.google.common.io.BaseEncoding.base16;
|
||||
import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assume.assumeNotNull;
|
||||
import static org.junit.Assume.assumeTrue;
|
||||
|
||||
import android.content.Context;
|
||||
|
|
@ -50,8 +51,6 @@ import androidx.test.runner.AndroidJUnit4;
|
|||
import com.android.testutils.TapPacketReader;
|
||||
import com.android.testutils.TestNetworkTracker;
|
||||
|
||||
import com.google.common.util.concurrent.MoreExecutors;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
|
@ -68,9 +67,7 @@ import java.util.concurrent.TimeUnit;
|
|||
public class BorderRoutingTest {
|
||||
private static final String TAG = BorderRoutingTest.class.getSimpleName();
|
||||
private final Context mContext = ApplicationProvider.getApplicationContext();
|
||||
private final ThreadNetworkManager mThreadNetworkManager =
|
||||
mContext.getSystemService(ThreadNetworkManager.class);
|
||||
private ThreadNetworkController mThreadNetworkController;
|
||||
private ThreadNetworkController mController;
|
||||
private HandlerThread mHandlerThread;
|
||||
private Handler mHandler;
|
||||
private TestNetworkTracker mInfraNetworkTracker;
|
||||
|
|
@ -88,12 +85,18 @@ public class BorderRoutingTest {
|
|||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
final ThreadNetworkManager manager = mContext.getSystemService(ThreadNetworkManager.class);
|
||||
if (manager != null) {
|
||||
mController = manager.getAllThreadNetworkControllers().get(0);
|
||||
}
|
||||
|
||||
// Run the tests on only devices where the Thread feature is available
|
||||
assumeNotNull(mController);
|
||||
|
||||
mHandlerThread = new HandlerThread(getClass().getSimpleName());
|
||||
mHandlerThread.start();
|
||||
mHandler = new Handler(mHandlerThread.getLooper());
|
||||
var threadControllers = mThreadNetworkManager.getAllThreadNetworkControllers();
|
||||
assertEquals(threadControllers.size(), 1);
|
||||
mThreadNetworkController = threadControllers.get(0);
|
||||
|
||||
mInfraNetworkTracker =
|
||||
runAsShell(
|
||||
MANAGE_TEST_NETWORKS,
|
||||
|
|
@ -105,27 +108,28 @@ public class BorderRoutingTest {
|
|||
NETWORK_SETTINGS,
|
||||
() -> {
|
||||
CountDownLatch latch = new CountDownLatch(1);
|
||||
mThreadNetworkController.setTestNetworkAsUpstream(
|
||||
mController.setTestNetworkAsUpstream(
|
||||
mInfraNetworkTracker.getTestIface().getInterfaceName(),
|
||||
MoreExecutors.directExecutor(),
|
||||
v -> {
|
||||
latch.countDown();
|
||||
});
|
||||
directExecutor(),
|
||||
v -> latch.countDown());
|
||||
latch.await();
|
||||
});
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
if (mController == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
runAsShell(
|
||||
PERMISSION_THREAD_NETWORK_PRIVILEGED,
|
||||
NETWORK_SETTINGS,
|
||||
() -> {
|
||||
CountDownLatch latch = new CountDownLatch(2);
|
||||
mThreadNetworkController.setTestNetworkAsUpstream(
|
||||
null, MoreExecutors.directExecutor(), v -> latch.countDown());
|
||||
mThreadNetworkController.leave(
|
||||
MoreExecutors.directExecutor(), v -> latch.countDown());
|
||||
mController.setTestNetworkAsUpstream(
|
||||
null, directExecutor(), v -> latch.countDown());
|
||||
mController.leave(directExecutor(), v -> latch.countDown());
|
||||
latch.await(10, TimeUnit.SECONDS);
|
||||
});
|
||||
runAsShell(MANAGE_TEST_NETWORKS, () -> mInfraNetworkTracker.teardown());
|
||||
|
|
@ -150,12 +154,8 @@ public class BorderRoutingTest {
|
|||
// BR forms a network.
|
||||
runAsShell(
|
||||
PERMISSION_THREAD_NETWORK_PRIVILEGED,
|
||||
() -> {
|
||||
mThreadNetworkController.join(
|
||||
DEFAULT_DATASET, MoreExecutors.directExecutor(), result -> {});
|
||||
});
|
||||
waitForStateAnyOf(
|
||||
mThreadNetworkController, List.of(DEVICE_ROLE_LEADER), 30 /* timeoutSeconds */);
|
||||
() -> mController.join(DEFAULT_DATASET, directExecutor(), result -> {}));
|
||||
waitForStateAnyOf(mController, List.of(DEVICE_ROLE_LEADER), 30 /* timeoutSeconds */);
|
||||
|
||||
// Creates a Full Thread Device (FTD) and lets it join the network.
|
||||
FullThreadDevice ftd = new FullThreadDevice(5 /* node ID */);
|
||||
|
|
|
|||
Loading…
Reference in a new issue