# Copyright 2015 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import logging import common from autotest_lib.client.common_lib import error from autotest_lib.client.common_lib import global_config from autotest_lib.client.common_lib import utils from autotest_lib.client.common_lib.cros import retry from autotest_lib.server import afe_utils from autotest_lib.server import test from autotest_lib.server.brillo import host_utils _DEFAULT_PING_HOST = 'www.google.com' _DEFAULT_PING_COUNT = 4 _DEFAULT_PING_TIMEOUT = 4 class brillo_PingTest(test.test): """Ping an Internet host.""" version = 1 def run_once(self, host=None, ssid=None, passphrase=None, ping_host=_DEFAULT_PING_HOST, ping_count=_DEFAULT_PING_COUNT, ping_timeout=_DEFAULT_PING_TIMEOUT): """Pings an Internet host with given timeout and count values. @param host: A host object representing the DUT. @param ssid: Ssid to connect to. @param passphrase: A string representing the passphrase to the ssid. @param ping_host: The Internet host to ping. @param ping_count: The number of pings to attempt. The test passes if we get at least one reply. @param ping_timeout: The number of seconds to wait for a reply. @raise TestFail: The test failed. """ if afe_utils.host_in_lab(host): ssid = utils.get_wireless_ssid(host.hostname) passphrase = global_config.global_config.get_config_value( 'CLIENT', 'wireless_password', default=None) host.run('am startservice -n com.google.wifisetup/.WifiSetupService ' '-a WifiSetupService.Connect -e ssid %s -e passphrase %s' % (ssid, passphrase)) @retry.retry(error.GenericHostRunError, timeout_min=1.5, delay_sec=3) def ping(): cmd = 'ping -q -c %s -W %s %s' % (ping_count, ping_timeout, ping_host) host.run(cmd) try: ping() except error.GenericHostRunError: raise error.TestFail( 'Failed to ping %s in %d seconds on all %d attempts' % (ping_host, ping_timeout, ping_count))