सर्टिफ़िकेशन ऑटोमेशन का सेटअप

सर्टिफ़िकेशन टेस्ट को अपने-आप चलाने के लिए, अतिरिक्त सेटअप करना ज़रूरी है.

नीचे दिए गए इंस्टॉलेशन और कॉन्फ़िगरेशन के सभी चरण, GRL Test Harness सॉफ़्टवेयर चलाने वाले Windows मशीन पर पूरे किए जाते हैं. आगे बढ़ने से पहले, GRL Thread Test Harness का नया वर्शन डाउनलोड और इंस्टॉल करें.

इंस्टॉल हो जाने के बाद, जांच किए जा रहे डिवाइस (DUT) के लिए, ऑटोमेशन के दो तरीके हैं:

  1. OpenThread Harness Automation Tool
  2. टेस्ट हार्नेस ऑटो डीयूटी मोड

OpenThread Harness Automation Tool

इंस्टॉल करें

  1. ये सॉफ़्टवेयर इंस्टॉल करें:
    • Python 2.7
    • Git for 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

अलग-अलग टेस्टबेड के साथ काम करने की सुविधा

हार्नेस ऑटोमेशन टूल, मिक्स्ड टेस्टबेड के साथ भी काम करता है. इसमें हर टेस्ट केस में इस्तेमाल किए गए रेफ़रंस डिवाइस, एक ही तरह के डिवाइस न होकर अलग-अलग तरह के डिवाइस होते हैं. उदाहरण के लिए, सभी टेस्ट केस के लिए OpenThread चलाने वाले 32 TI CC2538 बोर्ड का इस्तेमाल करने के बजाय, हर टेस्ट केस के लिए अपनी ज़रूरत के हिसाब से, चारों Thread रेफ़रंस डिवाइसों को मिलाया जा सकता है.

मिक्स किए गए टेस्टबेड का इस्तेमाल करने के लिए, अतिरिक्त कॉन्फ़िगरेशन ज़रूरी है:

  1. C:\GRL\Thread1.1\Config\Configuration.ini पर मौजूद, Test Harness कॉन्फ़िगरेशन फ़ाइल में यह अतिरिक्त पैरामीटर जोड़ें:
    EnableDeviceSelection = True
  2. Thread Group से टोपोलॉजी कॉन्फ़िगरेशन फ़ाइल डाउनलोड करें. इस फ़ाइल को C:\GRL\Thread1.1\Thread_Harness\TestScripts में TopologyConfig.txt के तौर पर जोड़ें. इस फ़ाइल में यह जानकारी दी गई है कि हर टेस्ट केस में, हर भूमिका के लिए किस रेफ़रंस डिवाइस का इस्तेमाल करना है.

Thread Group की ओर से उपलब्ध कराई गई टोपोलॉजी कॉन्फ़िगरेशन फ़ाइल में, मिक्स किए गए अन्य बेड कॉन्फ़िगरेशन के लिए बदलाव किया जा सकता है. हालांकि, आधिकारिक सर्टिफ़िकेट पाने के लिए, ओरिजनल कॉन्फ़िगरेशन का इस्तेमाल करना ज़रूरी है.

टपॉलजी कॉन्फ़िगरेशन फ़ाइल में रेफ़रंस डिवाइसों के लिए इस्तेमाल की जा सकने वाली मान्य वैल्यू ये हैं:

टपोलॉजी कॉन्फ़िगरेशन फ़ाइल में मौजूद वैल्यू टेस्ट हार्नेस के लिए रेफ़रंस डिवाइस
ARM ARM: NXP FRDM-K64F with Firefly 6LoWPAN Shield
NXP NXP(Freescale): 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

टेस्ट हार्नेस ऑटो डीयूटी मोड

GRL Test Harness सॉफ़्टवेयर, ऑटो डिस्कवरी (ऑटो डीयूटी) की बेहतर सुविधा देता है. इससे, Thread रेफ़रंस स्टैक वेंडर के लिए पुष्टि करने की प्रोसेस तेज़ हो जाती है.

OpenThread, Thread Host Controller Interface (THCI) का एक उदाहरण देता है. इससे Test Harness, आपके कॉम्पोनेंट या प्रॉडक्ट को इस तरह कंट्रोल कर पाता है जैसे कि वह रेफ़रंस प्लैटफ़ॉर्म में से एक हो. आपके प्लैटफ़ॉर्म की सीरियल पोर्ट की विशेषताओं के मुताबिक, आपका DUT इनमें से कोई एक काम कर सकता है:

OpenThread के मौजूदा रेफ़रंस प्लैटफ़ॉर्म के तौर पर काम करना

अगर DUT का सीरियल पोर्ट, 115200 8-N-1 की सेटिंग के तहत काम करता है और डिवाइस के हर फ़िज़िकल रीसेट के बाद डिवाइस सही तरीके से जवाब देता है (उदाहरण के लिए, Windows मशीन से डिवाइस के मान्य कनेक्शन की पुष्टि करने के लिए), तो प्लैटफ़ॉर्म, OpenThread THCI टूल का इस्तेमाल कर सकता है. इस टूल की मदद से, जांच के दौरान डिवाइस को OpenThread रेफ़रंस प्लैटफ़ॉर्म के तौर पर इस्तेमाल किया जा सकता है.

  1. अगर GRL Test Harness खुला है, तो उसे बंद करें.
  2. डिवाइस को Windows मशीन से अटैच करें.
  3. Python pySerial मॉड्यूल का इस्तेमाल करके, डिवाइस के सीरियल पोर्ट का हार्डवेयर आइडेंटिफ़ायर ढूंढें:
    1. Windows मशीन पर pySerial इंस्टॉल करें.
    2. मशीन से कनेक्ट किए गए डिवाइसों के सभी हार्डवेयर आइडेंटिफ़ायर (VID और PID) की सूची बनाने के लिए, Windows कमांड लाइन पर Python का इस्तेमाल करें. इस आउटपुट में, एक डिवाइस को 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. डिवाइसों के वीआईडी और पीआईडी की मदद से, GoldenDeviceHardwareIds ऐरे में OpenThread ग्रुप को अपडेट करें:
      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 का सीरियल पोर्ट, सीरियल पोर्ट की सही सेटिंग के तहत काम नहीं करता है या डिवाइस को फ़िज़िकल डिवाइस रीसेट करने के बाद सही जवाब नहीं मिलता है (रीसेट करने के 3 से 6 सेकंड के अंदर, ऐसा कोड आउटपुट होता है जिसे पढ़ा नहीं जा सकता), तो OpenThread THCI को इस तरह से पसंद के मुताबिक बनाया जा सकता है कि वह डिवाइस को Test Harness में एक नए प्लैटफ़ॉर्म के तौर पर इस्तेमाल कर सके.

उदाहरण के लिए, Nordic Semiconductor nRF52840 प्लैटफ़ॉर्म का इस्तेमाल करके, टीएचसीआई को पसंद के मुताबिक बनाने के लिए:

  1. अगर GRL Test Harness खुला है, तो उसे बंद करें.
  2. टारगेट डिवाइस की यूएआरटी विशेषताओं के आधार पर, /tools/harness-thci/OpenThread.py में बदलाव करें. टारगेट डिवाइसों के हिसाब से, बदलाव अलग-अलग हो सकते हैं. 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. Windows मशीन पर pySerial इंस्टॉल करें.
    2. मशीन से कनेक्ट किए गए डिवाइसों के सभी हार्डवेयर आइडेंटिफ़ायर (VID और PID) की सूची बनाने के लिए, Windows कमांड लाइन पर Python का इस्तेमाल करें. इस आउटपुट में, एक डिवाइस को 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 ऐरे में नया प्लैटफ़ॉर्म ग्रुप जोड़ें:
      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 मोड चालू करना

ऊपर दिए गए कॉन्फ़िगरेशन के दो विकल्पों में से किसी एक को पूरा करने के बाद:

  1. GRL Test Harness खोलें. अब डिवाइस/पोर्ट, नए रेफ़रंस डिवाइस के तौर पर दिखेगा.
  2. सहायता पाने वाले हार्डवेयर की सूची में जाकर, नीचे मौजूद DUT डिवाइस अपने-आप चुनने की सुविधा चालू करें चेकबॉक्स को चुनें.
  3. डिवाइस को DUT के तौर पर सेट करने के लिए, टारगेट डिवाइस/पोर्ट में जाकर DUT के तौर पर सेट करें रेडियो बटन चुनें.
OT Certification Auto DUT