test_mozilla_structured.py (2650B)
1 import unittest 2 3 import mozunit 4 from mozharness.base.log import INFO, WARNING 5 from mozharness.mozilla.automation import TBPL_SUCCESS, TBPL_WARNING 6 from mozharness.mozilla.mozbase import MozbaseMixin 7 from mozharness.mozilla.structuredlog import StructuredOutputParser 8 from mozlog.handlers.statushandler import RunSummary 9 10 success_summary = RunSummary( 11 unexpected_statuses={}, 12 expected_statuses={"PASS": 3, "OK": 1, "FAIL": 1}, 13 known_intermittent_statuses={"FAIL": 1}, 14 log_level_counts={"info": 5}, 15 action_counts={"test_status": 4, "test_end": 1, "suite_end": 1}, 16 ) 17 18 failure_summary = RunSummary( 19 unexpected_statuses={"FAIL": 2}, 20 expected_statuses={"PASS": 2, "OK": 1}, 21 known_intermittent_statuses={}, 22 log_level_counts={"warning": 2, "info": 3}, 23 action_counts={"test_status": 3, "test_end": 2, "suite_end": 1}, 24 ) 25 26 27 class TestParser(MozbaseMixin, StructuredOutputParser): 28 def __init__(self, *args, **kwargs): 29 super().__init__(*args, **kwargs) 30 self.config = {} 31 32 33 class TestStructuredOutputParser(unittest.TestCase): 34 def setUp(self): 35 self.parser = TestParser() 36 37 def test_evaluate_parser_success(self): 38 self.parser.handler.expected_statuses = {"PASS": 3, "OK": 1, "FAIL": 1} 39 self.parser.handler.log_level_counts = {"info": 5} 40 self.parser.handler.action_counts = { 41 "test_status": 4, 42 "test_end": 1, 43 "suite_end": 1, 44 } 45 self.parser.handler.known_intermittent_statuses = {"FAIL": 1} 46 result = self.parser.evaluate_parser( 47 return_code=TBPL_SUCCESS, success_codes=[TBPL_SUCCESS] 48 ) 49 tbpl_status, worst_log_level, joined_summary = result 50 self.assertEqual(tbpl_status, TBPL_SUCCESS) 51 self.assertEqual(worst_log_level, INFO) 52 self.assertEqual(joined_summary, success_summary) 53 54 def test_evaluate_parser_failure(self): 55 self.parser.handler.unexpected_statuses = {"FAIL": 2} 56 self.parser.handler.expected_statuses = {"PASS": 2, "OK": 1} 57 self.parser.handler.log_level_counts = {"warning": 2, "info": 3} 58 self.parser.handler.action_counts = { 59 "test_status": 3, 60 "test_end": 2, 61 "suite_end": 1, 62 } 63 result = self.parser.evaluate_parser( 64 return_code=TBPL_SUCCESS, success_codes=[TBPL_SUCCESS] 65 ) 66 tbpl_status, worst_log_level, joined_summary = result 67 self.assertEqual(tbpl_status, TBPL_WARNING) 68 self.assertEqual(worst_log_level, WARNING) 69 self.assertEqual(joined_summary, failure_summary) 70 71 72 if __name__ == "__main__": 73 mozunit.main()