โหลดโปรโตคอลที่มีการกำหนดค่าส่วนกลาง

เพื่อให้เข้าใจส่วนนี้ ให้ศึกษา Tradefed @Option ก่อน

ตัวเลือกทั่วไปใน Tradefed จะช่วยให้คลาสการทดสอบรับข้อมูลเพิ่มเติมจากการกำหนดค่า XML หรือบรรทัดคำสั่งได้ ฟีเจอร์นี้ช่วยให้คุณดำเนินการเพิ่มได้อีก 1 ขั้นตอนและแก้ไขข้อมูลเพิ่มเติมนี้ หากจำเป็น

ตัวอย่างตัวเลือกไฟล์

ตัวอย่างไฟล์ @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 จะพร้อมใช้งานใน การใช้งานอินเทอร์เฟซ IRemoteFileเรียกใช้

ลักษณะการทํางานในตัวมี 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) และชุดเครื่องมือทดสอบของผู้ให้บริการ (VTS) จะไม่เปิดใช้

ใช้โปรโตคอลใหม่

โปรโตคอลที่รองรับมีการใช้งานใน Tradefed ของอินเทอร์เฟซ IRemoteFileจะเปลี่ยนจาก อินเทอร์เฟซ ซึ่งจะกำหนดแท็กแบบสั้นของโปรโตคอลที่จะจับคู่ในเส้นทางไฟล์จนถึง getSupportedProtocol เช่น gs ใช้สำหรับโปรโตคอล Google Cloud Storage อินเทอร์เฟซที่แนะนําให้ใช้งานคือ #resolveRemoteFiles(RemoteFileResolverArgs) ซึ่งจะเป็นอินเทอร์เฟซที่ได้รับการดูแลรักษาในระยะยาว

คุณสามารถเพิ่มโปรโตคอลที่ใช้ลงในไฟล์ META-INF ของ Harness servicesเพื่อเปิดใช้การรองรับอย่างเป็นทางการ