כדי להבין את הקטע הזה, קראו קודם את @Option.
אפשרויות אופייניות ב-Trended מאפשרות לכיתות בדיקה לקבל מתצורת XML או משורת הפקודה. התכונה הזו מאפשרת לעבור שלב אחד נוסף ולפתור חלק מהמידע הנוסף הזה, הנחוצים.
דוגמה לאפשרות קובץ
קובץ לדוגמה @option:
@Option(name = 'config-file')
private File mConfigFile;
אפשר לקבוע את ההגדרות שלמעלה באמצעות תצורת XML:
<option name="config-file" value="/tmp/file" />
או באמצעות פקודה:
--config-file /tmp/file
תיאור
התכונה מאפשרת לכם לפתור את האפשרויות מסוג @File מרחוק בקובץ מקומי, כדי שהן יהיו זמינות בצורה חלקה מנקודת המבט של המשתמש.
כדי שהפעולה הזו תפעל, צריך לציין את הקובץ באמצעות נתיב בסגנון מרוחק. עבור דוגמה:
--config-file gs://bucket/tmp/file
הנתיב הזה מפנה לקובץ בקטגוריה של Google Cloud Storage (GCS) שבה הוא
. לאחר עיבוד הנתיב המרוחק הזה, המערכת תנסה להוריד את הקובץ
באופן מקומי ולהקצות אותו ל-@Option. התוצאה תהיה המשתנה mConfigFile
כדי להפנות לגרסה המקומית של הקובץ, שבה הבדיקה תוכל להשתמש.
אם לא ניתן להוריד את הקובץ המרוחק מכל סיבה שהיא, מערכת Tradeprod
ConfigurationException
שימנע את הרצת הבדיקה. אנחנו לוקחים בחשבון
כשל קריטי בקבצים האלה, מכיוון שחלק מפריטי המידע שנוצרו בתהליך הפיתוח (Artifact) של הבדיקה יהיו גם
חסר.
שימוש בפרמטרים של שאילתה
אפשר להוסיף פרמטרים של שאילתות לכתובת URL באמצעות ?
. לדוגמה,
gs://bucket/path?unzip=true
המפתח/הערך unzip=true
יהיה זמין
פונקציית IremoteFileAddressr
ממשק
יישום בפועל.
יש שתי התנהגויות מובנות:
- unzip: אם הערך מוגדר ל-
true
והקובץ שהורד הוא ZIP, הוא י לפרוס באופן אוטומטי את קובץ ה-ZIP למיקום זמני. דוגמה:?unzip=true
- אופציונלי: ברירת המחדל היא
false
. אם מוגדר הערךtrue
והרזולוציה נכשלת, לא גורמת לחריגה ופשוטה לא תחליף את הקובץ. דוגמה:?optional=true
אפשר גם להעביר ארגומנטים של שאילתות גלובליות דרך --dynamic-download-args key=value
, שיעבירו את המפתח/הערך לכל ההורדות הדינמיות שבוצעו בקריאה.
פרוטוקולים נתמכים
הפרוטוקולים הנתמכים באופן רשמי והפורמטים התואמים שלהם הם:
- Google Cloud Storage, פרוטוקול:
gs
, פורמט:gs://<bucket name>/path
- קבצים מקומיים, פרוטוקול:
file
, פורמט:file:/local/path
- קישורי http, פרוטוקול:
http
, פורמט:http://url
- קישורי https, פרוטוקול:
https
, פורמט:https://url
מגבלות
הרזולוציה הדינמית של @Option תומכת כרגע רק במספר מוגבל של ופרוטוקולים ומיקומים שמהם ניתן להוריד. כרגע, האפשרות לבחור את הערך של @Option מופעלת רק בהגדרה הראשית של Tradefed ב-XML.
אם הוא פועל כחבילה, המודולים הנוכחיים (AndroidTest.xml
) לא יפתרו את
כברירת מחדל.
מטרת המדיניות הזו היא למנוע ממודולים ליצור יחסי תלות לא ידועים. אפשר להשתמש ב---enable-module-dynamic-download
ברמת החבילה כדי להימנע מהבעיה הזו, אבל בחבילות גדולות כמו Compatibility Test Suite (CTS) ו-Vendor Test Suite (VTS) לא ניתן להפעיל את האפשרות הזו.
הטמעת פרוטוקול חדש
לפרוטוקולים שנתמכים יש הטמעה ב-TrendFed של
IremoteFileresolver
ממשק
,שמגדיר את התג הקצר של הפרוטוקול שיותאם
נתיב הקובץ דרך getSupportedProtocol
. לדוגמה, gs
משמש לפרוטוקול של Google Cloud Storage. הממשק המומלץ להטמעה הוא
#resolveRemoteFiles(RemoteFileResolverArgs)
, שתהיה הטווח הארוך
ממשק מתוחזק.
ניתן להוסיף את הפרוטוקולים שהוטמעו ל-harness meta-INF שירותים כדי להפעיל את התמיכה באופן רשמי.