1 #!/usr/bin/env python 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. 3 # Use of this source code is governed by a BSD-style license that can be 4 # found in the LICENSE file. 5 6 import pyauto_functional 7 import chromeos_network # pyauto_functional must come before chromeos_network 8 9 10 class ChromeosWifiCompliance(chromeos_network.PyNetworkUITest): 11 """Tests for ChromeOS wifi complaince. 12 13 These tests should be run within vacinity of the power strip where the wifi 14 routers are attached. 15 """ 16 17 def _BasicConnectRouterCompliance(self, router_name): 18 """Generic basic test routine for connecting to a router. 19 20 Args: 21 router_name: The name of the router. 22 """ 23 self.InitWifiPowerStrip() 24 router = self.GetRouterConfig(router_name) 25 self.RouterPower(router_name, True) 26 27 # If the wifi network is expected to be invisible, the following 28 # line should timeout which is expected. 29 wifi_visible = self.WaitUntilWifiNetworkAvailable(router['ssid'], 30 is_hidden=router.get('hidden')) 31 32 # Note, we expect wifi_visible and 'hidden' status to be opposites. 33 # The test fails if the network visibility is not as expected. 34 if wifi_visible == router.get('hidden', False): 35 self.fail('We expected wifi network "%s" to be %s, but it was not.' % 36 (router['ssid'], 37 {True: 'hidden', False: 'visible'}[router.get('hidden', 38 False)])) 39 40 # Verify connect did not have any errors. 41 error = self.ConnectToWifiRouter(router_name) 42 self.assertFalse(error, 'Failed to connect to wifi network %s. ' 43 'Reason: %s.' % (router['ssid'], error)) 44 45 # Verify the network we connected to. 46 ssid = self.GetConnectedWifi() 47 self.assertEqual(ssid, router['ssid'], 48 'Did not successfully connect to wifi network %s.' % ssid) 49 50 self.DisconnectFromWifiNetwork() 51 52 def testConnectBelkinG(self): 53 """Test connecting to the Belkin G router.""" 54 self._BasicConnectRouterCompliance('Belkin_G') 55 56 def testConnectBelkinNPlus(self): 57 """Test connecting to the Belkin N+ router.""" 58 self._BasicConnectRouterCompliance('Belkin_N+') 59 60 def testConnectDLinkN150(self): 61 """Test connecting to the D-Link N150 router.""" 62 self._BasicConnectRouterCompliance('D-Link_N150') 63 64 def testConnectLinksysE3000(self): 65 """Test connecting to the Linksys E3000 router. 66 67 The LinksysE3000 supports broadcasting of up to 2 SSID's. 68 This test will try connecting to each of them one at a time. 69 """ 70 self._BasicConnectRouterCompliance('LinksysE3000') 71 self._BasicConnectRouterCompliance('LinksysE3000_2') 72 73 def testConnectLinksysWRT54G2(self): 74 """Test connecting to the Linksys WRT54G2 router.""" 75 self._BasicConnectRouterCompliance('Linksys_WRT54G2') 76 77 def testConnectLinksysWRT54GL(self): 78 """Test connecting to the LinksysWRT54GL router.""" 79 self._BasicConnectRouterCompliance('Linksys_WRT54GL') 80 81 def testConnectNetgearN300(self): 82 """Test connecting to the Netgear N300 router.""" 83 self._BasicConnectRouterCompliance('Netgear_N300') 84 85 def testConnectNetgearWGR614(self): 86 """Test connecting to the Netgear WGR 614 router.""" 87 self._BasicConnectRouterCompliance('Netgear_WGR614') 88 89 def testConnectNfiniti(self): 90 """Test connecting to the Nfiniti router.""" 91 self._BasicConnectRouterCompliance('Nfiniti') 92 93 def testConnectSMCWBR145(self): 94 """Test connecting to the SMC WBR 145 router.""" 95 self._BasicConnectRouterCompliance('SMC_WBR145') 96 97 def testConnectTrendnet_639gr(self): 98 """Test connecting to the Trendnet 639gr router. 99 100 The LinksysE3000 supports broadcasting of up to 4 SSID's. 101 This test will try connecting to each of them one at a time. 102 """ 103 self._BasicConnectRouterCompliance('Trendnet_639gr') 104 self._BasicConnectRouterCompliance('Trendnet_639gr_2') 105 self._BasicConnectRouterCompliance('Trendnet_639gr_3') 106 self._BasicConnectRouterCompliance('Trendnet_639gr_4') 107 108 109 if __name__ == '__main__': 110 pyauto_functional.Main() 111