ICommandScheduler
  public
  
  
  
  interface
  ICommandScheduler
  
  
  
| com.android.tradefed.command.ICommandScheduler | 
A scheduler for running TradeFederation commands.
Summary
| Nested classes | |
|---|---|
| 
        
        
        
        
        interface | ICommandScheduler.IScheduledInvocationListenerListener for invocation events when invocation completes. | 
| Public methods | |
|---|---|
| 
        abstract
        
        
        
        
        Pair<Boolean, Integer> | 
      addCommand(String[] args)
      Adds a command to the scheduler. | 
| 
        abstract
        
        
        
        
        void | 
      addCommandFile(String cmdFile, Adds all commands from given file to the scheduler | 
| 
        abstract
        
        
        
        
        void | 
      await()
      Waits for scheduler to start running, including waiting for handover from old TF to complete if applicable. | 
| 
        abstract
        
        
        
        
        void | 
      displayCommandQueue(PrintWriter printWriter)
      Output detailed debug info on state of command execution queue. | 
| 
        abstract
        
        
        
        
        void | 
      displayCommandsInfo(PrintWriter printWriter, String regex)
      Output a list of current commands. | 
| 
        abstract
        
        
        
        
        void | 
      displayInvocationsInfo(PrintWriter printWriter)
      Displays a list of current invocations. | 
| 
        abstract
        
        
        
        
        void | 
      dumpCommandsXml(PrintWriter printWriter, String regex)
      Dump the expanded xml file for the command with all
  | 
| 
        abstract
        
        
        
        
        long | 
      execCommand(IInvocationContext context, ICommandScheduler.IScheduledInvocationListener listener, String[] args)
      Directly allocates a device and executes a command without adding it to the command queue
 using an already existing  | 
| 
        abstract
        
        
        
        
        long | 
      execCommand(ICommandScheduler.IScheduledInvocationListener listener, String[] args)
      Directly allocates a device and executes a command without adding it to the command queue. | 
| 
        abstract
        
        
        
        
        long | 
      execCommand(ICommandScheduler.IScheduledInvocationListener listener, ITestDevice device, String[] args)
      Directly execute command on already allocated device. | 
| 
        abstract
        
        
        
        
        long | 
      execCommand(ICommandScheduler.IScheduledInvocationListener listener, Directly execute command on already allocated devices. | 
| 
        abstract
        
        
        
        
        CommandFileWatcher | 
      getCommandFileWatcher()
      Get the appropriate CommandFileWatcher for this scheduler | 
| 
        abstract
        
        
        
        
        int | 
      getExecutingCommandCount()
      Returns the number of Commands in executing state. | 
| 
        abstract
        
        
        
        
        String | 
      getInvocationInfo(int invocationId)
      Return the information on an invocation bu specifying the invocation id. | 
| 
        abstract
        
        
        
        
        CommandRunner.ExitCode | 
      getLastInvocationExitCode()
      Return the error code of the last invocation that ran. | 
| 
        abstract
        
        
        
        
        Throwable | 
      getLastInvocationThrowable()
      Return the  | 
| 
        abstract
        
        
        
        
        int | 
      getReadyCommandCount()
      Returns the number of Commands in ready state in the queue. | 
| 
        abstract
        
        
        
        
        boolean | 
      isDeviceInInvocationThread(ITestDevice device)
      Returns true if the device is used by an active invocation thread. | 
| 
        abstract
        
        
        
        
        void | 
      join()
      Waits for scheduler to complete. | 
| 
        abstract
        
        
        
        
        void | 
      join(long millis)
      Waits for scheduler to complete or timeout after the duration specified in milliseconds. | 
| 
        abstract
        
        
        
        
        void | 
      removeAllCommands()
      Remove all commands from scheduler | 
| 
        abstract
        
        
        
        
        void | 
      setClearcutClient(ClearcutClient client)
      Set the client to report harness data | 
| 
        abstract
        
        
        
        
        boolean | 
      shouldShutdownOnCmdfileError()
      Return true if we need to shutdown the scheduler on a command errors | 
| 
        
        default
        
        
        
        void | 
      shutdown()
      Attempt to gracefully shutdown the command scheduler. | 
| 
        abstract
        
        
        
        
        void | 
      shutdown(boolean notifyStop)
      Attempt to gracefully shutdown the command scheduler. | 
| 
        abstract
        
        
        
        
        void | 
      shutdownHard(boolean killAdb)
      Attempt to forcefully shutdown the command scheduler. | 
| 
        abstract
        
        
        
        
        void | 
      shutdownHard()
      Attempt to forcefully shutdown the command scheduler. | 
| 
        abstract
        
        
        
        
        void | 
      shutdownOnEmpty()
      Similar to  | 
| 
        abstract
        
        
        
        
        void | 
      start()
      Start the  | 
| 
        abstract
        
        
        
        
        boolean | 
      stopInvocation(int invocationId, String cause)
      Stop a running invocation by specifying it's id. | 
| 
        
        default
        
        
        
        boolean | 
      stopInvocation(int invocationId)
      Stop a running invocation by specifying it's id. | 
| 
        abstract
        
        
        
        
        boolean | 
      stopInvocation(ITestInvocation invocation)
      Stop a running invocation. | 
| 
        
        default
        
        
        
        void | 
      stopScheduling()
      Stops scheduling and accepting new tests but does not stop Tradefed. | 
Public methods
addCommand
public abstract Pair<Boolean, Integer> addCommand (String[] args)
Adds a command to the scheduler.
A command is essentially an instance of a configuration to run and its associated arguments.
If "--help" argument is specified the help text for the config will be outputed to stdout. Otherwise, the config will be added to the queue to run.
| Parameters | |
|---|---|
| args | String: the config arguments. | 
| Returns | |
|---|---|
| Pair<Boolean, Integer> | A pair of values, first value is a Boolean trueif command was added
     successfully. Second value is the known command tracker id(non-negative value) if the
     command was added successfully, return 0 when command is added for all devices, otherwise
     -1. | 
| Throws | |
|---|---|
| ConfigurationException | if command could not be parsed | 
addCommandFile
public abstract void addCommandFile (String cmdFile, 
                 extraArgs) Adds all commands from given file to the scheduler
| Parameters | |
|---|---|
| cmdFile | String: the filesystem path of comand file | 
| extraArgs | : aERROR(/List)ofStringarguments to append to each command parsed
            from file. Can be empty but should not be null. | 
| Throws | |
|---|---|
| ConfigurationException | if command file could not be parsed | 
See also:
await
public abstract void await ()
Waits for scheduler to start running, including waiting for handover from old TF to complete if applicable.
displayCommandQueue
public abstract void displayCommandQueue (PrintWriter printWriter)
Output detailed debug info on state of command execution queue.
displayCommandsInfo
public abstract void displayCommandsInfo (PrintWriter printWriter, 
                String regex)Output a list of current commands.
| Parameters | |
|---|---|
| printWriter | PrintWriter: theERROR(/PrintWriter)to output to. | 
| regex | String: the regular expression to which commands should be matched in order to be
 printed.  If null, then all commands will be printed. | 
displayInvocationsInfo
public abstract void displayInvocationsInfo (PrintWriter printWriter)
Displays a list of current invocations.
| Parameters | |
|---|---|
| printWriter | PrintWriter: theERROR(/PrintWriter)to output to. | 
dumpCommandsXml
public abstract void dumpCommandsXml (PrintWriter printWriter, 
                String regex)Dump the expanded xml file for the command with all
 Option values specified for all current commands.
| Parameters | |
|---|---|
| printWriter | PrintWriter: theERROR(/PrintWriter)to output the status to. | 
| regex | String: the regular expression to which commands should be matched in order for the
 xml file to be dumped.  If null, then all commands will be dumped. | 
execCommand
public abstract long execCommand (IInvocationContext context, ICommandScheduler.IScheduledInvocationListener listener, String[] args)
Directly allocates a device and executes a command without adding it to the command queue
 using an already existing IInvocationContext.
| Parameters | |
|---|---|
| context | IInvocationContext: an existingIInvocationContext. | 
| listener | ICommandScheduler.IScheduledInvocationListener: theICommandScheduler.IScheduledInvocationListenerto be informed | 
| args | String: the command arguments | 
| Returns | |
|---|---|
| long | |
| Throws | |
|---|---|
| ConfigurationException | if command was invalid | 
| NoDeviceException | if there is no device to use | 
execCommand
public abstract long execCommand (ICommandScheduler.IScheduledInvocationListener listener, String[] args)
Directly allocates a device and executes a command without adding it to the command queue.
| Parameters | |
|---|---|
| listener | ICommandScheduler.IScheduledInvocationListener: theICommandScheduler.IScheduledInvocationListenerto be informed | 
| args | String: the command arguments | 
| Returns | |
|---|---|
| long | The invocation id of the scheduled command. | 
| Throws | |
|---|---|
| ConfigurationException | if command was invalid | 
| NoDeviceException | if there is no device to use | 
execCommand
public abstract long execCommand (ICommandScheduler.IScheduledInvocationListener listener, ITestDevice device, String[] args)
Directly execute command on already allocated device.
| Parameters | |
|---|---|
| listener | ICommandScheduler.IScheduledInvocationListener: theICommandScheduler.IScheduledInvocationListenerto be informed | 
| device | ITestDevice: theITestDeviceto use | 
| args | String: the command arguments | 
| Returns | |
|---|---|
| long | The invocation id of the scheduled command. | 
| Throws | |
|---|---|
| ConfigurationException | if command was invalid | 
execCommand
public abstract long execCommand (ICommandScheduler.IScheduledInvocationListener listener,devices, String[] args) 
Directly execute command on already allocated devices.
| Parameters | |
|---|---|
| listener | ICommandScheduler.IScheduledInvocationListener: theICommandScheduler.IScheduledInvocationListenerto be informed | 
| devices | : theERROR(/Listto use | 
| args | String: the command arguments | 
| Returns | |
|---|---|
| long | The invocation id of the scheduled command. | 
| Throws | |
|---|---|
| ConfigurationException | if command was invalid | 
getCommandFileWatcher
public abstract CommandFileWatcher getCommandFileWatcher ()
Get the appropriate CommandFileWatcher for this scheduler
| Returns | |
|---|---|
| CommandFileWatcher | |
getExecutingCommandCount
public abstract int getExecutingCommandCount ()
Returns the number of Commands in executing state.
| Returns | |
|---|---|
| int | |
getInvocationInfo
public abstract String getInvocationInfo (int invocationId)
Return the information on an invocation bu specifying the invocation id.
| Parameters | |
|---|---|
| invocationId | int: the tracking id of the invocation. | 
| Returns | |
|---|---|
| String | A Stringcontaining information about the invocation. | 
getLastInvocationExitCode
public abstract CommandRunner.ExitCode getLastInvocationExitCode ()
Return the error code of the last invocation that ran. Return 0 (no error), if no invocation has ran yet.
| Returns | |
|---|---|
| CommandRunner.ExitCode | |
getLastInvocationThrowable
public abstract Throwable getLastInvocationThrowable ()
Return the Throwable from the last invocation that ran.
 Return null, if no throwable is available.
| Returns | |
|---|---|
| Throwable | |
getReadyCommandCount
public abstract int getReadyCommandCount ()
Returns the number of Commands in ready state in the queue.
| Returns | |
|---|---|
| int | |
isDeviceInInvocationThread
public abstract boolean isDeviceInInvocationThread (ITestDevice device)
Returns true if the device is used by an active invocation thread.
| Parameters | |
|---|---|
| device | ITestDevice | 
| Returns | |
|---|---|
| boolean | |
join
public abstract void join (long millis)
Waits for scheduler to complete or timeout after the duration specified in milliseconds.
| Parameters | |
|---|---|
| millis | long | 
See also:
removeAllCommands
public abstract void removeAllCommands ()
Remove all commands from scheduler
setClearcutClient
public abstract void setClearcutClient (ClearcutClient client)
Set the client to report harness data
| Parameters | |
|---|---|
| client | ClearcutClient | 
shouldShutdownOnCmdfileError
public abstract boolean shouldShutdownOnCmdfileError ()
Return true if we need to shutdown the scheduler on a command errors
| Returns | |
|---|---|
| boolean | |
shutdown
public void shutdown ()
Attempt to gracefully shutdown the command scheduler.
Clears commands waiting to be tested, and requests that all invocations in progress shut down gracefully.
After shutdown is called, the scheduler main loop will wait for all invocations in progress to complete before exiting completely.
shutdown
public abstract void shutdown (boolean notifyStop)
Attempt to gracefully shutdown the command scheduler.
| Parameters | |
|---|---|
| notifyStop | boolean: if true, notifies invocations of TF shutdown. | 
shutdownHard
public abstract void shutdownHard (boolean killAdb)
Attempt to forcefully shutdown the command scheduler.
Similar to shutdown(), but will also optionally kill the adb connection, in an
 attempt to 'inspire' invocations in progress to complete quicker.
| Parameters | |
|---|---|
| killAdb | boolean | 
shutdownHard
public abstract void shutdownHard ()
Attempt to forcefully shutdown the command scheduler. Same as shutdownHard(true).
shutdownOnEmpty
public abstract void shutdownOnEmpty ()
Similar to shutdown(), but will instead wait for all commands to be executed
 before exiting.
 
start
public abstract void start ()
Start the ICommandScheduler.
 
shutdown() is called.
 see Thread.start().
stopInvocation
public abstract boolean stopInvocation (int invocationId, 
                String cause)Stop a running invocation by specifying it's id.
| Parameters | |
|---|---|
| invocationId | int: the tracking id of the invocation. | 
| cause | String: the cause for stopping the invocation. | 
| Returns | |
|---|---|
| boolean | true if the invocation was stopped, false otherwise | 
| Throws | |
|---|---|
| UnsupportedOperationException | if the implementation doesn't support this | 
stopInvocation
public boolean stopInvocation (int invocationId)
Stop a running invocation by specifying it's id.
| Parameters | |
|---|---|
| invocationId | int | 
| Returns | |
|---|---|
| boolean | true if the invocation was stopped, false otherwise | 
| Throws | |
|---|---|
| UnsupportedOperationException | if the implementation doesn't support this | 
stopInvocation
public abstract boolean stopInvocation (ITestInvocation invocation)
Stop a running invocation.
| Parameters | |
|---|---|
| invocation | ITestInvocation | 
| Returns | |
|---|---|
| boolean | true if the invocation was stopped, false otherwise | 
| Throws | |
|---|---|
| UnsupportedOperationException | if the implementation doesn't support this | 
stopScheduling
public void stopScheduling ()
Stops scheduling and accepting new tests but does not stop Tradefed. This is meant to enable a two steps shutdown where first we drain all the running tests, then terminate Tradefed process.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2024-10-08 UTC.
