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

لفهم هذا القسم، عليك أولاً دراسة 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 من النوع File التي تكون عن بُعد إلىملف محلي لتكون متاحة بسلاسة من وجهة نظر المستخدم.

لكي يعمل هذا الإجراء، يجب تحديد الملف باستخدام مسار نمط عن بُعد. على سبيل المثال:

--config-file gs://bucket/tmp/file

يشير هذا المسار إلى ملف داخل حزمة Google Cloud Storage (GCS) حيث يتم تخزينه. عند استبدال الملف عند رؤية هذا المسار البعيد، ستحاول تنزيل الملف محليًا وتعيينه على @Option. وينتج عن ذلك تغيير mConfigFile بحيث يشير الآن إلى الإصدار المحلي من الملف الذي يمكن استخدامه من خلال الاختبار.

إذا تعذّر تنزيل الملف البعيد لأي سبب، سيُرسِل Tradefed خطأ ConfigurationException سيمنع تنفيذ الاختبار. نعتبر أن فقد هذه الملفات بمثابة فشل فادح لأن بعض عناصر الاختبار ستكون مفقودة.

استخدام مَعلمات طلب البحث

يمكن إضافة مَعلمات طلب البحث إلى عنوان URL باستخدام ?. على سبيل المثال، gs://bucket/path?unzip=true. سيتوفّر المفتاح/القيمة unzip=true في تنفيذ واجهة IRemoteFileResolver.

يتوفّر سلوكان مضمّنان:

  • فك الضغط: إذا تم الضبط على true وكان الملف الذي تم تنزيله مضغوطًا، فسيتم فك ضغطه تلقائيًا إلى موقع مؤقت. مثال: ?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

تنفيذ بروتوكول جديد

تحتوي البروتوكولات المتوافقة على تنفيذ في Tradefed لواجهة IRemoteFileAnswerr التي تحدّد العلامة القصيرة للبروتوكول التي ستتم مطابقتها في مسار الملف من خلال getSupportedProtocol. على سبيل المثال، يتم استخدام gs لملف تعريف بروتوكول Google Cloud Storage. الواجهة المقترَحة للتنفيذ هي #resolveRemoteFiles(RemoteFileResolverArgs)، وستكون الواجهة التي تتم صياغها على المدى الطويل.

يمكن إضافة البروتوكولات التي تم تنفيذها إلى ملف الحِزمة META-INF services لتفعيل الميزة رسميًا.