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

لأتمتة اختبارات الشهادات، يجب إجراء عملية إعداد إضافية.

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

بعد التثبيت، تتوفّر طريقتان لتنفيذ عملية الإعداد التلقائي للجهاز قيد الاختبار (DUT):

  1. أداة أتمتة OpenThread Harness
  2. وضع "التشغيل التلقائي لجهاز الاختبار" في Test Harness

OpenThread Harness Automation Tool

تثبيت

  1. ثبِّت البرامج التالية:
    • Python 2.7
    • ‫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. أضِف المَعلمة التالية إلى ملف إعداد Test Harness، الذي يمكن العثور عليه في C:\GRL\Thread1.1\Config\Configuration.ini:
    BrowserAutoNavigate = False

التوافق مع منصات الاختبار المختلطة

تتيح "أداة التشغيل الآلي في Harness" أيضًا استخدام منصات اختبار مختلطة، حيث تكون الأجهزة المرجعية المستخدَمة في كل حالة اختبار مجموعة مختلطة من الأجهزة بدلاً من أن تكون جميعها من النوع نفسه. على سبيل المثال، بدلاً من استخدام 32 لوحة TI CC2538 تعمل بنظام OpenThread لجميع حالات الاختبار، يمكنك المزج والمطابقة بين جميع أجهزة مرجع Thread الأربعة لكل حالة اختبار حسب الرغبة.

لاستخدام بيئات اختبار مختلطة، يجب إجراء إعدادات إضافية:

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

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

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

القيمة في ملف إعدادات التصميم الجهاز المرجعي لمفعّل الاختبار
ARM ARM: NXP FRDM-K64F مع Firefly 6LoWPAN Shield
NXP NXP(Freescale): USB-KW24D512 Dongles
OpenThread ‫OpenThread: TI CC2538DK
SiLabs Silabs: EM358x USB Stick

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

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

وضع "مفعِّل الاختبار" التلقائي للجهاز الخاضع للاختبار

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

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

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

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

  1. أغلِق GRL Test Harness إذا كان مفتوحًا.
  2. وصِّل الجهاز بجهاز Windows.
  3. ابحث عن معرّف الجهاز التسلسلي لمنفذ الجهاز باستخدام وحدة Python pySerial:
    1. تثبيت pySerial على جهاز Windows
    2. استخدِم Python على سطر أوامر 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 باستخدام معرّفَي المورّد والمنتج للأجهزة:
      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. فعِّل وضع Auto DUT.

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

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

على سبيل المثال، لتخصيص THCI باستخدام منصة Nordic Semiconductor nRF52840، اتّبِع الخطوات التالية:

  1. أغلِق GRL Test Harness إذا كان مفتوحًا.
  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. أضِف معلومات النظام الأساسي الجديد إلى Test Harness:

    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. استخدِم Python على سطر أوامر 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. فعِّل وضع Auto DUT.

تفعيل وضع Auto DUT

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

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