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

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

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

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

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

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

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

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

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

sudo modprobe -a kvm tun vhost_net vhost_vsock

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

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

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

mtt start --max_local_virtual_devices N

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

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

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

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

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

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

  1. התקנת חבילות Debian במארח המרוחק על ידי ביצוע השלבים הבאים דג דיונון > מתחילים.

  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. פרטים נוספים על הפסקת מופעי הדיונון זמינים במאמר Stop 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 של המספרים הסידוריים האמיתיים שלהם. ה-placeholders מוצגים בפורמט של HOSTNAME:local-virtual-device-ID למכשירים וירטואליים מקומיים; remote-virtual-ADDRESS-ID למכשירים וירטואליים מרחוק. המדינות הן זמין או מוקצי. placeholder במצב Available מציין שהמכשיר הווירטואלי לא פועל ואפשר להקצות אותו לבדיקה.

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

איור 1. בחירת מכשירים וירטואליים

הוספת פעולות לגבי מכשירים

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

פעולות מקומיות במכשיר וירטואלי

איור 2. פעולות במכשיר למכשירים וירטואליים מקומיים

פעולות מרחוק במכשיר וירטואלי

איור 3. פעולות במכשיר למכשירים וירטואליים מרוחקים

הגדרת משאבים לבדיקה

למכשירים הווירטואליים של דיונון נדרשים שלושה משאבי בדיקה, המכונה הווירטואלית כלים, תמונות Acloud. בגרסה טיפוסית של דיונון (לדוגמה, aosp_cf_x86_64_phone במצב פעיל ci.android.com ), הכלים למכונה וירטואלית נארזים ב-cvd-host_package.tar.gz. התמונות בaosp_cf_x86_64_phone-img-*.zip. הקובץ הבינארי ב-Acloud נוצר ב-OmniLab ATS והוא תואם לכל הגרסאות של Cuttlefish. ברירת המחדל צריך לשנות את כתובת ה-URL להורדה של הבינארי ב-Acloud רק לצורך ניפוי באגים למטרות.

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

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

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

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

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

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