لفهم هذا القسم، درس أولاً تقرير @Option.
تسمح الخيارات النموذجية في Tradefed لفئات الاختبار بتلقّي المزيد من من سطر الأوامر أو تهيئة XML. تتيح لك هذه الميزة باتخاذ خطوة إضافية وحل بعض هذه المعلومات الإضافية إذا اللازمة.
مثال على خيار الملف
مثال لملف @option:
@Option(name = 'config-file')
private File mConfigFile;
يمكن ضبط ما سبق من خلال إعدادات XML:
<option name="config-file" value="/tmp/file" />
أو من خلال الطلب:
--config-file /tmp/file
الوصف
تسمح لك الميزة بحل خيارات @خيارات الملف التي تتم كتابتها عن بُعد في أن يكون متاحًا بسلاسة من وجهة نظر المستخدم.
ولكي ينجح ذلك، يجب تحديد الملف باستخدام مسار نمط بعيد. بالنسبة مثال:
--config-file gs://bucket/tmp/file
يشير هذا المسار إلى ملف ضمن حزمة Google Cloud Storage (GCS) التي يتم تخزينه فيها. عند رؤية هذا المسار البعيد، سيحاول Tradefed تنزيل الملف
على الجهاز وتخصيصه للعنصر @Option. ينتج عن ذلك متغير mConfigFile
إلى الإصدار المحلي من الملف، والذي يمكن استخدامه من خلال الاختبار.
إذا تعذّر تنزيل الملف البعيد لأي سبب، سيُرسِل Tradefed خطأ
ConfigurationException
سيمنع تنفيذ الاختبار. نعتبر عدم توفّر هذه الملفات خطأً جسيمًا لأنّ بعض عناصر الاختبار لن تكون متاحة أيضًا.
استخدام مَعلمات طلب البحث
من الممكن إضافة معلَمات طلب بحث إلى عنوان URL باستخدام ?
. على سبيل المثال،
gs://bucket/path?unzip=true
. سيكون المفتاح/القيمة unzip=true
متاحًا في
IRemoteFileFiler
التنفيذ.
يتوفّر سلوكان مضمّنان:
- فك الضغط: إذا تم الضبط على
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
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
--enable-module-dynamic-download
�
تنفيذ بروتوكول جديد
للبروتوكولات المتوافقة تنفيذ في دليل مقايضة
أداة IRemoteFileFiler
واحدة
التي تحدد العلامة القصيرة للبروتوكول التي ستتم مطابقتها في
مسار الملف من خلال getSupportedProtocol
. على سبيل المثال، يُستخدم gs
للدلالة على
بروتوكول Google Cloud Storage الواجهة المقترَحة للتنفيذ هي
#resolveRemoteFiles(RemoteFileResolverArgs)
، وستكون الواجهة التي تتم
صياغها على المدى الطويل.
يمكن إضافة البروتوكولات المنفذة إلى البروتوكول meta-INF الخدمات لتشغيل الدعم رسميًا.