מכשירים וירטואליים בתחנת הבדיקה של Android

Android Test Station תומך במכשירים וירטואליים של Cuttlefish שמאפשרים להריץ בדיקות ללא מכשירי Android פיזיים. הדיונון מתאים לבדיקת פונקציות שאינן תלויות בחומרה. לפני שמתחילים להשתמש במכשירים וירטואליים, צריך לפעול בהתאם למדריך למשתמש כדי להתקין את Android Test Station.

ATS תומך במכשירים וירטואליים בשני מצבים: מקומי ומרוחק. בטבלה הבאה מוצגת השוואה בין שני המצבים.

מכשירים וירטואליים מקומיים מכשירים וירטואליים מרוחקים
פועל במארחי עובדים של ATS פועלת במארחים מרוחקים שמארחים של עובדי ATS יכולים לגשת אליהם דרך SSH
מבוסס x86 יכול להיות x86 או ARM, בהתאם לארכיטקטורה של המארחים
קל יותר להגדרה יותר מסובך להגדרה

אפשר להפעיל מכשירים וירטואליים מקומיים ומרוחקים בנפרד. לפרטים על כל אחד מהמצבים:

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

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

מתקינים יחסי תלות של דיונון

מריצים את הפקודה הבאה כדי לוודא שמודולים של הליבה הדרושים נטענים:

sudo modprobe -a kvm tun vhost_net vhost_vsock

הפעלת תחנת הבדיקה של Android עם מכשירים וירטואליים מקומיים

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

כדי להפעיל מכשירים וירטואליים מקומיים, מריצים את:

mtt start --max_local_virtual_devices N

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

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

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

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

מתקינים יחסי תלות של דיונון

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

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

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

  1. כדי ליצור מפתח פרטי ומפתח ציבורי, מריצים את ssh-keygen במארח ATS.
  2. מעלים את המפתח הציבורי ומצרפים אותו ל-~/.ssh/authorized_keys במארח המרוחק.

אם חשבון ה-SSH שלכם שונה מהחשבון שבו משתמשים להתקנת יחסי התלות של Cuttlefish, כדי לאפשר לחשבון ה-SSH להפעיל Cuttlefish, מריצים את הפקודה הבאה במארח המרוחק:

sudo usermod -aG kvm,cvdnetwork,render $USER

הפעלת ATS עם מכשירים וירטואליים מרחוק

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

לביצועים טובים יותר, מומלץ להגדיר את המארח ATS ואת המארח המרוחק ברשת תקשורת מקומית.

כדי להפעיל מכשירים וירטואליים מרוחקים, מריצים את הפקודה הבאה במארח ATS:

mtt start --remote_virtual_devices USER@HOST/N \
--remote_ssh_key KEY

USER הוא השם של חשבון ה-SSH.

HOST היא כתובת ה-IPv4 של המארח המרוחק.

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

KEY הוא הנתיב למפתח ה-SSH הפרטי במארח ATS.

הפקודה בודקת את החיבור למארח המרוחק לפני הפעלת ATS. אם במסוף מופיעה הודעת אזהרה כמו The specified --remote_virtual_devices and --remote_ssh_key are invalid., כדאי לבדוק את ההגדרה של ה-SSH.

כדי למנוע התנגשויות בין משאבים, מארח ATS יכול להתחבר למארח מרוחק אחד לכל היותר. כמה מארחים של ATS לא יכולים להתחבר למארח מרוחק אחד בו-זמנית.

הרצת בדיקה באמצעות מכשירים וירטואליים

בקטע הזה מתוארים השלבים להרצת בדיקה במכשירים וירטואליים מקומיים או מרוחקים.

בחירת מכשירים

ברשימת המכשירים, ATS מציג מכשירים וירטואליים כ-placeholders במקום את המספרים הסידוריים בפועל. ה-placeholders מוצגים בפורמט של HOSTNAME:local-virtual-device-ID למכשירים וירטואליים מקומיים; remote-virtual-ADDRESS-ID למכשירים וירטואליים מרחוק. המדינות יכולות להיות Available או Allocation. 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 מובנה ב-ATS ותואם לכל הגרסאות של Cuttlefish. צריך לשנות את כתובת ה-URL להורדה שמוגדרת כברירת מחדל של הקובץ הבינארי ב-Acloud רק לצורך ניפוי באגים.

משאבים לבדיקת מכשירים וירטואליים

איור 4. משאבים לבדיקת מכשירים וירטואליים

צפייה בהפעלות הבדיקה

יומני המכשיר, כולל kernel.log, host_log.txt ו-launcher.log, נאספים בתיקיית קובץ הפלט. לוחצים על הצגת קובצי פלט כדי לראות אותם.

תוצאות הבדיקה

איור 5. בדיקת תוצאות ההרצה