Планировщик команд

public class CommandScheduler
extends Thread implements ICommandScheduler

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


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

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

Работает в фоновом режиме бесконечно, пока не завершится работа системы.

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

Государственные строители

CommandScheduler ()

Создает 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 ()

Создайте 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, ITestDevice device, String[] args)

Выполнить команду непосредственно на уже выделенном устройстве.

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

Непосредственно выделяет устройство и выполняет команду, не добавляя её в очередь команд, используя уже существующий IInvocationContext .

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

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

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

Аналогично функции 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, List< ITestDevice > reservedDevices, String[] args)
IConfigurationFactory getConfigFactory ()

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

DeviceManagementGrpcServer getDeviceManagementServer ()
IDeviceManager getDeviceManager ()

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

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

Получает объект IKeyStoreClient используя IKeyStoreFactory , объявленный в ERROR(/IGlobalConfiguration) , или null, если он не определен.

TestInvocationManagementServer getTestInvocationManagementServer ()
void initLogging ()

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

boolean isShutdown ()
void processReadyCommands ( IDeviceManager manager)
boolean shouldMarkReleased ()

Государственные строители

Планировщик команд

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

getHostState

public CommandScheduler.HostState getHostState ()

Возвраты
CommandScheduler.HostState

получитьИнформациюВызова

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

getFeatureServer

protected TradefedFeatureServer getFeatureServer ()

Возвраты
TradefedFeatureServer

getHostOptions

protected IHostOptions getHostOptions ()

Возвраты
IHostOptions

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