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

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

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

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

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

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

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

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

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

รูปที่ 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 ผลการดำเนินการทดสอบ