แอป Cloud Orchestration มี วิธีที่มีประสิทธิภาพสูงและปรับขนาดได้ในการจัดการอินสแตนซ์ Cuttlefish โดยเฉพาะอย่างยิ่ง สำหรับอุปกรณ์เสมือน (CHD) ที่ใช้ ARM OmniLab ATS รองรับ Cloud Orchestration เพื่อให้คุณเรียกใช้การทดสอบในอุปกรณ์เสมือนได้ ก่อนเริ่มใช้อุปกรณ์เสมือน ให้ทำตาม OmniLab Android Test Station เพื่อติดตั้ง OmniLab ATS
ภาพรวม
Cloud Orchestration ช่วยให้ OmniLab ATS มอบหมายการจัดการอินสแตนซ์ Cuttlefish ให้กับบริการ Cloud Orchestrator โดยเฉพาะ แนวทาง นี้มีข้อดีหลายประการเหนือโหมดโลคัลและโหมดระยะไกล ที่มีอยู่ ในขณะที่ยังคง ประสบการณ์การใช้งานที่คุ้นเคยไว้
- การเปิดใช้อินสแตนซ์แบบขนาน: อนุญาตให้เปิดใช้อินสแตนซ์ Cuttlefish หลายรายการพร้อมกัน ซึ่งช่วยลดเวลาในการดำเนินการก่อนเริ่มการทดสอบได้อย่างมาก
- ความสามารถในการปรับขนาด: เหมาะสำหรับสภาพแวดล้อมการทดสอบขนาดใหญ่
- การแยกทรัพยากร: แยกสภาพแวดล้อมการดำเนินการทดสอบ (ATS Worker) ออกจากสภาพแวดล้อมการจำลองอุปกรณ์
สิ่งที่ต้องมีก่อน
- เครื่องโฮสต์ที่สามารถเรียกใช้ Docker ได้
- สิทธิ์เข้าถึงอิมเมจ Docker ของ Cuttlefish Orchestration
ตั้งค่าบริการ Cloud Orchestrator
บริการ Cloud Orchestrator จะจัดการวงจรชีวิตของอินสแตนซ์ Cuttlefish คุณสามารถติดตั้งใช้งานบริการในสภาพแวดล้อมต่างๆ ได้ และบริการนี้รองรับทั้งสถาปัตยกรรม x86 และ ARM
- โฮสต์เดียวกับ ATS Worker: ทำงานในคอนเทนเนอร์ Docker บนเครื่องเดียวกัน
- เครื่องแยกต่างหาก: ทำงานบนเซิร์ฟเวอร์ในองค์กรที่สามารถเรียกใช้ Docker ได้
- อินสแตนซ์ระบบคลาวด์: ทำงานบนเครื่องเสมือนในสภาพแวดล้อมระบบคลาวด์ เช่น Google Compute Engine
ติดตั้งและตั้งค่าบริการ
ทำตาม Cloud Android Orchestration README เพื่อเปิดใช้บริการ
การตรวจสอบสิทธิ์และสิทธิ์
หากบริการ Cloud Orchestrator ทำงานบนเครื่องระยะไกล ให้ตรวจสอบว่าโฮสต์ ATS Worker มีสิทธิ์ที่จำเป็นในการเข้าถึงบริการผ่านคำขอ HTTP หากไม่ได้รับอนุญาตให้เชื่อมต่อผ่าน HTTP คุณอาจต้องตั้งค่าการส่งต่อพอร์ต SSH ดูรายละเอียดได้ที่ ลองใช้ Cloud Orchestrator
สถานะที่คาดไว้
หลังจากเริ่มบริการ Cloud Orchestrator สำเร็จแล้ว ควรเข้าถึงบริการได้โดยใช้ HTTP คุณสามารถตรวจสอบสถานะของบริการได้โดยการค้นหา API ของบริการ ดังนี้
- Ping บริการ: คุณควรเข้าถึงปลายทางของบริการจากโฮสต์ OmniLab ATS Worker ได้ เช่น การเรียกใช้
curl -I http://localhost:8080/v1/zones/local/hostsควรแสดงการตอบสนอง HTTP ที่สำเร็จ (ทั้งHTTP/1.1 200 OKหรือการเปลี่ยนเส้นทาง302 Foundไปยัง/username) ซึ่งยืนยันว่าบริการทำงานอยู่และเข้าถึงได้
กำหนดค่า OmniLab ATS สำหรับ Cloud Orchestration
ก่อนเริ่ม OmniLab ATS ให้ตรวจสอบว่าอินสแตนซ์ Cuttlefish ทั้งหมดในโฮสต์ OmniLab ATS Worker หยุดทำงานแล้ว OmniLab ATS จะเปิดและหยุดอุปกรณ์เสมือนโดยอัตโนมัติตลอดวงจรการทดสอบ และอินสแตนซ์ Cuttlefish ที่มีอยู่จะขัดแย้งกับอินสแตนซ์ที่จัดการโดย OmniLab ATS ดูรายละเอียดเกี่ยวกับการหยุด อินสแตนซ์ Cuttlefish ได้ที่ หยุด Cuttlefish
หากต้องการเปิดใช้ Cloud Orchestration ใน 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: บังคับให้ใช้ OmniLab ATS 2.0 ซึ่งจำเป็นสำหรับ Cloud Orchestration ดูข้อมูลเพิ่มเติมได้ที่คู่มือการอัปเกรด OmniLab ATS 2.0--force_update: ดึงข้อมูลบิลด์คอนเทนเนอร์ล่าสุดที่มีฟีเจอร์ ATS 2.0 และ Cloud Orchestration
กำหนดค่าข้อกำหนดฮาร์ดแวร์ของอุปกรณ์เสมือนจริง (ไม่บังคับ)
โดยค่าเริ่มต้น ระบบจะจัดสรรอินสแตนซ์อุปกรณ์เสมือนจริงที่จัดการโดย Cloud Orchestration แต่ละรายการด้วย CPU 4 รายการและ RAM 8192 MB (8 GB) เมื่อเปิดใช้ OmniLab ATS ด้วย Cloud Orchestration คุณสามารถปรับแต่งจำนวนคอร์ CPU และการจัดสรรหน่วยความจำสำหรับอินสแตนซ์อุปกรณ์เสมือนได้โดยส่ง --android_jit_emulator_cpus และ --android_jit_emulator_memory_mb ไปยังเซิร์ฟเวอร์ Lab ในคำสั่ง mtt start โดยใช้ --extra_docker_args ดังนี้
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_cpus: กำหนดจำนวนคอร์ CPU สำหรับอินสแตนซ์อุปกรณ์เสมือนแต่ละรายการ หากไม่ได้ตั้งค่าหรือตั้งค่า ≤ 0 ระบบจะใช้ค่าเริ่มต้นเป็น4--android_jit_emulator_memory_mb: กำหนดหน่วยความจำเป็นเมกะไบต์ (MB) สำหรับอินสแตนซ์อุปกรณ์เสมือนจริงแต่ละรายการ หากไม่ได้ตั้งค่าหรือตั้งค่า ≤ 0 ระบบจะใช้ค่าเริ่มต้นเป็น8192
เรียกใช้การทดสอบด้วยอุปกรณ์ที่จัดการโดย Cloud Orchestration
ส่วนนี้อธิบายขั้นตอนในการเรียกใช้การทดสอบในอุปกรณ์เสมือนที่จัดการโดย Cloud Orchestration
เลือกอุปกรณ์
ในรายการอุปกรณ์ OmniLab ATS จะแสดงอุปกรณ์เสมือนที่จัดการโดย Cloud Orchestration เป็นตัวยึดตำแหน่งแทนหมายเลขซีเรียลจริง ตัวยึดตำแหน่งจะแสดง
ในรูปแบบของ HOSTNAME:PORT (เช่น
thehostname:6520) โดยสถานะจะเป็น พร้อมใช้งาน หรือจัดสรรแล้ว ตัวยึดตำแหน่งในสถานะพร้อมใช้งาน แสดงว่าอุปกรณ์เสมือนจริงไม่ได้ทำงานและสามารถจัดสรรสำหรับการทดสอบได้
รูปที่ 1 การเลือกอุปกรณ์เสมือนที่จัดการโดย Cloud Orchestration
เพิ่มการดำเนินการของอุปกรณ์
เมื่อกำหนดเวลาการทดสอบในอุปกรณ์เหล่านี้ ATS จะเพิ่มการดำเนินการของอุปกรณ์ที่จำเป็นโดยอัตโนมัติเพื่อจัดสรรและจัดการอินสแตนซ์ Cuttlefish ระหว่างวงจรการทดสอบ
รูปที่ 2 การดำเนินการของอุปกรณ์อัตโนมัติ
ตั้งค่าทรัพยากรการทดสอบ
เมื่อกำหนดเวลาการทดสอบ คุณต้องระบุทรัพยากรการทดสอบที่จำเป็น ในส่วนตั้งค่าทรัพยากรการทดสอบ ให้ตรวจสอบว่าคุณได้แมปไฟล์ที่อัปโหลดกับชื่อทรัพยากรที่ถูกต้องแล้ว ดังนี้
- แมปแพ็กเกจเครื่องมือโฮสต์ เช่น
cvd-host_package.tar.gzกับชื่อcvd_host_package - แมป ZIP ของอิมเมจอุปกรณ์กับชื่อ
cvd_device_image
รูปที่ 3 การแมปทรัพยากรการทดสอบ
ดูการเรียกใช้และการบันทึกการทดสอบ
หลังจากที่การทดสอบเสร็จสมบูรณ์แล้ว คุณสามารถดูบันทึกได้ในส่วนไฟล์เอาต์พุต บันทึกเฉพาะที่รวบรวมไว้สำหรับอินสแตนซ์ที่จัดการโดย Cloud Orchestrator ได้แก่
launcher.log: บันทึกจากตัวเปิดใช้ Cuttlefishkernel.log: บันทึกเคอร์เนล Android มาตรฐาน