普通文本  |  73行  |  2.55 KB

"""Wifi Direct tests."""


from mobly import asserts
from mobly import test_runner
from utils import android_base_test
from utils import assert_utils

SSID = 'SSID'
# The time period that SSID needs to be found.
SCAN_TIMEOUT = 30
# The listen channel and operation channel for wifi direct.
CHANNEL = 1
# The frequency of wifi direct to be expected.
FREQUENCY = 2412


class WifiDirectTest(android_base_test.AndroidBaseTest):
  """Wifi Direct tests."""

  def setup_class(self):
    super(WifiDirectTest, self).setup_class()
    self.station = self.dut_a
    self.group_owner = self.dut_b
    # Sets the tag that represents this device in logs.
    self.station.debug_tag = 'station'
    self.group_owner.debug_tag = 'group_owner'

  def setup_test(self):
    # Make sure wifi of group owner is off to disable wifi direct.
    self.group_owner.android.wifiDisable()
    # Make sure wifi is on.
    self.station.android.wifiEnable()
    self.group_owner.android.wifiEnable()

  def test_wifi_direct_legacy_connection(self):
    """Test for basic Wifi Direct process flow.

    Steps:
      1. Group owner sets up a wifi p2p group.
      2. Station connects to the group as a regular hotspot.

    Verifies:
      Station can connect to the wifi p2p group created by group owner.
    """
    callback = self.group_owner.android.wifiP2pSetChannel(CHANNEL, CHANNEL)
    assert_utils.AssertAsyncSuccess(callback)
    self.group_owner.log.info('Wifi direct channel set.')
    callback = self.group_owner.android.wifiP2pStartGroup()
    group_info = assert_utils.AssertAsyncSuccess(callback)
    self.group_owner.log.info('Wifi direct group started as a temporary group.')
    network_found = self.station.android.wifiScanAndFindSsid(
        group_info.data[SSID], SCAN_TIMEOUT)
    asserts.assert_true(network_found, 'Network is not found within 30 seconds')
    asserts.assert_equal(network_found['frequency'], FREQUENCY)
    self.station.log.info('Network is found, connecting...')
    connect_result = self.station.android.wifiConnectByUpdate(
        group_info.data[SSID], group_info.data['Password'])
    asserts.assert_true(connect_result, 'Failed to connect to the network')
    self.station.log.info('Connected to the network')
    callback = self.group_owner.android.wifiP2pRemoveGroup()
    assert_utils.AssertAsyncSuccess(callback)
    self.group_owner.log.info('Wifi direct group removed')

  def teardown_test(self):
    # Turn wifi off on both devices after test finishes.
    self.station.android.wifiDisable()
    self.group_owner.android.wifiDisable()


if __name__ == '__main__':
  test_runner.main()