Google 致力于为黑人社区推动种族平等。查看具体举措

命令调度器

public class CommandScheduler
extends Object implements ICommandScheduler

java.lang.Object
com.android.tradefed.command.CommandScheduler


用于在所有可用设备上运行 TradeFederation 命令的调度程序。

将尝试根据执行时间的总运行计数来确定要运行的命令的优先级。例如,不频繁或快速运行的命令将优先于长时间运行的命令。

永远在后台运行,直到关机。

概括

嵌套类

enum CommandScheduler.HostState

主机不同状态的枚举

公共构造函数

CommandScheduler ()

创建一个CommandScheduler

公共方法

boolean addCommand (String[] args)

将命令添加到调度程序。

void addCommandFile (String cmdFilePath, extraArgs) addCommandFile (String cmdFilePath, extraArgs)

将给定文件中的所有命令添加到调度程序

void await ()

等待调度程序开始运行,包括等待旧 TF 的切换完成(如果适用)。

static TradefedDelegator checkDelegation (String[] args)

根据命令行创建一个委托器,看看我们是否需要委托运行。

void completeHandover ()

通知命令调度程序启动的切换序列已完全完成,它应该在默认端口上重新初始化其远程管理器。

static createReleaseMap (IInvocationContext context, Throwable e)

创建设备状态的映射,以便可以适当地释放它们。

ISandbox createSandbox ()

创建调用将用于运行的ISandbox

void displayCommandQueue (PrintWriter printWriter)

输出有关命令执行队列状态的详细调试信息。

void displayCommandsInfo (PrintWriter printWriter, String regex)

输出当前命令的列表。

void displayInvocationsInfo (PrintWriter printWriter)

显示当前调用的列表。

void dumpCommandsXml (PrintWriter printWriter, String regex)

转储命令的扩展 xml 文件,其中包含为所有当前命令指定的所有Option值。

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

直接在已分配的设备上执行命令。

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

直接分配设备并执行命令,而不使用已经存在的IInvocationContext将其添加到命令队列中。

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

直接分配设备并执行命令,而不将其添加到命令队列中。

CommandFileWatcher getCommandFileWatcher ()

为此调度程序获取适当的CommandFileWatcher

int getExecutingCommandCount ()

返回处于执行状态的命令数。

CommandScheduler.HostState getHostState ()
String getInvocationInfo (int invocationId)

返回有关指定调用 id 的调用 bu 的信息。

CommandRunner.ExitCode getLastInvocationExitCode ()

返回上次运行的调用的错误代码。

Throwable getLastInvocationThrowable ()

从最后一次运行的调用中返回Throwable

int getReadyCommandCount ()

返回队列中处于就绪状态的命令数。

long getShutdownTimeout ()
void handoverInitiationComplete ()

通知命令调度器在使用中的设备和命令的初始切换交换已完成,并且它可以开始调度操作。

boolean handoverShutdown (int handoverPort)

启动shutdown()并切换到同一主机上的另一个 tradefed 进程。

void notifyFileChanged (File cmdFile, extraArgs) notifyFileChanged (File cmdFile, extraArgs)
void removeAllCommands ()

从调度程序中删除所有命令

void run ()

该线程的主要执行块。

void setClearcutClient (ClearcutClient client)

设置客户端报告线束数据

boolean shouldShutdownOnCmdfileError ()

如果我们需要在命令错误时关闭调度程序,则返回 true

void shutdown ()

尝试正常关闭命令调度程序。

void shutdownHard (boolean killAdb)

尝试强制关闭命令调度程序。

void shutdownHard ()

尝试强制关闭命令调度程序。

void shutdownOnEmpty ()

类似于shutdown() ,但会在退出前等待所有命令执行完毕。

void start ()

启动调度程序,包括设置日志记录、初始化DeviceManager

boolean stopInvocation ( ITestInvocation invocation)

停止正在运行的调用。

boolean stopInvocation (int invocationId, String cause)

通过指定它的 id 来停止正在运行的调用。

受保护的方法

void cleanUp ()

在我们退出之前关闭日志并进行任何其他必要的清理。

IConfiguration createConfiguration (String[] args)
IInvocationContext createInvocationContext ()
IConfigurationFactory getConfigFactory ()

获取对IConfigurationFactory的引用的工厂方法

IDeviceManager getDeviceManager ()

获取对IDeviceManager的引用的工厂方法

TradefedFeatureServer getFeatureServer ()
IHostOptions getHostOptions ()
IKeyStoreClient getKeyStoreClient ()

使用在IKeyStoreFactory中声明的IGlobalConfiguration获取IKeyStoreClient ,如果未定义,则为 null。

void initLogging ()

初始化 ddmlib 日志。

boolean isShutdown ()
boolean isShuttingDown ()
void processReadyCommands ( IDeviceManager manager)
void waitForAllInvocationThreads ()

等到所有调用线程完成。

公共构造函数

命令调度器

public CommandScheduler ()

创建一个CommandScheduler

注意:使用前必须调用start。

公共方法

添加命令

public boolean addCommand (String[] args)

将命令添加到调度程序。

命令本质上是要运行的配置及其相关参数的实例。

如果指定了“--help”参数,则配置的帮助文本将输出到标准输出。否则,配置将被添加到队列中以运行。

参数
args String :配置参数。

退货
boolean如果命令添加成功,则为true

投掷
ConfigurationException

添加命令文件

public void addCommandFile (String cmdFilePath, 
                 extraArgs)

将给定文件中的所有命令添加到调度程序

参数
cmdFilePath String : 命令文件的文件系统路径

extraArgs : 一个ERROR(/List) String参数,用于附加到从文件中解析的每个命令。可以为空,但不应为空。

投掷
ConfigurationException

等待

public void await ()

等待调度程序开始运行,包括等待旧 TF 的切换完成(如果适用)。

检查委托

public static TradefedDelegator checkDelegation (String[] args)

根据命令行创建一个委托器,看看我们是否需要委托运行。

参数
args String

退货
TradefedDelegator

投掷
ConfigurationException

完成移交

public void completeHandover ()

通知命令调度程序启动的切换序列已完全完成,它应该在默认端口上重新初始化其远程管理器。

createReleaseMap

public static  createReleaseMap (IInvocationContext context, 
                Throwable e)

创建设备状态的映射,以便可以适当地释放它们。

参数
context IInvocationContext

e Throwable

退货

创建沙盒

public ISandbox createSandbox ()

创建调用将用于运行的ISandbox

退货
ISandbox

显示命令队列

public void displayCommandQueue (PrintWriter printWriter)

输出有关命令执行队列状态的详细调试信息。

显示命令信息

public void displayCommandsInfo (PrintWriter printWriter, 
                String regex)

输出当前命令的列表。

参数
printWriter PrintWriter : 要输出到的ERROR(/PrintWriter)

regex String :为了打印命令应该匹配的正则表达式。如果为 null,则将打印所有命令。

显示调用信息

public void displayInvocationsInfo (PrintWriter printWriter)

显示当前调用的列表。

参数
printWriter PrintWriter : 要输出到的ERROR(/PrintWriter)

转储命令 XML

public void dumpCommandsXml (PrintWriter printWriter, 
                String regex)

转储命令的扩展 xml 文件,其中包含为所有当前命令指定的所有Option值。

参数
printWriter PrintWriter : 将状态输出到的ERROR(/PrintWriter)

regex String : 为了转储 xml 文件,命令应该匹配的正则表达式。如果为 null,则将转储所有命令。

执行命令

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

直接在已分配的设备上执行命令。

参数
listener ICommandScheduler.IScheduledInvocationListener :要通知的ICommandScheduler.IScheduledInvocationListener

device ITestDevice :要使用的ITestDevice

args String :命令参数

投掷
ConfigurationException

执行命令

public void execCommand (IInvocationContext context, 
                ICommandScheduler.IScheduledInvocationListener listener, 
                String[] args)

直接分配设备并执行命令,而不使用已经存在的IInvocationContext将其添加到命令队列中。

参数
context IInvocationContext :现有的IInvocationContext

listener ICommandScheduler.IScheduledInvocationListener :要通知的ICommandScheduler.IScheduledInvocationListener

args String :命令参数

投掷
ConfigurationException
NoDeviceException

执行命令

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

直接分配设备并执行命令,而不将其添加到命令队列中。

参数
listener ICommandScheduler.IScheduledInvocationListener :要通知的ICommandScheduler.IScheduledInvocationListener

args String :命令参数

投掷
ConfigurationException
NoDeviceException

getCommandFileWatcher

public CommandFileWatcher getCommandFileWatcher ()

为此调度程序获取适当的CommandFileWatcher

退货
CommandFileWatcher

获取执行命令计数

public int getExecutingCommandCount ()

返回处于执行状态的命令数。

退货
int

获取主机状态

public CommandScheduler.HostState getHostState ()

退货
CommandScheduler.HostState

获取调用信息

public String getInvocationInfo (int invocationId)

返回有关指定调用 id 的调用 bu 的信息。

参数
invocationId int :调用的跟踪 id。

退货
String包含有关调用信息的String

getLastInvocationExitCode

public CommandRunner.ExitCode getLastInvocationExitCode ()

返回上次运行的调用的错误代码。如果尚未运行任何调用,则返回 0(无错误)。

退货
CommandRunner.ExitCode

getLastInvocationThrowable

public Throwable getLastInvocationThrowable ()

从最后一次运行的调用中返回Throwable 。如果没有可用的 throwable,则返回 null。

退货
Throwable

getReadyCommandCount

public int getReadyCommandCount ()

返回队列中处于就绪状态的命令数。

退货
int

getShutdownTimeout

public long getShutdownTimeout ()

退货
long

移交启动完成

public void handoverInitiationComplete ()

通知命令调度器在使用中的设备和命令的初始切换交换已完成,并且它可以开始调度操作。

切换关机

public boolean handoverShutdown (int handoverPort)

启动shutdown()并切换到同一主机上的另一个 tradefed 进程。

当释放设备可用时,调度程序将通知在该端口上侦听的远程 tradefed 进程。

参数
handoverPort int

退货
boolean如果切换启动成功,则为true ,否则为false

通知文件已更改

public void notifyFileChanged (File cmdFile, 
                 extraArgs)

参数
cmdFile File

extraArgs

删除所有命令

public void removeAllCommands ()

从调度程序中删除所有命令

public void run ()

该线程的主要执行块。

设置清除客户端

public void setClearcutClient (ClearcutClient client)

设置客户端报告线束数据

参数
client ClearcutClient

shouldShutdownOnCmdfileError

public boolean shouldShutdownOnCmdfileError ()

如果我们需要在命令错误时关闭调度程序,则返回 true

退货
boolean

关闭

public void shutdown ()

尝试正常关闭命令调度程序。

清除等待测试的命令,并请求所有正在进行的调用正常关闭。

调用 shutdown 后,调度程序主循环将等待所有正在进行的调用完成,然后完全退出。

关机硬

public void shutdownHard (boolean killAdb)

尝试强制关闭命令调度程序。

类似于shutdown() ,但也可以选择终止 adb 连接,以尝试“激发”正在进行的调用以更快地完成。

参数
killAdb boolean

关机硬

public void shutdownHard ()

尝试强制关闭命令调度程序。与 shutdownHard(true) 相同。

shutdownOnEmpty

public void shutdownOnEmpty ()

类似于shutdown() ,但会在退出前等待所有命令执行完毕。

请注意,如果任何命令处于循环模式,调度程序将永远不会退出。

开始

public void start ()

启动调度程序,包括设置日志记录、初始化DeviceManager

停止调用

public boolean stopInvocation (ITestInvocation invocation)

停止正在运行的调用。

参数
invocation ITestInvocation

退货
boolean如果调用已停止,则为 true,否则为 false

停止调用

public boolean stopInvocation (int invocationId, 
                String cause)

通过指定它的 id 来停止正在运行的调用。

参数
invocationId int :调用的跟踪 id。

cause String : 停止调用的原因。

退货
boolean如果调用已停止,则为 true,否则为 false

受保护的方法

清理

protected void cleanUp ()

在我们退出之前关闭日志并进行任何其他必要的清理。

暴露所以单元测试可以模拟。

创建配置

protected IConfiguration createConfiguration (String[] args)

参数
args String

退货
IConfiguration

投掷
ConfigurationException

创建调用上下文

protected IInvocationContext createInvocationContext ()

退货
IInvocationContext

获取配置工厂

protected IConfigurationFactory getConfigFactory ()

获取对IConfigurationFactory的引用的工厂方法

退货
IConfigurationFactory要使用的IConfigurationFactory

获取设备管理器

protected IDeviceManager getDeviceManager ()

获取对IDeviceManager的引用的工厂方法

退货
IDeviceManager要使用的IDeviceManager

获取特征服务器

protected TradefedFeatureServer getFeatureServer ()

退货
TradefedFeatureServer

获取主机选项

protected IHostOptions getHostOptions ()

退货
IHostOptions

获取KeyStoreClient

protected IKeyStoreClient getKeyStoreClient ()

使用在IKeyStoreFactory中声明的IGlobalConfiguration获取IKeyStoreClient ,如果未定义,则为 null。

退货
IKeyStoreClient IKeyStoreClient

初始化记录

protected void initLogging ()

初始化 ddmlib 日志。

暴露所以单元测试可以模拟。

是关机

protected boolean isShutdown ()

退货
boolean

isShuttingDown

protected boolean isShuttingDown ()

退货
boolean

处理就绪命令

protected void processReadyCommands (IDeviceManager manager)

参数
manager IDeviceManager

waitForAllInvocationThreads

protected void waitForAllInvocationThreads ()

等到所有调用线程完成。