หากต้องการทำความเข้าใจส่วนนี้ โปรดศึกษา 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
เส้นทางนี้ชี้ไปยังไฟล์ภายใน Bucket ของ Google Cloud Storage (GCS) ที่จัดเก็บไฟล์ เมื่อเห็นเส้นทางระยะไกล Tradefed จะพยายามดาวน์โหลดไฟล์
ในเครื่องและกำหนดให้กับ @Option ซึ่งจะส่งผลให้ตัวแปร mConfigFile
ชี้ไปยังไฟล์เวอร์ชันในเครื่องที่ใช้ในการทดสอบได้
หากดาวน์โหลดไฟล์ระยะไกลไม่ได้ไม่ว่าด้วยเหตุผลใดก็ตาม Tradefed จะแสดง
ConfigurationException ซึ่งจะป้องกันไม่ให้การทดสอบทำงาน เราถือว่าการไม่มีไฟล์เหล่านั้นเป็นความล้มเหลวที่สำคัญ เนื่องจากอาร์ติแฟกต์การทดสอบบางอย่างจะหายไปด้วย
ใช้พารามิเตอร์การค้นหา
คุณเพิ่มพารามิเตอร์การค้นหาลงใน URL ได้โดยใช้ ? เช่น gs://bucket/path?unzip=true คีย์/ค่า unzip=true จะพร้อมใช้งานใน
การใช้งานอินเทอร์เฟซ IRemoteFileResolver
มีลักษณะการทำงานในตัว 2 แบบให้เลือกใช้
- unzip: หากตั้งค่าเป็น
trueและไฟล์ที่ดาวน์โหลดเป็นไฟล์ 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 ใช้ได้เฉพาะกับการกำหนดค่า Tradefed XML หลักเท่านั้น
หากเรียกใช้เป็นชุด โมดูลปัจจุบัน (AndroidTest.xml) จะไม่แก้ไขไฟล์โดยค่าเริ่มต้น
ซึ่งมีไว้เพื่อป้องกันไม่ให้โมดูลสร้างการอ้างอิงที่ไม่รู้จัก คุณสามารถหลีกเลี่ยงการดำเนินการนี้ได้โดยใช้ --enable-module-dynamic-download ที่ระดับชุดโปรแกรมทดสอบ แต่ชุดโปรแกรมทดสอบหลักๆ เช่น ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) และ Vendor Test Suite (VTS) จะไม่เปิดใช้
ใช้โปรโตคอลใหม่
โปรโตคอลที่รองรับมีการติดตั้งใช้งานใน Tradefed ของอินเทอร์เฟซ IRemoteFileResolver
ซึ่งกำหนดแท็กแบบสั้นของโปรโตคอลที่จะจับคู่ในเส้นทางไฟล์ผ่าน getSupportedProtocol เช่น gs ใช้สำหรับ
โปรโตคอล Google Cloud Storage อินเทอร์เฟซที่แนะนำให้ใช้งานคือ
#resolveRemoteFiles(RemoteFileResolverArgs) ซึ่งจะเป็นอินเทอร์เฟซที่
ได้รับการดูแลในระยะยาว
คุณสามารถเพิ่มโปรโตคอลที่ใช้ลงในไฟล์ the harness META-INF services เพื่อเปิดใช้การรองรับอย่างเป็นทางการ