כשמאגר הבדיקות גדול או שזמן הביצוע ארוך, אנחנו מציעים אפשרות לפצל את הבדיקות לכמה מכשירים: חלוקה לפלחים.
לפיצול יש דרישות מוקדמות לכך שהרצת הבדיקה תתמוך בפיצול.
רוב המריצים הראשיים כבר תומכים בחיתוך, כך שלא נדרשת עבודה נוספת. התרחישים האלה כבר תומכים בפיצול: בדיקות אינסטרומנטציה, בדיקות שמונעות בצד המארח, GTest.
יש שני סוגים של חלוקה לפלחים שאנחנו תומכים בהם ב-Tradefed: מקומית ומבוזרת. יש ביניהם כמה מאפיינים דומים, ולכן בדף הזה מתוארים המאפיינים המשותפים ואז הפרטים הספציפיים של כל אחד מהם.
מאפיינים נפוצים
בשתי צורות הפיצול, נדרש מהמפעילים של הבדיקות שיציגו את אותן תכונות: עצמאות ודטרמיניזם. השלב הראשון בשני החלוקות הוא ליצור את הרשימה המלאה והממוזערת של הבדיקות, ואז לפצל אותן לקבוצות או למקטעים שונים.
ההבדל העיקרי בין צורות הפיצול הוא בדרך שבה הן מבצעות את הבדיקות. פרטים נוספים בסעיפים הבאים.
חלוקה לקטעים מקומית
פיצול מקומי פירושו שכל המכשירים שקשורים לביצוע ההפעלה המפוצלת מחוברים לאותו מארח פיזי.
ביצוע
כשמשתמשים בחלוקה לקטעים מקומית, אפשר לנצל את כל המכשירים שמחוברים לאותו מארח על ידי יצירת מאגר של בדיקות שצריך לבצע, ולכל מכשיר מבצעים סקרים לגבי בדיקות כשהמכשיר פנוי (כלומר, כשהבדיקה הקודמת הסתיימה). כך ניתן לנצל את המכשיר בצורה אופטימלית. אנחנו גם קוראים לזה חלוקה דינמית.
אפשרויות
--shard-count XX
חלוקה מבוזרת
חלוקה מבוזרת פירושה שכל המכשירים המעורבים בהפעלת ההפעלה המפוצלת יכולים להיות בכל מקום ויכולים להיות מחוברים למארחים פיזיים שונים.
ביצוע
חלוקה מבוזרת מתרחשת במהלך היצירה של רשימת הבדיקות, והתוכן של כל פלחי המשנה מפעיל רק את פלחי המשנה המבוקשים כרגע. כך, כל המפוצלים בונים את אותה הרשימה בהתחלה, ואז מריצים קבוצת משנה בלעדית שלה לשני הצדדים, והתוצאה היא שכל הבדיקות מבוצעות.
המאפיין העיקרי של הצורה הזו הוא שהשברים לא מודעים זה לזה לחלוטין ויכולים להיכשל בנפרד.
החיסרון העיקרי הוא שאורך הפלח לא בהכרח מאוזן, כי אנחנו לא יכולים לחזות מראש את זמן הריצה של כל בדיקה בכל פלח. המטרה של ההפצה היא לכלול בערך את אותו מספר של תרחישי בדיקה בכל שבר.
אפשרויות
--shard-count XX --shard-index XX
חלוקת אסימונים
ניתן להשתמש בפיצול אסימונים רק בפיצול מקומי. הדגל הוא לא-פעולות בתרחישים לדוגמה של חלוקה לא מקומית. לפעמים אחד מהמכשירים המעורבים בחלוקה לאשכולות מכיל משאבים מיוחדים שלא נמצאים במכשירים אחרים, כמו כרטיס SIM. חלק מהבדיקות עשויות לפעול רק כשהמשאב המיוחד הזה זמין, ואחרת הן נכשלות.
חלוקת אסימונים היא הפתרון שלנו לתרחישים כאלה. מודולי הבדיקה יכולים להצהיר על המשאב המיוחד הנדרש להם ב-AndroidTest.xml
, ו-Tradefed מפנה את הבדיקות למכשיר שיש בו את המשאב.
הגדרות XML
<option name="config-descriptor:metadata" key="token" value="SIM_CARD" />
השדה value
של הטוקן תואם ל-TokenProperty
של Tradefed, והוא משויך למטפל ב-TokenProviderHelper
.
כך המודולים לבדיקה יכולים לרוץ במכשירים שיכולים לבצע את הבדיקות בצורה תקינה.
מה קורה אם אין מכשירי Android שאפשר להריץ בהם את הבדיקה?
אם לא נמצאו מכשירים זמינים עם המשאב שתואם למודול הבדיקה, מודול הבדיקה נכשל ומועבר לשלב הבא כי אי אפשר להריץ אותו כמו שצריך.
לדוגמה, אם מודול בדיקה מבקש כרטיס SIM כדי לפעול אבל לאף מכשיר אין כרטיס SIM, מודול הבדיקה נכשל.
הטמעה
מעבירים את דגל התכונה הזה לשורת הפקודה הראשית של Tradefed:
--enable-token-sharding