OmniLab ATS תומך במכשירים וירטואליים של Cuttlefish שמאפשרים להריץ בדיקות בלי מכשירי Android פיזיים. Cuttlefish מתאים לבדיקת פונקציות שלא תלויות בחומרה. לפני שמתחילים להשתמש במכשירים וירטואליים, צריך להתקין את OmniLab ATS לפי מדריך המשתמש.
מערכת OmniLab ATS תומכת במכשירים וירטואליים בשני מצבים: מקומי ומרוחק. בטבלה הבאה מוצגת השוואה בין שני המצבים.
| מכשירים וירטואליים מקומיים | מכשירים וירטואליים מרוחקים |
|---|---|
| פועל במארחי עובדים של ATS | הסקריפט פועל במארחים מרוחקים שמארחי העובדים של ATS יכולים לגשת אליהם באמצעות SSH |
| מבוסס 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 NN הוא המספר המקסימלי של מכשירים וירטואליים שאפשר להקצות בו-זמנית ב-OmniLab ATS. מספר ברירת המחדל הוא 0.
אם הפקודה נכשלת בגלל צמתי מכשיר חסרים, צריך לפעול לפי השלבים שבהודעת השגיאה כדי לטעון את מודולי הליבה. אם הגיבוי ממשיך להיכשל, צריך להפעיל מחדש את המחשב.
הגדרה של מכשירים וירטואליים מרוחקים
בקטע הזה מוסבר איך מגדירים את OmniLab ATS למכשירים וירטואליים מרחוק.
התקנת יחסי תלות ב-Cuttlefish
כדי להתקין את התלות של Cuttlefish, מבצעים את השלבים הבאים.
כדי להתקין את חבילות Debian במארח המרוחק, פועלים לפי השלבים במאמר Cuttlefish > Get started.
כדי להגדיר את המספר המקסימלי של מכשירים וירטואליים במארח המרוחק, מבצעים את השלבים הבאים:
- עורכים את
/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 יכול להתחבר למארח מרוחק אחד לכל היותר. אי אפשר לחבר כמה מארחי 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. תוצאות של הרצה לניסיון