OmniLab ATS תומך במכשירים וירטואליים של Cuttlefish שמאפשרים להריץ בדיקות בלי מכשירי Android פיזיים. Cuttlefish מתאים לבדיקת פונקציות שלא תלויות בחומרה. לפני שמתחילים להשתמש במכשירים וירטואליים, צריך לפעול לפי מדריך המשתמש כדי להתקין את OmniLab ATS.
OmniLab ATS תומך במכשירים וירטואליים בשלושה מצבים: מקומי, מרחוק ו-Cloud Orchestration. בטבלה הבאה מוצגת השוואה בין המצבים.
| מכשירים וירטואליים מקומיים | מכשירים וירטואליים מרוחקים | תזמור בענן |
|---|---|---|
| פועל במארחי עובדים של ATS | פועל במארחים מרוחקים שלעובדים של ATS יש גישה אליהם דרך SSH | פועל במארחים מקומיים או מרוחקים שמנוהלים על ידי Cloud Orchestrator |
| מבוסס x86 | יכול להיות x86 או ARM בהתאם לארכיטקטורת המארח | יכול להיות x86 או ARM בהתאם לארכיטקטורת המארח |
| קל יותר להגדיר | ההגדרה מסובכת יותר | ביצועים גבוהים, יכולת התאמה לסדרי גודל שונים, תמיכה בהפעלת מופעים מקבילים |
אפשר להפעיל את המצבים של מכשיר וירטואלי מקומי ומכשיר וירטואלי מרוחק בנפרד. אפשרות אחרת היא להפעיל את Cloud Orchestration, שמשמשת כתחליף מודרני ומספקת תאימות מלאה בין שני המצבים, בנוסף ליתרונות מרכזיים כמו הפעלה מקבילה של מכונות ובידוד טוב יותר של משאבים. לפרטים על כל מצב, אפשר לעיין במאמרים הבאים:
- הגדרה של מכשירים וירטואליים מקומיים
- הגדרת מכשירים וירטואליים מרוחקים
- הגדרה של מכשירים וירטואליים שמתואמים בענן
הגדרת מכשירים וירטואליים מקומיים
בקטע הזה מוסבר איך מגדירים את 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 ואת המארח המרוחק ברשת תקשורת מקומית (LAN).
כדי להפעיל מכשירים וירטואליים מרחוק, מריצים את הפקודה הזו במארח 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 יכול להתחבר למארח מרוחק אחד לכל היותר. אי אפשר לחבר כמה מארחי OmniLab ATS למארח מרוחק אחד בו-זמנית.
הרצת בדיקה עם מכשירים וירטואליים
בקטע הזה מתוארים השלבים להרצת בדיקה במכשירים וירטואליים מקומיים או מרוחקים.
מכשירים נבחרים
ברשימת המכשירים, OmniLab ATS מציג מכשירים וירטואליים כ-placeholders במקום המספרים הסידוריים שלהם. ה-placeholder מוצג בפורמט של HOSTNAME:local-virtual-device-ID למכשירים וירטואליים מקומיים; remote-virtual-ADDRESS-ID למכשירים וירטואליים מרוחקים. הסטטוסים האפשריים הם זמין או מוקצה. אם המכשיר הווירטואלי נמצא במצב זמין, סימן שהוא לא פועל ואפשר להקצות אותו לבדיקה.
איור 1. בחירת מכשירים וירטואליים
הוספת פעולות במכשיר
אם בוחרים לפחות מכשיר וירטואלי אחד, הפעולה המשויכת למכשיר אמורה להתווסף לרשימה באופן אוטומטי. הפעולה כוללת את הפרמטרים הנדרשים של TradeFed ואת משאבי הבדיקה ליצירת מכשירים וירטואליים.
איור 2. פעולות במכשירים וירטואליים מקומיים
איור 3. פעולות במכשירים וירטואליים מרוחקים
הגדרת משאבי בדיקה
מכשירים וירטואליים של Cuttlefish דורשים שלושה משאבי בדיקה: כלי המכונה הווירטואלית, התמונות ו-Acloud.
ב-build טיפוסי של Cuttlefish (לדוגמה, ב-ci.android.com), הכלים של המכונה הווירטואלית ארוזים ב-cvd-host_package.tar.gz, והתמונות נמצאות ב-aosp_cf_x86_64_only_phone-img-*.zip.aosp_cf_x86_64_only_phone-userdebug קובץ ה-binary של Acloud נוצר ב-OmniLab ATS והוא תואם לכל הגרסאות של Cuttlefish. צריך לשנות את כתובת ה-URL להורדה שמוגדרת כברירת מחדל של הקובץ הבינארי של Acloud רק למטרות ניפוי באגים.
איור 4. משאבי בדיקה למכשירים וירטואליים
צפייה בהרצות בדיקה
יומני המכשיר, כולל kernel.log, host_log.txt ו-launcher.log, נאספים בתיקיית קובץ הפלט. כדי לראות את קובצי הפלט, לוחצים על הצגת קובצי הפלט.
איור 5. תוצאות של הרצה לניסיון