อุปกรณ์เสมือนใน OmniLab ATS

OmniLab ATS รองรับอุปกรณ์เสมือน Cuttlefish ที่ช่วยให้คุณทำการทดสอบได้โดยไม่ต้องใช้อุปกรณ์ Android จริง Cuttlefish เหมาะสำหรับการทดสอบฟังก์ชันที่ไม่ขึ้นอยู่กับฮาร์ดแวร์ ก่อนที่จะเริ่มใช้อุปกรณ์เสมือน ให้ทำตาม คู่มือผู้ใช้ เพื่อติดตั้ง OmniLab ATS

OmniLab ATS รองรับอุปกรณ์เสมือนใน 3 โหมด ได้แก่ โหมดในเครื่อง โหมดระยะไกล และโหมดการจัดการเป็นกลุ่มระบบคลาวด์ ตารางต่อไปนี้แสดงการเปรียบเทียบโหมดต่างๆ

อุปกรณ์เสมือนในเครื่องอุปกรณ์เสมือนระยะไกลการจัดการเป็นกลุ่มระบบคลาวด์
ทำงานบนโฮสต์ของ Worker ATSทำงานบนโฮสต์ระยะไกลที่โฮสต์ของ Worker ATS เข้าถึงได้ผ่าน SSHทำงานบนโฮสต์ในเครื่องหรือโฮสต์ระยะไกลที่จัดการโดย Cloud Orchestrator
ใช้ x86อาจใช้ x86 หรือ ARM ก็ได้ ขึ้นอยู่กับสถาปัตยกรรมของโฮสต์ อาจใช้ x86 หรือ ARM ก็ได้ ขึ้นอยู่กับสถาปัตยกรรมของโฮสต์
ตั้งค่าได้ง่ายกว่าตั้งค่าได้ซับซ้อนกว่าประสิทธิภาพสูง ปรับขนาดได้ และรองรับการเปิดใช้หลายอินสแตนซ์พร้อมกัน

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

ตั้งค่าอุปกรณ์เสมือนในเครื่อง

ส่วนนี้จะอธิบายขั้นตอนการตั้งค่า OmniLab ATS สำหรับอุปกรณ์เสมือนในเครื่อง

ติดตั้งการอ้างอิงของ Cuttlefish

เรียกใช้คำสั่งต่อไปนี้เพื่อให้แน่ใจว่าได้โหลดโมดูลเคอร์เนลที่จำเป็นแล้ว

sudo modprobe -a kvm tun vhost_net vhost_vsock

เริ่ม OmniLab ATS ด้วยอุปกรณ์เสมือนในเครื่อง

ก่อนที่จะเริ่ม OmniLab ATS ให้ตรวจสอบว่าได้หยุดอินสแตนซ์ Cuttlefish ทั้งหมดแล้ว OmniLab ATS จะเปิดและหยุดอุปกรณ์เสมือนโดยอัตโนมัติตลอดวงจรการทดสอบ และอินสแตนซ์ Cuttlefish ที่มีอยู่จะขัดแย้งกับอินสแตนซ์ที่จัดการโดย OmniLab ATS ดูรายละเอียดเกี่ยวกับการหยุดอินสแตนซ์ Cuttlefish ได้ที่ หยุด Cuttlefish

หากต้องการเปิดใช้อุปกรณ์เสมือนในเครื่อง ให้เรียกใช้คำสั่งต่อไปนี้

mtt start --max_local_virtual_devices N

N คือจำนวนอุปกรณ์เสมือนสูงสุดที่ OmniLab ATS จัดสรรได้พร้อมกัน โดยค่าเริ่มต้นคือ 0

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

ตั้งค่าอุปกรณ์เสมือนระยะไกล

ส่วนนี้จะอธิบายขั้นตอนการตั้งค่า OmniLab ATS สำหรับอุปกรณ์เสมือนระยะไกล

ติดตั้งการอ้างอิงของ Cuttlefish

หากต้องการติดตั้งการอ้างอิงของ Cuttlefish ให้ทำตามขั้นตอนต่อไปนี้

  1. ติดตั้งแพ็กเกจ Debian ในโฮสต์ระยะไกลโดยทำตามขั้นตอนใน Cuttlefish > เริ่มต้นใช้งาน

  2. กำหนดค่าจำนวนอุปกรณ์เสมือนสูงสุด ในโฮสต์ระยะไกลโดยทำตามขั้นตอนต่อไปนี้

    1. แก้ไข /etc/default/cuttlefish-host-resources ด้วยสิทธิ์ระดับราก
    2. ตั้งค่า num_cvd_accounts เป็นจำนวนอุปกรณ์เสมือนสูงสุดที่อนุญาตในโฮสต์นี้
    3. วิ่ง sudo systemctl restart cuttlefish-host-resources
    4. เรียกใช้ ifconfig และตรวจสอบจำนวนอินเทอร์เฟซ cvd-wtap-*

สร้างบัญชี SSH

เนื่องจากโฮสต์ OmniLab ATS เชื่อมต่อกับโฮสต์ระยะไกลผ่าน SSH คุณจึงต้องเตรียมบัญชี SSH ในโฮสต์ระยะไกล เราขอแนะนำให้สร้างบัญชีเฉพาะ เนื่องจาก OmniLab ATS จะจัดการไฟล์ในไดเรกทอรี HOME

โฮสต์ OmniLab ATS ต้องใช้คู่คีย์ SSH เพื่อเข้าสู่ระบบโฮสต์ระยะไกลโดยไม่ต้องใช้รหัสผ่าน ขั้นตอนต่อไปนี้จะอธิบายวิธีตั้งค่าคีย์ SSH

  1. หากต้องการสร้างคีย์ส่วนตัวและคีย์สาธารณะ ให้เรียกใช้ ssh-keygen ในโฮสต์ OmniLab ATS
  2. อัปโหลดและผนวกคีย์สาธารณะเข้ากับ ~/.ssh/authorized_keys ในโฮสต์ระยะไกล

หากบัญชี SSH ของคุณแตกต่างจากบัญชีที่ใช้ติดตั้งการอ้างอิงของ Cuttlefish ให้เรียกใช้คำสั่งต่อไปนี้ ในโฮสต์ระยะไกลเพื่ออนุญาตให้บัญชี SSH เปิดใช้ Cuttlefish

sudo usermod -aG kvm,cvdnetwork,render $USER

เริ่ม OmniLab ATS ด้วยอุปกรณ์เสมือนระยะไกล

ก่อนที่จะเริ่ม OmniLab ATS ให้ตรวจสอบว่าได้หยุดอินสแตนซ์ Cuttlefish ทั้งหมดแล้ว OmniLab ATS จะเปิดและหยุดอุปกรณ์เสมือนโดยอัตโนมัติตลอดวงจรการทดสอบ และอินสแตนซ์ Cuttlefish ที่มีอยู่จะขัดแย้งกับอินสแตนซ์ที่จัดการโดย OmniLab ATS ดูรายละเอียดเกี่ยวกับการหยุดอินสแตนซ์ Cuttlefish ได้ที่ หยุด Cuttlefish

เราขอแนะนำให้ตั้งค่าโฮสต์ OmniLab ATS และโฮสต์ระยะไกลในเครือข่ายท้องถิ่นเพื่อให้ได้ประสิทธิภาพที่ดีขึ้น

หากต้องการเปิดใช้อุปกรณ์เสมือนระยะไกล ให้เรียกใช้คำสั่งต่อไปนี้ ในโฮสต์ OmniLab ATS

mtt start --remote_virtual_devices USER@HOST/N \
--remote_ssh_key KEY

USER คือชื่อบัญชี SSH

HOST คือที่อยู่ IPv4 ของโฮสต์ระยะไกล

N คือจำนวนอุปกรณ์เสมือนสูงสุดที่ OmniLab ATS จัดสรรได้พร้อมกัน

KEY คือเส้นทางไปยังคีย์ SSH ส่วนตัว ในโฮสต์ OmniLab ATS

คำสั่งจะทดสอบการเชื่อมต่อกับโฮสต์ระยะไกลก่อนที่จะเริ่ม OmniLab ATS หากแสดงข้อความเตือน เช่น The specified --remote_virtual_devices and --remote_ssh_key are invalid. ในคอนโซล คุณควรตรวจสอบการตั้งค่า SSH

โฮสต์ OmniLab ATS สามารถเชื่อมต่อกับโฮสต์ระยะไกลได้สูงสุด 1 เครื่องเพื่อหลีกเลี่ยงความขัดแย้งของทรัพยากร โฮสต์ OmniLab ATS หลายเครื่องไม่สามารถเชื่อมต่อกับโฮสต์ระยะไกล 1 เครื่องพร้อมกันได้

ทำการทดสอบด้วยอุปกรณ์เสมือน

ส่วนนี้จะอธิบายขั้นตอนการทำการทดสอบบนอุปกรณ์เสมือนจริงในเครื่องหรืออุปกรณ์เสมือนจริงระยะไกล

เลือกอุปกรณ์

ในรายการอุปกรณ์ OmniLab ATS จะแสดงอุปกรณ์เสมือนเป็นตัวยึดตำแหน่งแทนหมายเลขซีเรียลจริง ตัวยึดตำแหน่งจะแสดงในรูปแบบ HOSTNAME:local-virtual-device-ID สำหรับอุปกรณ์เสมือนในเครื่อง และ remote-virtual-ADDRESS-ID สำหรับอุปกรณ์เสมือนระยะไกล สถานะจะเป็น Available หรือ Allocated ตัวยึดตำแหน่งในสถานะ Available แสดงว่าอุปกรณ์เสมือนจริงไม่ได้ทำงานและจัดสรรให้ทำการทดสอบได้

เลือกอุปกรณ์เสมือน

รูปที่ 1 การเลือกอุปกรณ์เสมือน

เพิ่มการทำงานของอุปกรณ์

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

การดำเนินการกับอุปกรณ์เสมือนในเครื่อง

รูปที่ 2 การทำงานของอุปกรณ์สำหรับอุปกรณ์เสมือนในเครื่อง

การดำเนินการกับอุปกรณ์เสมือนจากระยะไกล

รูปที่ 3 การทำงานของอุปกรณ์สำหรับอุปกรณ์เสมือนระยะไกล

ตั้งค่าทรัพยากรการทดสอบ

อุปกรณ์เสมือน Cuttlefish ต้องใช้ทรัพยากรการทดสอบ 3 อย่าง ได้แก่ เครื่องมือเครื่องเสมือน รูปภาพ และ Acloud ในการสร้าง Cuttlefish ทั่วไป (เช่น aosp_cf_x86_64_only_phone-userdebug บน ci.android.com ) เครื่องมือเครื่องเสมือนจะบรรจุอยู่ใน cvd-host_package.tar.gz และ รูปภาพจะอยู่ใน aosp_cf_x86_64_only_phone-img-*.zip ไบนารี Acloud สร้างขึ้นใน OmniLab ATS และเข้ากันได้กับ Cuttlefish ทุกเวอร์ชัน คุณจะต้องเปลี่ยน URL ดาวน์โหลดเริ่มต้นของไบนารี Acloud ก็ต่อเมื่อต้องการแก้ไขข้อบกพร่องเท่านั้น

แหล่งข้อมูลการทดสอบกับอุปกรณ์เสมือน

รูปที่ 4 ทรัพยากรการทดสอบสำหรับอุปกรณ์เสมือน

ดูการเรียกใช้การทดสอบ

ระบบจะรวบรวมบันทึกของอุปกรณ์ ซึ่งรวมถึง kernel.log, host_log.txt และ launcher.log ไว้ในโฟลเดอร์ไฟล์เอาต์พุต คลิกดูไฟล์เอาต์พุต เพื่อดูไฟล์ดังกล่าว

ผลการทดสอบ

รูปที่ 5 ผลการเรียกใช้การทดสอบ