อุปกรณ์เสมือนใน Android Test Station

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

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

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

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

ตั้งค่าอุปกรณ์เสมือนเฉพาะที่

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

ติดตั้งทรัพยากร Dependency ของ Cuttlefish

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

sudo modprobe -a kvm tun vhost_net vhost_vsock

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

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

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

mtt start --max_local_virtual_devices N

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

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

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

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

ติดตั้งทรัพยากร Dependency ของ Cuttlefish

หากต้องการติดตั้งทรัพยากร Dependency ของ 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

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

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

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

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

sudo usermod -aG kvm,cvdnetwork,render $USER

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

รูปที่ 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 นั้นมีอยู่ใน ATS และเข้ากันได้กับ Cuttlefish ทุกเวอร์ชัน ต้องเปลี่ยน URL การดาวน์โหลดเริ่มต้นของไบนารี Acloud เพื่อจุดประสงค์ในการแก้ไขข้อบกพร่องเท่านั้น

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

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

ดูการดำเนินการทดสอบ

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

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

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