การกำหนดค่าการทดสอบ ACTS

หน้านี้อธิบายวิธีกำหนดค่าการทดสอบ ACTS

แหล่งที่มาของการกำหนดค่า

ชุดทดสอบ Android Comms Test Suite (ACTS) มีแหล่งที่มาของการกำหนดค่าหลักสามแหล่ง:

  • อินเทอร์เฟซบรรทัดคำสั่ง (CLI)
  • ไฟล์กำหนดค่า ACTS
  • ตัวแปรสภาพแวดล้อม

ค่าจากแหล่งที่มาเหล่านี้จะรวมกันเป็นการกำหนดค่าเดียวที่ใช้ในการรันการทดสอบ ACTS หากมีการระบุค่าในหลายตำแหน่ง ค่าจะถูกเขียนทับตามลำดับด้านบน (โดยที่ CLI มีความสำคัญกว่า)

หมายเหตุเกี่ยวกับตัวแปรสภาพแวดล้อม

โปรดใช้ความระมัดระวังเมื่อใช้ตัวแปรสภาพแวดล้อมสำหรับการทดสอบ ACTS ค่าเหล่านี้จะแสดงให้ผู้ใช้มองเห็นได้น้อยที่สุด และไม่แนะนำให้ใช้นอกเวิร์กสเตชันของนักพัฒนา ตัวแปรสภาพแวดล้อมถูกปิดใช้งานระหว่างการทดสอบอัตโนมัติของ ACTS เพื่อป้องกันพิษต่อสิ่งแวดล้อม

ตัวแปรการกำหนดค่าที่จำเป็น

การทดสอบ ACTS ทุกครั้งต้องมีการตั้งค่าตัวแปรต่อไปนี้

เส้นทางทดสอบ ACTS

ACTS ทำงานจากตำแหน่งรายการหลักแห่งเดียว เป็นผลให้นักวิ่งไม่ทราบตำแหน่งเส้นทางทดสอบ

ตั้งค่าตำแหน่งเส้นทางทดสอบโดยใช้ตัวแปรสภาพแวดล้อม ACTS_TESTPATH ​​หรือด้วยแฟล็ก -tp / --testpaths ในบรรทัดคำสั่ง ค่าสามารถเป็นรายการไดเร็กทอรี

ชั้นเรียนทดสอบ ACTS

ACTS ต้องรู้ว่าคลาสทดสอบใดที่จะรัน ซึ่งอาจเป็น regex หรือรายการชื่อคลาสทดสอบ

หากต้องการตั้งค่านี้ ให้ใช้แฟล็ก -tc / --test_class ในบรรทัดคำสั่ง โปรดทราบว่าแฟล็กนี้ยังยอมรับรายชื่อคลาสด้วย ชื่อคลาสจะต้องตรงกับชื่อไฟล์ที่เกี่ยวข้อง ตัวอย่างเช่น จะต้องพบ SampleTest ใน SampleTest.py

เส้นทางบันทึก ACTS

ACTS ต้องมีตำแหน่งในการเขียนบันทึกไปยังอื่นที่ไม่ใช่ STDOUT ACTS เขียนบันทึกการแก้ไขข้อบกพร่องแบบเต็มซึ่งมีข้อมูลที่สามารถช่วยระบุสาเหตุที่การทดสอบบางอย่างล้มเหลว เพื่อป้องกันความยุ่งเหยิง ACTS จะไม่เขียนบันทึกเหล่านี้ไปที่ STDOUT

หากต้องการตั้งค่าเส้นทางบันทึก ให้ใช้ตัวแปรสภาพแวดล้อม ACTS_LOGPATH หรือแฟล็ก -lp / --logpath ในบรรทัดคำสั่ง

เส้นทางการกำหนดค่า ACTS

หากต้องการดำเนินการทดสอบ ACTS ต้องทราบว่ามีเตียงทดสอบใดบ้าง การกำหนดค่า ACTS ประกอบด้วยอุปกรณ์ทั้งหมดในตัวทดสอบ และการทดสอบพิเศษหรือพารามิเตอร์สภาพแวดล้อมที่อาจจำเป็น ตั้งค่านี้บนบรรทัดคำสั่งโดยใช้ -c / --config

หากมีเตียงทดสอบหลายรายการภายในการกำหนดค่า ACTS จะทำการทดสอบสำหรับแต่ละเตียงทดสอบ หากต้องการรันการทดสอบสำหรับ testbed เดียวในรายการ ให้ใช้อาร์กิวเมนต์บรรทัดคำสั่ง -tb/--testbed <NAME>

ตัวอย่างเวิร์กสเตชันท้องถิ่น

ผู้ใช้ ACTS ส่วนใหญ่พัฒนาบน repo ของ Android สาขาเดียว และมีการตั้งค่าที่คล้ายกับอันนี้:

# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='~/android/<REPO_BRANCH>/tools/test/connectivity/acts_tests/'

# On cmdline
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin

หากผู้ใช้ ACTS ทำงานบนหลายสาขา พวกเขามักจะเรียกใช้ ACTS จากไดเรกทอรี acts/framework และใช้เส้นทางสัมพัทธ์สำหรับ ACTS_TESTPATH ​​:

# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='../acts_tests/'

# On cmdline
$ cd ~/android/main/tools/test/connectivity/acts_tests/acts_contrib/
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin

การกำหนดค่าเตียงทดสอบของคุณ

ไฟล์กำหนดค่า ACTS ให้ข้อมูลที่จำเป็นทั้งหมดสำหรับการทดสอบบนอุปกรณ์ฮาร์ดแวร์:

{
  "testbed": {
    "my_testbed": {
      "my_testbed_value": "value"
    },
    "another_testbed": {
      "AndroidDevice": [
        "53R147"
      ]
    }
  },
  "user_parameter_1": "special environment value",
  "user_parameter_2": "other special value"
}

หน่วยพื้นฐานของการกำหนดค่านี้คือเตียงทดสอบ ในการกำหนดค่าตัวอย่างด้านบน testbed my_testbed ถูกสร้างขึ้นด้วยค่า testbed เดียว testbed อันที่สอง another_testbed มีการกำหนดค่าคอนโทรลเลอร์พิเศษที่เก็บข้อมูลสำหรับรายการอุปกรณ์ Android อุปกรณ์เหล่านี้ถูกจัดเก็บไว้ในรายการอุปกรณ์ภายใต้ self.android_devices โปรดทราบว่าหาก testbed ไม่ได้ระบุวัตถุ AndroidDevice คลาสทดสอบที่คาดว่าวัตถุ AndroidDevice จะทำให้เกิดข้อยกเว้น สำหรับรายการการกำหนดค่าคอนโทรลเลอร์ที่รองรับทั้งหมดที่มาพร้อมกับ ACTS โปรดดูรายการที่ /acts/framework/acts/controllers/

ค่าอื่นๆ ทั้งหมด (ที่ไม่ใช่ค่าพิเศษที่กล่าวถึงในส่วนด้านบน) จะถูกจัดเก็บไว้ใน self.user_params เป็นพจนานุกรม นี่เป็นสถานที่ที่ดีในการเก็บข้อมูลสภาพแวดล้อมหรือการทดสอบ เช่น โทรศัพท์อยู่ในสภาพแวดล้อมที่มีข้อมูลแบบมิเตอร์หรือไม่ หรือจะรวบรวมข้อมูลสำหรับการทดสอบนานเท่าใด

กรณีพิเศษสำหรับอุปกรณ์ Android

เพื่อความสะดวกในการพัฒนาเมื่อคุณต้องการมีอุปกรณ์หลายเครื่องที่มีคุณสมบัติต่างกัน AndroidDevice มีกรณีพิเศษบางประการ

รูปแบบการกำหนดค่า JSON

คู่คีย์/ค่าทั้งหมดใน JSON ด้านล่างได้รับการตั้งค่าเป็นออบเจ็กต์ AndroidDevice ที่เกี่ยวข้อง หากการกำหนดค่าพยายามเขียนทับพารามิเตอร์ที่กำหนดไว้ในแอตทริบิวต์ AndroidDevice ControllerError จะถูกส่งออกไป

  "AndroidDevice": [{"serial": "XXXXXX", "label": "publisher"},
                    {"serial": "YYYYYY", "label": "subscriber", "user_parameter_1": "anything"}]

จากนั้นในสคริปต์ทดสอบ คุณสามารถใช้ฟังก์ชันตัวกรองเพื่อดึงข้อมูลอุปกรณ์ที่ถูกต้องและเข้าถึงพารามิเตอร์เพิ่มเติมจากออบเจ็กต์อุปกรณ์:

  def setup_class(self):
      self.pub = next(filter(lambda ad: ad.label == 'publisher',
                             self.android_devices))
      self.sub = next(filter(lambda ad: ad.label == 'user_parameter_1',
                             self.android_devices))

พารามิเตอร์ทางเลือก

ต่อไปนี้เป็นพารามิเตอร์ทางเลือก:

  • adb_logcat_param : สตริงต่อท้ายคำสั่ง adb logcat สำหรับการรวบรวมบันทึก adb ตามค่าเริ่มต้น adb logcat -v threadtime -b all จะถูกใช้ หากตั้งค่า adb_logcat_param ส่วน -b all จะถูกเขียนทับ ตัวอย่างเช่น การตั้งค่า adb_logcat_param เป็น -b radio จะเปลี่ยนคำสั่งเป็น adb logcat -v threadtime -b radio