ऑटोमेशन ऑटोमेशन सेट अप

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

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

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

  1. OpenThread Harness Automation टूल
  2. हार्नेस ऑटो डीयूटी मोड की जांच करना

OpenThread हार्नेस ऑटोमेशन टूल

इंस्‍टॉल करें

  1. नीचे दिया गया सॉफ़्टवेयर इंस्टॉल करें:
    • Python 2.7
    • Windows के लिए Git (बैश सपोर्ट इस्तेमाल करने का सुझाव दिया जाता है)
  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. थ्रेड ग्रुप से टोपोलॉजी कॉन्फ़िगरेशन फ़ाइल डाउनलोड करें. इस फ़ाइल को TopologyConfig.txt के तौर पर C:\GRL\Thread1.1\Thread_Harness\TestScripts में जोड़ें. यह फ़ाइल बताती है कि हर टेस्ट केस में हर भूमिका के लिए, किस डिवाइस का इस्तेमाल करना है.

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

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

टोपोलॉजी कॉन्फ़िगरेशन फ़ाइल में मान हार्नेस रेफ़रंस डिवाइस की जांच करें
ARM ARM: Firefly 6LoWPAN शील्ड के साथ NXP FRDM-K64F
NXP NXP(फ़्रीस्केल): USB-KW24D512 डोंगल
OpenThread OpenThread: TI CC2538DK
SiLabs सिलेब: EM358x यूएसबी स्टिक

टोपोलॉजी कॉन्फ़िगरेशन फ़ाइल की हर जांच केस एंट्री एक अलग लाइन में होनी चाहिए और उसे role:device पेयर में इस तरह से फ़ॉर्मैट किया जाना चाहिए:

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

हार्नेस ऑटो डीयूटी मोड की जांच करें

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

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

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

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

  1. अगर जीआरएल टेस्ट हार्नेस खुला है, तो उसे बंद करें.
  2. डिवाइस को Windows मशीन से अटैच करें.
  3. Python pySerial मॉड्यूल का इस्तेमाल करके, डिवाइस के सीरियल पोर्ट का हार्डवेयर आइडेंटिफ़ायर खोजें:
    1. Windows मशीन पर pySerial इंस्टॉल करें.
    2. 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. डिवाइस की VID और PID वाली 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. ऑटो डीयूटी मोड चालू करें.

नए रेफ़रंस प्लैटफ़ॉर्म के तौर पर काम करना

अगर डीयूटी का सीरियल पोर्ट, सही सीरियल पोर्ट की सेटिंग में काम नहीं करता है या डिवाइस को किसी डिवाइस के रीसेट होने के बाद, ठीक से जवाब नहीं देता है (रीसेट करने के तीन से छह सेकंड के अंदर, नहीं पढ़े जाने वाले कोड को आउटपुट के तौर पर दिया जाता है), तो टेस्ट थ्रेड में डिवाइस को नए प्लैटफ़ॉर्म के तौर पर मानने के लिए, OpenThread THCI को पसंद के मुताबिक बनाया जा सकता है.

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

  1. अगर जीआरएल टेस्ट हार्नेस खुला है, तो उसे बंद करें.
  2. टारगेट डिवाइस की UART विशेषताओं के आधार पर /tools/harness-thci/OpenThread.py में बदलाव करें. टारगेट किए गए डिवाइसों के बीच बदलाव अलग-अलग हो सकते हैं. Nordic nRF52840 प्लैटफ़ॉर्म के मामले में:

    1. OpenThread.py फ़ाइल का नाम बदलकर nRF52840.py करें.
    2. &सभी कोटेशन को पहले तीन बार &&tt>में बदलें</n>

      >> 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. अपने प्लैटफ़ॉर्म को अलग करने और इसे C:\GRL\Thread1.1\Web\images पर कॉपी करने के लिए, आइकॉन (png या jpg फ़ॉर्मैट में) बनाएं.
    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. 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. ऑटो डीयूटी मोड चालू करें.

अपने आप डीयूटी मोड चालू करें

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

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