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 NN คือจำนวนอุปกรณ์เสมือนสูงสุดที่ OmniLab ATS จัดสรรได้พร้อมกัน โดยค่าเริ่มต้นคือ 0
หากคำสั่งล้มเหลวเนื่องจากไม่มีโหนดอุปกรณ์ ให้ทำตามขั้นตอนในข้อความแสดงข้อผิดพลาดเพื่อโหลดโมดูลเคอร์เนล หากยังคงล้มเหลว ให้รีบูตเครื่อง
ตั้งค่าอุปกรณ์เสมือนระยะไกล
ส่วนนี้จะอธิบายขั้นตอนการตั้งค่า OmniLab ATS สำหรับอุปกรณ์เสมือนระยะไกล
ติดตั้งการอ้างอิงของ Cuttlefish
หากต้องการติดตั้งการอ้างอิงของ Cuttlefish ให้ทำตามขั้นตอนต่อไปนี้
ติดตั้งแพ็กเกจ Debian ในโฮสต์ระยะไกลโดยทำตามขั้นตอนใน Cuttlefish > เริ่มต้นใช้งาน
กำหนดค่าจำนวนอุปกรณ์เสมือนสูงสุด ในโฮสต์ระยะไกลโดยทำตามขั้นตอนต่อไปนี้
- แก้ไข
/etc/default/cuttlefish-host-resourcesด้วยสิทธิ์ระดับราก - ตั้งค่า
num_cvd_accountsเป็นจำนวนอุปกรณ์เสมือนสูงสุดที่อนุญาตในโฮสต์นี้ - วิ่ง
sudo systemctl restart cuttlefish-host-resources - เรียกใช้
ifconfigและตรวจสอบจำนวนอินเทอร์เฟซcvd-wtap-*
- แก้ไข
สร้างบัญชี SSH
เนื่องจากโฮสต์ OmniLab ATS เชื่อมต่อกับโฮสต์ระยะไกลผ่าน SSH คุณจึงต้องเตรียมบัญชี SSH ในโฮสต์ระยะไกล เราขอแนะนำให้สร้างบัญชีเฉพาะ เนื่องจาก OmniLab ATS จะจัดการไฟล์ในไดเรกทอรี HOME
โฮสต์ OmniLab ATS ต้องใช้คู่คีย์ SSH เพื่อเข้าสู่ระบบโฮสต์ระยะไกลโดยไม่ต้องใช้รหัสผ่าน ขั้นตอนต่อไปนี้จะอธิบายวิธีตั้งค่าคีย์ SSH
- หากต้องการสร้างคีย์ส่วนตัวและคีย์สาธารณะ ให้เรียกใช้
ssh-keygenในโฮสต์ OmniLab ATS - อัปโหลดและผนวกคีย์สาธารณะเข้ากับ
~/.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 KEYUSER คือชื่อบัญชี 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 ผลการเรียกใช้การทดสอบ