def test_basic_sync_groups(self): global updated_progress updated_progress = None def set_progress(status_type, progress): global updated_progress updated_progress = progress ic = ImporterComps() repo_src_dir = os.path.join(self.data_dir, "pulp_unittest") feed_url = "file://%s" % (repo_src_dir) config = importer_mocks.get_basic_config(feed_url=feed_url) repo = mock.Mock(spec=Repository) repo.id = "test_basic_sync_groups" repo.working_dir = self.working_dir # Simulate a repo sync, copy the source contents to the repo.working_dir self.simulate_sync(repo, repo_src_dir) sync_conduit = importer_mocks.get_sync_conduit(pkg_dir=self.pkg_dir) status, summary, details = ic.sync(repo, sync_conduit, config, set_progress) self.assertTrue(status) self.assertEqual(summary["num_available_groups"], 3) self.assertEqual(summary["num_available_categories"], 2) self.assertEqual(summary["num_new_groups"], 3) self.assertEqual(summary["num_new_categories"], 2) self.assertEqual(summary["num_orphaned_groups"], 0) self.assertEqual(summary["num_orphaned_categories"], 0) self.assertTrue(summary["time_total_sec"] > 0)
def test_sync_groups_no_metadata_present(self): global updated_progress updated_progress = None def set_progress(status_type, progress): global updated_progress updated_progress = progress ic = ImporterComps() feed_url = "file://%s/simple_repo_no_comps" % (self.data_dir) config = importer_mocks.get_basic_config(feed_url=feed_url) repo = mock.Mock(spec=Repository) repo.working_dir = self.working_dir repo.id = "test_sync_groups_no_metadata_present" sync_conduit = importer_mocks.get_sync_conduit(pkg_dir=self.pkg_dir) status, summary, details = ic.sync(repo, sync_conduit, config, set_progress) self.assertTrue(status) self.assertEqual(updated_progress["state"], "FINISHED") self.assertEqual(summary["num_available_groups"], 0) self.assertEqual(summary["num_available_categories"], 0) self.assertEqual(summary["num_orphaned_groups"], 0) self.assertEqual(summary["num_orphaned_categories"], 0) self.assertEqual(summary["num_new_groups"], 0) self.assertEqual(summary["num_new_categories"], 0) self.assertTrue(summary["time_total_sec"] > 0)
def test_sync_of_orphaned_data(self): # Sync repo with some initial data # Modify the underlying directory to make it look like source has changed # Re-sync # Verify orphaned groups/categories were removed ic = ImporterComps() repo_src_dir = os.path.join(self.data_dir, "test_orphaned_data_initial") feed_url = "file://%s" % (repo_src_dir) config = importer_mocks.get_basic_config(feed_url=feed_url) repo = mock.Mock(spec=Repository) repo.id = "test_sync_of_orphaned_data" repo.working_dir = self.working_dir # Simulate a repo sync, copy the source contents to the repo.working_dir self.simulate_sync(repo, repo_src_dir) sync_conduit = importer_mocks.get_sync_conduit() status, summary, details = ic.sync(repo, sync_conduit, config) self.assertTrue(status) self.assertEqual(summary["num_available_groups"], 3) self.assertEqual(summary["num_available_categories"], 2) self.assertEqual(summary["num_new_groups"], 3) self.assertEqual(summary["num_new_categories"], 2) self.assertEqual(summary["num_orphaned_groups"], 0) self.assertEqual(summary["num_orphaned_categories"], 0) self.assertTrue(summary["time_total_sec"] > 0) # # Simulate the existing_units # avail_groups, avail_cats = comps.get_available(repo_src_dir) existing_cats, existing_cat_units = comps.get_new_category_units(avail_cats, {}, sync_conduit, repo) existing_groups, existing_group_units = comps.get_new_group_units(avail_groups, {}, sync_conduit, repo) self.assertEquals(len(existing_cats), 2) self.assertEquals(len(existing_groups), 3) existing_units = [] existing_units.extend(existing_group_units.values()) existing_units.extend(existing_cat_units.values()) self.assertEquals(len(existing_units), (len(existing_cats) + len(existing_groups))) # # Now we will simulate a change to the feed and pass in our existing units # repo_src_dir = os.path.join(self.data_dir, "test_orphaned_data_final") feed_url = "file://%s" % (repo_src_dir) config = importer_mocks.get_basic_config(feed_url=feed_url) sync_conduit = importer_mocks.get_sync_conduit(existing_units=existing_units) self.simulate_sync(repo, repo_src_dir) status, summary, details = ic.sync(repo, sync_conduit, config) self.assertTrue(status) self.assertEqual(summary["num_available_groups"], 2) self.assertEqual(summary["num_available_categories"], 1) self.assertEqual(summary["num_new_groups"], 0) self.assertEqual(summary["num_new_categories"], 0) self.assertEqual(summary["num_orphaned_groups"], 1) self.assertEqual(summary["num_orphaned_categories"], 1) self.assertTrue(summary["time_total_sec"] > 0)