หากต้องการทําความเข้าใจส่วนนี้ ให้ศึกษา Tradefed @Option ก่อน
ตัวเลือกทั่วไปใน Tradefed ช่วยให้คลาสทดสอบได้รับข้อมูลเพิ่มเติมจากการกําหนดค่า XML หรือบรรทัดคําสั่ง ฟีเจอร์นี้ช่วยให้คุณดำเนินการเพิ่มเติมและแก้ไขข้อมูลเพิ่มเติมบางส่วนได้หากจำเป็น
ตัวอย่างตัวเลือกไฟล์
ตัวอย่างไฟล์ @option
@Option(name = 'config-file')
private File mConfigFile;
คุณสามารถตั้งค่าข้างต้นผ่านการกําหนดค่า XML ได้ดังนี้
<option name="config-file" value="/tmp/file" />
หรือผ่านคำสั่ง
--config-file /tmp/file
คำอธิบาย
ฟีเจอร์นี้ช่วยให้คุณแก้ไข @Options ประเภทไฟล์ระยะไกลให้เป็นไฟล์ในเครื่องเพื่อให้ผู้ใช้ใช้งานได้อย่างราบรื่น
ไฟล์ต้องระบุด้วยเส้นทางสไตล์ระยะไกลจึงจะใช้งานได้ เช่น
--config-file gs://bucket/tmp/file
เส้นทางนี้จะชี้ไปยังไฟล์ภายในที่เก็บข้อมูล Google Cloud Storage (GCS) ที่เก็บไฟล์ เมื่อเห็นเส้นทางระยะไกลดังกล่าว Tradefed จะพยายามดาวน์โหลดไฟล์ในเครื่องและกำหนดให้กับ @Option การดำเนินการนี้ส่งผลให้ตัวแปร mConfigFile
ชี้ไปยังไฟล์เวอร์ชันในเครื่อง ซึ่งการทดสอบสามารถใช้ได้
หากดาวน์โหลดไฟล์ระยะไกลไม่ได้ไม่ว่าด้วยเหตุผลใดก็ตาม Tradefed จะแสดงConfigurationException
ซึ่งจะป้องกันไม่ให้การทดสอบทำงาน เราถือว่าไฟล์เหล่านั้นขาดหายไปถือเป็นความล้มเหลวร้ายแรงเนื่องจากจะไม่มีรายการทดสอบบางอย่างด้วย
ใช้พารามิเตอร์การค้นหา
คุณเพิ่มพารามิเตอร์การค้นหาลงใน URL ได้โดยใช้ ?
เช่น gs://bucket/path?unzip=true
คีย์/ค่า unzip=true
จะพร้อมใช้งานในการใช้งานอินเทอร์เฟซ IRemoteFileResolver
ลักษณะการทํางานในตัวมี 2 ลักษณะ ได้แก่
- unzip: หากตั้งค่าเป็น
true
และไฟล์ที่ดาวน์โหลดเป็นไฟล์ ZIP ระบบจะแตกไฟล์ ZIP ไปยังตำแหน่งชั่วคราวโดยอัตโนมัติ ตัวอย่าง:?unzip=true
- ไม่บังคับ: ค่าเริ่มต้นคือ
false
หากตั้งค่าเป็นtrue
และการแก้ปัญหาไม่สำเร็จ ระบบจะไม่แสดงข้อยกเว้นและจะไม่แทนที่ไฟล์ ตัวอย่าง?optional=true
นอกจากนี้ คุณยังส่งอาร์กิวเมนต์การค้นหาส่วนกลางผ่าน --dynamic-download-args key=value
ได้อีกด้วย ซึ่งจะส่งคีย์/ค่าไปยังการดาวน์โหลดแบบไดนามิกทั้งหมดที่พยายามเรียกใช้
โปรโตคอลที่รองรับ
โปรโตคอลที่รองรับอย่างเป็นทางการและรูปแบบที่เกี่ยวข้องมีดังนี้
- Google Cloud Storage, โปรโตคอล:
gs
, รูปแบบ:gs://<bucket name>/path
- ไฟล์ในเครื่อง โปรโตคอล:
file
รูปแบบ:file:/local/path
- ลิงก์ http, โปรโตคอล:
http
, รูปแบบ:http://url
- ลิงก์ https, โปรโตคอล:
https
, รูปแบบ:https://url
ข้อจำกัด
ปัจจุบันความละเอียดแบบไดนามิกของ @Option รองรับโปรโตคอลและตำแหน่งที่ดาวน์โหลดได้เพียงไม่กี่รายการเท่านั้น ปัจจุบันการแก้ไข @Option ใช้ได้กับการกำหนดค่า XML Tradefed หลักเท่านั้น
หากทํางานเป็นชุด โมดูลปัจจุบัน (AndroidTest.xml
) จะไม่แก้ไขไฟล์โดยค่าเริ่มต้น
การดำเนินการนี้มีไว้เพื่อป้องกันไม่ให้โมดูลสร้างการพึ่งพาที่ไม่รู้จัก คุณสามารถหลีกหนีการทดสอบนี้ได้โดยใช้ --enable-module-dynamic-download
ที่ระดับชุดทดสอบ แต่ชุดทดสอบหลักๆ เช่น ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) และชุดเครื่องมือทดสอบของผู้ให้บริการ (VTS) จะไม่เปิดใช้การทดสอบนี้
ใช้โปรโตคอลใหม่
โปรโตคอลที่รองรับมีการใช้งานอินเทอร์เฟซ IRemoteFileResolver ใน Tradefed ซึ่งจะกำหนดแท็กสั้นของโปรโตคอลที่จะจับคู่ในเส้นทางไฟล์ผ่าน getSupportedProtocol
เช่น gs
ใช้สำหรับโปรโตคอล Google Cloud Storage อินเทอร์เฟซที่แนะนําให้ใช้งานคือ #resolveRemoteFiles(RemoteFileResolverArgs)
ซึ่งจะเป็นอินเทอร์เฟซที่ได้รับการดูแลรักษาในระยะยาว
คุณสามารถเพิ่มโปรโตคอลที่ใช้ลงในไฟล์ META-INF ของ Harness servicesเพื่อเปิดใช้การรองรับอย่างเป็นทางการ