| """Local hotspot tests.""" |
| |
| import time |
| |
| |
| |
| from mobly import asserts |
| from mobly import test_runner |
| from utils import android_base_test |
| |
| SSID = 'SSID' |
| # Number of seconds for the receiver to restore wifi state. |
| RESTORE_TIME = 20 |
| # The time period that SSID needs to be found. |
| SCAN_TIMEOUT = 30 |
| |
| |
| class LocalHotspotTest(android_base_test.AndroidBaseTest): |
| """Local hotspot tests.""" |
| |
| def setup_class(self): |
| super(LocalHotspotTest, self).setup_class() |
| self.station = self.dut_a |
| self.ap = self.dut_b |
| # The device used to discover Bluetooth devices and send messages. |
| # Sets the tag that represents this device in logs. |
| self.station.debug_tag = 'station' |
| # The device that is expected to be discovered and receive messages. |
| self.ap.debug_tag = 'ap' |
| |
| def setup_test(self): |
| # Make sure wifi is on. |
| self.station.android.wifiEnable() |
| self.ap.android.wifiEnable() |
| |
| def test_local_hotspot_process(self): |
| """Test for basic local hotspot process flow. |
| |
| Steps: |
| 1. Ap sets up a local hotspot and retrieves the credentials. |
| 2. Station connects to the hotspot. |
| |
| Verifies: |
| Station can connect to the local hotspot created by ap. |
| """ |
| wifi_on_before = self.ap.android.wifiIsEnabled() |
| start_localhotspot_callback = self.ap.android.startLocalHotspot() |
| start_result = start_localhotspot_callback.waitAndGet('onStarted', 30) |
| local_hotspot_info = start_result.data |
| self.ap.log.info('Local hotspot started') |
| network_found = self.station.android.wifiScanAndFindSsid( |
| local_hotspot_info[SSID], SCAN_TIMEOUT) |
| asserts.assert_true(network_found, 'Network is not found within 30 seconds') |
| self.station.android.wifiConnectByUpdate(local_hotspot_info[SSID], |
| local_hotspot_info['Password']) |
| self.station.log.info('Connected to the network %s.' |
| % local_hotspot_info[SSID]) |
| self.ap.android.stopLocalHotspot() |
| time.sleep(RESTORE_TIME) |
| wifi_on_after = self.ap.android.wifiIsEnabled() |
| asserts.assert_equal(wifi_on_before, wifi_on_after) |
| self.ap.log.info('Wifi state restored') |
| |
| def teardown_test(self): |
| # Turn wifi off on both devices after test finishes. |
| self.station.android.wifiDisable() |
| self.ap.android.wifiDisable() |
| |
| |
| if __name__ == '__main__': |
| test_runner.main() |