زمانبند فرمان
public class CommandScheduler
extends Object implements ICommandScheduler
| شیء جاوا | |
| ↳ | 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)یک delegator بر اساس خط فرمان ایجاد کنید تا ببینید آیا نیاز به واگذاری اجرا داریم یا خیر. |
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)با مشخص کردن شناسه (id) یک فراخوانی در حال اجرا، آن را متوقف کنید. |
void | stopScheduling ()برنامهریزی و پذیرش آزمایشهای جدید را متوقف میکند اما Tradefed را متوقف نمیکند. |
سازندگان عمومی
زمانبند فرمان
public CommandScheduler ()
یک CommandScheduler ایجاد میکند.
نکته: قبل از استفاده، باید تابع start فراخوانی شود.
روشهای عمومی
دستور add
public Pair<Boolean, Integer> addCommand (String[] args)
یک دستور به زمانبند اضافه میکند.
یک دستور اساساً نمونهای از یک پیکربندی برای اجرا و آرگومانهای مرتبط با آن است.
اگر آرگومان "--help" مشخص شود، متن راهنمای پیکربندی در خروجی stdout نمایش داده میشود. در غیر این صورت، پیکربندی به صف اجرا اضافه میشود.
| پارامترها | |
|---|---|
args | String : آرگومانهای پیکربندی. |
| بازگشتها | |
|---|---|
Pair <Boolean, Integer> | یک جفت مقدار، مقدار اول یک مقدار بولی true است اگر دستور با موفقیت اضافه شده باشد. مقدار دوم شناسه ردیاب دستور شناخته شده (مقدار غیر منفی) است اگر دستور با موفقیت اضافه شده باشد، وقتی دستور برای همه دستگاهها اضافه شده باشد 0 و در غیر این صورت -1 را برمیگرداند. |
| پرتابها | |
|---|---|
ConfigurationException | |
فایل فرمان را اضافه کنید
public void addCommandFile (String cmdFilePath,
extraArgs) تمام دستورات فایل داده شده را به برنامه زمانبندی اضافه میکند.
| پارامترها | |
|---|---|
cmdFilePath | String : مسیر سیستم فایل فایل کامند |
extraArgs | : یک ERROR(/List) از آرگومانهای String برای اضافه کردن به هر دستور تجزیهشده از فایل. میتواند خالی باشد اما نباید null باشد. |
| پرتابها | |
|---|---|
ConfigurationException | |
منتظر
public void await ()
منتظر میماند تا زمانبند شروع به اجرا کند، از جمله در صورت لزوم، منتظر میماند تا تحویل از TF قدیمی تکمیل شود.
چک دیلیگ
public static TradefedDelegator checkDelegation (String[] args)
یک delegator بر اساس خط فرمان ایجاد کنید تا ببینید آیا نیاز به واگذاری اجرا داریم یا خیر.
| پارامترها | |
|---|---|
args | String |
| بازگشتها | |
|---|---|
TradefedDelegator | |
| پرتابها | |
|---|---|
| com.android.tradefed.config.ConfigurationException |
ConfigurationException | |
ایجادنقشه انتشار
public staticcreateReleaseMap (IInvocationContext context, Throwable e)
نقشهای از وضعیت دستگاهها ایجاد کنید تا بتوان آنها را به طور مناسب منتشر کرد.
| پارامترها | |
|---|---|
context | IInvocationContext |
e | Throwable |
| بازگشتها | |
|---|---|
| |
ایجاد سندباکس
public ISandbox createSandbox ()
یک ISandbox ایجاد کنید که فراخوانی برای اجرا از آن استفاده خواهد کرد.
| بازگشتها | |
|---|---|
ISandbox | |
صف فرمان نمایش
public void displayCommandQueue (PrintWriter printWriter)
اطلاعات اشکالزدایی دقیق در مورد وضعیت صف اجرای دستور را نمایش میدهد.
نمایش اطلاعات دستورات
public void displayCommandsInfo (PrintWriter printWriter,
String regex)لیستی از دستورات فعلی را نمایش میدهد.
| پارامترها | |
|---|---|
printWriter | PrintWriter : ERROR(/PrintWriter) که باید به آن خروجی داده شود. |
regex | String : عبارت منظمی که دستورات باید با آن مطابقت داشته باشند تا چاپ شوند. اگر تهی باشد، تمام دستورات چاپ میشوند. |
نمایش اطلاعات فراخوانیها
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 باشد، تمام دستورات کپی میشوند. |
دستور exec
public long execCommand (ICommandScheduler.IScheduledInvocationListener listener, ITestDevice device, String[] args)
اجرای مستقیم دستور روی دستگاه از قبل اختصاص داده شده.
| پارامترها | |
|---|---|
listener | ICommandScheduler.IScheduledInvocationListener : به ICommandScheduler.IScheduledInvocationListener اطلاع داده میشود. |
device | ITestDevice : دستگاه ITestDevice مورد استفاده |
args | String : آرگومانهای دستور |
| بازگشتها | |
|---|---|
long | شناسه فراخوانی دستور زمانبندیشده. |
| پرتابها | |
|---|---|
ConfigurationException | |
دستور exec
public long execCommand (ICommandScheduler.IScheduledInvocationListener listener,reservedDevices, String[] args)
اجرای مستقیم دستور روی دستگاههای از قبل اختصاص داده شده.
| پارامترها | |
|---|---|
listener | ICommandScheduler.IScheduledInvocationListener : به ICommandScheduler.IScheduledInvocationListener اطلاع داده میشود. |
reservedDevices | : ERROR(/List برای استفاده |
args | String : آرگومانهای دستور |
| بازگشتها | |
|---|---|
long | شناسه فراخوانی دستور زمانبندیشده. |
| پرتابها | |
|---|---|
ConfigurationException | |
دستور exec
public long execCommand (IInvocationContext context, ICommandScheduler.IScheduledInvocationListener listener, String[] args)
مستقیماً یک دستگاه را اختصاص میدهد و یک دستور را بدون اضافه کردن آن به صف دستورات با استفاده از یک IInvocationContext موجود اجرا میکند.
| پارامترها | |
|---|---|
context | IInvocationContext : یک IInvocationContext موجود. |
listener | ICommandScheduler.IScheduledInvocationListener : به ICommandScheduler.IScheduledInvocationListener اطلاع داده میشود. |
args | String : آرگومانهای دستور |
| بازگشتها | |
|---|---|
long | |
| پرتابها | |
|---|---|
ConfigurationException | |
NoDeviceException | |
دستور exec
public long execCommand (ICommandScheduler.IScheduledInvocationListener listener, String[] args)
مستقیماً یک دستگاه را اختصاص میدهد و یک دستور را بدون اضافه کردن آن به صف دستورات اجرا میکند.
| پارامترها | |
|---|---|
listener | ICommandScheduler.IScheduledInvocationListener : به ICommandScheduler.IScheduledInvocationListener اطلاع داده میشود. |
args | String : آرگومانهای دستور |
| بازگشتها | |
|---|---|
long | شناسه فراخوانی دستور زمانبندیشده. |
| پرتابها | |
|---|---|
ConfigurationException | |
NoDeviceException | |
دریافتکنندهی فرمانفایل
public CommandFileWatcher getCommandFileWatcher ()
CommandFileWatcher مناسب را برای این زمانبند دریافت کنید
| بازگشتها | |
|---|---|
CommandFileWatcher | |
دریافت تعداد فرمانهای در حال اجرا
public int getExecutingCommandCount ()
تعداد دستورات در حال اجرا را برمیگرداند.
| بازگشتها | |
|---|---|
int | |
دریافت وضعیت میزبان
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 از آخرین فراخوانی که اجرا شده است، برمیگرداند. اگر هیچ Throwableای در دسترس نباشد، مقدار null را برمیگرداند.
| بازگشتها | |
|---|---|
Throwable | |
تعداد فرمانهای آماده
public int getReadyCommandCount ()
تعداد دستوراتی که در حالت آماده در صف هستند را برمیگرداند.
| بازگشتها | |
|---|---|
int | |
دریافت زمان خاموش شدن (ShutdownTimeout)
public long getShutdownTimeout ()
| بازگشتها | |
|---|---|
long | |
isDeviceInInvocationThread
public boolean isDeviceInInvocationThread (ITestDevice device)
اگر دستگاه توسط یک نخ فراخوانی فعال استفاده شود، مقدار true را برمیگرداند.
| پارامترها | |
|---|---|
device | ITestDevice |
| بازگشتها | |
|---|---|
boolean | |
خاموش کردن
public boolean isShuttingDown ()
| بازگشتها | |
|---|---|
boolean | |
notifyFileChanged
public void notifyFileChanged (File cmdFile,
extraArgs) | پارامترها | |
|---|---|
cmdFile | File |
extraArgs | |
حذف همه دستورات
public void removeAllCommands ()
حذف تمام دستورات از برنامه زمانبندی
دویدن
public void run ()
بلوک اجرایی اصلی این نخ.
تنظیمClearcutClient
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 : اگر درست باشد، فراخوانیهای مربوط به خاموش شدن TF را اطلاع میدهد. |
خاموش کردن هارد
public void shutdownHard (boolean killAdb)
تلاش برای خاموش کردن اجباری زمانبند دستورات.
مشابه shutdown() است، اما به صورت اختیاری اتصال adb را نیز قطع میکند، در تلاشی برای «الهامبخشیدن» به فراخوانیهای در حال انجام برای تکمیل سریعتر.
| پارامترها | |
|---|---|
killAdb | boolean |
خاموش کردن هارد
public void shutdownHard ()
تلاش برای خاموش کردن اجباری زمانبندی دستورات. مشابه shutdownHard(true).
خاموش کردن خالی
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)با مشخص کردن شناسه (id) یک فراخوانی در حال اجرا، آن را متوقف کنید.
| پارامترها | |
|---|---|
invocationId | int : شناسه ردیابی فراخوانی. |
cause | String : دلیل توقف فراخوانی. |
| بازگشتها | |
|---|---|
boolean | اگر فراخوانی متوقف شده باشد، true و در غیر این صورت false برمیگرداند. |
توقف زمانبندی
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)
تعیین میکند که آیا دستور داده شده یک اجرای آزمایشی (dry-run) است یا خیر. اگر دستور یک اجرای آزمایشی (dry-run) است، آن را اعتبارسنجی کنید. اگر هرگونه مشکل پیکربندی وجود داشته باشد، یک خطای ConfigurationException صادر میکند.
| پارامترها | |
|---|---|
handler | ICommandScheduler.IScheduledInvocationListener : ERROR(/InvocationEventHandler) برای گزارش رویدادها جهت اعتبارسنجی در حالت اجرا. |
config | IConfiguration |
| بازگشتها | |
|---|---|
void | اگر دستور یک اجرای آزمایشی باشد، مقدار true و در غیر این صورت false را برمیگرداند. |
| پرتابها | |
|---|---|
| com.android.tradefed.config.ConfigurationException |
ConfigurationException | |
دستور exec
protected long execCommand (IInvocationContext context, ICommandScheduler.IScheduledInvocationListener listener,reservedDevices, String[] args)
| پارامترها | |
|---|---|
context | IInvocationContext |
listener | ICommandScheduler.IScheduledInvocationListener |
reservedDevices | |
args | String |
| بازگشتها | |
|---|---|
long | |
| پرتابها | |
|---|---|
ConfigurationException | |
کارخانهی پیکربندی
protected IConfigurationFactory getConfigFactory ()
متد Factory برای دریافت ارجاع به IConfigurationFactory
| بازگشتها | |
|---|---|
IConfigurationFactory | IConfigurationFactory برای استفاده |
سرور مدیریت دستگاه را دریافت کنید
protected DeviceManagementGrpcServer getDeviceManagementServer ()
| بازگشتها | |
|---|---|
DeviceManagementGrpcServer | |
دریافت مدیر دستگاه
protected IDeviceManager getDeviceManager ()
متد Factory برای دریافت ارجاع به IDeviceManager
| بازگشتها | |
|---|---|
IDeviceManager | IDeviceManager برای استفاده |
کلاینت فروشگاه کلید (KeyStoreClient)
protected IKeyStoreClient getKeyStoreClient ()
یک IKeyStoreClient با استفاده از IKeyStoreFactory تعریف شده در IGlobalConfiguration دریافت میکند یا در صورت عدم تعریف، null میکند.
| بازگشتها | |
|---|---|
IKeyStoreClient | کلاینت IKeyStore |
getTestInvocationManagementServer
protected TestInvocationManagementServer getTestInvocationManagementServer ()
| بازگشتها | |
|---|---|
TestInvocationManagementServer | |
ثبت اولیه
protected void initLogging ()
لاگ ddmlib را مقداردهی اولیه میکند.
در معرض نمایش قرار گرفته تا تستهای واحد بتوانند شبیهسازی کنند.
ایشاتداون
protected boolean isShutdown ()
| بازگشتها | |
|---|---|
boolean | |
دستورات آماده پردازش
protected void processReadyCommands (IDeviceManager manager)
| پارامترها | |
|---|---|
manager | IDeviceManager |