blob: a68144d35ac87b7f9039406522c2485ebf8fcaae [file] [log] [blame]
Bindu Mahadev1c895c22018-01-18 18:20:43 -08001#!/usr/bin/env python3.4
2#
3# Copyright 2018 - The Android Open Source Project
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17import itertools
18import pprint
19import queue
20import time
21
22import acts.base_test
23import acts.signals
24import acts.test_utils.wifi.wifi_test_utils as wutils
25import acts.utils
26
27from acts import asserts
28from acts.test_decorators import test_tracker_info
29from acts.test_utils.wifi.WifiBaseTest import WifiBaseTest
30
31
32class WifiHiddenSSIDTest(WifiBaseTest):
33 """Tests for APIs in Android's WifiManager class.
34
35 Test Bed Requirement:
36 * One Android device
37 * Several Wi-Fi networks visible to the device, including an open Wi-Fi
38 network.
39 """
40
Bindu Mahadev1c895c22018-01-18 18:20:43 -080041 def setup_class(self):
Xianyuan Jia168103b2019-09-06 12:22:52 -070042 super().setup_class()
43
Bindu Mahadev1c895c22018-01-18 18:20:43 -080044 self.dut = self.android_devices[0]
45 wutils.wifi_test_device_init(self.dut)
46 req_params = []
47 opt_param = [
48 "open_network", "reference_networks"]
49 self.unpack_userparams(
50 req_param_names=req_params, opt_param_names=opt_param)
51
52 if "AccessPoint" in self.user_params:
53 self.legacy_configure_ap_and_start(hidden=True)
54
55 asserts.assert_true(
56 len(self.reference_networks) > 0,
57 "Need at least one reference network with psk.")
58 self.open_hidden_2g = self.open_network[0]["2g"]
59 self.open_hidden_5g = self.open_network[0]["5g"]
60 self.wpa_hidden_2g = self.reference_networks[0]["2g"]
61 self.wpa_hidden_5g = self.reference_networks[0]["5g"]
62
63 def setup_test(self):
64 self.dut.droid.wakeLockAcquireBright()
65 self.dut.droid.wakeUpNow()
66
67 def teardown_test(self):
68 self.dut.droid.wakeLockRelease()
69 self.dut.droid.goToSleepNow()
70
71 def on_fail(self, test_name, begin_time):
72 self.dut.take_bug_report(test_name, begin_time)
73 self.dut.cat_adb_log(test_name, begin_time)
74
75 def teardown_class(self):
76 wutils.reset_wifi(self.dut)
77 if "AccessPoint" in self.user_params:
78 del self.user_params["reference_networks"]
79 del self.user_params["open_network"]
80
81 """Helper Functions"""
82
83 def check_hiddenSSID_in_scan(self, ap_ssid, max_tries=2):
84 """Check if the ap started by wifi tethering is seen in scan results.
85
86 Args:
87 ap_ssid: SSID of the ap we are looking for.
88 max_tries: Number of scans to try.
89 Returns:
90 True: if ap_ssid is found in scan results.
91 False: if ap_ssid is not found in scan results.
92 """
93 for num_tries in range(max_tries):
94 wutils.start_wifi_connection_scan(self.dut)
95 scan_results = self.dut.droid.wifiGetScanResults()
96 match_results = wutils.match_networks(
97 {wutils.WifiEnums.SSID_KEY: ap_ssid}, scan_results)
98 if len(match_results) > 0:
99 return True
100 return False
101
102 def add_hiddenSSID_and_connect(self, hidden_network):
103 """Add the hidden network and connect to it.
104
105 Args:
106 hidden_network: The hidden network config to connect to.
107
108 """
Hsiu-Chang Chence489dd2019-06-12 15:37:19 +0800109 wutils.connect_to_wifi_network(self.dut, hidden_network, hidden=True)
Bindu Mahadev1c895c22018-01-18 18:20:43 -0800110 if not wutils.validate_connection(self.dut):
111 raise signals.TestFailure("Fail to connect to internet on %s" %
112 hidden_network)
113
114 """Tests"""
115
116 @test_tracker_info(uuid="d0871f98-6049-4937-a288-ec4a2746c771")
117 def test_connect_to_wpa_hidden_2g(self):
118 """Connect to a WPA, 2G network.
119
120 Steps:
121 1. Add a WPA, 2G hidden network.
122 2. Ensure the network is visible in scan.
123 3. Connect and run ping.
124
125 """
126 self.add_hiddenSSID_and_connect(self.wpa_hidden_2g)
127
128 @test_tracker_info(uuid="c558b31a-549a-4012-9052-275623992187")
129 def test_connect_to_wpa_hidden_5g(self):
130 """Connect to a WPA, 5G hidden network.
131
132 Steps:
133 1. Add a WPA, 5G hidden network.
134 2. Ensure the network is visible in scan.
135 3. Connect and run ping.
136
137 """
138 self.add_hiddenSSID_and_connect(self.wpa_hidden_5g)
139
140 @test_tracker_info(uuid="cdfce76f-6374-439d-aa1d-e920508269d2")
141 def test_connect_to_open_hidden_2g(self):
142 """Connect to a Open, 2G hidden network.
143
144 Steps:
145 1. Add a Open, 2G hidden network.
146 2. Ensure the network is visible in scan.
147 3. Connect and run ping.
148
149 """
150 self.add_hiddenSSID_and_connect(self.open_hidden_2g)
151
152 @test_tracker_info(uuid="29ccbae4-4382-4df8-8fc5-00e3104230d0")
153 def test_connect_to_open_hidden_5g(self):
154 """Connect to a Open, 5G hidden network.
155
156 Steps:
157 1. Add a Open, 5G hidden network.
158 2. Ensure the network is visible in scan.
159 3. Connect and run ping.
160
161 """
162 self.add_hiddenSSID_and_connect(self.open_hidden_5g)