إعداد برمجة الشهادات

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

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

بعد التثبيت، هناك طريقتَين للتشغيل التلقائي للجهاز قيد الاختبار (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

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

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

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

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

يمكن تعديل ملف ضبط الطوبولوجيا الذي تقدمه مجموعة سلاسل المحادثات لتهيئات الأسقف المختلطة الأخرى، ولكن للحصول على الاعتماد الرسمي يجب استخدام الإعداد الأصلي.

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

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

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

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

اختبار DUT Auto لـ DUT

يوفّر برنامج اختبار GRL Test ميزة الاكتشاف التلقائي المتقدّمة (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. استخدِم 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 باستخدام معرّف المورِّد (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 باستخدام النظام الأساسي Nordic Semiconductor nRF52840:

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

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

      >> 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. استخدِم 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. فعِّل وضع DUT التلقائي.

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

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

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