# 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 common
from autotest_lib.client.common_lib import error
from autotest_lib.server import test


class brillo_FastbootTest(test.test):
    """Verify that a Brillo device can reboot into / out of fastboot."""
    version = 1

    def run_once(self, host=None):
        """Runs the test.

        @param host: A host object representing the DUT.

        @raise TestError: Something went wrong while trying to execute the test.
        @raise TestFail: The test failed.
        """
        # Make sure we're in ADB mode.
        if not host.is_up():
            raise error.TestError('Device is not in ADB mode')

        # Switch to fastboot (implies a reboot).
        try:
            host.ensure_bootloader_mode()
        except error.AutoservError as e:
            raise error.TestFail(
                    'Failed to reboot the device into fastboot: %s' % e)

        # Now reboot back into ADB.
        try:
            host.ensure_adb_mode()
        except error.AutoservError as e:
            raise error.TestFail(
                    'Failed to reboot the device back to ADB: %s' % e)