Example #1
0
    def testAssumeChildCounts(self):
        child = build_logging.WorkUnit('child')
        parent = build_logging.WorkUnit('parent')
        parent.total = 100
        child.total = 50
        parent.add_child(child)
        self.assertEquals(150, parent.total)
        child.total = 250
        self.assertEquals(350, parent.total)
        # Test idempotence
        child.total = 250
        self.assertEquals(350, parent.total)
        parent.total = 200
        self.assertEquals(450, parent.total)

        sibling = build_logging.WorkUnit('sibling')
        grandchild = build_logging.WorkUnit('grandchild')
        grandchild.total = 10
        sibling.add_child(grandchild)
        self.assertEquals(10, sibling.total)
        parent.add_child(sibling)
        self.assertEquals(460, parent.total)
        grandchild.total = 100
        sibling.total = 200
        self.assertEquals(750, parent.total)
Example #2
0
 def testAddChildUnit(self):
     child = build_logging.WorkUnit('child')
     parent = build_logging.WorkUnit('parent')
     parent.add_child(child)
     self.assertEquals(parent, child.parent)
     self.assertEquals(1, len(parent.children))
     self.assertEquals(child, parent.children[0])
Example #3
0
 def testRecordWorkUnits(self):
     work_unit = build_logging.WorkUnit('test')
     self.assertEquals(enums.Status.WAITING, work_unit.get_status())
     work_unit.total = 10
     self.assertEquals(10, work_unit.total)
     work_unit.complete = 10
     self.assertEquals(10, work_unit.complete)
Example #4
0
    def testAddingListenerGrabsStatus(self):
        work_unit = build_logging.WorkUnit(name='test')
        work_unit.add_change_listener(self.log_source)

        msgs = self.log_source.buffered_messages
        self.assertEquals(2, len(self.log_source.buffered_messages))
        self.assertEquals(enums.LogLevel.DEBUG, msgs[0][0])
        self.assertEquals('test', msgs[0][2])
        self.assertEquals(enums.LogLevel.INFO, msgs[1][0])
        self.assertEquals('test', msgs[1][2])
Example #5
0
    def testGetChildStatuses(self):
        child = build_logging.WorkUnit('child')
        parent = build_logging.WorkUnit('parent')
        parent.add_child(child)
        self.assertEquals(None, child.start_time)
        self.assertEquals(None, parent.start_time)
        self.assertEquals(enums.Status.WAITING, child.get_status())
        self.assertEquals(enums.Status.WAITING, parent.get_status())
        child.total = 20
        self.assertEquals(enums.Status.RUNNING, child.get_status())
        self.assertEquals(enums.Status.RUNNING, parent.get_status())
        parent.total = 30
        child.total = 0
        child.complete = 0
        self.assertEquals(enums.Status.SKIPPED, child.get_status())
        self.assertEquals(enums.Status.RUNNING, parent.get_status())
        parent.complete = 30
        self.assertEquals(enums.Status.SUCCEEDED, parent.get_status())

        child.exception = ValueError()
        self.assertEquals(enums.Status.FAILED, child.get_status())
        self.assertEquals(enums.Status.FAILED, parent.get_status())
        self.assertEquals(child.exception, parent.exception)
Example #6
0
    def testChangeListenersCalled(self):
        mock_listener = MagicMock(name='listener')
        # If should_listen returns True, the listener will not be added to the
        # WorkUnit, and will therefor not have its handler triggered on
        # updates.
        mock_listener.should_listen.return_value = False
        test = build_logging.WorkUnit('test')
        test.add_change_listener(mock_listener)

        # Listeners should be triggered when updates occur anywhere along a WorkUnit
        # tree.
        child = build_logging.WorkUnit('child')
        parent = build_logging.WorkUnit('parent')
        parent.add_child(child)
        mock_child_listener = MagicMock(name='child_listener')
        mock_child_listener.should_listen.return_value = True
        mock_parent_listener = MagicMock(name='parent_listener')
        mock_parent_listener.should_listen.return_value = True
        child.add_change_listener(mock_child_listener)
        parent.add_change_listener(mock_parent_listener)

        child.total = 100
        parent.total = 100
        parent.complete = 100
        expected_child_calls = [
            call.should_listen(child),
            call.update(child, 'total', 100)
        ]
        expected_parent_calls = [
            call.should_listen(parent),
            call.update(parent, 'total', 100),
            call.update(parent, 'total', 200),
            call.update(parent, 'complete', 100)
        ]
        self.assertTrue(expected_child_calls == mock_child_listener.mock_calls)
        self.assertTrue(
            expected_parent_calls == mock_parent_listener.mock_calls)
Example #7
0
    def testWorkUnitLogging(self):
        work_unit = build_logging.WorkUnit(name='test')
        work_unit.add_change_listener(self.log_source)

        self.log_source.buffered_messages = []
        msgs = self.log_source.buffered_messages

        work_unit.total = 200
        self.assertEquals(2, len(self.log_source.buffered_messages))
        self.assertEquals(enums.LogLevel.DEBUG, msgs[0][0])
        self.assertEquals('test', msgs[0][2])
        self.assertEquals(enums.LogLevel.INFO, msgs[1][0])
        self.assertRegexpMatches(msgs[1][3], re.compile('0 of 200'))
        self.assertRegexpMatches(msgs[1][3], re.compile('RUNNING'))
        self.assertEquals('test', msgs[1][2])
        work_unit.complete = 10
        self.assertEquals(4, len(self.log_source.buffered_messages))
        self.assertEquals(enums.LogLevel.DEBUG, msgs[2][0])
        self.assertEquals('test', msgs[2][2])
        self.assertEquals(enums.LogLevel.INFO, msgs[3][0])
        self.assertRegexpMatches(msgs[3][3], re.compile('10 of 200'))
        self.assertRegexpMatches(msgs[3][3], re.compile('RUNNING'))
        self.assertEquals('test', msgs[3][2])

        work_unit.complete = 200
        self.assertEquals(6, len(self.log_source.buffered_messages))
        self.assertEquals(enums.LogLevel.DEBUG, msgs[4][0])
        self.assertEquals('test', msgs[4][2])
        self.assertEquals(enums.LogLevel.INFO, msgs[5][0])
        self.assertRegexpMatches(msgs[5][3], re.compile('SUCCEEDED'))
        self.assertEquals('test', msgs[5][2])

        work_unit.complete = 0
        work_unit.total = 0
        self.assertEquals(10, len(self.log_source.buffered_messages))
        self.assertEquals(enums.LogLevel.DEBUG, msgs[8][0])
        self.assertEquals('test', msgs[8][2])
        self.assertEquals(enums.LogLevel.INFO, msgs[9][0])
        self.assertRegexpMatches(msgs[9][3], re.compile('SKIPPED'))
        self.assertEquals('test', msgs[9][2])
Example #8
0
 def testInvalidCountsThrowsError(self):
     work_unit = build_logging.WorkUnit('test')
     work_unit.complete = 100
     with self.assertRaises(ValueError):
         work_unit.total = 50