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