ICommandScheduler

public interface ICommandScheduler

com.android.tradefed.command.ICommandScheduler
Known Indirect Subclasses
CommandScheduler A scheduler for running TradeFederation commands across all available devices. 


A scheduler for running TradeFederation commands.

Summary

Nested classes

interface ICommandScheduler.IScheduledInvocationListener

Listener for invocation events when invocation completes. 

Public methods

abstract boolean addCommand(String[] args, long totalExecTime)

An alternate addCommand(String[]) that accepts an initial total execution time for the command.

abstract boolean addCommand(String[] args)

Adds a command to the scheduler.

abstract void addCommandFile(String cmdFile, List<String> extraArgs)

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

Informs the command scheduler that a initiated handover sequence is fully complete, and it should re-initialize its remote manager on the default port.

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 Option values specified for all current commands.

abstract void execCommand(ICommandScheduler.IScheduledInvocationListener listener, String[] args)

Directly allocates a device and executes a command without adding it to the command queue.

abstract void execCommand(ICommandScheduler.IScheduledInvocationListener listener, ITestDevice device, String[] args)

Directly execute command on already allocated device.

abstract CommandFileWatcher getCommandFileWatcher()

Get the appropriate CommandFileWatcher for this scheduler

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 Throwable from the last invocation that ran.

abstract void handoverInitiationComplete()

Informs the command scheduler that initial handover exchange of devices and commands in use is complete, and it can begin scheduling operation.

abstract boolean handoverShutdown(int handoverPort)

Initiates a shutdown() and handover to another tradefed process on this same host.

abstract void join()

Waits for scheduler to complete.

abstract void removeAllCommands()

Remove all commands from scheduler

abstract void setLastInvocationExitCode(CommandRunner.ExitCode code, Throwable stack)

Helper method, when running inside a CommandRunner context, set an exit error code and a stack trace that can be returned.

abstract boolean shouldShutdownOnCmdfileError()

Return true if we need to shutdown the scheduler on a command errors

abstract void shutdown()

Attempt to gracefully shutdown the command scheduler.

abstract void shutdownHard()

Attempt to forcefully shutdown the command scheduler.

abstract void shutdownOnEmpty()

Similar to shutdown(), but will instead wait for all commands to be executed before exiting.

abstract void start()

Start the ICommandScheduler.

abstract boolean stopInvocation(int invocationId)

Stop a running invocation by specifying it's id.

abstract boolean stopInvocation(ITestInvocation invocation)

Stop a running invocation.

Public methods

addCommand

boolean addCommand (String[] args, 
                long totalExecTime)

An alternate addCommand(String[]) that accepts an initial total execution time for the command.

Useful when transitioning pre-existing commands from another tradefed process

Parameters
args String: the config arguments.
totalExecTime long: the accumulated elapsed execution time of the command
Returns
boolean true if command was added successfully
Throws
ConfigurationException if command was invalid

addCommand

boolean 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
boolean true if command was added successfully
Throws
ConfigurationException if command could not be parsed

addCommandFile

void addCommandFile (String cmdFile, 
                List<String> extraArgs)

Adds all commands from given file to the scheduler

Parameters
cmdFile String: the filesystem path of comand file
extraArgs List: a List of String arguments 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

void await ()

Waits for scheduler to start running, including waiting for handover from old TF to complete if applicable.

Throws
InterruptedException

completeHandover

void completeHandover ()

Informs the command scheduler that a initiated handover sequence is fully complete, and it should re-initialize its remote manager on the default port.

displayCommandQueue

void displayCommandQueue (PrintWriter printWriter)

Output detailed debug info on state of command execution queue.

displayCommandsInfo

void displayCommandsInfo (PrintWriter printWriter, 
                String regex)

Output a list of current commands.

Parameters
printWriter PrintWriter: the 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

void displayInvocationsInfo (PrintWriter printWriter)

Displays a list of current invocations.

Parameters
printWriter PrintWriter: the PrintWriter to output to.

dumpCommandsXml

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: the 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

void 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: the ICommandScheduler.IScheduledInvocationListener to be informed
args String: the command arguments
Throws
ConfigurationException if command was invalid
NoDeviceException if there is no device to use

execCommand

void execCommand (ICommandScheduler.IScheduledInvocationListener listener, 
                ITestDevice device, 
                String[] args)

Directly execute command on already allocated device.

Parameters
listener ICommandScheduler.IScheduledInvocationListener: the ICommandScheduler.IScheduledInvocationListener to be informed
device ITestDevice: the ITestDevice to use
args String: the command arguments
Throws
ConfigurationException if command was invalid

getCommandFileWatcher

CommandFileWatcher getCommandFileWatcher ()

Get the appropriate CommandFileWatcher for this scheduler

Returns
CommandFileWatcher

getInvocationInfo

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 String containing information about the invocation.

getLastInvocationExitCode

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

Throwable getLastInvocationThrowable ()

Return the Throwable from the last invocation that ran. Return null, if no throwable is available.

Returns
Throwable

handoverInitiationComplete

void handoverInitiationComplete ()

Informs the command scheduler that initial handover exchange of devices and commands in use is complete, and it can begin scheduling operation.

handoverShutdown

boolean handoverShutdown (int handoverPort)

Initiates a shutdown() and handover to another tradefed process on this same host.

The scheduler will inform the remote tradefed process listening on that port of freed devices as they become available.

Parameters
handoverPort int
Returns
boolean true if handover initiation was successful, false otherwise

join

void join ()

Waits for scheduler to complete.

Throws
InterruptedException

See also:

removeAllCommands

void removeAllCommands ()

Remove all commands from scheduler

setLastInvocationExitCode

void setLastInvocationExitCode (CommandRunner.ExitCode code, 
                Throwable stack)

Helper method, when running inside a CommandRunner context, set an exit error code and a stack trace that can be returned.

Parameters
code CommandRunner.ExitCode
stack Throwable

shouldShutdownOnCmdfileError

boolean shouldShutdownOnCmdfileError ()

Return true if we need to shutdown the scheduler on a command errors

Returns
boolean

shutdown

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.

shutdownHard

void shutdownHard ()

Attempt to forcefully shutdown the command scheduler.

Similar to shutdown(), but will also forcefully kill the adb connection, in an attempt to 'inspire' invocations in progress to complete quicker.

shutdownOnEmpty

void shutdownOnEmpty ()

Similar to shutdown(), but will instead wait for all commands to be executed before exiting.

Note that if any commands are in loop mode, the scheduler will never exit.

start

void start ()

Start the ICommandScheduler.

Must be called before calling other methods.

Will run until shutdown() is called. see start().

stopInvocation

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

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