إعداد التشغيل الآلي للشهادات

يجب إجراء إعداد إضافي لإجراء اختبارات الشهادات آليًا.

تحدث جميع خطوات التثبيت والتهيئة أدناه على الجهاز الذي يعمل بنظام Windows تشغيل برنامج GRL Test Harness. نزِّل أحدث إصدار وثبِّته. سلسلة اختبار GRL لسلسلة المحادثات قبل المتابعة.

بعد التثبيت، هناك طريقتان للتشغيل الآلي للجهاز قيد الاختبار. (DUT):

  1. أداة التشغيل الآلي لسلسلة OpenThread
  2. وضع "DUT" تلقائيًا على "مفعِّل اختبار"

أداة التشغيل الآلي لسلسلة OpenThread

تثبيت

  1. ثبِّت البرنامج التالي:
    • Python
    • Git لنظام التشغيل Windows (يُنصح بشدة بدعم Bash)
  2. استنسِخ مستودع OpenThread للحصول على النصوص البرمجية المبرمَجة:
    git clone https://github.com/openthread/openthread
    
  3. تثبيت متطلبات Python:
    cd tools/harness-automation
    pip install -r requirements.txt
    
  4. ثبّت كل من Google Chrome ChromeDriver

إعداد

  1. إنشاء ملف إعداد لأداة التشغيل الآلي:
    cp autothreadharness/settings_sample.py autothreadharness/settings.py
    
  2. حدِّث ملف الإعداد الجديد هذا وفقًا للتعليمات الواردة في الملف.
  3. أضف المَعلمة التالية إلى ملف إعداد "مفعِّل الاختبار"، الذي يمكن العثور عليه على C:\GRL\Thread1.1\Config\Configuration.ini:
    BrowserAutoNavigate = False

الدعم المختلط للاختبار

وتتوافق أداة Harness Automation أيضًا مع مجموعات الاختبار المختلطة، حيث يكون المرجع الأجهزة المستخدمة في كل حالة اختبار عبارة عن مجموعة مختلطة من الأجهزة بدلاً من جميع الجهاز نفسه. على سبيل المثال، بدلاً من استخدام 32 لوحة بتنسيق TI CC2538 قيد التشغيل بالنسبة إلى جميع حالات الاختبار، يمكنك الخلط والتوفيق بين Threads الأربعة أجهزة مرجعية لكل حالة اختبار على النحو المطلوب.

لاستخدام أجهزة الاختبار المختلطة، يلزم إجراء ضبط إضافي على النحو التالي:

  1. أضِف المَعلمة الإضافية التالية إلى إعدادات "مفعِّل الاختبار". على C:\GRL\Thread1.1\Config\Configuration.ini:
    EnableDeviceSelection = True
  2. نزِّل ملف إعداد المخطط من سلسلة المحادثات. المجموعة: إضافة هذا الملف باسم TopologyConfig.txt إلى C:\GRL\Thread1.1\Thread_Harness\TestScripts يوضح هذا الملف بالتفصيل جهاز مرجعي لاستخدامه لكل دور في كل حالة اختبار.

يمكن تعديل ملف إعداد المخطط المقدَّم من Thread Group من أجل غير ذلك من تكوينات أسرّة مختلطة، ولكن للحصول على الشهادة الرسمية، استخدام التهيئة.

قيم صالحة للاستخدام للأجهزة المرجعية في ملف إعداد المخططات هي:

القيمة في ملف تهيئة المخطط الجهاز المرجعي لحزام الاختبار
ARM ARM: NXP FRDM-K64F مع Firefly 6LoWPAN Shield
NXP NXP(التدرّج الحر): مفاتيح إلكترونية USB-KW24D512
OpenThread OpenThread: TI CC2538DK
SiLabs Silabs: EM358x USB Stick

يجب أن يكون كل إدخال حالة اختبار في ملف تهيئة المخطط على صفحة منفصلة ومنسقة في role:device أزواج على النحو التالي:

5.3.10-Leader:NXP,Router_1:OpenThread,BorderRouter:OpenThread,MED_1:ARM

وضع DUT التلقائي لحزام الاختبار

يوفِّر برنامج GRL Test Harness ميزة متقدّمة للاكتشاف التلقائي. (Auto DUT) تعمل على تسريع عملية التحقّق من حِزم المراجع لسلسلة المحادثات البائعين.

تقدم OpenThread مثالاً واجهة وحدة تحكّم مضيف سلسلة المحادثات (THCI) التي تسمح لحزام الاختبار بالتحكم في المكون أو المنتج كما لو كان باستخدام إحدى المنصات المرجعية. وفقًا لخصائص المنفذ التسلسلي نظامك الأساسي المحدد، يمكن لـ DUT إجراء ما يلي:

العمل كمنصة مرجعية حالية OpenThread

إذا كان المنفذ التسلسلي لـ DUT يعمل ضمن إعدادات 115200 8-N-1، استجابة الجهاز بشكل صحيح بعد كل إعادة ضبط للجهاز (على سبيل المثال، تأكيد اتصال الجهاز الصالح بجهاز Windows)، ثم أداة OpenThread THCI تتيح هذه الأداة للجهاز القيام منصة OpenThread المرجعية أثناء الاختبار.

  1. أغلِق حزام اختبار GRL إذا كان مفتوحًا.
  2. وصِّل الجهاز بجهاز Windows.
  3. البحث عن معرّف الجهاز للمنفذ التسلسلي للجهاز باستخدام Python pySerial الوحدة:
    1. تثبيت pySerial على جهاز Windows.
    2. استخدام بايثون على سطر أوامر Windows لتعداد جميع الأجهزة (VID وPID) للأجهزة المتصلة بالجهاز. في هذه الدورة، المخرج، يتم توصيل جهاز واحد بمعرف VID=1366 PID=1015:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. إذا كنت تعرف منفذ COM من قبل، يمكنك استخدام أمر مختلف. بالنسبة على سبيل المثال، إذا كان منفذ COM هو COM10:
      python -c "import serial.tools.list_ports;print [ports[2] for ports in serial.tools.list_ports.comports() if ports[0] == 'COM10']"
      ['USB\VID_1366+PID_1015+MI_00']
  4. تحديث قائمة "الأجهزة الذهبية":
    1. فتح "C:\GRL\Thread1.1\Config\Configuration.ini"
    2. تعديل مجموعة OpenThread في مصفوفة "GoldenDeviceHardwareIds" باستخدام معرِّف المورِّد (VID) ومعرِّف المنتج (PID) للأجهزة:
      GoldenDeviceHardwareIds = {
      'NXP': ['VID:PID=1FC9:0300','VID:PID=15A2:0300','VID:PID=1366:1015'],
      'SiLabs': 'VID:PID=10C4:8A5E',
      'ARM': 'VID:PID=0D28:0204',
      'OpenThread':['VID:PID=10C4:EA60','VID:PID=1366:1015']}
  5. فعِّل وضع DUT التلقائي.

العمل كمنصة مرجعية جديدة

إذا لم يعمل المنفذ التسلسلي لـ DUT ضمن المنفذ التسلسلي المناسب أو عدم استجابة الجهاز بشكلٍ صحيح عند إعادة الضبط (التي تُخرج رمزًا غير قابل للقراءة خلال 3 إلى 6 ثوانٍ من إعادة الضبط)، ثم OpenThread يمكن تخصيص واجهة THCI للتعامل مع الجهاز كنظام أساسي جديد في الاختبار. حزام للتعليق على الكتف والظهر.

على سبيل المثال، لتخصيص مؤشر THCI باستخدام وحدة أشباه الموصلات الشمالية منصة nRF52840:

  1. أغلِق حزام اختبار GRL إذا كان مفتوحًا.
  2. تعديل /tools/harness-thci/OpenThread.py بناءً على خصائص UART للجهاز المستهدف. قد تتضمن التعديلات بين الأجهزة المستهدفة. في حالة النظام الأساسي Nordic nRF52840:

    1. أعِد تسمية ملف "OpenThread.py" إلى "nRF52840.py".
    2. تغيير أول ثلاثة تكرارات لـ "OpenThread" إلى "nRF52840":

      >> Device : nRF52840 THCI
      >> Class : nRF52840
      
      class nRF52840(IThci):
      
    3. تغيير معلمات المنفذ التسلسلي:

      def _connect(self):
          print 'My port is %s' % self.port
          if self.port.startswith('COM'):
              self.handle = serial.Serial(self.port, 115200, timeout=0)
              time.sleep(1)
              self.handle.write('\r\n')
              time.sleep(0.1)
              self._is_net = False
          elif ':' in self.port:
              host, port = self.port.split(':')
              self.handle = socket.create_connection((host, port))
              self.handle.setblocking(0)
              self._is_net = True
          else:
              raise Exception('Unknown port schema')
          self.UIStatusMsg = self.getVersionNumber()
      
    4. تغيير وقت السكون للتخلص من تأثير ناتج الرمز غير القابل للقراءة بعد إعادة ضبط الجهاز:

      def powerDown(self):
          """power down the Thread device"""
          print '%s call powerDown' % self.port
          self._sendline('reset')
          self.isPowerDown = True
          time.sleep(8)  # New addition
      
      def reboot(self):
          """reset and rejoin to Thread Network without any timeout
      
          Returns:
              True: successful to reset and rejoin the Thread Network
              False: fail to reset and rejoin the Thread Network
          """
          print '%s call reboot' % self.port
          try:
              self._sendline('reset')
              self.isPowerDown = True
              time.sleep(8)  # Updated from 3 to 8
      
      def reset(self):
          """factory reset"""
          print '%s call reset' % self.port
          try:
              self._sendline('factoryreset')
              time.sleep(8)  # Updated from 3 to 8
              self._read()
      
      def resetAndRejoin(self, timeout):
          """reset and join back Thread Network with a given timeout delay
      
          Args:
              timeout: a timeout interval before rejoin Thread Network
      
          Returns:
              True: successful to reset and rejoin Thread Network
              False: fail to reset and rejoin the Thread Network
          """
          print '%s call resetAndRejoin' % self.port
          print timeout
          try:
              self._sendline('reset')
              self.isPowerDown = True
              time.sleep(timeout)
              if timeout < 8:      # Sleep a bit longer if the timeout is short
                  time.sleep(8 - timeout)
      
  3. نسخ ملف nRF52840.py المعدَّل إلى C:\GRL\Thread1.1\Thread_Harness\THCI

  4. أضف معلومات المنصة الجديدة إلى مفعِّل الاختبار:

    1. إنشاء رمز (بتنسيق png أو jpg) لتسهيل التمييز نظامك الأساسي ونسخه إلى C:\GRL\Thread1.1\Web\images.
    2. يجب تحديث "C:\GRL\Thread1.1\Web\data\deviceInputFields.xml" باستخدام DEVICE، حيث تكون المعلَمة thumbnail هي ملف الرمز:

      <DEVICE name="nRF52840" thumbnail="nRF52840.jpg" description ="nRF52840: Nordic" THCI="nRF52840">
          <ITEM label="Serial Line"
                type="text"
                forParam="SerialPort"
                validation="COM"
                hint="eg: COM1">COM
          </ITEM>
          <ITEM label="Speed"
                type="text"
                forParam="SerialBaudRate"
                validation="baud-rate"
                hint="eg: 115200">115200
          </ITEM>
      </DEVICE>
      
  5. وصِّل الجهاز بجهاز Windows.

  6. البحث عن معرّف الجهاز للمنفذ التسلسلي للجهاز باستخدام Python pySerial الوحدة:

    1. تثبيت pySerial على جهاز Windows.
    2. استخدام بايثون على سطر أوامر Windows لتعداد جميع الأجهزة (VID وPID) للأجهزة المتصلة بالجهاز. في هذه الدورة، المخرج، يتم توصيل جهاز واحد بمعرف VID=1366 PID=1015:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. إذا كنت تعرف منفذ COM من قبل، يمكنك استخدام أمر مختلف. بالنسبة على سبيل المثال، إذا كان منفذ COM هو COM10:
      python -c "import serial.tools.list_ports;print [ports[2] for ports in serial.tools.list_ports.comports() if ports[0] == 'COM10']"
      ['USB\VID_1366+PID_1015+MI_00']
  7. تحديث قائمة "الأجهزة الذهبية":

    1. فتح "C:\GRL\Thread1.1\Config\Configuration.ini"
    2. إضافة مجموعة منصّات جديدة في مصفوفة GoldenDeviceHardwareIds مع VID وPID للجهاز:
      GoldenDeviceHardwareIds = {
      'NXP': ['VID:PID=1FC9:0300','VID:PID=15A2:0300','VID:PID=1366:1015'],
      'SiLabs': 'VID:PID=10C4:8A5E',
      'ARM': 'VID:PID=0D28:0204',
      'OpenThread':'VID:PID=10C4:EA60',
      'nRF52840': 'VID:PID=1366:1015'}
  8. فعِّل وضع DUT التلقائي.

تفعيل وضع DUT التلقائي

بعد اكتمال أحد خيارَي الإعداد أعلاه:

  1. افتح حزام اختبار GRL، وسيظهر الجهاز/المنفذ الآن كمرجع جديد الخاص بك.
  2. ضع علامة في مربّع الاختيار تفعيل ميزة DUT تلقائيًا للأجهزة أسفل القائمة المتوافقة. قائمة الأجهزة.
  3. انقر على زرّ الاختيار ضبط كـ DUT تحت الجهاز/المنفذ المستهدَف لضبطه. الجهاز باسم DUT.
شهادة OT - Auto DUT