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