def test_clone_is_updated_if_remote_changes(self): h1_path = self._create_fake_hostgroup('h1', ['qa', 'boom']) m1_path = self._create_fake_module('m1', ['qa', 'boom']) ensure_environment(self.settings, 'test', 'master', hostgroups=['h1:boom'], modules=['m1:boom']) self._jens_update() self.assertBare('hostgroups/h1') self.assertBare('modules/m1') for branch in MANDATORY_BRANCHES: self.assertClone('hostgroups/h1/%s' % branch) self.assertClone('modules/m1/%s' % branch) h1_commit_id = add_commit_to_branch(self.settings, h1_path, 'qa') m1_commit_id = add_commit_to_branch(self.settings, m1_path, 'master') h1_boom_commit_id = add_commit_to_branch(self.settings, h1_path, 'boom') m1_boom_commit_id = add_commit_to_branch(self.settings, m1_path, 'boom') self._jens_update() self.assertClone('hostgroups/h1/qa', pointsto=h1_commit_id) self.assertClone('modules/m1/master', pointsto=m1_commit_id) self.assertClone('hostgroups/h1/boom', pointsto=h1_boom_commit_id) self.assertClone('modules/m1/boom', pointsto=m1_boom_commit_id)
def test_basic_updates(self): self._jens_refresh_metadata() fname = 'basic_updates_1' new_commit = add_commit_to_branch(self.environments, 'master', fname=fname) self._jens_refresh_metadata() self.assertEquals(get_repository_head(self.settings.ENV_METADATADIR), new_commit) # The reset is --hard self.assertTrue(os.path.isfile("%s/%s" % (self.settings.ENV_METADATADIR, fname))) new_commit = add_commit_to_branch(self.environments, 'master', fname=fname, remove=True) self._jens_refresh_metadata() self.assertFalse(os.path.isfile("%s/%s" % (self.settings.ENV_METADATADIR, fname))) fname = 'basic_updates_2' new_commit = add_commit_to_branch(self.repositories, 'master', fname=fname) self._jens_refresh_metadata() self.assertEquals(get_repository_head(self.settings.REPO_METADATADIR), new_commit) self.assertTrue(os.path.isfile("%s/%s" % (self.settings.REPO_METADATADIR, fname))) new_commit = add_commit_to_branch(self.repositories, 'master', fname=fname, remove=True) self._jens_refresh_metadata() self.assertEquals(get_repository_head(self.settings.REPO_METADATADIR), new_commit) self.assertFalse(os.path.isfile("%s/%s" % (self.settings.REPO_METADATADIR, fname)))
def test_basic_updates(self): self._jens_refresh_metadata() fname = 'basic_updates_1' new_commit = add_commit_to_branch(self.environments, 'master', fname=fname) self._jens_refresh_metadata() self.assertEqual(get_repository_head(self.settings.ENV_METADATADIR), new_commit) # The reset is --hard self.assertTrue(os.path.isfile("%s/%s" % (self.settings.ENV_METADATADIR, fname))) new_commit = add_commit_to_branch(self.environments, 'master', fname=fname, remove=True) self._jens_refresh_metadata() self.assertFalse(os.path.isfile("%s/%s" % (self.settings.ENV_METADATADIR, fname))) fname = 'basic_updates_2' new_commit = add_commit_to_branch(self.repositories, 'master', fname=fname) self._jens_refresh_metadata() self.assertEqual(get_repository_head(self.settings.REPO_METADATADIR), new_commit) self.assertTrue(os.path.isfile("%s/%s" % (self.settings.REPO_METADATADIR, fname))) new_commit = add_commit_to_branch(self.repositories, 'master', fname=fname, remove=True) self._jens_refresh_metadata() self.assertEqual(get_repository_head(self.settings.REPO_METADATADIR), new_commit) self.assertFalse(os.path.isfile("%s/%s" % (self.settings.REPO_METADATADIR, fname)))
def test_clone_is_updated_if_remotes_history_is_mangled(self): h1_path = self._create_fake_hostgroup('h1', ['qa', 'boom']) ensure_environment(self.settings, 'test', 'master', hostgroups=['h1:boom']) self._jens_update() self.assertBare('hostgroups/h1') bombs = [] for x in range(0,4): bombs.append(add_commit_to_branch(self.settings, h1_path, 'boom')) self._jens_update() self.assertClone('hostgroups/h1/boom', pointsto=bombs[-1]) reset_branch_to(self.settings, h1_path, "boom", bombs[0]) new_commit = add_commit_to_branch(self.settings, h1_path, 'boom', force=True) self._jens_update() self.assertClone('hostgroups/h1/boom', pointsto=new_commit)
def test_metadata_updates_if_ondemand_mode_is_enabled(self): self.settings.MODE = "ONDEMAND" self._jens_refresh_metadata() new_commit = add_commit_to_branch(self.environments, 'master') self._jens_refresh_metadata() self.assertEqual(get_repository_head(self.settings.ENV_METADATADIR), new_commit) new_commit = add_commit_to_branch(self.repositories, 'master') self._jens_refresh_metadata() self.assertEqual(get_repository_head(self.settings.REPO_METADATADIR), new_commit)
def test_metadata_updates_if_ondemand_mode_is_enabled(self): self.settings.MODE = "ONDEMAND" self._jens_refresh_metadata() new_commit = add_commit_to_branch(self.environments, 'master') self._jens_refresh_metadata() self.assertEquals(get_repository_head(self.settings.ENV_METADATADIR), new_commit) new_commit = add_commit_to_branch(self.repositories, 'master') self._jens_refresh_metadata() self.assertEquals(get_repository_head(self.settings.REPO_METADATADIR), new_commit)
def test_basic_updates(self): self._jens_refresh_metadata() new_commit = add_commit_to_branch(self.settings, \ self.environments, 'master') self._jens_refresh_metadata() self.assertEquals(get_repository_head(self.settings,\ self.settings.ENV_METADATADIR), new_commit) new_commit = add_commit_to_branch(self.settings, \ self.repositories, 'master') self._jens_refresh_metadata() self.assertEquals(get_repository_head(self.settings,\ self.settings.REPO_METADATADIR), new_commit)
def test_hint_readded_to_the_queue_if_fetch_fails(self): self.settings.MODE = "ONDEMAND" yi_path = self._create_fake_hostgroup('yi', ['qa']) old_yi_qa = get_refs(yi_path + '/.git')['qa'] yi_path_bare = yi_path.replace('/user/', '/bare/') self._jens_update() self.assertBare('hostgroups/yi') self.assertClone('hostgroups/yi/qa') new_yi_qa = add_commit_to_branch(self.settings, yi_path, 'qa') # ---- Make it temporary unavailable shutil.move("%s/refs" % yi_path_bare, "%s/goat" % yi_path_bare) self.assertEqual(0, count_pending_hints(self.settings)) self._jens_update(hints={'hostgroups': ['yi']}, errorsExpected=True) self.assertEqual(1, count_pending_hints(self.settings)) self.assertBare('hostgroups/yi') self.assertClone('hostgroups/yi/qa', pointsto=old_yi_qa) # ---- Bring it back shutil.move("%s/goat" % yi_path_bare, "%s/refs" % yi_path_bare) self._jens_update(hints={'hostgroups': ['yi']}) self.assertClone('hostgroups/yi/qa', pointsto=new_yi_qa)
def test_environments_are_created_and_known_branches_expanded_regardless_of_update_hints(self): self.settings.MODE = "ONDEMAND" h1_path = self._create_fake_hostgroup('h1', ['qa', 'boom']) old_h1_qa = get_refs(h1_path + '/.git')['qa'] m1_path = self._create_fake_module('m1', ['qa', 'boom']) self._jens_update() ensure_environment(self.settings, 'test', 'master', hostgroups=['h1:boom'], modules=['m1:boom']) new_h1_qa = add_commit_to_branch(self.settings, h1_path, 'qa') self._jens_update(hints={'hostgroups': ['other']}) self.assertClone('hostgroups/h1/qa', pointsto=old_h1_qa) self.assertEnvironmentLinks("test") self.assertEnvironmentOverride("test", 'modules/m1', 'boom') self.assertEnvironmentOverride("test", 'hostgroups/hg_h1', 'boom') self._jens_update(hints={'modules': ['m1'], 'hostgroups': ['h1']}) self.assertClone('hostgroups/h1/qa', pointsto=new_h1_qa) self.assertEnvironmentLinks("test") self.assertEnvironmentOverride("test", 'modules/m1', 'boom') self.assertEnvironmentOverride("test", 'hostgroups/hg_h1', 'boom')
def test_environments_is_history_is_mangled(self): self._jens_refresh_metadata() bombs = [] for x in range(0,4): bombs.append(add_commit_to_branch(self.environments, 'master')) self._jens_refresh_metadata() self.assertEqual(get_repository_head(self.environments), bombs[-1]) reset_branch_to(self.environments, "master", bombs[0]) new_commit = add_commit_to_branch(self.environments, \ 'master', force=True) self._jens_refresh_metadata() # Should be the same if it did a reset self.assertEqual(get_repository_head(self.settings.ENV_METADATADIR), new_commit)
def test_environments_is_history_is_mangled(self): self._jens_refresh_metadata() bombs = [] for x in range(0,4): bombs.append(add_commit_to_branch(self.environments, 'master')) self._jens_refresh_metadata() self.assertEquals(get_repository_head(self.environments), bombs[-1]) reset_branch_to(self.environments, "master", bombs[0]) new_commit = add_commit_to_branch(self.environments, \ 'master', force=True) self._jens_refresh_metadata() # Should be the same if it did a reset self.assertEquals(get_repository_head(self.settings.ENV_METADATADIR), new_commit)
def test_clones_refreshed_if_bare_in_hints(self): self.settings.MODE = "ONDEMAND" murdock_path = self._create_fake_module('murdock', ['qa']) old_qa = get_refs(murdock_path + '/.git')['qa'] old_site_qa = get_refs(self.site_user + '/.git')['qa'] old_hieradata_qa = get_refs(self.hieradata_user + '/.git')['qa'] ensure_environment(self.settings, 'test', 'master', modules=["murdock:qa"]) self._jens_update() self.assertClone('modules/murdock/qa', pointsto=old_qa) self.assertEnvironmentOverride("test", 'modules/murdock', 'qa') new_qa = add_commit_to_branch(self.settings, murdock_path, 'qa') new_site_qa = add_commit_to_branch(self.settings, self.site_user, 'qa') new_hieradata_qa = add_commit_to_branch(self.settings, self.hieradata_user, 'qa') # Test that it actually intersects existing and hints self._jens_update(hints={'modules': ['foo']}) self.assertClone('modules/murdock/qa', pointsto=old_qa) self.assertClone('common/site/qa', pointsto=old_site_qa) self.assertClone('common/hieradata/qa', pointsto=old_hieradata_qa) self.assertEnvironmentOverride("test", 'modules/murdock', 'qa') self._jens_update(hints= {'modules': ['murdock', 'foo'], 'hostgroups': ['foo'], 'common': ['site']}) self.assertClone('modules/murdock/qa', pointsto=new_qa) self.assertClone('common/site/qa', pointsto=new_site_qa) self.assertClone('common/hieradata/qa', pointsto=old_hieradata_qa) self.assertEnvironmentOverride("test", 'modules/murdock', 'qa') self._jens_update(hints= {'common': ['hieradata']}) self.assertClone('common/hieradata/qa', pointsto=new_hieradata_qa)
def test_clones_not_refreshed_if_constaints_enabled_but_no_partition_declared(self): self.settings.MODE = "ONDEMAND" murdock_path = self._create_fake_module('murdock', ['qa']) old_qa = get_refs(murdock_path + '/.git')['qa'] ensure_environment(self.settings, 'test', 'master', modules=["murdock:qa"]) self._jens_update() self.assertBare('modules/murdock') self.assertClone('modules/murdock/qa', pointsto=old_qa) self.assertEnvironmentOverride("test", 'modules/murdock', 'qa') new_qa = add_commit_to_branch(self.settings, murdock_path, 'qa') self._jens_update(hints={'hostgroups': ['foo']}) self.assertClone('modules/murdock/qa', pointsto=old_qa)
def test_override_to_commit_is_static(self): murdock_path = self._create_fake_hostgroup('murdock', ['qa']) commit_id = get_refs(murdock_path + '/.git')['qa'] override = "{0}{1}".format(COMMIT_PREFIX, commit_id) ensure_environment(self.settings, 'test', 'master', hostgroups=["murdock:%s" % override]) self._jens_update() # Check that the clone points to commit_id self.assertClone('hostgroups/murdock/qa', pointsto=commit_id) self.assertClone('hostgroups/murdock/.%s' % commit_id, pointsto=commit_id) self.assertEnvironmentOverride("test", 'hostgroups/hg_murdock', override) new_qa = add_commit_to_branch(self.settings, murdock_path, 'qa') self._jens_update() self.assertClone('hostgroups/murdock/qa', pointsto=new_qa) self.assertClone('hostgroups/murdock/.%s' % commit_id, pointsto=commit_id) self.assertEnvironmentOverride("test", 'hostgroups/hg_murdock', override)
def test_clones_not_refreshed_if_bare_not_in_hints(self): self.settings.MODE = "ONDEMAND" murdock_path = self._create_fake_hostgroup('murdock', ['qa']) old_qa = get_refs(murdock_path + '/.git')['qa'] ensure_environment(self.settings, 'test', 'master', hostgroups=["murdock:qa"]) self._jens_update() self.assertClone('hostgroups/murdock/qa', pointsto=old_qa) self.assertEnvironmentOverride("test", 'hostgroups/hg_murdock', 'qa') new_qa = add_commit_to_branch(self.settings, murdock_path, 'qa') self._jens_update(hints={'hostgroups': ['other']}) self.assertClone('hostgroups/murdock/qa', pointsto=old_qa) self.assertEnvironmentOverride("test", 'hostgroups/hg_murdock', 'qa') self._jens_update(hints=None) self.assertClone('hostgroups/murdock/qa', pointsto=new_qa) self.assertEnvironmentOverride("test", 'hostgroups/hg_murdock', 'qa')