命令調度器

public class CommandScheduler
extends Object implements ICommandScheduler

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


用於在所有可用設備上運行 TradeFederation 命令的調度程序。

將嘗試根據執行時間的總運行計數來確定要運行的命令的優先級。例如,不頻繁或快速運行的命令將優先於長時間運行的命令。

永遠在後台運行,直到關機。

概括

嵌套類

enum CommandScheduler.HostState

主機不同狀態的枚舉

公共構造函數

CommandScheduler ()

創建一個CommandScheduler

公共方法

Pair <Boolean, Integer> addCommand (String[] args)

將命令添加到調度程序。

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

將給定文件中的所有命令添加到調度程序

void await ()

等待調度程序開始運行,包括等待舊 TF 的切換完成(如果適用)。

static TradefedDelegator checkDelegation (String[] args)

根據命令行創建一個委託器,看看我們是否需要委託運行。

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值。

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

直接分配設備並執行命令,而不使用已經存在的IInvocationContext將其添加到命令隊列中。

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

直接分配設備並執行命令,而不將其添加到命令隊列中。

long execCommand ( ICommandScheduler.IScheduledInvocationListener listener, ITestDevice device, 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 ()
boolean isDeviceInInvocationThread ( ITestDevice device)

如果設備被活動調用線程使用,則返回 true。

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

從調度程序中刪除所有命令

void run ()

該線程的主要執行塊。

void setClearcutClient (ClearcutClient client)

設置客戶端報告線束數據

boolean shouldShutdownOnCmdfileError ()

如果我們需要在命令錯誤時關閉調度程序,則返回 true

void shutdown (boolean notifyStop)

嘗試正常關閉命令調度程序。

void shutdownHard (boolean killAdb)

嘗試強制關閉命令調度程序。

void shutdownHard ()

嘗試強制關閉命令調度程序。

void shutdownOnEmpty ()

類似於shutdown() ,但會在退出前等待所有命令執行完畢。

void start ()

啟動調度程序,包括設置日誌記錄、初始化DeviceManager

boolean stopInvocation (int invocationId, String cause)

通過指定它的 id 來停止正在運行的調用。

boolean stopInvocation ( ITestInvocation invocation)

停止正在運行的調用。

受保護的方法

void cleanUp ()

在我們退出之前關閉日誌並進行任何其他必要的清理。

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

獲取對IConfigurationFactory的引用的工廠方法

DeviceManagementGrpcServer getDeviceManagementServer ()
IDeviceManager getDeviceManager ()

獲取對IDeviceManager的引用的工廠方法

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

使用在IKeyStoreFactory中聲明的IGlobalConfiguration獲取IKeyStoreClient ,如果未定義,則為 null。

TestInvocationManagementServer getTestInvocationManagementServer ()
void initLogging ()

初始化 ddmlib 日誌。

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

公共構造函數

命令調度器

public CommandScheduler ()

創建一個CommandScheduler

注意:使用前必須調用start。

公共方法

添加命令

public Pair<Boolean, Integer> addCommand (String[] args)

將命令添加到調度程序。

命令本質上是要運行的配置及其相關參數的實例。

如果指定了“--help”參數,則配置的幫助文本將輸出到標準輸出。否則,配置將被添加到隊列中以運行。

參數
args String :配置參數。

退貨
Pair <Boolean, Integer>一對值,如果命令添加成功,第一個值是布爾值true 。第二個值是已知的命令跟踪器id(非負值),如果命令添加成功,則為所有設備添加命令時返回0,否則返回-1。

投擲
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

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 long execCommand (IInvocationContext context, 
                ICommandScheduler.IScheduledInvocationListener listener, 
                String[] args)

直接分配設備並執行命令,而不使用已經存在的IInvocationContext將其添加到命令隊列中。

參數
context IInvocationContext :現有的IInvocationContext

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

args String :命令參數

退貨
long

投擲
ConfigurationException
NoDeviceException

執行命令

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

直接分配設備並執行命令,而不將其添加到命令隊列中。

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

args String :命令參數

退貨
long調度命令的調用 id。

投擲
ConfigurationException
NoDeviceException

執行命令

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

直接在已分配的設備上執行命令。

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

device ITestDevice :要使用的ITestDevice

args String :命令參數

退貨
long調度命令的調用 id。

投擲
ConfigurationException

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

isDeviceInInvocationThread

public boolean isDeviceInInvocationThread (ITestDevice device)

如果設備被活動調用線程使用,則返回 true。

參數
device ITestDevice

退貨
boolean

通知文件已更改

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 (boolean notifyStop)

嘗試正常關閉命令調度程序。

參數
notifyStop boolean :如果為真,則通知 TF 關閉的調用。

關機硬

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 (int invocationId, 
                String cause)

通過指定它的 id 來停止正在運行的調用。

參數
invocationId int :調用的跟踪 id。

cause String : 停止調用的原因。

退貨
boolean如果調用已停止,則為 true,否則為 false

停止調用

public boolean stopInvocation (ITestInvocation invocation)

停止正在運行的調用。

參數
invocation ITestInvocation

退貨
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 DeviceManagementGrpcServer getDeviceManagementServer ()

退貨
DeviceManagementGrpcServer

獲取設備管理器

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 TestInvocationManagementServer getTestInvocationManagementServer ()

退貨
TestInvocationManagementServer

初始化記錄

protected void initLogging ()

初始化 ddmlib 日誌。

暴露所以單元測試可以模擬。

是關機

protected boolean isShutdown ()

退貨
boolean

isShuttingDown

protected boolean isShuttingDown ()

退貨
boolean

處理就緒命令

protected void processReadyCommands (IDeviceManager manager)

參數
manager IDeviceManager