برای خودکارسازی تستهای صدور گواهینامه، تنظیمات بیشتری لازم است.
تمام مراحل نصب و پیکربندی زیر در دستگاه ویندوزی که نرم افزار 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 تنظیم کنید.