Exemplo n.º 1
0
class WorkloadManagementTest(unittest.TestCase):
    def setUp(self):
        self.progress_manager = InMemoryProgressManager(
            Mock(spec=LocalDirectoryWorkingContext))
        self.workunit_provider = Mock(spec=WorkUnitProvider)

        self.workunit1 = MagicMock(spec=WorkUnit)
        self.file1 = "file1"
        self.workunit1.get_filename.return_value = self.file1

        self.workunit2 = MagicMock(spec=WorkUnit)
        self.file2 = "file2"
        self.workunit2.get_filename.return_value = self.file2

        workunits = [self.workunit1, self.workunit2]

        def get_workunit(index):
            workunit = workunits[index]
            self.progress_manager.lock(workunit.get_filename())
            return workunit

        self.workunit_provider.get_workunit.side_effect = (
            get_workunit(index) for index in range(2))
        image_manager = Mock(spec=ImageManager)

        self.undertest = ValidationModel(self.workunit_provider, image_manager,
                                         None)
        self.undertest.start_work()

    def test_workunits_on_demand(self):
        assert_that(self.undertest.get_current_workunit(),
                    equal_to(self.workunit1))
        assert_that(self.workunit_provider.get_workunit.call_count,
                    equal_to(1))

        self.undertest.next_workunit()
        assert_that(self.undertest.get_current_workunit(),
                    equal_to(self.workunit2))
        assert_that(self.workunit_provider.get_workunit.call_count,
                    equal_to(2))

    def test_shift_locks(self):
        assert_that(self.undertest.get_current_workunit(),
                    equal_to(self.workunit1))
        assert_that(self.progress_manager.owns_lock(self.file1),
                    equal_to(True))
        assert_that(self.progress_manager.owns_lock(self.file2),
                    equal_to(False))

        self.undertest.next_workunit()
        assert_that(self.undertest.get_current_workunit(),
                    equal_to(self.workunit2))

        # Note we don't give up lock just by going to next workunit.  It is
        # released once it is done processing.
        assert_that(self.progress_manager.owns_lock(self.file1),
                    equal_to(True))
        assert_that(self.progress_manager.owns_lock(self.file2),
                    equal_to(True))
Exemplo n.º 2
0
class WorkloadManagementTest(unittest.TestCase):
    def setUp(self):
        self.progress_manager = InMemoryProgressManager(Mock(spec=LocalDirectoryWorkingContext))
        self.workunit_provider = Mock(spec=WorkUnitProvider)

        self.workunit1 = MagicMock(spec=WorkUnit)
        self.file1 = "file1"
        self.workunit1.get_filename.return_value = self.file1

        self.workunit2 = MagicMock(spec=WorkUnit)
        self.file2 = "file2"
        self.workunit2.get_filename.return_value = self.file2

        workunits = [self.workunit1, self.workunit2]

        def get_workunit(index):
            workunit = workunits[index]
            self.progress_manager.lock(workunit.get_filename())
            return workunit

        self.workunit_provider.get_workunit.side_effect = (get_workunit(index) for index in xrange(2))
        image_manager = Mock(spec=ImageManager)

        self.undertest = ValidationModel(self.workunit_provider, image_manager, None)
        self.undertest.start_work()

    def test_workunits_on_demand(self):
        assert_that(self.undertest.get_current_workunit(), equal_to(self.workunit1))
        assert_that(self.workunit_provider.get_workunit.call_count, equal_to(1))

        self.undertest.next_workunit()
        assert_that(self.undertest.get_current_workunit(), equal_to(self.workunit2))
        assert_that(self.workunit_provider.get_workunit.call_count, equal_to(2))

    def test_shift_locks(self):
        assert_that(self.undertest.get_current_workunit(), equal_to(self.workunit1))
        assert_that(self.progress_manager.owns_lock(self.file1), equal_to(True))
        assert_that(self.progress_manager.owns_lock(self.file2), equal_to(False))

        self.undertest.next_workunit()
        assert_that(self.undertest.get_current_workunit(), equal_to(self.workunit2))

        # Note we don't give up lock just by going to next workunit.  It is
        # released once it is done processing.
        assert_that(self.progress_manager.owns_lock(self.file1), equal_to(True))
        assert_that(self.progress_manager.owns_lock(self.file2), equal_to(True))