1#
2# Copyright (C) 2018 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the 'License');
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an 'AS IS' BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17import logging
18import time
19
20from host_controller.command_processor import base_command_processor
21
22
23class CommandSleep(base_command_processor.BaseCommandProcessor):
24    """Command processor for sleep command.
25
26    Attributes:
27        arg_parser: ConsoleArgumentParser object, argument parser.
28        command: string, command name which this processor will handle.
29        command_detail: string, detailed explanation for the command.
30    """
31
32    command = "sleep"
33    command_detail = "Sleeps for N seconds."
34
35    # @Override
36    def SetUp(self):
37        """Initializes the parser for device command."""
38        self.arg_parser.add_argument(
39            "seconds",
40            metavar="COMMAND",
41            nargs=1,
42            help=("an integer indicating the amount of time to sleep "
43                  "in seconds"))
44
45    # @Override
46    def Run(self, arg_line):
47        """Blocks for a specified time interval."""
48        args = self.arg_parser.ParseLine(arg_line)
49        try:
50            time.sleep(int(args.seconds[0]))
51        except ValueError as e:
52            logging.exception(e)
53            return False
54