โหลดโปรโตคอลด้วยการกำหนดค่าส่วนกลาง

เพื่อทำความเข้าใจส่วนนี้ ก่อนอื่นให้ศึกษา 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 เพื่อเปิดการสนับสนุนอย่างเป็นทางการ