Командный планировщик

public class CommandScheduler
extends Object implements ICommandScheduler

java.lang.Объект
com.android.tradefed.command.CommandScheduler


Планировщик для запуска команд TradeFederation на всех доступных устройствах.

Попытается определить приоритетность выполнения команд на основе общего количества выполнений за время их выполнения. например, редко выполняющиеся или быстро выполняемые команды будут иметь приоритет над длительно выполняемыми командами.

Работает вечно в фоновом режиме до выключения.

Краткое содержание

Общественные конструкторы

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

Возвращает информацию о вызове, указав идентификатор вызова.

CommandRunner.ExitCode getLastInvocationExitCode ()

Верните код ошибки последнего выполненного вызова.

Throwable getLastInvocationThrowable ()

Верните Throwable из последнего выполненного вызова.

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

Аналогично shutdown() , но вместо этого он ожидает выполнения всех команд перед выходом.

void start ()

Запускает планировщик, включая настройку ведения журнала, инициализацию DeviceManager и т. д.

boolean stopInvocation ( ITestInvocation invocation)

Остановить текущий вызов.

boolean stopInvocation (int invocationId, String cause)

Остановите текущий вызов, указав его идентификатор.

void stopScheduling ()

Останавливает планирование и прием новых тестов, но не останавливает Tradefed.

Защищенные методы

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

Фабричный метод для получения ссылки на IConfigurationFactory

DeviceManagementGrpcServer getDeviceManagementServer ()
IDeviceManager getDeviceManager ()

Фабричный метод для получения ссылки на IDeviceManager

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

Извлекает IKeyStoreClient , используя IKeyStoreFactory , объявленную в IGlobalConfiguration , или значение null, если ничего не определено.

TestInvocationManagementServer getTestInvocationManagementServer ()
void initLogging ()

Инициализирует журнал ddmlib.

boolean isShutdown ()
void processReadyCommands ( IDeviceManager manager)

Общественные конструкторы

Командный планировщик

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 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 : регулярное выражение, которому должны соответствовать команды для печати. Если значение равно нулю, то будут напечатаны все команды.

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, 
                 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

getHostState

public CommandScheduler.HostState getHostState ()

Возврат
CommandScheduler.HostState

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 для использования

GetFeatureServer

protected TradefedFeatureServer getFeatureServer ()

Возврат
TradefedFeatureServer

getHostOptions

protected IHostOptions getHostOptions ()

Возврат
IHostOptions

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

процессReadyCommands

protected void processReadyCommands (IDeviceManager manager)

Параметры
manager IDeviceManager