ضبط اختبارات ACTS

توضّح هذه الصفحة كيفية ضبط اختبارات ACTS.

مصادر الإعدادات

تتضمّن مجموعة اختبارات الاتصالات على Android (ACTS) ثلاثة مصادر رئيسية للضبط:

  • واجهة سطر الأوامر
  • ملف إعدادات ACTS
  • متغيّرات البيئة

ويتم دمج القيم من هذه المصادر في إعدادات واحدة تُستخدم لإجراء اختبار ACTS. إذا تم تحديد القيم في عدة مواقع، يتم استبدال القيم بناءً على الترتيب أعلاه (حيث تكون الأولوية لـ CLI).

ملاحظة حول متغيرات البيئة

يُرجى توخي الحذر عند استخدام متغيّرات البيئة لاختبارات ACTS. وهذه القيم هي الأقل وضوحًا للمستخدم، ولا يُنصح باستخدامها خارج محطة عمل المطوّر. يتم إيقاف متغيّرات البيئة أثناء الاختبارات المبرمَجة في ACTS لمنع تلويث البيئة.

متغيّرات الضبط المطلوبة

يتطلّب كل اختبار من اختبارات ACTS ضبط المتغيّرات التالية.

مسارات اختبار ACTS

يتم تشغيل "عملية معالجة الطلبات في الوقت الفعلي" من موقع إدخال رئيسي واحد. ونتيجةً لذلك، لن يعرف المشغِّل موقع مسار الاختبار.

حدِّد موقع مسار الاختبار باستخدام متغيّر البيئة ACTS_TESTPATH أو باستخدام العلامة -tp/--testpaths في سطر الأوامر. يمكن أن تكون القيمة قائمة بأدلة.

دورات اختبار ACTS

يجب أن يعرف ACTS فئات الاختبار التي يجب إجراؤها. يمكن أن يكون هذا تعبيرًا عاديًا أو قائمة بأسماء فئات الاختبار.

لضبط هذه القيمة، استخدِم العلامة -tc/--test_class في سطر الأوامر. تجدر الإشارة إلى أنّ هذه العلامة تقبل أيضًا قائمة بأسماء الفئات. ويجب أن تتطابق أسماء الفئات مع أسماء الملفات المقابلة لها. على سبيل المثال، يجب العثور على SampleTest في SampleTest.py.

مسار سجلّ ACTS

يجب أن يحتوي ACTS على موقع لكتابة السجلات بخلاف STDOUT. تُسجِّل أداة ACTS سجلات debugging كاملة تحتوي على بيانات يمكن أن تساعد في تحديد سبب تعذُّر إجراء بعض الاختبارات. لتجنُّب حدوث فوضى، لا تُسجِّل أداة ACTS هذه السجلات في STDOUT.

لضبط مسار السجلّ، استخدِم متغيّر البيئة ACTS_LOGPATH أو العلامة -lp/--logpath في سطر الأوامر.

مسار إعدادات ACTS

لإجراء الاختبار، يجب أن يعرف ACTS منصة الاختبار المتوفّرة. وتحتوي إعدادات ACTS على جميع الأجهزة في الاختبار، وأيّ معلَمات خاصة بالاختبار أو البيئة قد تكون مطلوبة. اضبط هذه القيمة في سطر الأوامر باستخدام -c/--config.

إذا كانت هناك منصات اختبار متعددة ضمن الإعداد، يُجري ACTS الاختبارات لكل منصة اختبار. لإجراء الاختبار على منصة اختبار واحدة فقط في القائمة، استخدِم وسيطة سطر الأوامر -tb/--testbed <NAME>.

مثال على محطة عمل محلية

يتطور معظم مستخدمي ACTS في فرع واحد لمستودع Android، ويمتلكون إعدادًا مشابهًا لهذا الإعداد:

# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='~/android/<REPO_BRANCH>/tools/test/connectivity/acts_tests/'

# On cmdline
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin

إذا كان مستخدمو ACTS يعملون على فروع متعددة، غالبًا ما يشغّلون ACTS من دليل acts/framework، ويستخدمون مسارًا نسبيًا لـ ACTS_TESTPATH:

# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='../acts_tests/'

# On cmdline
$ cd ~/android/main/tools/test/connectivity/acts_tests/acts_contrib/
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin

ضبط إعدادات الأسِرّة الاختبارية

يوفّر ملف إعداد ACTS جميع المعلومات اللازمة لإجراء الاختبارات على الأجهزة:

{
  "testbed": {
    "my_testbed": {
      "my_testbed_value": "value"
    },
    "another_testbed": {
      "AndroidDevice": [
        "53R147"
      ]
    }
  },
  "user_parameter_1": "special environment value",
  "user_parameter_2": "other special value"
}

الوحدة الأساسية لهذا الإعداد هي منصة الاختبار. في مثال الإعداد أعلاه، تم إنشاء منصة الاختبار my_testbed باستخدام قيمة منصة اختبار واحدة. يحتوي جهاز الاختبار الثاني، another_testbed، على إعدادات خاصة لوحدة التحكّم تحفظ معلومات عن قائمة بأجهزة Android. تم حفظ هذه الأجهزة في قائمة الأجهزة ضمن self.android_devices. يُرجى العلم أنّه إذا لم يحدِّد اختبار الأداء جسم AndroidDevice، تُثير فئة الاختبار التي تتوقّع استخدام جسم AndroidDevice استثناءً. للحصول على قائمة كاملة بإعدادات وحدة التحكّم المتوافقة التي تتوفّر مع تفعيل ACTS، يمكنك الاطّلاع على القائمة على /acts/framework/acts/controllers/.

يتم تخزين جميع القيم الأخرى (التي ليست قيمًا خاصة مذكورة في القسم أعلاه) في self.user_params بصفتها قاموسًا. وهو مكان جيد للاحتفاظ بمعلومات البيئة أو الاختبار مثل ما إذا كانت الهواتف في بيئة بيانات تفرض تكلفة استخدام، أو المدة التي يتم خلالها جمع البيانات للاختبار.

الحالات الخاصة لفئة AndroidDevice

لتسهيل عملية التطوير عندما تريد توفُّر أجهزة متعددة تتضمّن سمات مختلفة، تتضمّن AndroidDevice بعض الحالات الخاصة.

تنسيق إعدادات JSON

يتم ضبط كل أزواج المفتاح/القيمة في مثال JSON التالي على كائن AndroidDevice المقابل. إذا حاولت config استبدال ملفparamter تم تحديده في سمة AndroidDevice، يتم طرح ControllerError.

  "AndroidDevice": [{"serial": "XXXXXX", "label": "publisher"},
                    {"serial": "YYYYYY", "label": "subscriber", "user_parameter_1": "anything"}]

بعد ذلك، في النص البرمجي للاختبار، يمكنك استخدام دالة فلترة لاسترداد الجهاز الصحيح والوصول إلى معلمات إضافية من كائن الجهاز:

  def setup_class(self):
      self.pub = next(filter(lambda ad: ad.label == 'publisher',
                             self.android_devices))
      self.sub = next(filter(lambda ad: ad.label == 'user_parameter_1',
                             self.android_devices))

مَعلمة اختيارية

في ما يلي مَعلمة اختيارية:

  • adb_logcat_param: سلسلة ملحقة بالأمر adb logcat لجمع سجلات adb. يتم استخدام adb logcat -v threadtime -b all تلقائيًا. في حال ضبط adb_logcat_param، يتم استبدال القسم -b all. على سبيل المثال، يؤدي ضبط adb_logcat_param على -b radio إلى تغيير الأمر إلى adb logcat -v threadtime -b radio.