blob: 2aa4cc22634e6c076eddc4e193ee085e0c0eab0d [file] [log] [blame]
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from autotest_lib.client.bin import test
from autotest_lib.client.common_lib.cros.tendo import buffet_tester
class buffet_IntermittentConnectivity(test.test):
"""Test that buffet reconnects if it loses connectivity."""
version = 1
def initialize(self):
self._helper = buffet_tester.BuffetTester()
def run_once(self):
"""Test entry point."""
# Erase all buffet state and restart it pointing to our fake
# server, register with the cloud and check we can poll for
# commands.
self._helper.restart_buffet(reset_state=True)
self._helper.check_buffet_status_is(buffet_tester.STATUS_UNCONFIGURED)
device_id = self._helper.register_with_server()
self._helper.check_buffet_is_polling(device_id)
# Now make fake_device_server fail all request from Buffet
# with HTTP Error Code 500 (Internal Server Error) and check
# that we transition to the CONNECTING state.
self._helper._fail_control_client.start_failing_requests()
self._helper.check_buffet_status_is(
buffet_tester.STATUS_CONNECTING,
expected_device_id=device_id,
timeout_seconds=20)
# Stop failing request from and check that we transition to
# the CONNECTED state.
self._helper._fail_control_client.stop_failing_requests()
self._helper.check_buffet_status_is(
buffet_tester.STATUS_CONNECTED,
expected_device_id=device_id,
timeout_seconds=20)
self._helper.check_buffet_is_polling(device_id)
def cleanup(self):
self._helper.close()