אפליקציית Cloud Orchestration מספקת דרך יעילה וניתנת להתאמה לעומס לניהול מופעי Cuttlefish, במיוחד עבור מכשירים וירטואליים מבוססי-ARM (CHD). OmniLab ATS תומך בתיזמור ב-Cloud, כך שאפשר להריץ בדיקות במכשירים וירטואליים. לפני שמתחילים להשתמש במכשירים וירטואליים, צריך לפעול לפי ההוראות במאמר תחנת בדיקות ל-Android של OmniLab כדי להתקין את OmniLab ATS.
סקירה כללית
שירות Cloud Orchestration מאפשר ל-OmniLab ATS להעביר את הניהול של מופעי Cuttlefish לשירות Cloud Orchestrator ייעודי. לגישה הזו יש כמה יתרונות לעומת המצבים המקומי והמרוחק הקיימים, ועדיין היא מספקת חוויית משתמש מוכרת:
- הפעלת מופעים במקביל: מאפשרת להפעיל כמה מופעים של Cuttlefish בו-זמנית, וכך מקצרת באופן משמעותי את זמן התקורה לפני תחילת הבדיקות.
- יכולת הרחבה: מתאים לסביבות בדיקה בקנה מידה גדול.
- בידוד משאבים: מפרידים את סביבת ההפעלה של הבדיקה (תהליך עובד של ATS) מסביבת הדמיית המכשיר.
דרישות מוקדמות
- מחשב מארח שיכול להריץ את Docker
- גישה לתמונות Docker של Cuttlefish orchestration
הגדרת שירות Cloud Orchestrator
שירות Cloud Orchestrator מנהל את מחזור החיים של מופעי Cuttlefish. אפשר לפרוס את השירות בסביבות שונות, והוא תומך בארכיטקטורות x86 ו-ARM:
- אותו מארח כמו ATS worker: פועל בקונטיינר Docker באותו מחשב
- מכונה נפרדת: פועל בשרת מקומי שיכול להריץ את Docker
- מופע בענן: פועל במכונה וירטואלית בסביבת ענן, למשל Google Compute Engine
התקנה והגדרה של השירות
כדי להפעיל את השירות, פועלים לפי ההוראות בקובץ ה-README של Cloud Android Orchestration.
אימות והרשאות
אם שירות Cloud Orchestrator פועל במחשב מרוחק, צריך לוודא שלמארח של העובד של ATS יש את ההרשאות הנדרשות כדי לגשת אליו באמצעות בקשות HTTP. אם חיבור HTTP לא מותר, יכול להיות שתצטרכו להגדיר העברה ליציאה מקומית באמצעות SSH. פרטים נוספים זמינים במאמר בנושא ניסיון ב-Cloud Orchestrator.
המצב הצפוי
אחרי שהשירות Cloud Orchestrator מופעל בהצלחה, אמורה להיות אליו גישה באמצעות HTTP. כדי לאמת את המצב, אפשר לשלוח שאילתה ל-API:
- שליחת פינג לשירות: צריך להיות אפשר להגיע לנקודת הקצה של השירות ממארח העובד של OmniLab ATS. לדוגמה, הפעלת הפקודה
curl -I http://localhost:8080/v1/zones/local/hostsצריכה להחזיר תגובת HTTP מוצלחת (HTTP/1.1 200 OKאו הפניה אוטומטית302 Foundאל/username), כדי לאשר שהשירות פעיל וזמין.
הגדרת OmniLab ATS לתיזמור בענן
לפני שמפעילים את OmniLab ATS, צריך לוודא שכל המופעים של Cuttlefish במארח של העובד ב-OmniLab ATS הופסקו. OmniLab ATS מפעיל ומפסיק אוטומטית את המכשירים הווירטואליים במהלך מחזור הבדיקה, ומופעים קיימים של Cuttlefish מתנגשים עם מופעים שמנוהלים על ידי OmniLab ATS. פרטים על עצירה של מופעי Cuttlefish זמינים במאמר עצירת Cuttlefish.
כדי להפעיל את Cloud Orchestration ב-OmniLab ATS, צריך להעביר דגלים ספציפיים כשמפעילים את OmniLab ATS:
mtt start --max_orchestration_virtual_devices N \
--orchestration_service_url=http://HOST:PORT \
--use_host_network \
--force_ats_version 2 \
--force_update-
--max_orchestration_virtual_devices: הגדרת המספר המקסימלי של מכשירים וירטואליים שמנוהלים על ידי Cloud Orchestrator שאפשר להקצות בו-זמנית ב-OmniLab ATS. מספר ברירת המחדל הוא 0. -
--orchestration_service_url: מציינת את כתובת ה-URL שבה שירות Cloud Orchestration מאזין, לדוגמה,http://localhost:8080. -
--use_host_network: שימוש במרחב השמות של הרשת של המארח עבור הקונטיינר. ההרשאה הזו נדרשת כדי לגשת לשירות Cloud Orchestration. -
--force_ats_version 2: כופה את השימוש ב-OmniLab ATS 2.0, שנדרש ל-Cloud Orchestration. מידע נוסף זמין במדריך לשדרוג ל-OmniLab ATS 2.0. -
--force_update: משיכת הגרסה העדכנית ביותר של בניית מאגר עם ATS 2.0 ותכונות של Cloud Orchestration.
הגדרת מפרטי חומרה של מכשיר וירטואלי (אופציונלי)
כברירת מחדל, כל מופע של מכשיר וירטואלי שמתזמן את הענן מוקצה עם ארבעה מעבדים, 8, 192 MB (8 GB) של זיכרון RAM, כרטיס SIM רגיל ותמונה של כרטיס SD מצורף. כשמפעילים את OmniLab ATS עם Cloud Orchestration, אפשר לשנות את ברירות המחדל האלה באמצעות העברת הדגל המתאים של שרת ה-Lab בפקודה mtt start באמצעות --extra_docker_args. כל דגל הוא עצמאי: צריך להעביר רק את הדגלים שרוצים לשנות ולהשמיט את השאר כדי לשמור על ערכי ברירת המחדל שלהם.
-
--android_jit_emulator_cpus: הגדרת מספר ליבות ה-CPU לכל מופע של מכשיר וירטואלי. אם לא מגדירים ערך לפרמטר הזה או מגדירים אותו כ-0, ערך ברירת המחדל שלו הוא4. -
--android_jit_emulator_memory_mb: הגדרת הזיכרון במגה-בייט (MB) לכל מופע של מכשיר וירטואלי. אם לא מגדירים ערך לפרמטר הזה או מגדירים אותו כ-0, ערך ברירת המחדל שלו הוא8192. -
--android_jit_emulator_modem_simulator_sim_type: מגדיר את סוג כרטיס ה-SIM שמדמה מודם עבור כל מופע של מכשיר וירטואלי:1לכרטיס SIM רגיל או2לכרטיס SIM עם הרשאות של ספק (נדרש על ידיCtsCarrierApiTestCases). אם לא מוגדר או 0, ברירת המחדל היא1. -
--android_jit_emulator_use_sdcard: מגדיר אם ליצור תמונה של כרטיס SD ריק ולצרף אותה לכל מופע של מכשיר וירטואלי (trueאוfalse). ברירת המחדל היאtrue. מגדירים את הערךfalseכדי להשבית את יצירת כרטיס ה-SD.
בדוגמה הבאה מבוטלות כל ארבע הגדרות ברירת המחדל:
mtt start --max_orchestration_virtual_devices N \
--orchestration_service_url=http://HOST:PORT \
--use_host_network \
--force_ats_version 2 \
--force_update \
--extra_docker_args '-e LAB_SERVER_OPTS="--android_jit_emulator_cpus=CPUS --android_jit_emulator_memory_mb=MEMORY_MB --android_jit_emulator_modem_simulator_sim_type=SIM_TYPE --android_jit_emulator_use_sdcard=USE_SDCARD"'הרצת בדיקה עם מכשירים שמנוהלים בענן
בקטע הזה מוסבר איך מריצים בדיקה במכשירים וירטואליים שמתזמנים בענן.
מכשירים נבחרים
ברשימת המכשירים, OmniLab ATS מציג מכשירים וירטואליים שמתואמים בענן כמחזיקי מקום במקום המספרים הסידוריים שלהם. ה-placeholder מוצג בפורמט HOSTNAME:PORT (לדוגמה, thehostname:6520). הסטטוסים האפשריים הם Available או Allocated. אם המכשיר הווירטואלי נמצא במצב זמין, זה אומר שהוא לא פועל ואפשר להקצות אותו לבדיקה.
איור 1. בחירת מכשירים וירטואליים שמופעלים בענן.
הוספת פעולות במכשיר
כשמתוזמנת בדיקה במכשירים האלה, מערכת ATS מוסיפה באופן אוטומטי את פעולות המכשיר הנדרשות כדי להקצות ולנהל את מופעי Cuttlefish במהלך מחזור הבדיקה.
איור 2. פעולות אוטומטיות במכשיר.
הגדרת משאבי בדיקה
כשמתזמנים בדיקה, צריך לספק את משאבי הבדיקה הנדרשים. בקטע Set Test Resources, מוודאים שמיפיתם את הקבצים שהועלו לשמות המשאבים הנכונים:
- ממפים את חבילת הכלים למארחים, לדוגמה,
cvd-host_package.tar.gz, לשםcvd_host_package. - ממפים את קובץ ה-ZIP של תמונת המכשיר לשם
cvd_device_image.
איור 3. מיפוי משאבי הבדיקה.
צפייה בבדיקות וביומנים
אחרי שהבדיקה מסתיימת, אפשר לראות את היומנים בקטע של קובצי הפלט. יומנים ספציפיים שנאספים עבור מופעים שמנוהלים על ידי Cloud Orchestrator כוללים:
-
launcher.log: יומנים ממרכז האפליקציות של Cuttlefish -
kernel.log: יומן ליבת Android רגיל