সার্টিফিকেশন অটোমেশন সেট-আপ

সার্টিফিকেশন টেস্ট অটোমেট করতে, অতিরিক্ত সেট-আপ প্রয়োজন।

GRL টেস্ট হারনেস সফ্টওয়্যার রান করছে এমন Windows মেশিনে নিচে উল্লেখ করা সব ইনস্টলেশন ও কনফিগারেশন ধাপ সম্পন্ন হয়। চালিয়ে যাওয়ার আগে লেটেস্ট GRL থ্রেড টেস্ট হারনেস ডাউনলোড ও ইনস্টল করুন।

ইনস্টল করার পরে, টেস্ট করা ডিভাইসের (DUT) জন্য দুটি অটোমেশন পদ্ধতি আছে:

  1. OpenThread Harness অটোমেশন টুল
  2. টেস্ট হারনেস অটো DUT মোড

OpenThread Harness অটোমেশন টুল

ইনস্টল করুন

  1. নিম্নলিখিত সফ্টওয়্যার ইনস্টল করুন:
    • Python 2.7
    • Windows-এর জন্য Git (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

মিক্সড টেস্টবেড সংক্রান্ত সহায়তা

এছাড়াও, Harness অটোমেশন টুল মিক্সড টেস্টবেড সাপোর্ট করে, যেখানে প্রতিটি টেস্ট কেসে ব্যবহৃত রেফারেন্স ডিভাইসগুলি একই ডিভাইসের পরিবর্তে ডিভাইসের একটি মিক্সড সেট। যেমন, সব টেস্ট কেসের জন্য OpenThread রান করছে এমন ৩২টি TI CC2538 বোর্ড ব্যবহার করার পরিবর্তে, আপনি প্রতিটি টেস্ট কেসের জন্য চারটি Thread রেফারেন্স ডিভাইসের মধ্যে মিক্স ও ম্যাচ করতে পারেন।

মিক্সড টেস্টবেড ব্যবহার করতে, অতিরিক্ত কনফিগারেশন প্রয়োজন:

  1. C:\GRL\Thread1.1\Config\Configuration.ini-এ পাওয়া টেস্ট হারনেস কনফিগারেশন ফাইলে নিম্নলিখিত অতিরিক্ত প্যারামিটার যোগ করুন:
    EnableDeviceSelection = True
  2. Thread গ্রুপ থেকে টোপোলজি কনফিগারেশন ফাইল ডাউনলোড করুন। এই ফাইলটি TopologyConfig.txt হিসেবে C:\GRL\Thread1.1\Thread_Harness\TestScripts-এ যোগ করুন। এই ফাইলটি প্রতিটি টেস্ট কেসে প্রতিটি ভূমিকার জন্য কোন রেফারেন্স ডিভাইস ব্যবহার করতে হবে তার বিবরণ দেয়।

থ্রেড গ্রুপের দেওয়া টোপোলজি কনফিগারেশন ফাইল অন্যান্য মিক্সড বেড কনফিগারেশনের জন্য পরিবর্তন করা যেতে পারে, তবে অফিসিয়াল সার্টিফিকেশনের জন্য আসল কনফিগারেশন ব্যবহার করতে হবে।

টপোলজি কনফিগারেশন ফাইলে রেফারেন্স ডিভাইসের জন্য ব্যবহার করার মতো সঠিক ভ্যালু হল:

টপোলজি কনফিগারেশন ফাইলে ভ্যালু টেস্ট হারনেস রেফারেন্স ডিভাইস
ARM ARM: Firefly 6LoWPAN শিল্ড সহ NXP FRDM-K64F
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

টেস্ট হারনেস অটো DUT মোড

GRL টেস্ট হারনেস সফ্টওয়্যার একটি উন্নত অটো ডিসকভারি ফিচার (Auto DUT) প্রদান করে যা থ্রেড রেফারেন্স স্ট্যাক ভেন্ডরদের জন্য যাচাইকরণ প্রক্রিয়াকে ত্বরান্বিত করে।

OpenThread একটি উদাহরণ প্রদান করে থ্রেড হোস্ট কন্ট্রোলার ইন্টারফেস (THCI) যা টেস্ট হারনেসকে আপনার কম্পোনেন্ট বা প্রোডাক্টকে এমনভাবে নিয়ন্ত্রণ করতে দেয় যেন এটি রেফারেন্স প্ল্যাটফর্মগুলির মধ্যে একটি। আপনার নির্দিষ্ট প্ল্যাটফর্মের সিরিয়াল পোর্ট বৈশিষ্ট্য অনুযায়ী, আপনার DUT নিম্নলিখিত যেকোনও একটি কাজ করতে পারে:

আগে থেকে থাকা OpenThread রেফারেন্স প্ল্যাটফর্ম হিসেবে কাজ করা

DUT-এর সিরিয়াল পোর্ট যদি 115200 8-N-1 সেটিংসে কাজ করে এবং প্রতিবার ফিজিক্যাল ডিভাইস রিসেট করার পরে ডিভাইস সঠিকভাবে রেসপন্স করে (যেমন, Windows মেশিনের সাথে ডিভাইসের বৈধ কানেকশন কনফার্ম করতে), তাহলে প্ল্যাটফর্মটি OpenThread THCI টুল ব্যবহার করতে পারে। এই টুল, টেস্টিংয়ের সময় ডিভাইসকে OpenThread রেফারেন্স প্ল্যাটফর্ম হিসেবে কাজ করার অনুমতি দেয়।

  1. GRL টেস্ট হারনেস খোলা থাকলে, সেটি বন্ধ করুন।
  2. Windows মেশিনে ডিভাইসটি অ্যাটাচ করুন।
  3. Python pySerial মডিউল ব্যবহার করে ডিভাইসের সিরিয়াল পোর্ট হার্ডওয়্যার আইডেন্টিফায়ার খুঁজুন:
    1. Windows মেশিনে pySerial ইনস্টল করুন।
    2. মেশিনের সাথে কানেক্ট করা ডিভাইসের জন্য সব হার্ডওয়্যার শনাক্তকারী (VID ও PID) তালিকাভুক্ত করতে Windows কমান্ড লাইনে Python ব্যবহার করুন। এই আউটপুটে, একটি ডিভাইস 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. GoldenDeviceHardwareIds অ্যারেতে OpenThread গ্রুপ আপডেট করুন ডিভাইসের 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-এর সিরিয়াল পোর্ট যদি সঠিক সিরিয়াল পোর্ট সেটিংসের অধীনে কাজ না করে অথবা ফিজিক্যাল ডিভাইস রিসেট করার পরে ডিভাইস যদি সঠিকভাবে রেসপন্স না করে (রিসেট করার ৩-৬ সেকেন্ডের মধ্যে অপাঠ্য কোড আউটপুট করে), তাহলে টেস্ট হারনেসে ডিভাইসটিকে নতুন প্ল্যাটফর্ম হিসেবে বিবেচনা করার জন্য OpenThread THCI কাস্টমাইজ করা যেতে পারে।

যেমন, Nordic Semiconductor nRF52840 প্ল্যাটফর্ম ব্যবহার করে THCI কাস্টমাইজ করতে:

  1. GRL টেস্ট হারনেস খোলা থাকলে, সেটি বন্ধ করুন।
  2. টার্গেট ডিভাইসের UART বৈশিষ্ট্যের উপর ভিত্তি করে /tools/harness-thci/OpenThread.py পরিবর্তন করুন। টার্গেট ডিভাইসের উপর নির্ভর করে পরিবর্তন আলাদা হতে পারে। Nordic 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. Test Harness-এ নতুন প্ল্যাটফর্মের তথ্য যোগ করুন:

    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>: Nor<dic" THCI="nRF52840"
          ITEM label="Serial Line"
                type="text"
                forParam=">;SerialP<ort&q>uot;
      <          validation="COM"
                hint="eg: COM1"COM
          /ITEM
          ITEM label="Speed"
                type=&qu>ot;text&quo<t;
        > <       >forParam="SerialBaudRate"
                validation="baud-rate"
                hint="eg: 115200"115200
          /ITEM
      /DEVICE
      
  5. Windows মেশিনে ডিভাইসটি অ্যাটাচ করুন।

  6. Python pySerial মডিউল ব্যবহার করে ডিভাইসের সিরিয়াল পোর্ট হার্ডওয়্যার শনাক্তকারী খুঁজুন:

    1. Windows মেশিনে pySerial ইনস্টল করুন।
    2. মেশিনের সাথে কানেক্ট করা ডিভাইসের জন্য সব হার্ডওয়্যার শনাক্তকারী (VID ও PID) তালিকাভুক্ত করতে Windows কমান্ড লাইনে Python ব্যবহার করুন। এই আউটপুটে, একটি ডিভাইস 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. ডিভাইসের VID ও PID সহ GoldenDeviceHardwareIds অ্যারেতে নতুন প্ল্যাটফর্ম গ্রুপ যোগ করুন:
      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. কাজ করে এমন হার্ডওয়্যারের তালিকার নিচে অটোমেটিক DUT ডিভাইস বেছে নেওয়ার সুবিধা চালু করুন চেকবক্স বেছে নিন।
  3. ডিভাইসকে DUT হিসেবে সেট করতে টার্গেট ডিভাইস/পোর্টের অধীনে DUT হিসেবে সেট করুন রেডিও বোতাম বেছে নিন।
OT সার্টিফিকেশন অটো DUT