OmniLab ATS תומך במכשירים וירטואליים של Cuttlefish שמאפשרים להריץ בדיקות בלי מכשירי Android פיזיים. Cuttlefish מתאים לבדיקת פונקציות שאינן תלויות בחומרה. לפני שמתחילים להשתמש במכשירים וירטואליים, צריך לפעול לפי מדריך המשתמש כדי להתקין את OmniLab ATS.
OmniLab ATS תומך במכשירים וירטואליים בשני מצבים: מקומי ומרוחק. בטבלה הבאה מופיעה השוואה בין שני המצבים.
מכשירים וירטואליים מקומיים | מכשירים וירטואליים מרוחקים |
---|---|
פועל במארחי עובדים של ATS | פועל במארחים מרוחקים שאפשר לגשת אליהם דרך SSH במארחי העובדים של ATS |
מבוסס x86 | יכול להיות x86 או ARM, בהתאם לארכיטקטורה של המארחים |
קל יותר להגדיר | תהליך ההגדרה מסובך יותר |
אפשר להפעיל מכשירים וירטואליים מקומיים ומכשירים וירטואליים מרוחקים בנפרד. פרטים על כל מצב זמינים במאמרים הבאים:
הגדרת מכשירים וירטואליים מקומיים
בקטע הזה מתוארים השלבים להגדרת 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, מבצעים את השלבים הבאים.
מתקינים את חבילות Debian במארח המרוחק לפי השלבים שמפורטים בקטע Cuttlefish > Get started.
כדי להגדיר את המספר המקסימלי של מכשירים וירטואליים במארח המרוחק:
- עורכים את
/etc/default/cuttlefish-host-resources
עם הרשאת root. - מגדירים את
num_cvd_accounts
למספר המכשירים הווירטואליים המקסימלי שמותר להפעיל במארח הזה. - מריצים את
sudo systemctl restart cuttlefish-host-resources
. - מריצים את
ifconfig
ומאמתים את מספר ממשקיcvd-wtap-*
.
- עורכים את
יצירת חשבון SSH
מאחר שמארח OmniLab ATS מתחבר למארח המרוחק דרך SSH, צריך להכין חשבון SSH במארח המרוחק. מכיוון ש-OmniLab ATS מבצע פעולות על הקבצים בספריית HOME, מומלץ ליצור חשבון ייעודי.
כדי להתחבר למארח המרוחק ללא סיסמה, נדרש זוג מפתחות SSH במארח OmniLab ATS. בשלבים הבאים מוסבר איך מגדירים את מפתחות ה-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 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 יכול להתחבר למארח מרוחק אחד לכל היותר. אי אפשר להתחבר למארח מרוחק אחד בו-זמנית מכמה מארחים של OmniLab ATS.
הרצת בדיקה עם מכשירים וירטואליים
בקטע הזה מתוארים השלבים להרצת בדיקה במכשירים וירטואליים מקומיים או מרוחקים.
מכשירים נבחרים
ברשימת המכשירים, OmniLab ATS מציג מכשירים וירטואליים כ-placeholders במקום המספרים הסידוריים בפועל שלהם. התוויות האלה מוצגות בפורמט HOSTNAME:local-virtual-device-ID למכשירים וירטואליים מקומיים, וremote-virtual-ADDRESS-ID למכשירים וירטואליים מרוחקים. המצבים האפשריים הם Available או Allocated. placeholder במצב Available מציין שהמכשיר הווירטואלי לא פועל וניתן להקצות אותו לבדיקה.
איור 1. בחירת מכשירים וירטואליים
הוספת פעולות במכשיר
אם בוחרים מכשיר וירטואלי אחד לפחות, פעולת המכשיר המשויכת אמורה להתווסף לרשימה באופן אוטומטי. הפעולה מורכבת מהפרמטרים הנדרשים של TradeFed וממשאבי הבדיקה ליצירת מכשירים וירטואליים.
איור 2. פעולות במכשירים של מכונות וירטואליות מקומיות
איור 3. פעולות במכשיר למכשירים וירטואליים מרוחקים
הגדרת משאבי בדיקה
כדי להשתמש במכשירים הווירטואליים של Cuttlefish נדרשים שלושה משאבי בדיקה: הכלים של המכונות הווירטואליות, התמונות ו-Acloud.
ב-build אופייני של 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. תוצאות ההרצה לניסיון