1c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal# Copyright (c) 2013 The Chromium OS Authors. All rights reserved. 2c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal# Use of this source code is governed by a BSD-style license that can be 3c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal# found in the LICENSE file. 4c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal 5886ce0247b2f88cfd1fd13632890046dd308589bmukesh agrawalimport errno 64cc12447198875eed30c7b8cd2dd92d48df77d99mukesh agrawalimport logging 7c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawalimport os 886741ed516aaad5235335a599e880f5c4451f2bdChristopher Wileyimport time 9c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal 10c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawalfrom autotest_lib.client.bin import test 1112db329526658a402b84a25f65a1711039ebc76eChung-yih Wangfrom autotest_lib.client.common_lib import error, utils 1268c95cf4c39180a0ae8474af72a22e92665764a2mukesh agrawalfrom autotest_lib.client.cros.networking import shill_context 131f89fd2f9f2010e732a87ed3c8f7f25777862c59Christopher Wileyfrom autotest_lib.client.cros.networking import shill_proxy 14c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal 15c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawalclass network_DefaultProfileCreation(test.test): 16c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal """The Default Profile Creation class. 17c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal 18c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal Wipe the default profile, start shill, and check that a default 19c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal profile has been created. 20c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal 21c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal Test that the default profile contains default values for properties 22c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal that should have them. 23c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal 24c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal """ 25c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal DEFAULT_PROFILE_PATH = '/var/cache/shill/default.profile' 26c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal EXPECTED_SETTINGS = [ 27c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal # From DefaultProfile::LoadManagerProperties 28c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal 'CheckPortalList=ethernet,wifi,cellular', 29c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal 'IgnoredDNSSearchPaths=gateway.2wire.net', 30c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal 'LinkMonitorTechnologies=wifi', 31c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal 'PortalURL=http://www.gstatic.com/generate_204', 32c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal 'PortalCheckInterval=30', 33c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal ] 3486741ed516aaad5235335a599e880f5c4451f2bdChristopher Wiley PROFILE_LOAD_TIMEOUT_SECONDS = 5 35c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal version = 1 36c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal 37c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal 38c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal def run_once(self): 39c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal """Test main loop.""" 4012db329526658a402b84a25f65a1711039ebc76eChung-yih Wang # TODO: Remove the following block once the bug(crbug.com/594336) 4112db329526658a402b84a25f65a1711039ebc76eChung-yih Wang # is fixed. 4212db329526658a402b84a25f65a1711039ebc76eChung-yih Wang boards_to_skip = ['cyan-cheets'] 4312db329526658a402b84a25f65a1711039ebc76eChung-yih Wang dut_board = utils.get_current_board() 4412db329526658a402b84a25f65a1711039ebc76eChung-yih Wang if dut_board in boards_to_skip: 4512db329526658a402b84a25f65a1711039ebc76eChung-yih Wang logging.info("Skipping test run on this board.") 4612db329526658a402b84a25f65a1711039ebc76eChung-yih Wang return 4712db329526658a402b84a25f65a1711039ebc76eChung-yih Wang 4868c95cf4c39180a0ae8474af72a22e92665764a2mukesh agrawal with shill_context.stopped_shill(): 4968c95cf4c39180a0ae8474af72a22e92665764a2mukesh agrawal try: 5068c95cf4c39180a0ae8474af72a22e92665764a2mukesh agrawal os.remove(self.DEFAULT_PROFILE_PATH) 5168c95cf4c39180a0ae8474af72a22e92665764a2mukesh agrawal except OSError as e: 5268c95cf4c39180a0ae8474af72a22e92665764a2mukesh agrawal if e.errno != errno.ENOENT: 5368c95cf4c39180a0ae8474af72a22e92665764a2mukesh agrawal raise e 5486741ed516aaad5235335a599e880f5c4451f2bdChristopher Wiley shill = shill_proxy.ShillProxy.get_proxy() 5586741ed516aaad5235335a599e880f5c4451f2bdChristopher Wiley start_time = time.time() 564d02b37c58e11de374a1ab42466593b14860a2a5Paul Stewart profile = None 5786741ed516aaad5235335a599e880f5c4451f2bdChristopher Wiley while time.time() - start_time < self.PROFILE_LOAD_TIMEOUT_SECONDS: 5886741ed516aaad5235335a599e880f5c4451f2bdChristopher Wiley if shill.get_profiles(): 594d02b37c58e11de374a1ab42466593b14860a2a5Paul Stewart with open(self.DEFAULT_PROFILE_PATH) as f: 604d02b37c58e11de374a1ab42466593b14860a2a5Paul Stewart profile = f.read() 614d02b37c58e11de374a1ab42466593b14860a2a5Paul Stewart if profile: 624d02b37c58e11de374a1ab42466593b14860a2a5Paul Stewart break 634d02b37c58e11de374a1ab42466593b14860a2a5Paul Stewart 644d02b37c58e11de374a1ab42466593b14860a2a5Paul Stewart time.sleep(1) 6586741ed516aaad5235335a599e880f5c4451f2bdChristopher Wiley else: 66886ce0247b2f88cfd1fd13632890046dd308589bmukesh agrawal if profile is None: 674d02b37c58e11de374a1ab42466593b14860a2a5Paul Stewart raise error.TestFail('shill should load a profile within ' 684d02b37c58e11de374a1ab42466593b14860a2a5Paul Stewart '%d seconds.' % 694d02b37c58e11de374a1ab42466593b14860a2a5Paul Stewart self.PROFILE_LOAD_TIMEOUT_SECONDS) 704d02b37c58e11de374a1ab42466593b14860a2a5Paul Stewart else: 714d02b37c58e11de374a1ab42466593b14860a2a5Paul Stewart raise error.TestFail('shill profile is still empty after ' 724d02b37c58e11de374a1ab42466593b14860a2a5Paul Stewart '%d seconds.' % 734d02b37c58e11de374a1ab42466593b14860a2a5Paul Stewart self.PROFILE_LOAD_TIMEOUT_SECONDS) 74c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal 754d02b37c58e11de374a1ab42466593b14860a2a5Paul Stewart logging.info('Profile contents after %d seconds:\%s', 764d02b37c58e11de374a1ab42466593b14860a2a5Paul Stewart time.time() - start_time, profile) 77c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal for setting in self.EXPECTED_SETTINGS: 78c4f34095f1e7bed8bd526eec8a13fa395f801d83mukesh agrawal if setting not in profile: 794cc12447198875eed30c7b8cd2dd92d48df77d99mukesh agrawal logging.error('Did not find setting %s', setting) 804cc12447198875eed30c7b8cd2dd92d48df77d99mukesh agrawal logging.error('Full profile contents are:\n%s', profile) 814cc12447198875eed30c7b8cd2dd92d48df77d99mukesh agrawal raise error.TestFail('Missing setting(s) in default profile.') 82