הגדרת אוטומציה של אישורים

כדי להפוך את בדיקות ההסמכה לאוטומטיות יש צורך בהגדרות נוספות.

כל שלבי ההתקנה והתצורה שבהמשך מתרחשים במחשב Windows להפעלת תוכנת GRL Test Harness. מורידים ומתקינים את הגרסה העדכנית ביותר מסגרת של בדיקת חוט GRL לפני המשך.

אחרי ההתקנה, יש שתי שיטות אוטומציה למכשיר בבדיקה, (DUT):

  1. כלי האוטומציה של רתמות ה-OpenThread
  2. מצב DUT אוטומטי של רצועת בדיקה

כלי האוטומציה של רתמות ה-OpenThread

התקנה

  1. מתקינים את התוכנה הבאה:
    • Python 2.7
    • Git ל-Windows (מומלץ מאוד להשתמש בתמיכה ב-Bash)
  2. משכפלים את המאגר OpenThread כדי לקבל את הסקריפטים של האוטומציה:
    git clone https://github.com/openthread/openthread
    
  3. מתקינים את הדרישות של Python:
    cd tools/harness-automation
    pip install -r requirements.txt
    
  4. התקנת Google Chrome ו- ChromeDriver.

הגדרה

  1. יוצרים קובץ תצורה לכלי האוטומציה:
    cp autothreadharness/settings_sample.py autothreadharness/settings.py
    
  2. מעדכנים את קובץ התצורה החדש בהתאם להוראות. חדש.
  3. מוסיפים את הפרמטר הבא לקובץ התצורה 'מסגרת בדיקה', שנמצא ב- C:\GRL\Thread1.1\Config\Configuration.ini:
    BrowserAutoNavigate = False

תמיכה משולבת לבדיקה

הכלי לאוטומציה של רתמות תומך גם בבדיקות משולבות, שבהן ההפניה בכל מקרה בדיקה, המכשירים הם קבוצה משולבת של מכשירים ולא כל באותו מכשיר. לדוגמה, במקום להשתמש ב-32 לוחות TI CC2538 שפועלים OpenThread לכל מקרי הבדיקה. אפשר לשלב בין כל ארבעת השרשורים למכשירי עזר לכל תרחיש בדיקה, באופן הרצוי.

כדי להשתמש בארגזי בדיקה מעורבים, יש צורך בהגדרות נוספות:

  1. צריך להוסיף את הפרמטר הנוסף הבא להגדרה של 'מסגרת בדיקה' קובץ שנמצא ב-C:\GRL\Thread1.1\Config\Configuration.ini:
    EnableDeviceSelection = True
  2. הורדת קובץ התצורה של הטופולוגיה מהשרשור קבוצה. הוספת הקובץ הזה בתור 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: דיסק און קי EM358x USB

כל רשומה של מקרה בדיקה בקובץ התצורה של הטופולוגיה חייבת להיות בקובץ נפרד ובפורמט של role:device זוגות באופן הבא:

5.3.10-Leader:NXP,Router_1:OpenThread,BorderRouter:OpenThread,MED_1:ARM

מצב 'מסגרת בדיקה אוטומטית' של DUT

תוכנת 'מסגרת בדיקה' של GRL מספקת תכונת גילוי אוטומטי מתקדמת (Auto DUT) שמזרז את תהליך האימות של סטאק ההפניות לשרשורים לספקים שונים.

דוגמה ל-OpenThread ממשק בקר למארחים של פרוטוקולי Thread (THCI) שמאפשרת ל'מסגרת בדיקה' לשלוט ברכיב או במוצר שלך כאילו הוא אחת מפלטפורמות ההפניה. בהתאם למאפייני היציאה הטורית של בפלטפורמה הספציפית שלכם, ה-DUT יכול:

משמש כפלטפורמת העזר הקיימת של OpenThread

אם היציאה הטורית של ה-DUT פועלת בהגדרות של 115200 8-N-1, וכן המכשיר מגיב בצורה תקינה לאחר כל איפוס פיזי של המכשיר (לדוגמה, מוודאים שיש חיבור תקין של המכשיר למחשב Windows, ואז לפלטפורמה להשתמש בכלי OpenThread THCI. הכלי הזה מאפשר למכשיר לפעול פלטפורמת העזר של OpenThread במהלך הבדיקה.

  1. סוגרים את מסגרת הבדיקה של GRL, אם היא פתוחה.
  2. מחברים את המכשיר למחשב Windows.
  3. מאתרים את מזהה החומרה של היציאה הטורית של המכשיר באמצעות py שמתאים ל-Python מודול:
    1. התקנת pySeries במחשב Windows.
    2. שימוש ב-Python בשורת הפקודה של Windows כדי לספור את כל החומרה מזהי VID ו-PID של המכשירים שמחוברים למכונה. כאן מכשיר אחד מחובר עם מזהה של VID=1366 PID=1015:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. אם יציאת ה-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']
  4. מעדכנים את רשימת מכשירי הזהב:
    1. פתיחת C:\GRL\Thread1.1\Config\Configuration.ini.
    2. עדכון קבוצת 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']}
  5. מפעילים את מצב DUT אוטומטי.

לשמש כפלטפורמת עזר חדשה

אם היציאה הטורית של ה-DUT לא פועלת ביציאה הטורית הנכונה הגדרות, או שהמכשיר לא מגיב בצורה תקינה לאחר מכשיר פיזי איפוס (פלט קוד בלתי קריא תוך 3-6 שניות לאחר האיפוס), ולאחר מכן OpenThread ניתן להתאים אישית את THCI כדי להתייחס למכשיר כפלטפורמה חדשה בבדיקה רתמות.

לדוגמה, כדי להתאים אישית THCI באמצעות המוליכים למחצה של Nordic פלטפורמת nRF52840:

  1. סוגרים את מסגרת הבדיקה של GRL, אם היא פתוחה.
  2. שינוי /tools/harness-thci/OpenThread.py על סמך מאפייני ה-UART של מכשיר היעד. השינויים עשויים להתבצע שונים בין מכשירי היעד. במקרה של פלטפורמת nRF52840 הנורדית:

    1. משנים את השם של הקובץ OpenThread.py לשם nRF52840.py.
    2. משנים את שלושת המופעים הראשונים של OpenThread ל-"nRF52840":

      >> Device : nRF52840 THCI
      >> Class : nRF52840
      
      class nRF52840(IThci):
      
    3. שינוי הפרמטרים של היציאה הטורית:

      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()
      
    4. כדי למנוע את ההשפעה של פלט קוד בלתי קריא, כדאי לשנות את זמן השינה אחרי איפוס המכשיר:

      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)
      
  3. העתקת הקובץ nRF52840.py שהשתנה אל C:\GRL\Thread1.1\Thread_Harness\THCI

  4. מוסיפים את פרטי הפלטפורמה החדשה ל'מסגרת הבדיקה':

    1. צור סמל (בפורמט png או jpg) כדי שיהיה קל יותר להבחין ביניהם בפלטפורמה ומעתיקים אותה אל C:\GRL\Thread1.1\Web\images.
    2. עדכון 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>
      
  5. מחברים את המכשיר למחשב Windows.

  6. מאתרים את מזהה החומרה של היציאה הטורית של המכשיר באמצעות py שמתאים ל-Python מודול:

    1. התקנת pySeries במחשב Windows.
    2. שימוש ב-Python בשורת הפקודה של Windows כדי לספור את כל החומרה מזהי VID ו-PID של המכשירים שמחוברים למכונה. כאן של הפלט, מכשיר אחד מחובר עם מזהה של VID=1366 PID=1015:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. אם יציאת ה-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']
  7. מעדכנים את רשימת מכשירי הזהב:

    1. פתיחת C:\GRL\Thread1.1\Config\Configuration.ini.
    2. הוספת קבוצת פלטפורמות חדשה במערך 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'}
  8. מפעילים את מצב DUT אוטומטי.

הפעלה של מצב DUT אוטומטי

אחרי שמשלימים אחת משתי אפשרויות ההגדרה שלמעלה:

  1. פותחים את מסגרת הבדיקה של GRL. המכשיר/היציאה מופיעים עכשיו כהפניה חדשה. במכשיר.
  2. מסמנים את התיבה Enable Auto DUT Device Selection (הפעלת בחירת מכשיר אוטומטית ל-DUT) מתחת לסמל הנתמך רשימת החומרה.
  3. בוחרים את לחצן הבחירה Set as DUT מתחת למכשיר היעד/ליציאה שרוצים להגדיר את המכשיר בתור ה-DUT.
אישור DUT אוטומטי – אישור OT