anvil-build/anvil/build_logging_test.py

90 lines
2.8 KiB
Python
Raw Normal View History

"""Test for the anvil logging components.
"""
__author__ = 'joshharrison@google.com'
import unittest2
from anvil import build_logging
from anvil import enums
class WorkUnitTest(unittest2.TestCase):
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.completed = 10
self.assertEquals(10, work_unit.completed)
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])
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)
def testInvalidCountsThrowsError(self):
work_unit = build_logging.WorkUnit('test')
work_unit.completed = 100
with self.assertRaises(ValueError):
work_unit.total = 50
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.completed = 0
self.assertEquals(enums.Status.SKIPPED, child.get_status())
self.assertEquals(enums.Status.RUNNING, parent.get_status())
parent.completed = 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)
if __name__ == '__main__':
unittest2.main()