普通文本  |  72行  |  2.31 KB

"""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()