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