CommandScheduler

public class CommandScheduler
extends Object implements ICommandScheduler

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


เครื่องจัดตารางเวลาสำหรับเรียกใช้คำสั่ง TradeFederation ในอุปกรณ์ทั้งหมดที่มี

จะพยายามจัดลำดับความสำคัญของคำสั่งเพื่อเรียกใช้ตามจำนวนการดำเนินการทั้งหมดที่ทำงานอยู่ เช่น ระบบจะให้ความสำคัญกับคำสั่งที่เรียกใช้ไม่บ่อยหรือเร็วมากกว่าคำสั่งที่ทำงานเป็นเวลานาน

ทำงานอยู่เบื้องหลังตลอดจนกว่าจะปิดเครื่อง

สรุป

ช่างก่อสร้างสาธารณะ

CommandScheduler()

สร้าง CommandScheduler

วิธีการสาธารณะ

Pair<Boolean, Integer> addCommand(String[] args)

เพิ่มคำสั่งลงในเครื่องจัดตารางเวลา

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

เรียกใช้คำสั่งโดยตรงในอุปกรณ์ที่จัดสรรแล้ว

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)

แสดงผลเป็น "จริง" หากใช้อุปกรณ์โดยเทรดการเรียกใช้ที่ใช้งานอยู่

boolean isShuttingDown()
void notifyFileChanged(File cmdFile, extraArgs)
void removeAllCommands()

นำคำสั่งทั้งหมดออกจากเครื่องจัดตารางเวลา

void run()

บล็อกการดำเนินการหลักของเทรดนี้

void setClearcutClient(ClearcutClient client)

ตั้งค่าให้ไคลเอ็นต์รายงานข้อมูลการใช้ประโยชน์จาก

boolean shouldShutdownOnCmdfileError()

แสดงค่า "จริง" หากเราต้องปิดเครื่องจัดตารางเวลาเมื่อมีข้อผิดพลาดด้านคำสั่ง

void shutdown(boolean notifyStop)

ลองปิดเครื่องจัดตารางเวลาคำสั่งอย่างระมัดระวัง

void shutdownHard(boolean killAdb)

พยายามบังคับให้เครื่องจัดตารางเวลาคำสั่งปิดระบบอย่างแรง

void shutdownHard()

พยายามบังคับให้เครื่องจัดตารางเวลาคำสั่งปิดระบบอย่างแรง

void shutdownOnEmpty()

คล้ายกับ shutdown() แต่จะรอให้มีการเรียกใช้คำสั่งทั้งหมดแทน ก่อนที่จะออก

void start()

เริ่มเครื่องจัดตารางเวลา รวมถึงการตั้งค่าการบันทึก, init of 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)
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)

ช่างก่อสร้างสาธารณะ

CommandScheduler

public CommandScheduler ()

สร้าง CommandScheduler

หมายเหตุ: ต้องเรียกใช้ก่อนการใช้งาน

วิธีการสาธารณะ

เพิ่มคำสั่ง

public Pair<Boolean, Integer> addCommand (String[] args)

เพิ่มคำสั่งลงในเครื่องจัดตารางเวลา

โดยพื้นฐานแล้ว คำสั่งเป็นอินสแตนซ์ของการกำหนดค่าที่จะเรียกใช้และเชื่อมโยงกับ อาร์กิวเมนต์

หาก "--help" มีการระบุข้อความช่วยเหลือสำหรับการกำหนดค่าจะเอาต์พุตเป็น stdout มิเช่นนั้น ระบบจะเพิ่มการกำหนดค่าลงในคิวที่จะเรียกใช้

พารามิเตอร์
args String: อาร์กิวเมนต์ config

คิกรีเทิร์น
Pair<Boolean, Integer> 2 ค่า ค่าแรกคือบูลีน true หากมีการเพิ่มคำสั่ง สำเร็จ ค่าที่ 2 คือรหัสเครื่องมือติดตามคำสั่งที่รู้จัก(ค่าที่ไม่เป็นลบ) หากพารามิเตอร์ เพิ่มคำสั่งเรียบร้อยแล้ว แสดงผล 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

createReleaseMap

public static  createReleaseMap (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: นิพจน์ทั่วไปที่ควรจับคู่คำสั่งเพื่อให้ พิมพ์แล้ว หากเป็นค่าว่าง ระบบจะพิมพ์คำสั่งทั้งหมด

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 ที่จะถ่ายโอน หากเป็นค่าว่าง ระบบจะส่งออกคำสั่งทั้งหมด

คำสั่ง

public long execCommand (ICommandScheduler.IScheduledInvocationListener listener, 
                 reservedDevices, 
                String[] args)

เรียกใช้คำสั่งโดยตรงในอุปกรณ์ที่จัดสรรแล้ว

พารามิเตอร์
listener ICommandScheduler.IScheduledInvocationListener: ICommandScheduler.IScheduledInvocationListener ที่จะได้รับข้อมูล

reservedDevices : ERROR(/List) ที่จะใช้

args String: อาร์กิวเมนต์คำสั่ง

คิกรีเทิร์น
long รหัสการเรียกใช้ของคำสั่งที่กำหนดเวลาไว้

การขว้าง
ConfigurationException

คำสั่ง

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

จัดสรรอุปกรณ์และเรียกใช้คำสั่งโดยตรงโดยไม่ต้องเพิ่มลงในคิวคำสั่ง โดยใช้ IInvocationContext ที่มีอยู่แล้ว

พารามิเตอร์
context IInvocationContext: IInvocationContext ที่มีอยู่แล้ว

listener ICommandScheduler.IScheduledInvocationListener: ICommandScheduler.IScheduledInvocationListener ที่จะได้รับข้อมูล

args String: อาร์กิวเมนต์คำสั่ง

คิกรีเทิร์น
long

การขว้าง
ConfigurationException
NoDeviceException

คำสั่ง

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

getInvocationInfo

public String getInvocationInfo (int invocationId)

แสดงผลข้อมูลเกี่ยวกับรหัสการเรียกใช้ที่ระบุรหัสการเรียกใช้

พารามิเตอร์
invocationId int: รหัสติดตามของการเรียกใช้

คิกรีเทิร์น
String String ที่มีข้อมูลเกี่ยวกับการเรียกใช้

getLastInvocationExitCode

public CommandRunner.ExitCode getLastInvocationExitCode ()

แสดงรหัสข้อผิดพลาดของการเรียกใช้ล่าสุดที่เรียกใช้ แสดงผล 0 (ไม่มีข้อผิดพลาด) หากยังไม่ได้เรียกใช้

คิกรีเทิร์น
CommandRunner.ExitCode

getLastInvocationThrowable ได้

public Throwable getLastInvocationThrowable ()

แสดงผล Throwable จากการเรียกใช้ล่าสุดที่เรียกใช้ แสดงผล Null หากไม่มีคำแนะนำ

คิกรีเทิร์น
Throwable

จำนวนคำสั่ง get Ready

public int getReadyCommandCount ()

แสดงผลจำนวนคำสั่งในสถานะพร้อมในคิว

คิกรีเทิร์น
int

getShutdownระยะหมดเวลา

public long getShutdownTimeout ()

คิกรีเทิร์น
long

isDeviceInvocationThread

public boolean isDeviceInInvocationThread (ITestDevice device)

แสดงผลเป็น "จริง" หากใช้อุปกรณ์โดยเทรดการเรียกใช้ที่ใช้งานอยู่

พารามิเตอร์
device ITestDevice

คิกรีเทิร์น
boolean

กำลังปิด

public boolean isShuttingDown ()

คิกรีเทิร์น
boolean

AlertFileChanged แล้ว

public void notifyFileChanged (File cmdFile, 
                 extraArgs)

พารามิเตอร์
cmdFile File

extraArgs

removeAllCommands

public void removeAllCommands ()

นำคำสั่งทั้งหมดออกจากเครื่องจัดตารางเวลา

โฮมรัน

public void run ()

บล็อกการดำเนินการหลักของเทรดนี้

setClearcutClient

public void setClearcutClient (ClearcutClient client)

ตั้งค่าให้ไคลเอ็นต์รายงานข้อมูลการใช้ประโยชน์จาก

พารามิเตอร์
client ClearcutClient

ifShutdownOnCmdfileError

public boolean shouldShutdownOnCmdfileError ()

แสดงค่า "จริง" หากเราต้องปิดเครื่องจัดตารางเวลาเมื่อมีข้อผิดพลาดด้านคำสั่ง

คิกรีเทิร์น
boolean

ปิดเครื่อง

public void shutdown (boolean notifyStop)

ลองปิดเครื่องจัดตารางเวลาคำสั่งอย่างระมัดระวัง

พารามิเตอร์
notifyStop boolean: หากเป็น "จริง" จะแจ้งเตือนการเรียกใช้การปิด TF

ปิดฮาร์ดแวร์

public void shutdownHard (boolean killAdb)

พยายามบังคับให้เครื่องจัดตารางเวลาคำสั่งปิดระบบอย่างแรง

คล้ายกับ shutdown() แต่เลือกที่จะหยุดการเชื่อมต่อ adb ด้วย พยายามที่จะ "สร้างแรงบันดาลใจ" คำขอที่อยู่ระหว่างดำเนินการเพื่อให้ดำเนินการเสร็จสมบูรณ์ได้เร็วขึ้น

พารามิเตอร์
killAdb boolean

ปิดระบบฮาร์ดแวร์

public void shutdownHard ()

พยายามบังคับให้เครื่องจัดตารางเวลาคำสั่งปิดระบบอย่างแรง เหมือนกับ offHard(true)

ปิดการทำงานเมื่อว่างเปล่า

public void shutdownOnEmpty ()

คล้ายกับ shutdown() แต่จะรอให้มีการเรียกใช้คำสั่งทั้งหมดแทน ก่อนที่จะออก

โปรดทราบว่าหากมีคำสั่งใดๆ อยู่ในโหมดวนซ้ำ เครื่องจัดตารางเวลาจะไม่ออกโดยเด็ดขาด

เริ่มต้น

public void start ()

เริ่มเครื่องจัดตารางเวลา รวมถึงการตั้งค่าการบันทึก, init of 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 โดยมีจุดประสงค์เพื่อเปิดใช้ การปิดระบบ 2 ขั้นตอน โดยก่อนอื่นเราจะระบายการทดสอบที่ทำงานอยู่ทั้งหมด จากนั้นจึงสิ้นสุดการทดสอบ Tradefed ขั้นตอนได้

วิธีการป้องกัน

ล้าง

protected void cleanUp ()

ปิดบันทึกและทำความสะอาดส่วนอื่นๆ ที่จำเป็นก่อนที่เราจะออก

เปิดเผยเพื่อให้ทดสอบ 1 หน่วยจำลองได้

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 "จริง" หากคำสั่งเป็นการทดลองเรียกใช้ หรือจะเป็น "เท็จ" หากไม่เป็นเช่นนั้น

การขว้าง
com.android.tradefed.config.ConfigurationException
ConfigurationException

คำสั่ง

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

พารามิเตอร์
context IInvocationContext

listener ICommandScheduler.IScheduledInvocationListener

reservedDevices

args String

คิกรีเทิร์น
long

การขว้าง
ConfigurationException

รับการกำหนดค่าจากโรงงาน

protected IConfigurationFactory getConfigFactory ()

วิธีการจากโรงงานสำหรับการรับการอ้างอิง IConfigurationFactory

คิกรีเทิร์น
IConfigurationFactory IConfigurationFactory ที่จะใช้

รับเซิร์ฟเวอร์การจัดการอุปกรณ์

protected DeviceManagementGrpcServer getDeviceManagementServer ()

คิกรีเทิร์น
DeviceManagementGrpcServer

getDeviceManager

protected IDeviceManager getDeviceManager ()

วิธีการจากโรงงานสำหรับการรับการอ้างอิง IDeviceManager

คิกรีเทิร์น
IDeviceManager IDeviceManager ที่จะใช้

เซิร์ฟเวอร์ getFeature

protected TradefedFeatureServer getFeatureServer ()

คิกรีเทิร์น
TradefedFeatureServer

getHostOptions

protected IHostOptions getHostOptions ()

คิกรีเทิร์น
IHostOptions

getKeyStoreClient

protected IKeyStoreClient getKeyStoreClient ()

จะดึงข้อมูล IKeyStoreClient โดยใช้ IKeyStoreFactory ที่ประกาศใน IGlobalConfiguration หรือเป็นค่าว่าง หากไม่ได้กำหนดไว้

คิกรีเทิร์น
IKeyStoreClient IKeyStoreClient

getTestInvocationManagementserver

protected TestInvocationManagementServer getTestInvocationManagementServer ()

คิกรีเทิร์น
TestInvocationManagementServer

การเริ่มต้นบันทึก

protected void initLogging ()

เริ่มต้นบันทึก ddmlib

เปิดเผยเพื่อให้ทดสอบ 1 หน่วยจำลองได้

กำลังปิด

protected boolean isShutdown ()

คิกรีเทิร์น
boolean

คำสั่งพร้อมประมวลผล

protected void processReadyCommands (IDeviceManager manager)

พารามิเตอร์
manager IDeviceManager