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

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

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

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

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

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

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

ติดตั้งทรัพยากร Dependency ของ 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 2 คีย์เพื่อเข้าสู่ระบบโฮสต์ระยะไกลโดยไม่ต้องใช้รหัสผ่าน ขั้นตอนต่อไปนี้อธิบายวิธีตั้งค่าคีย์ 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 และโฮสต์ระยะไกลในเครือข่าย LAN เพื่อให้ได้ประสิทธิภาพที่ดีขึ้น

หากต้องการเปิดใช้อุปกรณ์เสมือนระยะไกล ให้เรียกใช้คำสั่งนี้ในโฮสต์ 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 หลายตัวจะเชื่อมต่อกับโฮสต์ระยะไกลตัวเดียวพร้อมกันไม่ได้

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ทรัพยากรการทดสอบอุปกรณ์เสมือนจริง

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

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

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

ผลการทดสอบ

รูปที่ 5 ผลการทดสอบ