تحميل البروتوكولات مع التكوين العام

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