טעינת פרוטוקולים עם הגדרה גלובלית

כדי להבין את הקטע הזה, קראו קודם את @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 שירותים כדי להפעיל את התמיכה באופן רשמי.