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))
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))