تحميل البروتوكولات ذات الإعدادات العامة

لفهم هذا القسم، درس أولاً تقرير @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 الخدمات لتشغيل الدعم رسميًا.