| from acts import asserts |
| from acts import base_test |
| from acts.test_decorators import test_tracker_info |
| from acts_contrib.test_utils.net import net_test_utils as nutils |
| from acts_contrib.test_utils.wifi import wifi_test_utils as wutils |
| from scapy.all import get_if_list |
| from scapy.all import get_if_raw_hwaddr |
| |
| DUMSYS_CMD = "dumpsys connectivity tethering" |
| UPSTREAM_WANTED_STRING = "Upstream wanted" |
| CURRENT_UPSTREAM_STRING = "Current upstream interface" |
| SSID = wutils.WifiEnums.SSID_KEY |
| |
| |
| class UsbTetheringTest(base_test.BaseTestClass): |
| """Tests for tethering.""" |
| |
| def setup_class(self): |
| self.dut = self.android_devices[0] |
| self.USB_TETHERED = False |
| |
| nutils.verify_lte_data_and_tethering_supported(self.dut) |
| req_params = ("wifi_network",) |
| self.unpack_userparams(req_params) |
| |
| def teardown_class(self): |
| nutils.stop_usb_tethering(self.dut) |
| self.USB_TETHERED = False |
| wutils.reset_wifi(self.dut) |
| |
| def on_fail(self, test_name, begin_time): |
| self.dut.take_bug_report(test_name, begin_time) |
| |
| @test_tracker_info(uuid="140a064b-1ab0-4a92-8bdb-e52dde03d5b8") |
| def test_usb_tethering_over_wifi(self): |
| """Tests USB tethering over wifi. |
| |
| Steps: |
| 1. Connects to a wifi network |
| 2. Enables USB tethering |
| 3. Verifies wifi is preferred upstream over data connection |
| """ |
| |
| wutils.start_wifi_connection_scan_and_ensure_network_found( |
| self.dut, self.wifi_network[SSID]) |
| wutils.wifi_connect(self.dut, self.wifi_network) |
| wifi_network = self.dut.droid.connectivityGetActiveNetwork() |
| self.log.info("wifi network %s" % wifi_network) |
| |
| iflist_before = get_if_list() |
| nutils.start_usb_tethering(self.dut) |
| self.USB_TETHERED = True |
| self.iface = nutils.wait_for_new_iface(iflist_before) |
| self.real_hwaddr = get_if_raw_hwaddr(self.iface) |
| |
| output = self.dut.adb.shell(DUMSYS_CMD) |
| for line in output.split("\n"): |
| if UPSTREAM_WANTED_STRING in line: |
| asserts.assert_true("true" in line, "Upstream interface is not active") |
| self.log.info("Upstream interface is active") |
| if CURRENT_UPSTREAM_STRING in line: |
| asserts.assert_true("wlan" in line, "WiFi is not the upstream " |
| "interface") |
| self.log.info("WiFi is the upstream interface") |
| |