برای خودکارسازی تستهای صدور گواهینامه، تنظیمات بیشتری لازم است.
تمام مراحل نصب و پیکربندی زیر در دستگاه ویندوزی که نرم افزار GRL Test Harness را اجرا می کند انجام می شود. قبل از ادامه آخرین GRL Thread Test Harness را دانلود و نصب کنید.
پس از نصب، دو روش اتوماسیون برای دستگاه تحت آزمایش (DUT) وجود دارد:
OpenThread Harness Automation Tool
نصب کنید
- نرم افزار زیر را نصب کنید:
- پایتون 2.7
- Git برای ویندوز (پشتیبانی از Bash به شدت توصیه می شود)
- برای دریافت اسکریپت های اتوماسیون، مخزن OpenThread را کلون کنید:
git clone https://github.com/openthread/openthread
- الزامات پایتون را نصب کنید:
cd tools/harness-automation
pip 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
پشتیبانی از بستر آزمایشی مختلط
ابزار اتوماسیون هارنس همچنین از بسترهای آزمایشی مختلط پشتیبانی میکند، جایی که دستگاههای مرجع مورد استفاده در هر مورد آزمایشی، مجموعهای از دستگاهها هستند و نه همه دستگاههای مشابه. به عنوان مثال، به جای استفاده از 32 برد TI CC2538 که OpenThread را برای همه موارد آزمایشی اجرا می کنند، می توانید هر چهار دستگاه مرجع Thread را برای هر مورد آزمایشی به دلخواه ترکیب و مطابقت دهید.
برای استفاده از بسترهای آزمایشی مختلط، پیکربندی اضافی لازم است:
- پارامتر اضافی زیر را به فایل پیکربندی Test Harness که در
C:\GRL\Thread1.1\Config\Configuration.ini
یافت می شود اضافه کنید:EnableDeviceSelection = True
- فایل پیکربندی توپولوژی را از گروه 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 عمل کند.
- مهار تست GRL را اگر باز است ببندید.
- دستگاه را به دستگاه ویندوز وصل کنید.
- شناسه سخت افزار پورت سریال دستگاه را با استفاده از ماژول Python pySerial پیدا کنید:
- pySerial را روی دستگاه ویندوز نصب کنید .
- از Python در خط فرمان ویندوز برای برشمردن همه شناسه های سخت افزاری (VID و PID) برای دستگاه های متصل به دستگاه استفاده کنید. در این خروجی، یک دستگاه با شناسه VID=1366 و PID=1015 متصل است:
python -m serial.tools.list_ports -v
COM10desc: 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
را باز کنید. - گروه 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']}
-
- حالت Auto DUT را فعال کنید .
عمل به عنوان یک پلت فرم مرجع جدید
اگر پورت سریال DUT تحت تنظیمات پورت سریال مناسب کار نکند، یا دستگاه پس از بازنشانی فیزیکی دستگاه به درستی پاسخ ندهد (کد ناخوانا را در عرض 3 تا 6 ثانیه پس از بازنشانی خروجی می دهد)، می توان OpenThread THCI را برای درمان سفارشی کرد. دستگاه به عنوان یک پلت فرم جدید در تست مهار.
به عنوان مثال، برای سفارشی کردن THCI با استفاده از پلت فرم Nordic Semiconductor nRF52840 :
- مهار تست GRL را اگر باز است ببندید.
/tools/harness-thci/OpenThread.py
را بر اساس ویژگی های UART دستگاه مورد نظر تغییر دهید. ممکن است تغییرات بین دستگاه های مورد نظر متفاوت باشد. در مورد پلت فرم 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
کپی کنید.اطلاعات پلتفرم جدید را به Test Harness اضافه کنید:
- یک نماد (در فرمت 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) ایجاد کنید تا تمایز پلتفرم خود را آسانتر کنید و آن را در
دستگاه را به دستگاه ویندوز وصل کنید.
شناسه سخت افزار پورت سریال دستگاه را با استفاده از ماژول Python pySerial پیدا کنید:
- pySerial را روی دستگاه ویندوز نصب کنید .
- از Python در خط فرمان ویندوز برای برشمردن همه شناسه های سخت افزاری (VID و PID) برای دستگاه های متصل به دستگاه استفاده کنید. در این خروجی، یک دستگاه با شناسه VID=1366 و PID=1015 متصل است:
python -m serial.tools.list_ports -v
COM10desc: 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
با 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'}
-
حالت Auto DUT را فعال کنید
پس از تکمیل یکی از دو گزینه پیکربندی بالا:
- مهار تست GRL را باز کنید، دستگاه/پورت اکنون به عنوان یک دستگاه مرجع جدید ظاهر می شود.
- کادر انتخاب گزینه Enable Auto DUT Device Selection را در زیر لیست سخت افزار پشتیبانی شده انتخاب کنید.
- دکمه رادیویی Set as DUT را در زیر دستگاه/پورت مورد نظر انتخاب کنید تا دستگاه را به عنوان DUT تنظیم کنید.