แอป Cloud Orchestration มีวิธีที่มีประสิทธิภาพสูงและปรับขนาดได้ในการจัดการอินสแตนซ์ Cuttlefish โดยเฉพาะ สำหรับอุปกรณ์เสมือนที่ใช้ ARM (CHD) OmniLab ATS รองรับการจัด Orchestration ในระบบคลาวด์ เพื่อให้คุณเรียกใช้การทดสอบในอุปกรณ์เสมือนได้ ก่อนเริ่มใช้อุปกรณ์เสมือนจริง ให้ทำตามAndroid Test Station ของ OmniLab เพื่อติดตั้ง OmniLab ATS
ภาพรวม
Cloud Orchestration ช่วยให้ OmniLab ATS มอบสิทธิ์การจัดการอินสแตนซ์ Cuttlefish ให้กับบริการ Cloud Orchestrator โดยเฉพาะได้ แนวทางนี้มีข้อดีหลายประการเหนือโหมดในเครื่องและโหมดระยะไกลที่มีอยู่ ในขณะที่ยังคงรักษาประสบการณ์การใช้งานที่คุ้นเคยไว้
- การเปิดใช้หลายอินสแตนซ์พร้อมกัน: อนุญาตให้เปิดใช้หลายอินสแตนซ์ของ Cuttlefish พร้อมกัน ซึ่งช่วยลดเวลาในการเตรียมการก่อนเริ่มการทดสอบได้อย่างมาก
- ความสามารถในการปรับขนาด: เหมาะกับสภาพแวดล้อมการทดสอบขนาดใหญ่
- การแยกทรัพยากร: แยกสภาพแวดล้อมการดำเนินการทดสอบ (Worker ของ ATS) ออกจากสภาพแวดล้อมการจำลองอุปกรณ์
สิ่งที่ต้องมีก่อน
- เครื่องโฮสต์ที่เรียกใช้ Docker ได้
- สิทธิ์เข้าถึงอิมเมจ Docker การจัดระเบียบ Cuttlefish
ตั้งค่าบริการ Cloud Orchestrator
บริการ Cloud Orchestrator จะจัดการวงจรของอินสแตนซ์ Cuttlefish คุณสามารถติดตั้งใช้งานบริการในสภาพแวดล้อมต่างๆ และรองรับทั้งสถาปัตยกรรม x86 และ ARM
- โฮสต์เดียวกับ Worker ของ ATS: ทำงานในคอนเทนเนอร์ Docker บนเครื่องเดียวกัน
- เครื่องแยกต่างหาก: ทำงานบนเซิร์ฟเวอร์ในองค์กรที่เรียกใช้ Docker ได้
- อินสแตนซ์ระบบคลาวด์: ทำงานบนเครื่องเสมือนในสภาพแวดล้อมระบบคลาวด์ เช่น Google Compute Engine
ติดตั้งและตั้งค่าบริการ
ทำตาม README การจัดการเป็นกลุ่ม Android ในระบบคลาวด์ เพื่อเปิดใช้บริการ
การตรวจสอบสิทธิ์และสิทธิ์
หากบริการ Cloud Orchestrator ทำงานในเครื่องระยะไกล โปรดตรวจสอบว่าโฮสต์ของ Worker ATS มีสิทธิ์ที่จำเป็นในการเข้าถึงผ่านคำขอ HTTP หากไม่อนุญาตการเชื่อมต่อ HTTP คุณอาจต้องตั้งค่าการส่งต่อพอร์ต SSH โปรดดูรายละเอียดที่หัวข้อ ลองใช้ Cloud Orchestrator
สถานะที่คาดไว้
หลังจากเริ่มบริการ Cloud Orchestrator สำเร็จแล้ว ควรเข้าถึงได้โดยใช้ HTTP คุณสามารถยืนยันสถานะได้โดยการค้นหา API ของแอป
- ปิงบริการ: คุณควรเข้าถึงปลายทางบริการจากโฮสต์ของเครื่องมือ OmniLab ATS ได้ เช่น การเรียกใช้
curl -I http://localhost:8080/v1/zones/local/hostsควรแสดงการตอบกลับ HTTP ที่สำเร็จ (ไม่ว่าจะเป็นHTTP/1.1 200 OKหรือการเปลี่ยนเส้นทาง302 Foundไปยัง/username) ซึ่งยืนยันว่าบริการทำงานอยู่และเข้าถึงได้
กำหนดค่า OmniLab ATS สำหรับการจัดการเป็นกลุ่มในระบบคลาวด์
ก่อนเริ่ม OmniLab ATS โปรดตรวจสอบว่าได้หยุดอินสแตนซ์ Cuttlefish ทั้งหมดในโฮสต์ของเครื่องมือ OmniLab ATS แล้ว OmniLab ATS จะเปิดและหยุดอุปกรณ์เสมือนโดยอัตโนมัติในระหว่างรอบการทดสอบ และอินสแตนซ์ Cuttlefish ที่มีอยู่จะขัดแย้งกับอินสแตนซ์ที่จัดการโดย OmniLab ATS โปรดดูรายละเอียดเกี่ยวกับการหยุดอินสแตนซ์ Cuttlefish ที่หัวข้อหยุด Cuttlefish
หากต้องการเปิดใช้การจัดการเป็นกลุ่มในระบบคลาวด์ใน OmniLab ATS ให้ส่งแฟล็กที่เฉพาะเจาะจงเมื่อ เริ่มต้น OmniLab ATS ดังนี้
mtt start --max_orchestration_virtual_devices N \
--orchestration_service_url=http://HOST:PORT \
--use_host_network \
--force_ats_version 2 \
--force_update--max_orchestration_virtual_devices: กำหนดจำนวนสูงสุดของอุปกรณ์เสมือนที่ Cloud Orchestrator จัดการซึ่ง OmniLab ATS สามารถจัดสรรพร้อมกันได้ ค่าเริ่มต้นคือ 0--orchestration_service_url: ระบุ URL ที่บริการ Cloud Orchestration กำลังฟังอยู่ เช่นhttp://localhost:8080--use_host_network: ใช้เนมสเปซเครือข่ายของโฮสต์สำหรับคอนเทนเนอร์ โดยขั้นตอนนี้จำเป็นสำหรับการเข้าถึงบริการ Cloud Orchestration--force_ats_version 2: บังคับให้ใช้ ATS 2.0 ของ OmniLab ซึ่งจำเป็น สำหรับการจัด Orchestration ในระบบคลาวด์ ดูข้อมูลเพิ่มเติมได้ที่คู่มือการอัปเกรด OmniLab ATS 2.0--force_update: ดึงข้อมูลบิลด์คอนเทนเนอร์ล่าสุดด้วยฟีเจอร์ ATS 2.0 และ Cloud Orchestration
กำหนดค่าข้อมูลจำเพาะเกี่ยวกับฮาร์ดแวร์ของอุปกรณ์เสมือนจริง (ไม่บังคับ)
โดยค่าเริ่มต้น อินสแตนซ์อุปกรณ์เสมือนจริงแต่ละรายการที่จัดสรรโดยระบบคลาวด์จะมี CPU 4 ตัว, RAM 8192 MB (8 GB), ซิมปกติ และอิมเมจการ์ด SD ที่แนบมา เมื่อเปิดตัว OmniLab ATS ด้วย Cloud Orchestration คุณจะลบล้างค่าเริ่มต้นเหล่านี้ได้โดยส่งแฟล็กเซิร์ฟเวอร์แล็บที่เกี่ยวข้องในคำสั่ง mtt start โดยใช้ --extra_docker_args โดยแต่ละ Flag จะเป็นอิสระต่อกัน
ส่งเฉพาะ Flag ที่ต้องการเปลี่ยนและละเว้น Flag ที่เหลือเพื่อคงค่าเริ่มต้นไว้
--android_jit_emulator_cpus: กำหนดจำนวนแกน CPU สำหรับอินสแตนซ์อุปกรณ์เสมือนแต่ละรายการ หากไม่ได้ตั้งค่าหรือตั้งค่าเป็น 0 ระบบจะใช้4เป็นค่าเริ่มต้น--android_jit_emulator_memory_mb: ตั้งค่าหน่วยความจำเป็นเมกะไบต์ (MB) สำหรับแต่ละอินสแตนซ์ของอุปกรณ์เสมือนจริง หากไม่ได้ตั้งค่าหรือตั้งค่าเป็น 0 ระบบจะใช้8192เป็นค่าเริ่มต้น--android_jit_emulator_modem_simulator_sim_type: ตั้งค่าประเภทซิมที่โปรแกรมจำลองโมเด็มเลียนแบบสำหรับอินสแตนซ์อุปกรณ์เสมือนจริงแต่ละรายการ:1สำหรับซิมปกติ หรือ2สำหรับซิมที่มีสิทธิ์ของผู้ให้บริการ (ต้องใช้โดยCtsCarrierApiTestCases) หากไม่ได้ตั้งค่าหรือตั้งค่าเป็น 0 ระบบจะตั้งค่าเริ่มต้นเป็น1--android_jit_emulator_use_sdcard: ตั้งค่าว่าจะสร้างอิมเมจการ์ด SD ว่างเปล่าและแนบไปกับอินสแตนซ์อุปกรณ์เสมือนจริงแต่ละรายการ (trueหรือfalse) หรือไม่ ค่าเริ่มต้นคือtrueตั้งค่าเป็นfalseเพื่อปิดใช้การสร้างการ์ด SD
ตัวอย่างต่อไปนี้จะลบล้างค่าเริ่มต้นทั้ง 4 รายการ
mtt start --max_orchestration_virtual_devices N \
--orchestration_service_url=http://HOST:PORT \
--use_host_network \
--force_ats_version 2 \
--force_update \
--extra_docker_args '-e LAB_SERVER_OPTS="--android_jit_emulator_cpus=CPUS --android_jit_emulator_memory_mb=MEMORY_MB --android_jit_emulator_modem_simulator_sim_type=SIM_TYPE --android_jit_emulator_use_sdcard=USE_SDCARD"'เรียกใช้การทดสอบด้วยอุปกรณ์ที่จัดระเบียบในระบบคลาวด์
ส่วนนี้อธิบายขั้นตอนการทดสอบบนอุปกรณ์เสมือนที่จัดระเบียบบนระบบคลาวด์
อุปกรณ์บางรุ่น
ในรายการอุปกรณ์ OmniLab ATS จะแสดงอุปกรณ์เสมือนที่จัดระเบียบในระบบคลาวด์เป็น
ตัวยึดตำแหน่งแทนหมายเลขซีเรียลจริง โดยตัวยึดตำแหน่งจะแสดงในรูปแบบ HOSTNAME:PORT (เช่น thehostname:6520) และสถานะจะเป็นพร้อมใช้งานหรือจัดสรรแล้ว ตัวยึดตำแหน่งในสถานะพร้อมใช้งานแสดงว่าอุปกรณ์เสมือนจริงไม่ได้ทำงานและสามารถจัดสรรสำหรับการทดสอบได้
รูปที่ 1 การเลือกอุปกรณ์เสมือนที่จัดระเบียบในระบบคลาวด์
เพิ่มการทำงานของอุปกรณ์
เมื่อกำหนดเวลาการทดสอบในอุปกรณ์เหล่านี้ ATS จะเพิ่มการดำเนินการกับอุปกรณ์ที่จำเป็นโดยอัตโนมัติเพื่อจัดสรรและจัดการอินสแตนซ์ Cuttlefish ในระหว่างวงจรการทดสอบ
รูปที่ 2 การดำเนินการของอุปกรณ์โดยอัตโนมัติ
ตั้งค่าทรัพยากรทดสอบ
เมื่อกำหนดเวลาการทดสอบ คุณต้องระบุทรัพยากรการทดสอบที่จำเป็น ในส่วนตั้งค่าทรัพยากรทดสอบ ให้ตรวจสอบว่าคุณได้แมปไฟล์ที่อัปโหลดกับ ชื่อทรัพยากรที่ถูกต้องแล้ว
- แมปแพ็กเกจเครื่องมือโฮสต์ เช่น
cvd-host_package.tar.gzกับชื่อcvd_host_package - แมปไฟล์ ZIP ของรูปภาพอุปกรณ์กับชื่อ
cvd_device_image
รูปที่ 3 การแมปทรัพยากรการทดสอบ
ดูการทดสอบและบันทึก
หลังจากทดสอบเสร็จแล้ว คุณจะดูบันทึกได้ในส่วนไฟล์เอาต์พุต บันทึกเฉพาะที่รวบรวมสำหรับอินสแตนซ์ที่จัดการโดย Cloud Orchestrator ได้แก่
launcher.log: บันทึกจากโปรแกรมเรียกใช้ Cuttlefishkernel.log: บันทึกเคอร์เนล Android มาตรฐาน