UnitTest.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. # -*- coding: utf-8 -*-
  2. import re
  3. import time
  4. from TCAction import PerformanceTCBase
  5. from TCAction import TCActionBase
  6. from NativeLog import NativeLog
  7. class UnitTest(PerformanceTCBase.PerformanceTCBase):
  8. def __init__(self, test_case, test_env, cmd_set, timeout=30, log_path=TCActionBase.LOG_PATH):
  9. PerformanceTCBase.PerformanceTCBase.__init__(self, test_case, test_env, cmd_set=cmd_set,
  10. timeout=timeout, log_path=log_path)
  11. self.case = cmd_set[1][0]
  12. self.test_timeout = 20
  13. self.reset_reason = test_case['reset']
  14. self.result_cntx = TCActionBase.ResultCheckContext(self, test_env, self.tc_name)
  15. def send_commands(self):
  16. self.flush_data("UT1")
  17. try:
  18. self.serial_write_line("UT1", "\"" + self.case + "\"")
  19. data = ""
  20. for _ in range(self.timeout):
  21. time.sleep(1) # wait for test to run before reading result
  22. data += self.serial_read_data("UT1")
  23. if re.search('[^0].* Tests 0 F',
  24. data): # check that number of tests run != 0 and number of tests failed == 0
  25. self.set_result("Succeed")
  26. break
  27. else:
  28. self.set_result("Fail")
  29. reset_list = self.reset_reason.split(",") if self.reset_reason else ''
  30. pattern = re.compile(r"(ets [\w]{3} [\d]{1,2} [\d]{4} [\d]{2}:[\d]{2}:[\d]{2}[^(\)]*\([\w].*?\))"
  31. r"|(Guru Meditation Error: Core [\d] panic'ed \([\w].*?\))")
  32. reset_exception = pattern.findall(data)
  33. if reset_list and len(reset_list) == len(reset_exception):
  34. for i, reset in enumerate(reset_list):
  35. temp_reset = reset_exception[i]
  36. if reset not in "".join(temp_reset):
  37. self.set_result("Fail")
  38. break
  39. else:
  40. self.set_result("Succeed")
  41. except StandardError, e:
  42. NativeLog.add_exception_log(e)
  43. def execute(self):
  44. TCActionBase.TCActionBase.execute(self)
  45. self.send_commands()
  46. def main():
  47. pass
  48. if __name__ == '__main__':
  49. pass