טען פרוטוקולים עם תצורה גלובלית

על מנת להבין את הסעיף הזה, תחילה למד את ה-Tradefed @Option .

אפשרויות טיפוסיות ב-Tradefed מאפשרות לשיעורי בדיקה לקבל מידע נוסף מתצורת ה-XML או שורת הפקודה. תכונה זו מאפשרת לך לעבור שלב נוסף ולפתור חלק מהמידע הנוסף הזה במידת הצורך.

דוגמה לאפשרות קובץ

קובץ דוגמה @option:

@Option(name = 'config-file')
private File mConfigFile;

ניתן להגדיר את האמור לעיל באמצעות תצורת XML:

<option name="config-file" value="/tmp/file" />

או באמצעות פקודה:

--config-file /tmp/file

תיאור

התכונה מאפשרת לך להגדיר את @Options עם הקלדת קבצים המרוחקות לקובץ מקומי כדי להיות זמינות בצורה חלקה מנקודת מבט של משתמש.

כדי שזה יעבוד, יש לציין את הקובץ עם נתיב סגנון מרוחק . לדוגמה:

--config-file gs://bucket/tmp/file

נתיב זה מצביע על קובץ בתוך דלי של Google Cloud Storage (GCS) שבו הוא מאוחסן. Tradefed כשיראה את הנתיב המרוחק הזה, ינסה להוריד את הקובץ באופן מקומי ולהקצות אותו ל-@Option. כתוצאה מכך המשתנה mConfigFile יצביע כעת על הגרסה המקומית של הקובץ, שבה ניתן להשתמש בבדיקה.

אם לא ניתן להוריד את הקובץ המרוחק מסיבה כלשהי, Tradefed יזרוק ConfigurationException שתמנע מהבדיקה לפעול. אנו רואים בהחמצה של קבצים אלה כשל קריטי מכיוון שחלק מחפצי בדיקה יהיו חסרים.

השתמש בפרמטרים של שאילתה

הוספת פרמטרי שאילתה לכתובת אתר אפשרית באמצעות ? . לדוגמה, gs://bucket/path?unzip=true . המפתח/ערך unzip=true יהיה זמין ביישום ממשק IRemoteFileResolver .

שתי התנהגויות מובנות זמינות:

  • unzip: אם מוגדר כ- true והקובץ שהורד הוא 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 מופעלת כעת רק עבור תצורת ה-XML Tradefed הראשית.

אם פועלים כחבילה, המודולים הנוכחיים ( AndroidTest.xml ) לא יפתרו את הקבצים כברירת מחדל. זה נועד למנוע ממודולים ליצור כמה תלות לא ידועה . ניתן להימלט מכך באמצעות --enable-module-dynamic-download ברמת החבילה, אך חבילות גדולות כגון Compatibility Test Suite (CTS) ו- Vendor Test Suite (VTS) לא יאפשרו זאת.

יישום פרוטוקול חדש

לפרוטוקולים הנתמכים יש יישום ב-Tradefed של ממשק IRemoteFileResolver , המגדיר את התג הקצר של הפרוטוקול שיותאם בנתיב הקובץ דרך getSupportedProtocol . לדוגמה, gs משמש עבור פרוטוקול Google Cloud Storage. הממשק המומלץ ליישום הוא #resolveRemoteFiles(RemoteFileResolverArgs) שיהיה הממשק המתוחזק לטווח ארוך.

ניתן להוסיף את הפרוטוקולים המיושמים לקובץ שירותי META-INF לרתום כדי להפעיל את התמיכה באופן רשמי.