מכשירי וירטואליים ב-OmniLab ATS

‫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 N

N הוא המספר המקסימלי של מכשירים וירטואליים שאפשר להקצות בו-זמנית ב-OmniLab ATS. מספר ברירת המחדל הוא 0.

אם הפקודה נכשלת בגלל צמתי מכשיר חסרים, צריך לפעול לפי השלבים שבהודעת השגיאה כדי לטעון את מודולי הליבה. אם הגיבוי ממשיך להיכשל, מפעילים מחדש את המחשב.

הגדרה של מכשירים וירטואליים מרוחקים

בקטע הזה מוסבר איך מגדירים את OmniLab ATS למכשירים וירטואליים מרחוק.

התקנת יחסי תלות ב-Cuttlefish

כדי להתקין את יחסי התלות של 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

מכיוון שהמארח של OmniLab ATS מתחבר למארח המרוחק דרך SSH, צריך להכין חשבון SSH במארח המרוחק. מכיוון ש-OmniLab ATS מבצע מניפולציות בקבצים בספריית HOME, מומלץ ליצור חשבון ייעודי.

מארח OmniLab ATS דורש זוג מפתחות SSH כדי להתחבר למארח המרוחק ללא סיסמה. בשלבים הבאים מוסבר איך מגדירים את מפתחות ה-SSH:

  1. כדי ליצור מפתח פרטי ומפתח ציבורי, מריצים את הפקודה ssh-keygen במארח של OmniLab ATS.
  2. מעלים את המפתח הציבורי ומצרפים אותו אל ~/.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 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 במקום המספרים הסידוריים שלהם. ה-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. תוצאות של הרצה לניסיון