सर्टिफ़िकेशन टेस्ट को अपने-आप चलाने के लिए, अतिरिक्त सेटअप करना ज़रूरी है.
नीचे दिए गए इंस्टॉलेशन और कॉन्फ़िगरेशन के सभी चरण, GRL Test Harness सॉफ़्टवेयर चलाने वाले Windows मशीन पर पूरे किए जाते हैं. आगे बढ़ने से पहले, GRL Thread Test Harness का नया वर्शन डाउनलोड और इंस्टॉल करें.
इंस्टॉल हो जाने के बाद, जांच किए जा रहे डिवाइस (DUT) के लिए, ऑटोमेशन के दो तरीके हैं:
OpenThread Harness Automation Tool
इंस्टॉल करें
- ये सॉफ़्टवेयर इंस्टॉल करें:
- Python 2.7
- Git for Windows (Bash का इस्तेमाल करने का सुझाव दिया जाता है)
- ऑटोमेशन स्क्रिप्ट पाने के लिए, OpenThread रिपॉज़िटरी को क्लोन करें:
git clone https://github.com/openthread/openthread - Python की ज़रूरी शर्तें इंस्टॉल करें:
cd tools/harness-automationpip install -r requirements.txt - Google Chrome और ChromeDriver, दोनों इंस्टॉल करें.
कॉन्फ़िगर करें
- ऑटोमेशन टूल के लिए कॉन्फ़िगरेशन फ़ाइल बनाएं:
cp autothreadharness/settings_sample.py autothreadharness/settings.py - उस नई कॉन्फ़िगरेशन फ़ाइल को, फ़ाइल में दिए गए निर्देशों के मुताबिक अपडेट करें.
- नीचे दिए गए पैरामीटर को Test Harness कॉन्फ़िगरेशन फ़ाइल में जोड़ें. यह फ़ाइल
C:\GRL\Thread1.1\Config\Configuration.iniपर मौजूद है:BrowserAutoNavigate = False
अलग-अलग टेस्टबेड के साथ काम करने की सुविधा
हार्नेस ऑटोमेशन टूल, मिक्स्ड टेस्टबेड के साथ भी काम करता है. इसमें हर टेस्ट केस में इस्तेमाल किए गए रेफ़रंस डिवाइस, एक ही तरह के डिवाइस न होकर अलग-अलग तरह के डिवाइस होते हैं. उदाहरण के लिए, सभी टेस्ट केस के लिए OpenThread चलाने वाले 32 TI CC2538 बोर्ड का इस्तेमाल करने के बजाय, हर टेस्ट केस के लिए अपनी ज़रूरत के हिसाब से, चारों Thread रेफ़रंस डिवाइसों को मिलाया जा सकता है.
मिक्स किए गए टेस्टबेड का इस्तेमाल करने के लिए, अतिरिक्त कॉन्फ़िगरेशन ज़रूरी है:
C:\GRL\Thread1.1\Config\Configuration.iniपर मौजूद, Test Harness कॉन्फ़िगरेशन फ़ाइल में यह अतिरिक्त पैरामीटर जोड़ें:EnableDeviceSelection = True
- 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 रेफ़रंस प्लैटफ़ॉर्म के तौर पर इस्तेमाल किया जा सकता है.
- अगर GRL Test Harness खुला है, तो उसे बंद करें.
- डिवाइस को Windows मशीन से अटैच करें.
- Python pySerial मॉड्यूल का इस्तेमाल करके, डिवाइस के सीरियल पोर्ट का हार्डवेयर आइडेंटिफ़ायर ढूंढें:
- Windows मशीन पर pySerial इंस्टॉल करें.
- मशीन से कनेक्ट किए गए डिवाइसों के सभी हार्डवेयर आइडेंटिफ़ायर (VID और PID) की सूची बनाने के लिए, Windows कमांड लाइन पर Python का इस्तेमाल करें. इस आउटपुट में, एक डिवाइस को VID=1366 और PID=1015 के आइडेंटिफ़ायर से कनेक्ट किया गया है:
python -m serial.tools.list_ports -vCOM10desc: USB Serial Port (COM10)hwid: USB\VID_1366+PID_1015+MI_00 - अगर आपको 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']
- गोल्डन डिवाइस की सूची अपडेट करें:
C:\GRL\Thread1.1\Config\Configuration.iniखोलें.- डिवाइसों के वीआईडी और पीआईडी की मदद से,
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']}
- ऑटो डीयूटी मोड चालू करें.
नए रेफ़रंस प्लैटफ़ॉर्म के तौर पर काम करना
अगर DUT का सीरियल पोर्ट, सीरियल पोर्ट की सही सेटिंग के तहत काम नहीं करता है या डिवाइस को फ़िज़िकल डिवाइस रीसेट करने के बाद सही जवाब नहीं मिलता है (रीसेट करने के 3 से 6 सेकंड के अंदर, ऐसा कोड आउटपुट होता है जिसे पढ़ा नहीं जा सकता), तो OpenThread THCI को इस तरह से पसंद के मुताबिक बनाया जा सकता है कि वह डिवाइस को Test Harness में एक नए प्लैटफ़ॉर्म के तौर पर इस्तेमाल कर सके.
उदाहरण के लिए, Nordic Semiconductor nRF52840 प्लैटफ़ॉर्म का इस्तेमाल करके, टीएचसीआई को पसंद के मुताबिक बनाने के लिए:
- अगर GRL Test Harness खुला है, तो उसे बंद करें.
टारगेट डिवाइस की यूएआरटी विशेषताओं के आधार पर,
/tools/harness-thci/OpenThread.pyमें बदलाव करें. टारगेट डिवाइसों के हिसाब से, बदलाव अलग-अलग हो सकते हैं. Nordic nRF52840 प्लैटफ़ॉर्म के लिए:OpenThread.pyफ़ाइल का नाम बदलकरnRF52840.pyकर दें."OpenThread" के पहले तीन इंस्टेंस को "nRF52840" में बदलें:
>> Device : nRF52840 THCI >> Class : nRF52840 class nRF52840(IThci):सीरियल पोर्ट के पैरामीटर बदलें:
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()डिवाइस रीसेट करने के बाद, न पढ़े जा सकने वाले कोड आउटपुट के असर को खत्म करने के लिए, स्लीप टाइम बदलें:
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)
बदलाव की गई
nRF52840.pyफ़ाइल कोC:\GRL\Thread1.1\Thread_Harness\THCIमें कॉपी करेंटेस्ट हार्नेस में नए प्लैटफ़ॉर्म की जानकारी जोड़ें:
- अपने प्लैटफ़ॉर्म को अलग दिखाने के लिए, png या jpg फ़ॉर्मैट में आइकॉन बनाएं और उसे
C:\GRL\Thread1.1\Web\imagesमें कॉपी करें. 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>
- अपने प्लैटफ़ॉर्म को अलग दिखाने के लिए, png या jpg फ़ॉर्मैट में आइकॉन बनाएं और उसे
डिवाइस को Windows मशीन से अटैच करें.
Python pySerial मॉड्यूल का इस्तेमाल करके, डिवाइस के सीरियल पोर्ट का हार्डवेयर आइडेंटिफ़ायर ढूंढें:
- Windows मशीन पर pySerial इंस्टॉल करें.
- मशीन से कनेक्ट किए गए डिवाइसों के सभी हार्डवेयर आइडेंटिफ़ायर (VID और PID) की सूची बनाने के लिए, Windows कमांड लाइन पर Python का इस्तेमाल करें. इस आउटपुट में, एक डिवाइस को VID=1366 और PID=1015 के आइडेंटिफ़ायर से कनेक्ट किया गया है:
python -m serial.tools.list_ports -vCOM10desc: USB Serial Port (COM10)hwid: USB\VID_1366+PID_1015+MI_00 - अगर आपको 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']
गोल्डन डिवाइस की सूची अपडेट करें:
C:\GRL\Thread1.1\Config\Configuration.iniखोलें.- डिवाइस के वीआईडी और पीआईडी के साथ,
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'}
Auto DUT मोड चालू करना
ऊपर दिए गए कॉन्फ़िगरेशन के दो विकल्पों में से किसी एक को पूरा करने के बाद:
- GRL Test Harness खोलें. अब डिवाइस/पोर्ट, नए रेफ़रंस डिवाइस के तौर पर दिखेगा.
- सहायता पाने वाले हार्डवेयर की सूची में जाकर, नीचे मौजूद DUT डिवाइस अपने-आप चुनने की सुविधा चालू करें चेकबॉक्स को चुनें.
- डिवाइस को DUT के तौर पर सेट करने के लिए, टारगेट डिवाइस/पोर्ट में जाकर DUT के तौर पर सेट करें रेडियो बटन चुनें.