Планировщик команд
public class CommandScheduler
extends Thread implements ICommandScheduler
| java.lang.Object | ||
| ↳ | java.lang.Thread | |
| ↳ | com.android.tradefed.command.CommandScheduler | |
Планировщик для выполнения команд TradeFederation на всех доступных устройствах.
Будет предпринята попытка расставить приоритеты для выполнения команд на основе общего времени их выполнения. Например, команды, выполняющиеся нечасто или быстро, будут иметь приоритет над командами, выполняющимися длительное время.
Работает в фоновом режиме бесконечно, пока не завершится работа системы.
Краткое содержание
Государственные строители | |
|---|---|
CommandScheduler () Создает | |
Общедоступные методы | |
|---|---|
Pair <Boolean, Integer> | addCommand (String[] args)Добавляет команду в планировщик задач. |
void | addCommandFile (String cmdFilePath, List<String> extraArgs)Добавляет все команды из указанного файла в планировщик задач. |
void | await ()Ожидает запуска планировщика, включая ожидание завершения передачи управления от старого TF, если это применимо. |
static TradefedDelegator | checkDelegation (String[] args)Создайте делегатор на основе командной строки, чтобы проверить, нужно ли делегировать выполнение. |
static Map< ITestDevice , FreeDeviceState > | createReleaseMap ( IInvocationContext context, Throwable e)Создайте карту состояния устройств, чтобы их можно было соответствующим образом освободить. |
ISandbox | createSandbox () Создайте |
void | displayCommandQueue (PrintWriter printWriter)Вывод подробной отладочной информации о состоянии очереди выполнения команд. |
void | displayCommandsInfo (PrintWriter printWriter, String regex)Вывести список текущих команд. |
void | displayInvocationsInfo (PrintWriter printWriter)Отображает список текущих вызовов. |
void | dumpCommandsXml (PrintWriter printWriter, String regex) Выгрузить расширенный XML-файл команды со всеми значениями |
long | execCommand ( ICommandScheduler.IScheduledInvocationListener listener, ITestDevice device, String[] args)Выполнить команду непосредственно на уже выделенном устройстве. |
long | execCommand ( IInvocationContext context, ICommandScheduler.IScheduledInvocationListener listener, String[] args) Непосредственно выделяет устройство и выполняет команду, не добавляя её в очередь команд, используя уже существующий |
long | execCommand ( ICommandScheduler.IScheduledInvocationListener listener, String[] args)Непосредственно выделяет устройство и выполняет команду, не добавляя её в очередь команд. |
long | execCommand ( ICommandScheduler.IScheduledInvocationListener listener, List< ITestDevice > reservedDevices, String[] args)Выполнить команду непосредственно на уже выделенных устройствах. |
CommandFileWatcher | getCommandFileWatcher ()Получите соответствующий CommandFileWatcher для этого планировщика. |
int | getExecutingCommandCount ()Возвращает количество команд, находящихся в состоянии выполнения. |
CommandScheduler.HostState | getHostState () |
String | getInvocationInfo (int invocationId)Возвращает информацию о вызове, указывая идентификатор вызова. |
CommandRunner.ExitCode | getLastInvocationExitCode ()Возвращает код ошибки последнего выполненного вызова. |
Throwable | getLastInvocationThrowable () Верните |
int | getReadyCommandCount ()Возвращает количество команд в очереди, находящихся в состоянии готовности. |
long | getShutdownTimeout () |
boolean | isDeviceInInvocationThread ( ITestDevice device)Возвращает true, если устройство используется активным потоком вызова. |
boolean | isShuttingDown () |
void | notifyFileChanged (File cmdFile, List<String> extraArgs) |
void | removeAllCommands ()Удалить все команды из планировщика. |
void | run ()Основной блок выполнения этого потока. |
void | setClearcutClient (ClearcutClient client)Настройте клиент на отправку данных с жгута проводов. |
void | setMaxPollTime (long polling) |
void | setPrintSchedulingWarning (boolean print) |
boolean | shouldShutdownOnCmdfileError ()Возвращать true, если необходимо остановить планировщик при возникновении ошибки команды. |
void | shutdown (boolean notifyStop)Попытайтесь корректно завершить работу планировщика команд. |
void | shutdownHard (boolean killAdb)Попробуйте принудительно завершить работу планировщика команд. |
void | shutdownHard ()Попробуйте принудительно завершить работу планировщика команд. |
void | shutdownOnEmpty () Аналогично функции |
void | start () Запускает планировщик задач, включая настройку логирования, инициализацию |
boolean | stopInvocation ( ITestInvocation invocation)Остановить выполняющуюся операцию. |
boolean | stopInvocation (int invocationId, String cause)Остановить выполняющийся вызов, указав его идентификатор. |
void | stopScheduling ()Прекращает планирование и прием новых тестов, но не останавливает работу Tradefed. |
Государственные строители
Планировщик команд
public CommandScheduler ()
Создает CommandScheduler ).
Примечание: перед использованием необходимо вызвать функцию start.
Общедоступные методы
addCommand
public Pair<Boolean, Integer> addCommand (String[] args)
Добавляет команду в планировщик задач.
Команда по сути представляет собой экземпляр конфигурации для выполнения и связанные с ней аргументы.
Если указан аргумент "--help", текст справки по конфигурации будет выведен в стандартный поток вывода. В противном случае конфигурация будет добавлена в очередь на выполнение.
| Параметры | |
|---|---|
args | String : аргументы конфигурации. |
| Возвраты | |
|---|---|
Pair <Boolean, Integer> | Пара значений: первое значение — логическое значение true если команда была успешно добавлена; второе значение — известный идентификатор трекера команды (неотрицательное значение), если команда была успешно добавлена; возвращает 0, если команда добавлена для всех устройств, в противном случае -1. |
| Броски | |
|---|---|
ConfigurationException | |
addCommandFile
public void addCommandFile (String cmdFilePath,
List<String> extraArgs)Добавляет все команды из указанного файла в планировщик задач.
| Параметры | |
|---|---|
cmdFilePath | String : путь к файлу команды в файловой системе |
extraArgs | List : List String аргументов, добавляемых к каждой команде, полученной из файла. Может быть пустым, но не должен быть null. |
| Броски | |
|---|---|
ConfigurationException | |
ждать
public void await ()
Ожидает запуска планировщика, включая ожидание завершения передачи управления от старого TF, если это применимо.
| Броски | |
|---|---|
InterruptedException | |
проверка делегирования
public static TradefedDelegator checkDelegation (String[] args)
Создайте делегатор на основе командной строки, чтобы проверить, нужно ли делегировать выполнение.
| Параметры | |
|---|---|
args | String |
| Возвраты | |
|---|---|
TradefedDelegator | |
| Броски | |
|---|---|
| com.android.tradefed.config.ConfigurationException |
ConfigurationException | |
createReleaseMap
public static Map<ITestDevice, FreeDeviceState> createReleaseMap (IInvocationContext context, Throwable e)
Создайте карту состояния устройств, чтобы их можно было соответствующим образом освободить.
| Параметры | |
|---|---|
context | IInvocationContext |
e | Throwable |
| Возвраты | |
|---|---|
Map< ITestDevice , FreeDeviceState > | |
создать песочницу
public ISandbox createSandbox ()
Создайте ISandbox , который будет использоваться при выполнении запроса.
| Возвраты | |
|---|---|
ISandbox | |
displayCommandQueue
public void displayCommandQueue (PrintWriter printWriter)
Вывод подробной отладочной информации о состоянии очереди выполнения команд.
displayCommandsInfo
public void displayCommandsInfo (PrintWriter printWriter,
String regex)Вывести список текущих команд.
| Параметры | |
|---|---|
printWriter | PrintWriter : объект PrintWriter , на который будет производиться вывод. |
regex | String : регулярное выражение, которому должны соответствовать команды для вывода на экран. Если значение равно null, будут выведены все команды. |
displayInvocationsInfo
public void displayInvocationsInfo (PrintWriter printWriter)
Отображает список текущих вызовов.
| Параметры | |
|---|---|
printWriter | PrintWriter : объект PrintWriter , на который будет производиться вывод. |
dumpCommandsXml
public void dumpCommandsXml (PrintWriter printWriter,
String regex)Выгрузить расширенный XML-файл команды со всеми значениями Option , указанными для всех текущих команд.
| Параметры | |
|---|---|
printWriter | PrintWriter : объект PrintWriter , на который будет выводиться статус. |
regex | String : регулярное выражение, которому должны соответствовать команды для выгрузки XML-файла. Если значение равно null, будут выгружены все команды. |
execCommand
public long execCommand (ICommandScheduler.IScheduledInvocationListener listener, ITestDevice device, String[] args)
Выполнить команду непосредственно на уже выделенном устройстве.
| Параметры | |
|---|---|
listener | ICommandScheduler.IScheduledInvocationListener : объект ICommandScheduler.IScheduledInvocationListener , который необходимо уведомить. |
device | ITestDevice : устройство ITestDevice для использования |
args | String : аргументы команды |
| Возвраты | |
|---|---|
long | Идентификатор вызова запланированной команды. |
| Броски | |
|---|---|
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 | Идентификатор вызова запланированной команды. |
| Броски | |
|---|---|
ConfigurationException | |
NoDeviceException | |
execCommand
public long execCommand (ICommandScheduler.IScheduledInvocationListener listener, List<ITestDevice> reservedDevices, String[] args)
Выполнить команду непосредственно на уже выделенных устройствах.
| Параметры | |
|---|---|
listener | ICommandScheduler.IScheduledInvocationListener : объект ICommandScheduler.IScheduledInvocationListener , который необходимо уведомить. |
reservedDevices | List : ERROR(/List использовать |
args | String : аргументы команды |
| Возвраты | |
|---|---|
long | Идентификатор вызова запланированной команды. |
| Броски | |
|---|---|
ConfigurationException | |
getCommandFileWatcher
public CommandFileWatcher getCommandFileWatcher ()
Получите соответствующий CommandFileWatcher для этого планировщика.
| Возвраты | |
|---|---|
CommandFileWatcher | |
getExecutingCommandCount
public int getExecutingCommandCount ()
Возвращает количество команд, находящихся в состоянии выполнения.
| Возвраты | |
|---|---|
int | |
получитьИнформациюВызова
public String getInvocationInfo (int invocationId)
Возвращает информацию о вызове, указывая идентификатор вызова.
| Параметры | |
|---|---|
invocationId | int : идентификатор отслеживания вызова. |
| Возвраты | |
|---|---|
String | String , содержащая информацию о вызове. |
getLastInvocationExitCode
public CommandRunner.ExitCode getLastInvocationExitCode ()
Возвращает код ошибки последнего выполненного вызова. Возвращает 0 (нет ошибки), если вызовы еще не выполнялись.
| Возвраты | |
|---|---|
CommandRunner.ExitCode | |
getLastInvocationThrowable
public Throwable getLastInvocationThrowable ()
Возвращает объект Throwable из последнего выполненного вызова. Возвращает null, если объект Throwable недоступен.
| Возвраты | |
|---|---|
Throwable | |
getReadyCommandCount
public int getReadyCommandCount ()
Возвращает количество команд в очереди, находящихся в состоянии готовности.
| Возвраты | |
|---|---|
int | |
getShutdownTimeout
public long getShutdownTimeout ()
| Возвраты | |
|---|---|
long | |
isDeviceInInvocationThread
public boolean isDeviceInInvocationThread (ITestDevice device)
Возвращает true, если устройство используется активным потоком вызова.
| Параметры | |
|---|---|
device | ITestDevice |
| Возвраты | |
|---|---|
boolean | |
isShuttingDown
public boolean isShuttingDown ()
| Возвраты | |
|---|---|
boolean | |
notifyFileChanged
public void notifyFileChanged (File cmdFile,
List<String> extraArgs)| Параметры | |
|---|---|
cmdFile | File |
extraArgs | List |
removeAllCommands
public void removeAllCommands ()
Удалить все команды из планировщика.
бегать
public void run ()
Основной блок выполнения этого потока.
setClearcutClient
public void setClearcutClient (ClearcutClient client)
Настройте клиент на отправку данных с жгута проводов.
| Параметры | |
|---|---|
client | ClearcutClient |
setMaxPollTime
public void setMaxPollTime (long polling)
| Параметры | |
|---|---|
polling | long |
setPrintSchedulingWarning
public void setPrintSchedulingWarning (boolean print)
| Параметры | |
|---|---|
print | boolean |
shouldShutdownOnCmdfileError
public boolean shouldShutdownOnCmdfileError ()
Возвращать true, если необходимо остановить планировщик при возникновении ошибки команды.
| Возвраты | |
|---|---|
boolean | |
неисправность
public void shutdown (boolean notifyStop)
Попытайтесь корректно завершить работу планировщика команд.
| Параметры | |
|---|---|
notifyStop | boolean : если true, уведомляет о завершении работы TF. |
shutdownHard
public void shutdownHard (boolean killAdb)
Попробуйте принудительно завершить работу планировщика команд.
Аналогично функции shutdown() , но также может дополнительно разорвать соединение с adb, пытаясь «стимулировать» более быстрое завершение выполняющихся вызовов.
| Параметры | |
|---|---|
killAdb | boolean |
shutdownHard
public void shutdownHard ()
Попытка принудительно завершить работу планировщика команд. Аналогично shutdownHard(true).
shutdownOnEmpty
public void shutdownOnEmpty ()
Аналогично функции shutdown() , но вместо этого будет ждать выполнения всех команд, прежде чем завершить работу.
начинать
public void start ()
Запускает планировщик задач, включая настройку логирования, инициализацию DeviceManager и т.д.
stopInvocation
public boolean stopInvocation (ITestInvocation invocation)
Остановить выполняющуюся операцию.
| Параметры | |
|---|---|
invocation | ITestInvocation |
| Возвраты | |
|---|---|
boolean | Возвращает true, если вызов был остановлен, false в противном случае. |
stopInvocation
public boolean stopInvocation (int invocationId,
String cause)Остановить выполняющийся вызов, указав его идентификатор.
| Параметры | |
|---|---|
invocationId | int : идентификатор отслеживания вызова. |
cause | String : причина остановки вызова. |
| Возвраты | |
|---|---|
boolean | Возвращает true, если вызов был остановлен, false в противном случае. |
stopScheduling
public void stopScheduling ()
Это останавливает планирование и прием новых тестов, но не останавливает Tradefed. Это предназначено для обеспечения двухэтапного завершения работы, при котором сначала мы завершаем работу всех запущенных тестов, а затем завершаем процесс Tradefed.
Защищенные методы
очистка
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.IScheduledInvocationListener : ERROR(/InvocationEventHandler) для сообщения о событиях для проверки в тестовом режиме. |
config | IConfiguration |
| Возвраты | |
|---|---|
void | Возвращает true, если команда выполняется в тестовом режиме, в противном случае — false. |
| Броски | |
|---|---|
| com.android.tradefed.config.ConfigurationException |
ConfigurationException | |
execCommand
protected long execCommand (IInvocationContext context, ICommandScheduler.IScheduledInvocationListener listener, List<ITestDevice> reservedDevices, String[] args)
| Параметры | |
|---|---|
context | IInvocationContext |
listener | ICommandScheduler.IScheduledInvocationListener |
reservedDevices | List |
args | String |
| Возвраты | |
|---|---|
long | |
| Броски | |
|---|---|
ConfigurationException | |
getConfigFactory
protected IConfigurationFactory getConfigFactory ()
Фабричный метод для получения ссылки на IConfigurationFactory
| Возвраты | |
|---|---|
IConfigurationFactory | IConfigurationFactory для использования |
getDeviceManagementServer
protected DeviceManagementGrpcServer getDeviceManagementServer ()
| Возвраты | |
|---|---|
DeviceManagementGrpcServer | |
getDeviceManager
protected IDeviceManager getDeviceManager ()
Фабричный метод для получения ссылки на IDeviceManager
| Возвраты | |
|---|---|
IDeviceManager | IDeviceManager для использования |
getKeyStoreClient
protected IKeyStoreClient getKeyStoreClient ()
Получает объект IKeyStoreClient используя IKeyStoreFactory , объявленный в ERROR(/IGlobalConfiguration) , или null, если он не определен.
| Возвраты | |
|---|---|
IKeyStoreClient | IKeyStoreClient |
getTestInvocationManagementServer
protected TestInvocationManagementServer getTestInvocationManagementServer ()
| Возвраты | |
|---|---|
TestInvocationManagementServer | |
initLogging
protected void initLogging ()
Инициализирует журнал ddmlib.
Это позволяет модульным тестам имитировать ошибки.
isShutdown
protected boolean isShutdown ()
| Возвраты | |
|---|---|
boolean | |
processReadyCommands
protected void processReadyCommands (IDeviceManager manager)
| Параметры | |
|---|---|
manager | IDeviceManager |
shouldMarkReleased
protected boolean shouldMarkReleased ()
| Возвраты | |
|---|---|
boolean | |