Планировщик команд
public class CommandScheduler
extends Object implements ICommandScheduler
| java.lang.Object | |
| ↳ | com.android.tradefed.command.CommandScheduler |
Планировщик для запуска команд TradeFederation на всех доступных устройствах.
Будет пытаться расставить приоритеты для выполнения команд на основе общего количества времени их выполнения. Например, редко выполняемые или быстро выполняемые команды будут иметь приоритет над долго выполняемыми командами.
Работает в фоновом режиме до момента выключения.
Краткое содержание
Публичные конструкторы | |
|---|---|
CommandScheduler () Создает | |
Публичные методы | |
|---|---|
Pair <Boolean, Integer> | addCommand (String[] args)Добавляет команду в планировщик. |
void | addCommandFile (String cmdFilePath,Добавляет все команды из указанного файла в планировщик |
void | await ()Ожидает начала работы планировщика, включая ожидание завершения передачи управления от старого TF, если это применимо. |
static TradefedDelegator | checkDelegation (String[] args)Создайте делегат на основе командной строки, чтобы увидеть, нужно ли делегировать запуск. |
static | 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 ( ICommandScheduler.IScheduledInvocationListener listener,Непосредственно выполнить команду на уже выделенных устройствах. |
long | execCommand ( IInvocationContext context, ICommandScheduler.IScheduledInvocationListener listener, String[] args) Непосредственно выделяет устройство и выполняет команду, не добавляя ее в очередь команд, используя уже существующий |
long | execCommand ( ICommandScheduler.IScheduledInvocationListener listener, 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, |
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,
extraArgs) Добавляет все команды из указанного файла в планировщик
| Параметры | |
|---|---|
cmdFilePath | String : путь к командному файлу в файловой системе |
extraArgs | : ERROR(/List) String аргументов для добавления к каждой команде, проанализированной из файла. Может быть пустым, но не должен быть равен NULL. |
| Броски | |
|---|---|
ConfigurationException | |
ждать
public void await ()
Ожидает начала работы планировщика, включая ожидание завершения передачи управления от старого TF, если это применимо.
checkDelegation
public static TradefedDelegator checkDelegation (String[] args)
Создайте делегат на основе командной строки, чтобы увидеть, нужно ли делегировать запуск.
| Параметры | |
|---|---|
args | String |
| Возврат | |
|---|---|
TradefedDelegator | |
| Броски | |
|---|---|
| com.android.tradefed.config.ConfigurationException |
ConfigurationException | |
createReleaseMap
public staticcreateReleaseMap (IInvocationContext context, Throwable e)
Создайте карту состояний устройств, чтобы можно было своевременно их выпустить.
| Параметры | |
|---|---|
context | IInvocationContext |
e | Throwable |
| Возврат | |
|---|---|
| |
createSandbox
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 : регулярное выражение, которому должны соответствовать команды для вывода. Если равно null, будут выводиться все команды. |
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-файла. Если равно 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 (ICommandScheduler.IScheduledInvocationListener listener,reservedDevices, String[] args)
Непосредственно выполнить команду на уже выделенных устройствах.
| Параметры | |
|---|---|
listener | ICommandScheduler.IScheduledInvocationListener : ICommandScheduler.IScheduledInvocationListener , который будет уведомлен |
reservedDevices | : ERROR(/List использовать |
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 | |
getCommandFileWatcher
public CommandFileWatcher getCommandFileWatcher ()
Получите соответствующий CommandFileWatcher для этого планировщика
| Возврат | |
|---|---|
CommandFileWatcher | |
получитьВыполнениеКомандКаунти
public int getExecutingCommandCount ()
Возвращает количество команд в состоянии выполнения.
| Возврат | |
|---|---|
int | |
получитьHostState
public CommandScheduler.HostState getHostState ()
| Возврат | |
|---|---|
CommandScheduler.HostState | |
получитьInvocationInfo
public String getInvocationInfo (int invocationId)
Возвращает информацию о вызове, указав идентификатор вызова.
| Параметры | |
|---|---|
invocationId | int : идентификатор отслеживания вызова. |
| Возврат | |
|---|---|
String | String , содержащая информацию о вызове. |
получитьLastInvocationExitCode
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 | |
уведомитьФайлИзменен
public void notifyFileChanged (File cmdFile,
extraArgs) | Параметры | |
|---|---|
cmdFile | File |
extraArgs | |
удалитьВсеКоманды
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 ()
Закрывает журналы и выполняет любую другую необходимую очистку перед выходом.
Открыто, чтобы можно было имитировать модульные тесты.
createConfiguration
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,reservedDevices, String[] args)
| Параметры | |
|---|---|
context | IInvocationContext |
listener | ICommandScheduler.IScheduledInvocationListener |
reservedDevices | |
args | String |
| Возврат | |
|---|---|
long | |
| Броски | |
|---|---|
ConfigurationException | |
получитьConfigFactory
protected IConfigurationFactory getConfigFactory ()
Фабричный метод для получения ссылки на IConfigurationFactory
| Возврат | |
|---|---|
IConfigurationFactory | IConfigurationFactory для использования |
getDeviceManagementServer
protected DeviceManagementGrpcServer getDeviceManagementServer ()
| Возврат | |
|---|---|
DeviceManagementGrpcServer | |
получитьDeviceManager
protected IDeviceManager getDeviceManager ()
Фабричный метод получения ссылки на IDeviceManager
| Возврат | |
|---|---|
IDeviceManager | IDeviceManager для использования |
получитьFeatureServer
protected TradefedFeatureServer getFeatureServer ()
| Возврат | |
|---|---|
TradefedFeatureServer | |
getKeyStoreClient
protected IKeyStoreClient getKeyStoreClient ()
Извлекает IKeyStoreClient используя IKeyStoreFactory , объявленный в 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 |