def testSuccess(self): ''' .. note:: success was deprecated, and it only calls passed() ''' report = Report(self.report_name) report.failed(self.failure_reason) self.assertEqual(report.get_status(), Report.FAILED) report.success() self.assertEqual(report.get_status(), Report.PASSED)
def testErrorInSubReportEntry(self): entry_name = 'sub report' report = Report(self.report_name) subreport = Report(entry_name) report.add(entry_name, subreport) subreport.error(self.error_reason) self.assertEqual(report.get_status(), Report.ERROR) self.assertEqual(report.get('reason'), self.error_reason)
def testFailureInSubReportEntry(self): entry_name = 'sub report' report = Report(self.report_name) subreport = Report(entry_name) report.add(entry_name, subreport) subreport.failed(self.failure_reason) self.assertEqual(report.get_status(), Report.FAILED) self.assertEqual(report.get('reason'), self.failure_reason)
def testErrorInOneOfSubReportEntries(self): entry_name1 = 'sub report 1' entry_name2 = 'sub report 2' entry_name3 = 'sub report 3' report = Report(self.report_name) subreport1 = Report(entry_name1) subreport2 = Report(entry_name2) subreport3 = Report(entry_name3) report.add(entry_name1, subreport1) report.add(entry_name2, subreport2) report.add(entry_name3, subreport3) subreport2.error(self.error_reason) self.assertEqual(report.get_status(), Report.ERROR) self.assertEqual(report.get('reason'), self.error_reason)
class BaseTarget(KittyObject): ''' BaseTarget contains the common logic and behaviour of all target. ''' def __init__(self, name='BaseTarget', logger=None): super(BaseTarget, self).__init__(name, logger) self.controller = None self.monitors = [] self.report = Report(name) self.test_number = None self.fuzzer = None self.session_data = {} def set_fuzzer(self, fuzzer): self.fuzzer = fuzzer def set_controller(self, controller): ''' Set a controller ''' self.controller = controller def add_monitor(self, monitor): ''' Add a monitor ''' self.monitors.append(monitor) def setup(self): ''' Make sure the target is ready for fuzzing, including monitors and controllers ''' if self.controller: self.controller.setup() for monitor in self.monitors: monitor.setup() def teardown(self): ''' Clean up the target once all tests are completed ''' if self.controller: self.controller.teardown() for monitor in self.monitors: monitor.teardown() def pre_test(self, test_num): ''' Called when a test is started ''' self.test_number = test_num self.report = Report(self.name) if self.controller: self.controller.pre_test(test_number=self.test_number) for monitor in self.monitors: monitor.pre_test(test_number=self.test_number) self.report.add('test_number', test_num) self.report.add('state', 'STARTED') def post_test(self, test_num): ''' Called when test is completed, a report should be prepared now ''' if self.controller: self.controller.post_test() for monitor in self.monitors: monitor.post_test() self.report.add('state', 'COMPLETED') if self.controller: controller_report = self.controller.get_report() self.report.add('controller', controller_report) for monitor in self.monitors: current_report = monitor.get_report() self.report.add(current_report.get('name'), current_report) status = self.report.get_status() reason = self.report.get('reason') if status != Report.PASSED: self.logger.warning('Test %d status: %s' % (test_num, status)) self.logger.warning('Reason: %s' % (reason)) def get_report(self): return self.report def get_session_data(self): ''' Session related data dictionary to be used by data model. :return: dictionary (str, bytes) ''' return self.session_data
def testClearRestoresStatusToDefaultPassed(self): report = Report(self.report_name) self.assertEqual(report.get_status(), Report.PASSED) report.failed('mock failure') report.clear() self.assertEqual(report.get_status(), Report.PASSED)
def testPassed(self): report = Report(self.report_name) report.failed(self.failure_reason) self.assertEqual(report.get_status(), Report.FAILED) report.passed() self.assertEqual(report.get_status(), Report.PASSED)
def testErrorWithoutReason(self): report = Report(self.report_name) self.assertEqual(report.get_status(), Report.PASSED) report.error() self.assertEqual(report.get_status(), Report.ERROR) self.assertEqual(report.get('reason'), None)
def testFailedWithoutReason(self): report = Report(self.report_name) self.assertEqual(report.get_status(), Report.PASSED) report.failed() self.assertEqual(report.get_status(), Report.FAILED) self.assertEqual(report.get('reason'), None)
def testStatusIsFailedByConstructor(self): report = Report(self.report_name, default_failed=True) self.assertEqual(report.get_status(), Report.FAILED)
def testDefaultStatusIsPassed(self): report = Report(self.report_name) self.assertEqual(report.get_status(), Report.PASSED)
def testClearRestoresStatusToDefaultFailed(self): report = Report(self.report_name, default_failed=True) self.assertEqual(report.get_status(), Report.FAILED) report.passed() report.clear() self.assertEqual(report.get_status(), Report.FAILED)
class BaseTarget(KittyObject): ''' BaseTarget contains the common logic and behaviour of all target. ''' def __init__(self, name='BaseTarget', logger=None): super(BaseTarget, self).__init__(name, logger) self.controller = None self.monitors = [] self.report = Report(name) self.test_number = None self.fuzzer = None def set_fuzzer(self, fuzzer): self.fuzzer = fuzzer def set_controller(self, controller): ''' Set a controller ''' self.controller = controller def add_monitor(self, monitor): ''' Add a monitor ''' self.monitors.append(monitor) def setup(self): ''' Make sure the target is ready for fuzzing, including monitors and controllers ''' if self.controller: self.controller.setup() for monitor in self.monitors: monitor.setup() def teardown(self): ''' Clean up the target once all tests are completed ''' if self.controller: self.controller.teardown() for monitor in self.monitors: monitor.teardown() def pre_test(self, test_num): ''' Called when a test is started ''' self.test_number = test_num self.report = Report(self.name) if self.controller: self.controller.pre_test(test_number=self.test_number) for monitor in self.monitors: monitor.pre_test(test_number=self.test_number) self.report.add('test_number', test_num) self.report.add('state', 'STARTED') def post_test(self, test_num): ''' Called when test is completed, a report should be prepared now ''' if self.controller: self.controller.post_test() for monitor in self.monitors: monitor.post_test() self.report.add('state', 'COMPLETED') if self.controller: controller_report = self.controller.get_report() self.report.add('controller', controller_report) for monitor in self.monitors: current_report = monitor.get_report() self.report.add(current_report.get('name'), current_report) status = self.report.get_status() reason = self.report.get('reason') if status != Report.PASSED: self.logger.warning('Test %d status: %s' % (test_num, status)) self.logger.warning('Reason: %s' % (reason)) def get_report(self): return self.report def get_session_data(self): ''' Session related data dictionary to be used by data model. :return: dictionary (str, bytes) ''' return {}
class BaseTarget(KittyObject): """ BaseTarget contains the common logic and behaviour of all target. """ def __init__(self, name="BaseTarget", logger=None): super(BaseTarget, self).__init__(name, logger) self.controller = None self.monitors = [] self.report = Report(name) self.test_number = None self.fuzzer = None self.session_data = {} def set_fuzzer(self, fuzzer): self.fuzzer = fuzzer def set_controller(self, controller): """ Set a controller """ self.controller = controller def add_monitor(self, monitor): """ Add a monitor """ self.monitors.append(monitor) def setup(self): """ Make sure the target is ready for fuzzing, including monitors and controllers """ if self.controller: self.controller.setup() for monitor in self.monitors: monitor.setup() def teardown(self): """ Clean up the target once all tests are completed """ if self.controller: self.controller.teardown() for monitor in self.monitors: monitor.teardown() def pre_test(self, test_num): """ Called when a test is started """ self.test_number = test_num self.report = Report(self.name) if self.controller: self.controller.pre_test(test_number=self.test_number) for monitor in self.monitors: monitor.pre_test(test_number=self.test_number) self.report.add("test_number", test_num) self.report.add("state", "STARTED") def post_test(self, test_num): """ Called when test is completed, a report should be prepared now """ if self.controller: self.controller.post_test() for monitor in self.monitors: monitor.post_test() self.report.add("state", "COMPLETED") if self.controller: controller_report = self.controller.get_report() self.report.add("controller", controller_report) for monitor in self.monitors: current_report = monitor.get_report() self.report.add(current_report.get("name"), current_report) status = self.report.get_status() reason = self.report.get("reason") if status != Report.PASSED: self.logger.warning("Test %d status: %s" % (test_num, status)) self.logger.warning("Reason: %s" % (reason)) def get_report(self): return self.report def get_session_data(self): """ Session related data dictionary to be used by data model. :return: dictionary (str, bytes) """ return self.session_data