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

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

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

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

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

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

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

כדי להתקין את התלות של Cuttlefish, מבצעים את השלבים הבאים.

  1. כדי להתקין את חבילות Debian במארח המרוחק, פועלים לפי השלבים במאמר Cuttlefish > Get started.

  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 ואת המארח המרוחק ברשת מקומית.

כדי להפעיל מכשירים וירטואליים מרחוק, מריצים את הפקודה הזו במארח 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. תוצאות של הרצה לניסיון