CommandScheduler

public class CommandScheduler
extends Object implements ICommandScheduler

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


這個排程器可在所有可用裝置上執行 TradeFederation 指令。

會嘗試根據其執行的總執行次數來排定指令執行的優先順序 讓應用程式從可以最快做出回應的位置 回應使用者要求例如:不常或快速執行的指令,其優先順序高於長時間執行的指令。

在背景中永久執行,直到關機為止。

摘要

公用建構函式

CommandScheduler()

可建立 CommandScheduler

公用方法

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

在排程器中新增指令。

void 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(ICommandScheduler.IScheduledInvocationListener listener, reservedDevices, String[] args)

直接在已分配的裝置上執行指令。

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

直接分配裝置並執行指令,且不會將裝置新增至指令佇列 使用現有的 IInvocationContext

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

直接分配裝置並執行指令,且不會將裝置新增至指令佇列。

CommandFileWatcher getCommandFileWatcher()

取得這個排程器適用的 CommandFileWatcher

int getExecutingCommandCount()

傳回執行中狀態的指令數量。

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

傳回指定叫用 ID 的叫用耳機資訊。

CommandRunner.ExitCode getLastInvocationExitCode()

傳回上次執行叫用的錯誤代碼。

Throwable getLastInvocationThrowable()

從上次執行的叫用中傳回 Throwable

int getReadyCommandCount()

傳回佇列中處於就緒狀態的指令數量。

long getShutdownTimeout()
boolean isDeviceInInvocationThread(ITestDevice device)

如果裝置在運作中的叫用執行緒使用裝置,則傳回 true。

boolean isShuttingDown()
void 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(ITestInvocation invocation)

停止執行中的叫用。

boolean stopInvocation(int invocationId, String cause)

指定 ID 即可停止執行中的叫用。

void stopScheduling()

停止安排並接受新測試,但不停止交易。

保護方法

void cleanUp()

關閉記錄,並在退出前執行其他必要的清除作業。

IConfiguration createConfiguration(String[] args)
IInvocationContext createInvocationContext()
void dryRunCommandReporting(ICommandScheduler.IScheduledInvocationListener handler, IConfiguration config)

判斷特定指令是否為模擬測試。

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

取得 IConfigurationFactory 參照的工廠方法

DeviceManagementGrpcServer getDeviceManagementServer()
IDeviceManager getDeviceManager()

取得 IDeviceManager 參照的工廠方法

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

使用 IGlobalConfiguration 中宣告的 IKeyStoreFactory 擷取 IKeyStoreClient;如未定義,則為空值。

TestInvocationManagementServer getTestInvocationManagementServer()
void initLogging()

初始化 ddmlib 記錄。

boolean isShutdown()
void processReadyCommands(IDeviceManager manager)

公用建構函式

CommandScheduler

public CommandScheduler ()

可建立 CommandScheduler

注意:使用前必須先呼叫 start。

公用方法

addCommand

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

在排程器中新增指令。

基本上,指令是某項設定的執行例項,且該執行個體相關聯 引數。

如果「--help」引數會指定設定的說明文字,並將該設定輸出至 stdout。 否則,設定會新增至佇列以便執行。

參數
args String:設定引數。

傳回
Pair<Boolean, Integer> 一組值,如果已新增指令,第一個值會是布林值 true 第二個值是已知的命令追蹤程式 ID(非負值),如果 指令新增成功,而在所有裝置上新增指令時傳回 0,否則傳回 0。 -1.

擲回
ConfigurationException

addCommandFile

public void addCommandFile (String cmdFilePath, 
                 extraArgs)

將指定檔案的所有指令新增至排程器

參數
cmdFilePath String:comand 檔案的檔案系統路徑

extraArgs String 引數的 ERROR(/List),附加在剖析的每個指令上 。可以是空白,但不能為空值。

擲回
ConfigurationException

等人

public void await ()

等待排程器開始執行,包括等待舊 TF 轉換完成 (如適用)。

檢查委派

public static TradefedDelegator checkDelegation (String[] args)

根據指令列建立委派者,確認是否需要委派執行作業。

參數
args String

傳回
TradefedDelegator

擲回
com.android.tradefed.config.ConfigurationException
ConfigurationException

createReleaseMap

public static  createReleaseMap (IInvocationContext context, 
                Throwable e)

建立裝置狀態的地圖,以便正確釋放裝置。

參數
context IInvocationContext

e Throwable

傳回

建立沙箱

public ISandbox createSandbox ()

建立叫用將用來執行的 ISandbox

傳回
ISandbox

displayCommandQueue

public void displayCommandQueue (PrintWriter printWriter)

輸出指令執行佇列狀態的詳細偵錯資訊。

displayCommandsInfo

public void displayCommandsInfo (PrintWriter printWriter, 
                String regex)

並輸出目前指令的清單。

參數
printWriter PrintWriter:要輸出的 ERROR(/PrintWriter)

regex String:為求相符指令的規則運算式 如果值為空值,則所有指令都會顯示。

displayInvocationsInfo

public void displayInvocationsInfo (PrintWriter printWriter)

顯示目前叫用的清單。

參數
printWriter PrintWriter:要輸出的 ERROR(/PrintWriter)

dumpCommandsXml

public void dumpCommandsXml (PrintWriter printWriter, 
                String regex)

使用所有指令傾印已展開的 XML 檔案 已為所有目前指令指定的 Option 值。

參數
printWriter PrintWriter:要輸出狀態的 ERROR(/PrintWriter)

regex String:為 要傾印的 XML 檔案如果為空值,系統會傾印所有指令。

execCommand

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

直接在已分配的裝置上執行指令。

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

reservedDevices :要使用的 ERROR(/List)

args String:指令引數

傳回
long 排定指令的叫用 ID。

擲回
ConfigurationException

execCommand

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

直接分配裝置並執行指令,且不會將裝置新增至指令佇列 使用現有的 IInvocationContext

參數
context IInvocationContext:現有的 IInvocationContext

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

args String:指令引數

傳回
long

擲回
ConfigurationException
NoDeviceException

execCommand

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

直接分配裝置並執行指令,且不會將裝置新增至指令佇列。

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

args String:指令引數

傳回
long 排定指令的叫用 ID。

擲回
ConfigurationException
NoDeviceException

getCommandFileWatcher

public CommandFileWatcher getCommandFileWatcher ()

取得這個排程器適用的 CommandFileWatcher

傳回
CommandFileWatcher

getExecutingCommandCount

public int getExecutingCommandCount ()

傳回執行中狀態的指令數量。

傳回
int

getHostState

public CommandScheduler.HostState getHostState ()

傳回
CommandScheduler.HostState

getInvocationInfo

public String getInvocationInfo (int invocationId)

傳回指定叫用 ID 的叫用耳機資訊。

參數
invocationId int:叫用的追蹤 ID。

傳回
String 包含叫用相關資訊的 String

getLastInvocationExitCode

public CommandRunner.ExitCode getLastInvocationExitCode ()

傳回上次執行叫用的錯誤代碼。 如果尚未執行叫用,會傳回 0 (無錯誤)。

傳回
CommandRunner.ExitCode

getLastInvocationThrowable

public Throwable getLastInvocationThrowable ()

從上次執行的叫用中傳回 Throwable。 如果沒有可用的 Throwable,則傳回空值。

傳回
Throwable

getReadyCommandCount

public int getReadyCommandCount ()

傳回佇列中處於就緒狀態的指令數量。

傳回
int

getShutdownTimeout

public long getShutdownTimeout ()

傳回
long

isDeviceInvocationThread

public boolean isDeviceInInvocationThread (ITestDevice device)

如果裝置在運作中的叫用執行緒使用裝置,則傳回 true。

參數
device ITestDevice

傳回
boolean

關機

public boolean isShuttingDown ()

傳回
boolean

通知檔案已變更

public void notifyFileChanged (File cmdFile, 
                 extraArgs)

參數
cmdFile File

extraArgs

removeAllCommands

public void removeAllCommands ()

移除排程器中的所有指令

得分

public void run ()

這個執行緒的主要執行區塊。

setClearcutClient

public void setClearcutClient (ClearcutClient client)

將用戶端設為回報管理資料

參數
client ClearcutClient

shouldShutdownOnCmdfileError

public boolean shouldShutdownOnCmdfileError ()

如果我們需要針對指令錯誤關閉排程器,則傳回 true

傳回
boolean

關機

public void shutdown (boolean notifyStop)

嘗試安全關閉指令排程器。

參數
notifyStop boolean:如果為 true,系統會通知 TF 關閉的叫用。

關閉危險物品

public void shutdownHard (boolean killAdb)

嘗試強制關閉指令排程器。

shutdown() 類似,但也會視需要終止 ADB 連線, 試圖「激勵」即可更快完成

參數
killAdb boolean

關閉危險物品

public void shutdownHard ()

嘗試強制關閉指令排程器。與 ShutHard(true) 相同。

關閉

public void shutdownOnEmpty ()

shutdown() 類似,但會等待所有指令執行完畢 。

請注意,如果任何指令處於循環模式,排程器一律不會結束。

start

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

停止排程

public void stopScheduling ()

停止安排並接受新測試,但不停止交易。這項設定是用來啟用 我們會先排除所有執行中的測試,再終止交易 (2 個步驟) 上傳資料集之後,您可以運用 AutoML 自動完成部分資料準備工作

保護方法

清理

protected void cleanUp ()

關閉記錄,並在退出前執行其他必要的清除作業。

公開,以便模擬單元測試。

建立設定

protected IConfiguration createConfiguration (String[] args)

參數
args String

傳回
IConfiguration

擲回
ConfigurationException

createInvocationContext

protected IInvocationContext createInvocationContext ()

傳回
IInvocationContext

dryRunCommandReporting

protected void dryRunCommandReporting (ICommandScheduler.IScheduledInvocationListener handler, 
                IConfiguration config)

判斷特定指令是否為模擬測試。如果指令是模擬測試,請進行驗證。如果 如有任何設定問題,就會擲回 ConfigurationException。

參數
handler ICommandScheduler.IScheduledInvocationListenerERROR(/InvocationEventHandler),用於回報模擬測試驗證的事件。

config IConfiguration

傳回
void 如果指令是模擬測試,傳回 true,否則傳回 false。

擲回
com.android.tradefed.config.ConfigurationException
ConfigurationException

execCommand

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

參數
context IInvocationContext

listener ICommandScheduler.IScheduledInvocationListener

reservedDevices

args String

傳回
long

擲回
ConfigurationException

getConfigFactory

protected IConfigurationFactory getConfigFactory ()

取得 IConfigurationFactory 參照的工廠方法

傳回
IConfigurationFactory 要使用的 IConfigurationFactory

getDeviceManagementServer

protected DeviceManagementGrpcServer getDeviceManagementServer ()

傳回
DeviceManagementGrpcServer

getDeviceManager

protected IDeviceManager getDeviceManager ()

取得 IDeviceManager 參照的工廠方法

傳回
IDeviceManager 要使用的 IDeviceManager

取得功能伺服器

protected TradefedFeatureServer getFeatureServer ()

傳回
TradefedFeatureServer

getHost 選項

protected IHostOptions getHostOptions ()

傳回
IHostOptions

getKeyStoreClient

protected IKeyStoreClient getKeyStoreClient ()

使用 IGlobalConfiguration 中宣告的 IKeyStoreFactory 擷取 IKeyStoreClient;如未定義,則為空值。

傳回
IKeyStoreClient IKeyStoreClient

getTestInvocationManagementServer

protected TestInvocationManagementServer getTestInvocationManagementServer ()

傳回
TestInvocationManagementServer

initLogging

protected void initLogging ()

初始化 ddmlib 記錄。

公開,以便模擬單元測試。

關機

protected boolean isShutdown ()

傳回
boolean

processReadyCommands

protected void processReadyCommands (IDeviceManager manager)

參數
manager IDeviceManager