CommandScheduler
public
class
CommandScheduler
extends Object
implements
ICommandScheduler
java.lang.Object | |
↳ | com.android.tradefed.command.CommandScheduler |
A scheduler for running TradeFederation commands across all available devices.
Will attempt to prioritize commands to run based on a total running count of their execution time. e.g. infrequent or fast running commands will get prioritized over long running commands. Runs forever in background until shutdown.Summary
Nested classes | |
---|---|
enum |
CommandScheduler.HostState
Enums of different status of host |
Public constructors | |
---|---|
CommandScheduler()
Creates a |
Public methods | |
---|---|
boolean
|
addCommand(String[] args)
Adds a command to the scheduler. |
void
|
addCommandFile(String cmdFilePath,
Adds all commands from given file to the scheduler |
void
|
await()
Waits for scheduler to start running, including waiting for handover from old TF to complete if applicable. |
static
TradefedDelegator
|
checkDelegation(String[] args)
Create a delegator based on the command line to see if we need to delegate the run. |
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. |
static
|
createReleaseMap(IInvocationContext context, Throwable e)
Create a map of the devices state so they can be released appropriately. |
ISandbox
|
createSandbox()
Create a |
void
|
displayCommandQueue(PrintWriter printWriter)
Output detailed debug info on state of command execution queue. |
void
|
displayCommandsInfo(PrintWriter printWriter, String regex)
Output a list of current commands. |
void
|
displayInvocationsInfo(PrintWriter printWriter)
Displays a list of current invocations. |
void
|
dumpCommandsXml(PrintWriter printWriter, String regex)
Dump the expanded xml file for the command with all
|
void
|
execCommand(ICommandScheduler.IScheduledInvocationListener listener, ITestDevice device, String[] args)
Directly execute command on already allocated device. |
void
|
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 |
void
|
execCommand(ICommandScheduler.IScheduledInvocationListener listener, String[] args)
Directly allocates a device and executes a command without adding it to the command queue. |
CommandFileWatcher
|
getCommandFileWatcher()
Get the appropriate |
int
|
getExecutingCommandCount()
Returns the number of Commands in executing state. |
CommandScheduler.HostState
|
getHostState()
|
String
|
getInvocationInfo(int invocationId)
Return the information on an invocation bu specifying the invocation id. |
CommandRunner.ExitCode
|
getLastInvocationExitCode()
Return the error code of the last invocation that ran. |
Throwable
|
getLastInvocationThrowable()
Return the |
int
|
getReadyCommandCount()
Returns the number of Commands in ready state in the queue. |
long
|
getShutdownTimeout()
|
void
|
handoverInitiationComplete()
Informs the command scheduler that initial handover exchange of devices and commands in use is complete, and it can begin scheduling operation. |
boolean
|
handoverShutdown(int handoverPort)
Initiates a |
void
|
notifyFileChanged(File cmdFile,
|
void
|
removeAllCommands()
Remove all commands from scheduler |
void
|
run()
The main execution block of this thread. |
void
|
setClearcutClient(ClearcutClient client)
Set the client to report harness data |
boolean
|
shouldShutdownOnCmdfileError()
Return true if we need to shutdown the scheduler on a command errors |
void
|
shutdown()
Attempt to gracefully shutdown the command scheduler. |
void
|
shutdownHard(boolean killAdb)
Attempt to forcefully shutdown the command scheduler. |
void
|
shutdownHard()
Attempt to forcefully shutdown the command scheduler. |
void
|
shutdownOnEmpty()
Similar to |
void
|
start()
Starts the scheduler including setting up of logging, init of |
boolean
|
stopInvocation(ITestInvocation invocation)
Stop a running invocation. |
boolean
|
stopInvocation(int invocationId, String cause)
Stop a running invocation by specifying it's id. |
Protected methods | |
---|---|
void
|
cleanUp()
Closes the logs and does any other necessary cleanup before we quit. |
IConfiguration
|
createConfiguration(String[] args)
|
IInvocationContext
|
createInvocationContext()
|
IConfigurationFactory
|
getConfigFactory()
Factory method for getting a reference to the |
IDeviceManager
|
getDeviceManager()
Factory method for getting a reference to the |
TradefedFeatureServer
|
getFeatureServer()
|
IHostOptions
|
getHostOptions()
|
IKeyStoreClient
|
getKeyStoreClient()
Fetches a |
void
|
initLogging()
Initializes the ddmlib log. |
boolean
|
isShutdown()
|
boolean
|
isShuttingDown()
|
void
|
processReadyCommands(IDeviceManager manager)
|
void
|
waitForAllInvocationThreads()
Wait until all invocation threads complete. |
Public constructors
CommandScheduler
public CommandScheduler ()
Creates a CommandScheduler
.
Public methods
addCommand
public 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 |
addCommandFile
public void addCommandFile (String cmdFilePath,extraArgs)
Adds all commands from given file to the scheduler
Parameters | |
---|---|
cmdFilePath |
String : the filesystem path of comand file |
extraArgs |
: a ERROR(/List) of String arguments to append to each command parsed
from file. Can be empty but should not be null. |
Throws | |
---|---|
ConfigurationException |
await
public void await ()
Waits for scheduler to start running, including waiting for handover from old TF to complete if applicable.
checkDelegation
public static TradefedDelegator checkDelegation (String[] args)
Create a delegator based on the command line to see if we need to delegate the run.
Parameters | |
---|---|
args |
String |
Returns | |
---|---|
TradefedDelegator |
Throws | |
---|---|
ConfigurationException |
completeHandover
public 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.
createReleaseMap
public staticcreateReleaseMap (IInvocationContext context, Throwable e)
Create a map of the devices state so they can be released appropriately.
Parameters | |
---|---|
context |
IInvocationContext |
e |
Throwable |
Returns | |
---|---|
|
createSandbox
public ISandbox createSandbox ()
Create a ISandbox
that the invocation will use to run.
Returns | |
---|---|
ISandbox |
displayCommandQueue
public void displayCommandQueue (PrintWriter printWriter)
Output detailed debug info on state of command execution queue.
displayCommandsInfo
public void displayCommandsInfo (PrintWriter printWriter, String regex)
Output a list of current commands.
Parameters | |
---|---|
printWriter |
PrintWriter : the ERROR(/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 void displayInvocationsInfo (PrintWriter printWriter)
Displays a list of current invocations.
Parameters | |
---|---|
printWriter |
PrintWriter : the ERROR(/PrintWriter) to output to.
|
dumpCommandsXml
public 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 ERROR(/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 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 |
execCommand
public void 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 existing IInvocationContext . |
listener |
ICommandScheduler.IScheduledInvocationListener : the ICommandScheduler.IScheduledInvocationListener to be informed |
args |
String : the command arguments |
Throws | |
---|---|
ConfigurationException |
|
NoDeviceException |
execCommand
public 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 |
|
NoDeviceException |
getCommandFileWatcher
public CommandFileWatcher getCommandFileWatcher ()
Get the appropriate CommandFileWatcher
for this scheduler
Returns | |
---|---|
CommandFileWatcher |
getExecutingCommandCount
public int getExecutingCommandCount ()
Returns the number of Commands in executing state.
Returns | |
---|---|
int |
getInvocationInfo
public 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
public 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 Throwable getLastInvocationThrowable ()
Return the Throwable
from the last invocation that ran.
Return null, if no throwable is available.
Returns | |
---|---|
Throwable |
getReadyCommandCount
public int getReadyCommandCount ()
Returns the number of Commands in ready state in the queue.
Returns | |
---|---|
int |
getShutdownTimeout
public long getShutdownTimeout ()
Returns | |
---|---|
long |
handoverInitiationComplete
public 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
public boolean handoverShutdown (int handoverPort)
Initiates a shutdown()
and handover to another tradefed process on this same host.
Parameters | |
---|---|
handoverPort |
int |
Returns | |
---|---|
boolean |
true if handover initiation was successful, false
otherwise
|
notifyFileChanged
public void notifyFileChanged (File cmdFile,extraArgs)
Parameters | |
---|---|
cmdFile |
File |
extraArgs |
|
removeAllCommands
public void removeAllCommands ()
Remove all commands from scheduler
run
public void run ()
The main execution block of this thread.
setClearcutClient
public void setClearcutClient (ClearcutClient client)
Set the client to report harness data
Parameters | |
---|---|
client |
ClearcutClient |
shouldShutdownOnCmdfileError
public 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.shutdownHard
public 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 void shutdownHard ()
Attempt to forcefully shutdown the command scheduler. Same as shutdownHard(true).
shutdownOnEmpty
public void shutdownOnEmpty ()
Similar to shutdown()
, but will instead wait for all commands to be executed
before exiting.
start
public void start ()
Starts the scheduler including setting up of logging, init of DeviceManager
etc
stopInvocation
public boolean stopInvocation (ITestInvocation invocation)
Stop a running invocation.
Parameters | |
---|---|
invocation |
ITestInvocation |
Returns | |
---|---|
boolean |
true if the invocation was stopped, false otherwise |
stopInvocation
public 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 |
Protected methods
cleanUp
protected void cleanUp ()
Closes the logs and does any other necessary cleanup before we quit.
Exposed so unit tests can mock.
createConfiguration
protected IConfiguration createConfiguration (String[] args)
Parameters | |
---|---|
args |
String |
Returns | |
---|---|
IConfiguration |
Throws | |
---|---|
ConfigurationException |
createInvocationContext
protected IInvocationContext createInvocationContext ()
Returns | |
---|---|
IInvocationContext |
getConfigFactory
protected IConfigurationFactory getConfigFactory ()
Factory method for getting a reference to the IConfigurationFactory
Returns | |
---|---|
IConfigurationFactory |
the IConfigurationFactory to use
|
getDeviceManager
protected IDeviceManager getDeviceManager ()
Factory method for getting a reference to the IDeviceManager
Returns | |
---|---|
IDeviceManager |
the IDeviceManager to use
|
getHostOptions
protected IHostOptions getHostOptions ()
Returns | |
---|---|
IHostOptions |
getKeyStoreClient
protected IKeyStoreClient getKeyStoreClient ()
Fetches a IKeyStoreClient
using the IKeyStoreFactory
declared in IGlobalConfiguration
or null if none is defined.
Returns | |
---|---|
IKeyStoreClient |
IKeyStoreClient |
initLogging
protected void initLogging ()
Initializes the ddmlib log.
Exposed so unit tests can mock.
isShutdown
protected boolean isShutdown ()
Returns | |
---|---|
boolean |
isShuttingDown
protected boolean isShuttingDown ()
Returns | |
---|---|
boolean |
processReadyCommands
protected void processReadyCommands (IDeviceManager manager)
Parameters | |
---|---|
manager |
IDeviceManager |
waitForAllInvocationThreads
protected void waitForAllInvocationThreads ()
Wait until all invocation threads complete.
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 2022-08-03 UTC.