لفهم هذا القسم، عليك أولاً دراسة السمة @Option في Tradefed.
تسمح الخيارات النموذجية في 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 سيمنع تشغيل الاختبار. نعتبر عدم العثور على هذه الملفات خطأً فادحًا لأنّ بعض نتائج الاختبار ستكون مفقودة أيضًا.
استخدام مَعلمات طلب البحث
يمكن إضافة مَعلمات طلب البحث إلى عنوان URL باستخدام ?. على سبيل المثال، gs://bucket/path?unzip=true. ستتوفّر السمة/القيمة unzip=true في
تنفيذ واجهة IRemoteFileResolver.
يتوفّر سلوكان مضمّنان:
- unzip: إذا تم ضبطها على
trueوكان الملف الذي تم تنزيله ملفًا مضغوطًا، سيتم فك ضغطه تلقائيًا إلى موقع مؤقت. مثال:?unzip=true - optional: يتم ضبطها تلقائيًا على
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 على مستوى مجموعة الاختبار، ولكنّ مجموعات الاختبار الرئيسية، مثل مجموعة أدوات اختبار التوافق
(CTS) ومجموعة اختبارات مورِّد الأجهزة
(VTS)، لن تفعِّلها.
تنفيذ بروتوكول جديد
تتضمّن البروتوكولات المتوافقة تنفيذًا في Tradefed لواجهة
IRemoteFileResolver
، التي تحدّد العلامة القصيرة للبروتوكول الذي ستتم مطابقته في
مسار الملف من خلال getSupportedProtocol على سبيل المثال، يتم استخدام gs لبروتوكول Google Cloud Storage. الواجهة المقترَحة للتنفيذ هي #resolveRemoteFiles(RemoteFileResolverArgs) التي ستكون الواجهة التي يتم صيانتها على المدى الطويل.
يمكن إضافة البروتوكولات التي تم تنفيذها إلى ملف خدمات META-INF في نظام التشغيل لتفعيل الدعم رسميًا.