כדי להפוך את בדיקות ההסמכה לאוטומטיות, נדרשת הגדרה נוספת.
כל שלבי ההתקנה וההגדרה שבהמשך מתבצעים במחשב Windows שבו מופעלת תוכנת GRL Test Harness. לפני שממשיכים, צריך להוריד ולהתקין את 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
תמיכה בסביבות בדיקה מעורבות
כלי האוטומציה של Harness תומך גם בסביבות בדיקה מעורבות, שבהן מכשירי ההפניה שמשמשים בכל מקרה בדיקה הם קבוצה מעורבת של מכשירים ולא כולם אותו מכשיר. לדוגמה, במקום להשתמש ב-32 לוחות TI CC2538 שמריצים OpenThread לכל תרחישי הבדיקה, אפשר לשלב בין כל ארבעת מכשירי העזר של Thread לכל תרחיש בדיקה לפי הצורך.
כדי להשתמש בסביבות בדיקה מעורבות, צריך לבצע הגדרה נוספת:
- מוסיפים את הפרמטר הנוסף הבא לקובץ ההגדרות של Test Harness, שנמצא בנתיב
C:\GRL\Thread1.1\Config\Configuration.ini:EnableDeviceSelection = True
- מורידים את קובץ התצורה של הטופולוגיה מ-Thread
Group.
צריך להוסיף את הקובץ הזה בשם
TopologyConfig.txtלתיקייהC:\GRL\Thread1.1\Thread_Harness\TestScripts. בקובץ הזה מפורט מכשיר הייחוס שבו צריך להשתמש לכל תפקיד בכל תרחיש בדיקה.
אפשר לשנות את קובץ הגדרות הטופולוגיה שסופק על ידי Thread Group כדי להשתמש בהגדרות אחרות של מיטה מעורבת, אבל כדי לקבל אישור רשמי צריך להשתמש בהגדרה המקורית.
הערכים התקינים לשימוש במכשירים להשוואה בקובץ התצורה של הטופולוגיה הם:
| הערך בקובץ התצורה של הטופולוגיה | מכשיר להתייחסות במסגרת הבדיקה |
|---|---|
ARM |
ARM: NXP FRDM-K64F עם Firefly 6LoWPAN Shield |
NXP |
NXP(Freescale): USB-KW24D512 Dongles |
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 מספקת תכונה מתקדמת של גילוי אוטומטי (Auto DUT) שמאיצה את תהליך האימות של ספקי מחסנית הפניות של Thread.
OpenThread מספק דוגמה של ממשק בקר מארח של Thread (THCI) שמאפשר ל-Test Harness לשלוט ברכיב או במוצר כאילו הם אחת מפלטפורמות ההפניה. בהתאם למאפיינים של היציאה הטורית בפלטפורמה הספציפית שלכם, יכול להיות ש-DUT:
פועל כפלטפורמת ההפניה הקיימת של OpenThread
אם יציאת הטורית של ה-DUT פועלת בהגדרות של 115200 8-N-1, והמכשיר מגיב בצורה נכונה אחרי כל איפוס פיזי של המכשיר (לדוגמה, כדי לאשר את החיבור התקין של המכשיר למחשב Windows), הפלטפורמה יכולה להשתמש בכלי OpenThread THCI. הכלי הזה מאפשר למכשיר לפעול כפלטפורמת ההפניה של OpenThread במהלך הבדיקה.
- אם GRL Test Harness פתוח, סוגרים אותו.
- מצמידים את המכשיר למחשב Windows.
- מוצאים את מזהה החומרה של היציאה הטורית של המכשיר באמצעות מודול pySerial של Python:
- מתקינים את pySerial במחשב Windows.
- משתמשים ב-Python בשורת הפקודה של Windows כדי למנות את כל מזהי החומרה (VID ו-PID) של מכשירים שמחוברים למכונה. בפלט הזה, מכשיר אחד מחובר עם מזהה 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. - מעדכנים את קבוצת 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']}
- פתיחת
- מפעילים את המצב האוטומטי של DUT.
פלטפורמת הפניה חדשה
אם היציאה הטורית של ה-DUT לא פועלת בהגדרות הנכונות של היציאה הטורית, או אם המכשיר לא מגיב בצורה נכונה אחרי איפוס פיזי (מוציא קוד לא קריא תוך 3-6 שניות אחרי האיפוס), אפשר להתאים אישית את OpenThread THCI כדי להתייחס למכשיר כאל פלטפורמה חדשה ב-Test Harness.
לדוגמה, כדי להתאים אישית את THCI באמצעות פלטפורמת Nordic Semiconductor nRF52840:
- אם GRL Test Harness פתוח, סוגרים אותו.
משנים את
/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) כדי להבדיל בקלות בין הפלטפורמה שלכם ומעתיקים אותו אל
מצמידים את המכשיר למחשב Windows.
איתור מזהה החומרה של היציאה הסדרתית של המכשיר באמצעות מודול pySerial של Python:
- מתקינים את pySerial במחשב Windows.
- משתמשים ב-Python בשורת הפקודה של Windows כדי למנות את כל מזהי החומרה (VID ו-PID) של מכשירים שמחוברים למכונה. בפלט הזה, מכשיר אחד מחובר עם מזהה 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עם ה-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'}
- פתיחת
הפעלת מצב DUT אוטומטי
אחרי שמסיימים את אחת משתי אפשרויות ההגדרה שלמעלה:
- פותחים את GRL Test Harness, המכשיר או היציאה יופיעו עכשיו כמכשיר הפניה חדש.
- מסמנים את התיבה Enable Auto DUT Device Selection (הפעלת בחירה אוטומטית של מכשיר DUT) מתחת לרשימת החומרה הנתמכת.
- בוחרים את לחצן הבחירה הגדרה כמכשיר הנבדק מתחת למכשיר או ליציאה של היעד כדי להגדיר את המכשיר כמכשיר הנבדק.