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