راه اندازی اتوماسیون صدور گواهینامه

برای خودکارسازی تست‌های صدور گواهینامه، تنظیمات بیشتری لازم است.

تمام مراحل نصب و پیکربندی زیر در دستگاه ویندوزی که نرم افزار GRL Test Harness را اجرا می کند انجام می شود. قبل از ادامه آخرین GRL Thread Test Harness را دانلود و نصب کنید.

پس از نصب، دو روش اتوماسیون برای دستگاه تحت آزمایش (DUT) وجود دارد:

  1. OpenThread Harness Automation Tool
  2. تست حالت DUT خودکار مهار

OpenThread Harness Automation Tool

نصب کنید

  1. نرم افزار زیر را نصب کنید:
    • پایتون 2.7
    • Git برای ویندوز (پشتیبانی از Bash به شدت توصیه می شود)
  2. برای دریافت اسکریپت های اتوماسیون، مخزن OpenThread را کلون کنید:
    git clone https://github.com/openthread/openthread
    
  3. الزامات پایتون را نصب کنید:
    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

پشتیبانی از بستر آزمایشی مختلط

ابزار اتوماسیون هارنس همچنین از بسترهای آزمایشی مختلط پشتیبانی می‌کند، جایی که دستگاه‌های مرجع مورد استفاده در هر مورد آزمایشی، مجموعه‌ای از دستگاه‌ها هستند و نه همه دستگاه‌های مشابه. به عنوان مثال، به جای استفاده از 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 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) را ارائه می دهد که فرآیند اعتبار سنجی را برای فروشندگان پشته مرجع Thread تسریع می کند.

OpenThread نمونه‌ای از رابط کنترل‌کننده میزبان Thread (THCI) را ارائه می‌کند که به Test Harness اجازه می‌دهد تا جزء یا محصول شما را طوری کنترل کند که گویی یکی از پلتفرم‌های مرجع است. با توجه به ویژگی های پورت سریال پلت فرم خاص شما، DUT شما می تواند یکی از موارد زیر را انجام دهد:

به عنوان پلتفرم مرجع OpenThread موجود عمل می کند

اگر پورت سریال DUT تحت تنظیمات 115200 8-N-1 عمل کند و دستگاه پس از هر بازنشانی فیزیکی دستگاه به درستی پاسخ دهد (مثلاً برای تأیید اتصال معتبر دستگاه به دستگاه ویندوز)، آنگاه پلت فرم می تواند از ابزار OpenThread THCI. این ابزار به دستگاه اجازه می دهد تا در حین آزمایش به عنوان پلتفرم مرجع OpenThread عمل کند.

  1. مهار تست GRL را اگر باز است ببندید.
  2. دستگاه را به دستگاه ویندوز وصل کنید.
  3. شناسه سخت افزار پورت سریال دستگاه را با استفاده از ماژول Python pySerial پیدا کنید:
    1. pySerial را روی دستگاه ویندوز نصب کنید .
    2. از Python در خط فرمان ویندوز برای برشمردن همه شناسه های سخت افزاری (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. حالت Auto DUT را فعال کنید .

عمل به عنوان یک پلت فرم مرجع جدید

اگر پورت سریال DUT تحت تنظیمات پورت سریال مناسب کار نکند، یا دستگاه پس از بازنشانی فیزیکی دستگاه به درستی پاسخ ندهد (کد ناخوانا را در عرض 3 تا 6 ثانیه پس از بازنشانی خروجی می دهد)، می توان OpenThread THCI را برای درمان سفارشی کرد. دستگاه به عنوان یک پلت فرم جدید در تست مهار.

به عنوان مثال، برای سفارشی کردن THCI با استفاده از پلت فرم Nordic Semiconductor 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. اطلاعات پلتفرم جدید را به 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. دستگاه را به دستگاه ویندوز وصل کنید.

  6. شناسه سخت افزار پورت سریال دستگاه را با استفاده از ماژول Python pySerial پیدا کنید:

    1. pySerial را روی دستگاه ویندوز نصب کنید .
    2. از Python در خط فرمان ویندوز برای برشمردن همه شناسه های سخت افزاری (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 را باز کنید، دستگاه/پورت اکنون به عنوان یک دستگاه مرجع جدید ظاهر می شود.
  2. کادر انتخاب گزینه Enable Auto DUT Device Selection را در زیر لیست سخت افزار پشتیبانی شده انتخاب کنید.
  3. دکمه رادیویی Set as DUT را در زیر دستگاه/پورت مورد نظر انتخاب کنید تا دستگاه را به عنوان DUT تنظیم کنید.
گواهی OT خودکار DUT