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