כדי לבצע בדיקות אישור באופן אוטומטי, נדרשת הגדרה נוספת.
כל שלבי ההתקנה והתצורה שבהמשך מתרחשים במחשב Windows שמופעל בו תוכנת GRL Test Harness. לפני שממשיכים, יש להוריד ולהתקין את מסגרת הבדיקה של שרשור GRL.
לאחר ההתקנה, יש שתי שיטות אוטומציה למכשיר שנמצא בבדיקה (DUT):
כלי אוטומציה של רתמות של OpenThread
התקנה
- מתקינים את התוכנה הבאה:
- Python
- Git ל-Windows (מומלץ מאוד להשתמש בתמיכה ב-Bash)
- שכפול המאגר של OpenThread כדי לקבל את הסקריפטים של האוטומציה:
git clone https://github.com/openthread/openthread
- הדרישות בנוגע ל-Python:
cd tools/harness-automation
pip install -r requirements.txt
- מתקינים גם את Google Chrome וגם את ChromeDriver.
הגדרה
- יצירת קובץ תצורה עבור כלי האוטומציה:
cp autothreadharness/settings_sample.py autothreadharness/settings.py
- מעדכנים את קובץ התצורה החדש בהתאם להוראות בקובץ.
- מוסיפים את הפרמטר הבא לקובץ ההגדרות 'מסגרת בדיקה' שנמצא בכתובת
C:\GRL\Thread1.1\Config\Configuration.ini
:BrowserAutoNavigate = False
תמיכה לבדיקה של שילוב
כלי האוטומציה של רתמות תומכים גם בארגזי בדיקה מעורבים, כאשר מכשירי העזר בכל מארז בדיקה הם קבוצה של מכשירים מעורבים במקום כל המכשירים. לדוגמה, במקום להשתמש ב-32 לוחות TI CC2538 שפועלים OpenOpen בכל המופעים של המארז, אפשר לשלב בין כל ארבעת השרשורים של Threads לכל מקרה בדיקה.
כדי להשתמש בערוגות בדיקה מעורבות, צריך:
- מוסיפים את הפרמטר הנוסף הבא לקובץ ההגדרות של 'מסגרת בדיקה' שנמצא בכתובת
C:\GRL\Thread1.1\Config\Configuration.ini
:EnableDeviceSelection = True
- מורידים את קובץ התצורה של הטופולוגיה
מקבוצת השרשורים.
אפשר להוסיף את הקובץ הזה לקובץ
TopologyConfig.txt
C:\GRL\Thread1.1\Thread_Harness\TestScripts
. הקובץ הזה כולל פרטים על ההפניה של המכשיר לכל תפקיד בכל מקרה בדיקה.
ניתן לשנות את קובץ התצורה של הטופולוגיה שסופק על ידי קבוצת השרשורים להגדרות אחרות של מיטות מעורבות, אבל לאישור רשמי יש להשתמש בהגדרה המקורית.
הערכים החוקיים לשימוש בקובצי עזר בקובץ התצורה של הטופולוגיה הם:
ערך בקובץ התצורה של הטופולוגיה | בדיקה של מכשיר הטעינה |
---|---|
ARM |
ARM: NXP FRDM-K64F עם Firefly 6LoWPAN Shield |
NXP |
NXP(Freescale): USB-KW24D512 דונגלים |
OpenThread |
OpenThread: TI CC2538DK |
SiLabs |
Silabs: USB EM358x |
כל רשומה של מקרי בדיקה בקובץ התצורה של הטופולוגיה חייבת להיות בשורה
נפרדת והיא צריכה להיות בפורמט role:device
של זוגות, באופן הבא:
5.3.10-Leader:NXP,Router_1:OpenThread,BorderRouter:OpenThread,MED_1:ARM
בדיקת רתמות מצב DUT אוטומטי
תוכנת GRL Test Harness מספקת תכונה מתקדמת של גילוי אוטומטי (DUT) אוטומטי, המאיימת את תהליך האימות עבור Threads Reference stackers.
OpenThread מספקת דוגמה Thread Host Controller Interface (THCI) שמאפשרת לרתמות הבדיקה לשלוט ברכיב או במוצר שלכם, כאילו מדובר באחת מפלטפורמות ההפניה. בהתאם למאפייני היציאות הטוריות של הפלטפורמה הספציפית שלכם, ה-DUT יכול:
פועל כפלטפורמה קיימת לקובצי OpenThread
אם היציאה הטורית של ה-DUT פועלת לפי הגדרות 115200 8-N-1, והמכשיר מגיב כראוי לאחר כל איפוס של מכשיר פיזי (לדוגמה, כדי לאשר את החיבור החוקי של המכשיר למכונה Windows), הפלטפורמה יכולה להשתמש בכלי OpenThread THCI. כלי זה מאפשר למכשיר לשמש כפלטפורמת עזר של OpenThread בזמן הבדיקה.
- סגור את 'מסגרת הבדיקה של GRL', אם היא פתוחה.
- מחברים את המכשיר למכונה של Windows.
- מאתרים את מזהה החומרה של היציאה הטורית של המכשיר באמצעות המודול pySerial
של Python:
- מתקינים את pySerial במחשב של Windows.
- יש להשתמש ב-Python בשורת הפקודה של Windows כדי לספור את כל מזהי החומרה (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']}
- פתיחת
- הפעלת מצב DUT אוטומטי.
משמש כפלטפורמת עזר חדשה
אם היציאה הטורית של ה-DUT לא פועלת תחת ההגדרות הנכונות של היציאה הטורית, או שהמכשיר לא מגיב כראוי לאחר איפוס של מכשיר פיזי (פלט של קוד לא קריא בתוך 3-6 שניות מהאיפוס), אפשר להתאים אישית את THCI כדי להתייחס למכשיר כפלטפורמה חדשה ב'מסגרת הבדיקה'.
לדוגמה, כדי להתאים אישית את הפורמט של תקן THCI באמצעות פלטפורמת Nordic Semiconductor nRF52840:
- סגור את 'מסגרת הבדיקה של GRL', אם היא פתוחה.
שינוי
/tools/harness-thci/OpenThread.py
על סמך המאפיינים של UART במכשיר היעד. ייתכן שיהיו שינויים במיקוד בין מכשירי היעד. במקרה של פלטפורמת 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.
מאתרים את מזהה החומרה של היציאה הטורית של המכשיר באמצעות המודול pySerial של Python:
- מתקינים את pySerial במחשב של Windows.
- יש להשתמש ב-Python בשורת הפקודה של Windows כדי לספור את כל מזהי החומרה (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'}
- פתיחת
הפעלת מצב DUT אוטומטי
בסיום אחת משתי אפשרויות ההגדרה שלמעלה:
- פותחים את GRA Test Harm (מכשיר ברירת המחדל של בדיקת GRL), עכשיו המכשיר או היציאה מופיעים כמכשיר חדש לעיון.
- מסמנים את התיבה הפעלת בחירת מכשירים של DUT אוטומטיים מתחת לרשימת החומרה הנתמכת.
- לוחצים על לחצן הבחירה Set as DUT (הגדרה כ-DUT) מתחת ליעד/למכשיר כדי להגדיר את המכשיר כ-DUT.