Командный планировщик
public class CommandScheduler
extends Object
implements ICommandScheduler
java.lang.Объект | |
↳ | com.android.tradefed.command.CommandScheduler |
Планировщик для запуска команд TradeFederation на всех доступных устройствах.
Попытается определить приоритетность выполнения команд на основе общего количества выполнений за время их выполнения. например, редко выполняющиеся или быстро выполняемые команды будут иметь приоритет над длительно выполняемыми командами.
Работает вечно в фоновом режиме до выключения.
Краткое содержание
Общественные конструкторы | |
---|---|
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 () Создайте |
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, reservedDevices, String[] args) execCommand ( ICommandScheduler.IScheduledInvocationListener listener, reservedDevices, String[] args) Непосредственное выполнение команды на уже выделенных устройствах. |
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, 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 () Аналогично |
void | start () Запускает планировщик, включая настройку ведения журнала, инициализацию |
boolean | stopInvocation ( ITestInvocation invocation) Остановить текущий вызов. |
boolean | stopInvocation (int invocationId, String cause) Остановите текущий вызов, указав его идентификатор. |
void | stopScheduling () Останавливает планирование и прием новых тестов, но не останавливает Tradefed. |
Общественные конструкторы
Командный планировщик
public CommandScheduler ()
Создает CommandScheduler
.
Примечание: перед использованием необходимо вызвать start.
Публичные методы
добавитькоманду
public Pair<Boolean, Integer> addCommand (String[] args)
Добавляет команду в планировщик.
По сути, команда представляет собой экземпляр запускаемой конфигурации и связанных с ней аргументов.
Если указан аргумент «--help», текст справки для конфигурации будет выведен на стандартный вывод. В противном случае конфигурация будет добавлена в очередь на запуск.
Параметры | |
---|---|
args | String : аргументы конфигурации. |
Возврат | |
---|---|
Pair <Boolean, Integer> | Пара значений, первое значение — логическое значение true если команда была добавлена успешно. Второе значение — это известный идентификатор средства отслеживания команд (неотрицательное значение). Если команда была добавлена успешно, возвращайте 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 |
Броски | |
---|---|
| com.android.tradefed.config.ConfigurationException |
ConfigurationException |
СоздатьReleaseMap
public staticcreateReleaseMap (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 : регулярное выражение, которому должны соответствовать команды для печати. Если значение равно нулю, то будут напечатаны все команды. |
displayInvocatsInfo
public void displayInvocationsInfo (PrintWriter printWriter)
Отображает список текущих вызовов.
Параметры | |
---|---|
printWriter | PrintWriter : ERROR(/PrintWriter) для вывода. |
дампкоммандсксмл
public void dumpCommandsXml (PrintWriter printWriter, String regex)
Дамп расширенного XML-файла для команды со всеми значениями Option
указанными для всех текущих команд.
Параметры | |
---|---|
printWriter | PrintWriter : ERROR(/PrintWriter) для вывода статуса. |
regex | String : регулярное выражение, которому должны соответствовать команды для создания дампа XML-файла. Если значение равно нулю, все команды будут сброшены. |
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 ) 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 |
getExecutingCommandCount
public int getExecutingCommandCount ()
Возвращает количество команд в состоянии выполнения.
Возврат | |
---|---|
int |
getInvoctionInfo
public String getInvocationInfo (int invocationId)
Возвращает информацию о вызове, указав идентификатор вызова.
Параметры | |
---|---|
invocationId | int : идентификатор отслеживания вызова. |
Возврат | |
---|---|
String | String содержащая информацию о вызове. |
getLastInvoctionExitCode
public CommandRunner.ExitCode getLastInvocationExitCode ()
Верните код ошибки последнего выполненного вызова. Верните 0 (нет ошибок), если ни один вызов еще не выполнялся.
Возврат | |
---|---|
CommandRunner.ExitCode |
getLastInvoctionThrowable
public Throwable getLastInvocationThrowable ()
Верните Throwable
из последнего выполненного вызова. Верните ноль, если метаданных нет.
Возврат | |
---|---|
Throwable |
getReadyCommandCount
public int getReadyCommandCount ()
Возвращает количество команд в состоянии готовности в очереди.
Возврат | |
---|---|
int |
getShutdownTimeout
public long getShutdownTimeout ()
Возврат | |
---|---|
long |
isDeviceInInvoctionThread
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 |
долженШутдаунОнкмдфилееррор
public boolean shouldShutdownOnCmdfileError ()
Верните true, если нам нужно выключить планировщик из-за ошибки команды.
Возврат | |
---|---|
boolean |
неисправность
public void shutdown (boolean notifyStop)
Попытайтесь корректно завершить работу планировщика команд.
Параметры | |
---|---|
notifyStop | boolean : если true, уведомляет о выключении TF. |
выключениеHard
public void shutdownHard (boolean killAdb)
Попытайтесь принудительно завершить работу планировщика команд.
Аналогично shutdown()
, но также при необходимости разрывает соединение adb, пытаясь «побудить» выполняемые вызовы завершиться быстрее.
Параметры | |
---|---|
killAdb | boolean |
выключениеHard
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)
Остановите текущий вызов, указав его идентификатор.
Параметры | |
---|---|
invocationId | int : идентификатор отслеживания вызова. |
cause | String : причина остановки вызова. |
Возврат | |
---|---|
boolean | true, если вызов был остановлен, в противном случае — false |
стопРасписание
public void stopScheduling ()
Останавливает планирование и прием новых тестов, но не останавливает Tradefed. Это предназначено для включения двухэтапного завершения работы: сначала мы сливаем все запущенные тесты, а затем завершаем процесс Tradefed.
Защищенные методы
очистка
protected void cleanUp ()
Закрывает журналы и выполняет любую другую необходимую очистку перед завершением работы.
Открыто, чтобы модульные тесты могли имитировать.
создатьконфигурацию
protected IConfiguration createConfiguration (String[] args)
Параметры | |
---|---|
args | String |
Возврат | |
---|---|
IConfiguration |
Броски | |
---|---|
ConfigurationException |
createInvoctionContext
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 |
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
объявленного в IGlobalConfiguration
или значения NULL, если ничего не определено.
Возврат | |
---|---|
IKeyStoreClient | IKeyStoreКлиент |
getTestInvoctionManagementServer
protected TestInvocationManagementServer getTestInvocationManagementServer ()
Возврат | |
---|---|
TestInvocationManagementServer |
initLogging
protected void initLogging ()
Инициализирует журнал ddmlib.
Открыто, чтобы модульные тесты могли имитировать.
isShutdown
protected boolean isShutdown ()
Возврат | |
---|---|
boolean |
процессридикомандс
protected void processReadyCommands (IDeviceManager manager)
Параметры | |
---|---|
manager | IDeviceManager |