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)
Exemple #5
0
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)
Exemple #13
0
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 {}
Exemple #14
0
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