การจัด Orchestration ในระบบคลาวด์ใน OmniLab ATS

แอป 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

ทรัพยากรการทดสอบสำหรับการจัด Orchestrate ในระบบคลาวด์

รูปที่ 3 การแมปทรัพยากรการทดสอบ

ดูการทดสอบและบันทึก

หลังจากทดสอบเสร็จแล้ว คุณจะดูบันทึกได้ในส่วนไฟล์เอาต์พุต บันทึกเฉพาะที่รวบรวมสำหรับอินสแตนซ์ที่จัดการโดย Cloud Orchestrator ได้แก่

  • launcher.log: บันทึกจากโปรแกรมเรียกใช้ Cuttlefish
  • kernel.log: บันทึกเคอร์เนล Android มาตรฐาน