| # 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() |