def setUp(self): super(TestRemoveOldVersions, self).setUp() self.rpms = model_factory.rpm_models(3, True) self.rpms.extend(model_factory.rpm_models(2, False)) self.srpms = model_factory.srpm_models(3, True) self.srpms.extend(model_factory.srpm_models(2, False)) self.drpms = model_factory.drpm_models(3, True) self.drpms.extend(model_factory.drpm_models(2, False))
def test_drpms_to_download(self, mock_package_list_generator, mock_create_downloader): """ test with only DRPMs specified to download """ file_handle = StringIO() self.metadata_files.get_metadata_file_handle = mock.MagicMock( spec_set=self.metadata_files.get_metadata_file_handle, side_effect=[StringIO(), file_handle], ) drpms = model_factory.drpm_models(3) for drpm in drpms: drpm.metadata['relativepath'] = '' mock_package_list_generator.side_effect = iter([[], drpms]) self.downloader.download = mock.MagicMock(spec_set=self.downloader.download) mock_create_downloader.return_value = self.downloader # call download, passing in only two of the 3 rpms as units we want report = self.reposync.download(self.metadata_files, set(), set(m.as_named_tuple for m in drpms[:2])) self.assertEqual(self.downloader.download.call_count, 2) self.assertEqual(mock_package_list_generator.call_count, 2) # verify that the download requests were correct requests = list(self.downloader.download.call_args[0][0]) self.assertEqual(len(requests), 2) self.assertEqual(requests[0].url, os.path.join(self.url, drpms[0].filename)) self.assertEqual(requests[0].destination, os.path.join(self.reposync.tmp_dir, drpms[0].filename)) self.assertTrue(requests[0].data is drpms[0]) self.assertEqual(requests[1].url, os.path.join(self.url, drpms[1].filename)) self.assertEqual(requests[1].destination, os.path.join(self.reposync.tmp_dir, drpms[1].filename)) self.assertTrue(requests[1].data is drpms[1]) self.assertTrue(file_handle.closed)
def test_drpms_check_all_and_associate_negative(self, mock_isfile, mock_save, mock_search_all_units): mock_search_all_units.return_value = [] mock_isfile.return_value = True units = model_factory.drpm_models(3) input_units = set([unit.as_named_tuple for unit in units]) result = check_all_and_associate(input_units, self.conduit) self.assertEqual(len(list(result)), 3)
def test_drpms_check_all_and_associate_positive(self, mock_isfile, mock_save, mock_search_all_units): units = model_factory.drpm_models(3) mock_search_all_units.return_value = units mock_isfile.return_value = True input_units = set([unit.as_named_tuple for unit in units]) for unit in units: unit.metadata['filename'] = 'test-filename' unit.storage_path = "existing_storage_path" result = check_all_and_associate(input_units, self.conduit) self.assertEqual(len(list(result)), 0)
def test_none_to_download(self, mock_package_list_generator): """ make sure it does nothing if there are no units specified to download """ self.metadata_files.get_metadata_file_handle = mock.MagicMock( spec_set=self.metadata_files.get_metadata_file_handle, side_effect=StringIO, ) mock_package_list_generator.side_effect = iter([model_factory.rpm_models(3), model_factory.drpm_models(3)]) report = self.reposync.download(self.metadata_files, set(), set()) self.assertTrue(report.success_flag) self.assertEqual(report.added_count, 0) self.assertEqual(report.removed_count, 0) self.assertEqual(report.updated_count, 0)
def test_calls_identify_wanted_and_existing(self, mock_check_repo, mock_identify, mock_generator, mock_open): presto_file = StringIO() mock_open.return_value = presto_file model = model_factory.drpm_models(1)[0] self.metadata_files.metadata[presto.METADATA_FILE_NAME] = {'local_path': '/path/to/presto'} mock_generator.return_value = [model.as_named_tuple] mock_identify.return_value = {model.as_named_tuple: 1024} mock_check_repo.return_value = set([model.as_named_tuple]) ret = self.reposync._decide_drpms_to_download(self.metadata_files) self.assertEqual(ret, (set([model.as_named_tuple]), 1, 1024)) mock_open.assert_called_once_with('/path/to/presto', 'r') mock_generator.assert_called_once_with(presto_file, presto.PACKAGE_TAG, presto.process_package_element) mock_identify.assert_called_once_with(mock_generator.return_value) self.assertTrue(presto_file.closed)
def test_all(self, mock_decide_drpms, mock_decide_rpms): rpm_model = model_factory.rpm_models(1)[0] drpm_model = model_factory.drpm_models(1)[0] mock_decide_rpms.return_value = (set([rpm_model.as_named_tuple]), 1, 1024) mock_decide_drpms.return_value = (set([drpm_model.as_named_tuple]), 1, 1024) self.conduit.set_progress = mock.MagicMock(spec_set=self.conduit.set_progress) ret = self.reposync._decide_what_to_download(self.metadata_files) self.assertEqual(ret[0], set([rpm_model.as_named_tuple])) self.assertEqual(ret[1], set([drpm_model.as_named_tuple])) self.assertEqual(len(ret), 2) mock_decide_rpms.assert_called_once_with(self.metadata_files) mock_decide_drpms.assert_called_once_with(self.metadata_files) self.assertEqual(self.conduit.set_progress.call_count, 1) # make sure we reported initial progress values correctly report = self.conduit.set_progress.call_args[0][0] self.assertEqual(report['content']['size_total'], 2048) self.assertEqual(report['content']['size_left'], 2048) self.assertEqual(report['content']['items_total'], 2) self.assertEqual(report['content']['items_left'], 2) self.assertEqual(report['content']['details']['rpm_total'], 1) self.assertEqual(report['content']['details']['drpm_total'], 1)