Move utils to staticlib
This is a no-op refactoring.
Test: m connectivity_multi_devices_snippet && \
atest CtsConnectivityMultiDevicesTestCases
Bug: 335368434
Change-Id: I415cc22f49c437be6fe8e8ae8822af22ebefe8d1
diff --git a/tests/cts/multidevices/Android.bp b/tests/cts/multidevices/Android.bp
index 1d30d68..dc90adb 100644
--- a/tests/cts/multidevices/Android.bp
+++ b/tests/cts/multidevices/Android.bp
@@ -22,10 +22,10 @@
main: "connectivity_multi_devices_test.py",
srcs: [
"connectivity_multi_devices_test.py",
- "utils/*.py",
],
libs: [
"mobly",
+ "net-tests-utils-host-python-common",
],
test_suites: [
"cts",
diff --git a/tests/cts/multidevices/connectivity_multi_devices_test.py b/tests/cts/multidevices/connectivity_multi_devices_test.py
index abd6fe2..840831b 100644
--- a/tests/cts/multidevices/connectivity_multi_devices_test.py
+++ b/tests/cts/multidevices/connectivity_multi_devices_test.py
@@ -5,9 +5,8 @@
from mobly import test_runner
from mobly import utils
from mobly.controllers import android_device
-from utils import mdns_utils
-from utils import tether_utils
-from utils.tether_utils import UpstreamType
+from net_tests_utils.host.python import mdns_utils, tether_utils
+from net_tests_utils.host.python.tether_utils import UpstreamType
CONNECTIVITY_MULTI_DEVICES_SNIPPET_PACKAGE = "com.google.snippet.connectivity"
diff --git a/tests/cts/multidevices/utils/mdns_utils.py b/tests/cts/multidevices/utils/mdns_utils.py
deleted file mode 100644
index ec1fea0..0000000
--- a/tests/cts/multidevices/utils/mdns_utils.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# 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.
-
-from mobly.controllers import android_device
-
-
-def register_mdns_service_and_discover_resolve(
- advertising_device: android_device, discovery_device: android_device
-) -> None:
- """Test mdns advertising, discovery and resolution
-
- One device registers an mDNS service, and another device discovers and
- resolves that service.
- """
- advertising = advertising_device.connectivity_multi_devices_snippet
- discovery = discovery_device.connectivity_multi_devices_snippet
-
- # Register a mDns service
- advertising.registerMDnsService()
-
- # Ensure the discovery and resolution of the mDNS service
- discovery.ensureMDnsServiceDiscoveryAndResolution()
-
-
-def cleanup_mdns_service(
- advertising_device: android_device, discovery_device: android_device
-) -> None:
- # Unregister the mDns service
- advertising_device.connectivity_multi_devices_snippet.unregisterMDnsService()
- # Stop discovery
- discovery_device.connectivity_multi_devices_snippet.stopMDnsServiceDiscovery()
diff --git a/tests/cts/multidevices/utils/tether_utils.py b/tests/cts/multidevices/utils/tether_utils.py
deleted file mode 100644
index 702b596..0000000
--- a/tests/cts/multidevices/utils/tether_utils.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# 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.
-
-import base64
-import uuid
-
-from mobly import asserts
-from mobly.controllers import android_device
-
-
-class UpstreamType:
- NONE = 0
- CELLULAR = 1
- WIFI = 2
-
-
-def generate_uuid32_base64() -> str:
- """Generates a UUID32 and encodes it in Base64.
-
- Returns:
- str: The Base64-encoded UUID32 string. Which is 22 characters.
- """
- # Strip padding characters to make it safer for hotspot name length limit.
- return base64.b64encode(uuid.uuid1().bytes).decode("utf-8").strip("=")
-
-
-def assume_hotspot_test_preconditions(
- server_device: android_device,
- client_device: android_device,
- upstream_type: UpstreamType,
-) -> None:
- server = server_device.connectivity_multi_devices_snippet
- client = client_device.connectivity_multi_devices_snippet
-
- # Assert pre-conditions specific to each upstream type.
- asserts.skip_if(not client.hasWifiFeature(), "Client requires Wifi feature")
- asserts.skip_if(
- not server.hasHotspotFeature(), "Server requires hotspot feature"
- )
- if upstream_type == UpstreamType.CELLULAR:
- asserts.skip_if(
- not server.hasTelephonyFeature(), "Server requires Telephony feature"
- )
- elif upstream_type == UpstreamType.WIFI:
- asserts.skip_if(
- not server.isStaApConcurrencySupported(),
- "Server requires Wifi AP + STA concurrency",
- )
- elif upstream_type == UpstreamType.NONE:
- pass
- else:
- raise ValueError(f"Invalid upstream type: {upstream_type}")
-
-
-def setup_hotspot_and_client_for_upstream_type(
- server_device: android_device,
- client_device: android_device,
- upstream_type: UpstreamType,
-) -> (str, int):
- """Setup the hotspot with a connected client with the specified upstream type.
-
- This creates a hotspot, make the client connect
- to it, and verify the packet is forwarded by the hotspot.
- And returns interface name of both if successful.
- """
- server = server_device.connectivity_multi_devices_snippet
- client = client_device.connectivity_multi_devices_snippet
-
- if upstream_type == UpstreamType.CELLULAR:
- server.requestCellularAndEnsureDefault()
- elif upstream_type == UpstreamType.WIFI:
- server.ensureWifiIsDefault()
- elif upstream_type == UpstreamType.NONE:
- pass
- else:
- raise ValueError(f"Invalid upstream type: {upstream_type}")
-
- # Generate ssid/passphrase with random characters to make sure nearby devices won't
- # connect unexpectedly. Note that total length of ssid cannot go over 32.
- test_ssid = "HOTSPOT-" + generate_uuid32_base64()
- test_passphrase = generate_uuid32_base64()
-
- # Create a hotspot with fixed SSID and password.
- hotspot_interface = server.startHotspot(test_ssid, test_passphrase)
-
- # Make the client connects to the hotspot.
- client_network = client.connectToWifi(test_ssid, test_passphrase)
-
- return hotspot_interface, client_network
-
-
-def cleanup_tethering_for_upstream_type(
- server_device: android_device, upstream_type: UpstreamType
-) -> None:
- server = server_device.connectivity_multi_devices_snippet
- if upstream_type == UpstreamType.CELLULAR:
- server.unregisterAll()
- # Teardown the hotspot.
- server.stopAllTethering()