def test_build_alb_context(test_projects): context = cfngen.build_context('project-with-alb', stackname='project-with-alb--test') context = utils.remove_ordereddict(context) expected = {'certificate': 'arn:aws:iam::...:...', 'idle_timeout': '60', 'listeners': {'listener1': {'forward': 'target-group1', 'port': 80, 'protocol': 'http'}, 'listener2': {'forward': 'target-group1', 'port': 443, 'protocol': 'https'}, 'listener3': {'forward': 'target-group2', 'port': 8001, 'protocol': 'https'}}, 'stickiness': {'cookie-name': 'dummy-cookie', 'type': 'cookie'}, 'subnets': ['subnet-1d4eb46a', 'subnet-7a31dd46'], 'target_groups': {'target-group1': {'healthcheck': {'healthy_threshold': 2, 'interval': 5, 'path': '/ping', 'timeout': 4, 'unhealthy_threshold': 2}, 'port': 80, 'protocol': 'http'}, 'target-group2': {'healthcheck': {'healthy_threshold': 2, 'interval': 5, 'path': '/ping', 'timeout': 4, 'unhealthy_threshold': 2}, 'port': 8001, 'protocol': 'http'}}} assert context['alb'] == expected
def _wrapper(*args, **kwargs): res = func(*args, **kwargs) errcho( 'output:') # printing to stderr avoids corrupting structured data if isstr(res): print(res) else: print(pformat(remove_ordereddict(res))) return res
def test_merge_default_snippet(self): "merging a snippet into the defaults ensures all projects get that new default" # all projects now get 999 cpus. perfectly sane requirement. project_data = project.project_data('dummy1') project_data = utils.remove_ordereddict(project_data) expected_data = json.load(open(self.dummy1_config, 'r')) expected_data['vagrant']['cpus'] = 999 self.assertEqual(project_data, expected_data)
def test_merge_default_snippet(self): "merging a snippet into the defaults ensures all projects get that new default" # all projects now get 999 cpus. perfectly sane requirement. project_data = project.project_data('dummy1') project_data = utils.remove_ordereddict(project_data) expected_data = json.load(open(self.dummy1_config, 'r')) expected_data['vagrant']['cpus'] = 999 self.assertEqual(project_data, expected_data)
def test_deep_merge_default_snippet2_project3(self): """merging a snippet into the defaults ensures all projects and their alternative configuration also get that new default, even if it's deeply nested""" snippet = {'defaults': {'aws': { 'rds': { 'subnets': ['subnet-baz']}}}} project_data = project_files.project_data('dummy3', self.dummy_yaml, [snippet]) project_data = utils.remove_ordereddict(project_data) self.assertEqual(project_data['aws-alt']['alt-config1']['rds']['subnets'][0], 'subnet-baz')
def _wrapper(*args, **kwargs): if _sole_task(func.__name__): res = func(*args, **kwargs) errcho('output:') # printing to stderr avoids corrupting structured data if isstr(res): print(res) else: print(pformat(remove_ordereddict(res))) return res return func(*args, **kwargs)
def test_deep_merge_default_snippet2_project3(self): """merging a snippet into the defaults ensures all projects and their alternative configuration also get that new default, even if it's deeply nested""" snippet = {'defaults': {'aws': { 'rds': { 'subnets': ['subnet-baz']}}}} project_data = project_files.project_data('dummy3', self.dummy_yaml, [snippet]) project_data = utils.remove_ordereddict(project_data) self.assertEqual(project_data['aws-alt']['alt-config1']['rds']['subnets'][0], 'subnet-baz')
def _wrapper(*args, **kwargs): if _sole_task(func.__name__): res = func(*args, **kwargs) print 'output:\n' if isinstance(res, str) or isinstance(res, unicode): print res else: print pformat(remove_ordereddict(res)) return res return func(*args, **kwargs)
def test_configurations(self): expected = [ ('dummy1', self.dummy1_config), ('dummy2', self.dummy2_config), ('dummy3', self.dummy3_config), ] for pname, expected_path in expected: expected_data = json.load(open(expected_path, 'r')) project_data = project.project_data(pname) project_data = utils.remove_ordereddict(project_data) self.assertEqual(expected_data, project_data)
def test_configurations(self): expected = [ ('dummy1', self.dummy1_config), ('dummy2', self.dummy2_config), ('dummy3', self.dummy3_config), ] for pname, expected_path in expected: expected_data = json.load(open(expected_path, 'r')) project_data = project.project_data(pname) project_data = utils.remove_ordereddict(project_data) self.assertEqual(expected_data, project_data)
def _wrapper(*args, **kwargs): if _sole_task(func.__name__): res = func(*args, **kwargs) errcho('output:' ) # printing to stderr avoids corrupting structured data if isinstance(res, str) or isinstance(res, unicode): print res else: print pformat(remove_ordereddict(res)) return res return func(*args, **kwargs)
def test_merge_multiple_default_snippets(self): """merging multiple overlapping snippets into the defaults ensures all projects get the new defaults""" # all projects now get 999 cpus. perfectly sane requirement. project_data = project.project_data('dummy1') project_data = utils.remove_ordereddict(project_data) expected_data = json.load(open(self.dummy1_config, 'r')) expected_data['vagrant']['cpus'] = 999 expected_data['vagrant']['cpucap'] = 111 self.assertEqual(project_data, expected_data)
def test_merge_multiple_default_snippets(self): """merging multiple overlapping snippets into the defaults ensures all projects get the new defaults""" # all projects now get 999 cpus. perfectly sane requirement. project_data = project.project_data('dummy1') project_data = utils.remove_ordereddict(project_data) expected_data = json.load(open(self.dummy1_config, 'r')) expected_data['vagrant']['cpus'] = 999 expected_data['vagrant']['cpucap'] = 111 self.assertEqual(project_data, expected_data)
def test_deep_merge_project_snippet(self): """merging a snippet into the defaults ensures all projects get that new default, even alternative configurations, even if it's deeply nested""" # dummy1 ordinarily has no RDS settings at all. # by updating the project settings, I expect it to now have the rds section with the overrides snippet = {'dummy1': {'aws': { 'rds': { 'subnets': ['subnet-baz']}}}} project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet]) project_data = utils.remove_ordereddict(project_data) self.assertEqual(project_data['aws']['rds']['subnets'][0], 'subnet-baz')
def test_deep_merge_project_snippet(self): """merging a snippet into the defaults ensures all projects get that new default, even alternative configurations, even if it's deeply nested""" # dummy1 ordinarily has no RDS settings at all. # by updating the project settings, I expect it to now have the rds section with the overrides snippet = {'dummy1': {'aws': { 'rds': { 'subnets': ['subnet-baz']}}}} project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet]) project_data = utils.remove_ordereddict(project_data) self.assertEqual(project_data['aws']['rds']['subnets'][0], 'subnet-baz')
def test_merge_default_snippet(self): "merging a snippet into the defaults ensures all projects get that new default" # all projects now get 999 cpus. perfectly sane requirement. snippet = {'defaults': {'vagrant': { 'cpus': 999}}} project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet]) project_data = utils.remove_ordereddict(project_data) # load up the expected fixture and switch the value ... expected_data = json.load(open(self.dummy1_config, 'r')) expected_data['vagrant']['cpus'] = 999 # ... then compare to actual self.assertEqual(project_data, expected_data)
def test_merge_default_snippet(self): "merging a snippet into the defaults ensures all projects get that new default" # all projects now get 999 cpus. perfectly sane requirement. snippet = {'defaults': {'vagrant': { 'cpus': 999}}} project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet]) project_data = utils.remove_ordereddict(project_data) # load up the expected fixture and switch the value ... expected_data = json.load(open(self.dummy1_config, 'r')) expected_data['vagrant']['cpus'] = 999 # ... then compare to actual self.assertEqual(project_data, expected_data)
def test_deep_merge_default_snippet_but_excluded(self): """merging a snippet into the defaults ensures all projects get that new default. snippet is ignored if project is excluding that section""" cases = [ {'defaults': {'aws': {'rds': {'subnets': ['subnet-baz']}}}}, {'defaults': {'aws': {'ext': {'size': 999}}}}, {'defaults': {'aws-alt': {'rds': {'storage': 999}}}}, {'defaults': {'aws-alt': {'ext': {'size': 999}}}}, ] for snippet in cases: project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet]) project_data = utils.remove_ordereddict(project_data) expected_data = json.load(open(self.dummy1_config, 'r')) # dummy1 project has no rds, ext or alt-aws configs using those. nothing should have changed self.assertEqual(project_data, expected_data)
def test_deep_merge_project_snippet_altconfig(self): """merging a snippet into the defaults ensures all projects get that new default, even alternative configurations, even if it's deeply nested""" # dummy3 only has no RDS settings in it's alt-config section # by updating the project settings, I expect it to now have the rds section with the overrides # and for the altconfigs to replicate that snippet = {'dummy3': {'aws': { 'rds': { 'subnets': ['subnet-baz']}}}} project_data = project_files.project_data('dummy3', self.dummy_yaml, [snippet]) project_data = utils.remove_ordereddict(project_data) self.assertEqual(project_data['aws']['rds']['subnets'][0], 'subnet-baz') self.assertEqual(project_data['aws-alt']['alt-config1']['rds']['subnets'][0], 'subnet-baz')
def test_deep_merge_project_snippet_altconfig(self): """merging a snippet into the defaults ensures all projects get that new default, even alternative configurations, even if it's deeply nested""" # dummy3 only has no RDS settings in it's alt-config section # by updating the project settings, I expect it to now have the rds section with the overrides # and for the altconfigs to replicate that snippet = {'dummy3': {'aws': { 'rds': { 'subnets': ['subnet-baz']}}}} project_data = project_files.project_data('dummy3', self.dummy_yaml, [snippet]) project_data = utils.remove_ordereddict(project_data) self.assertEqual(project_data['aws']['rds']['subnets'][0], 'subnet-baz') self.assertEqual(project_data['aws-alt']['alt-config1']['rds']['subnets'][0], 'subnet-baz')
def test_deep_merge_default_snippet_but_excluded(self): """merging a snippet into the defaults ensures all projects get that new default. snippet is ignored if project is excluding that section""" cases = [ {'defaults': {'aws': {'rds': {'subnets': ['subnet-baz']}}}}, {'defaults': {'aws': {'ext': {'size': 999}}}}, {'defaults': {'aws-alt': {'rds': {'storage': 999}}}}, {'defaults': {'aws-alt': {'ext': {'size': 999}}}}, ] for snippet in cases: project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet]) project_data = utils.remove_ordereddict(project_data) expected_data = json.load(open(self.dummy1_config, 'r')) # dummy1 project has no rds, ext or alt-aws configs using those. nothing should have changed self.assertEqual(project_data, expected_data)
def test_merge_multiple_default_snippets(self): """merging multiple overlapping snippets into the defaults ensures all projects get the new defaults""" # all projects now get 999 cpus. perfectly sane requirement. snippet = {'defaults': {'vagrant': { 'cpucap': 10, # to be overriden by the override 'cpus': 999}}} snippet2 = {'defaults': {'vagrant': { 'cpucap': 111}}} snippet_list = [snippet, snippet2] project_data = project_files.project_data('dummy1', self.dummy_yaml, snippet_list) project_data = utils.remove_ordereddict(project_data) expected_data = json.load(open(self.dummy1_config, 'r')) expected_data['vagrant']['cpus'] = 999 expected_data['vagrant']['cpucap'] = 111 self.assertEqual(project_data, expected_data)
def test_merge_multiple_default_snippets(self): """merging multiple overlapping snippets into the defaults ensures all projects get the new defaults""" # all projects now get 999 cpus. perfectly sane requirement. snippet = {'defaults': {'vagrant': { 'cpucap': 10, # to be overriden by the override 'cpus': 999}}} snippet2 = {'defaults': {'vagrant': { 'cpucap': 111}}} snippet_list = [snippet, snippet2] project_data = project_files.project_data('dummy1', self.dummy_yaml, snippet_list) project_data = utils.remove_ordereddict(project_data) expected_data = json.load(open(self.dummy1_config, 'r')) expected_data['vagrant']['cpus'] = 999 expected_data['vagrant']['cpucap'] = 111 self.assertEqual(project_data, expected_data)
def test_deep_merge_default_snippet_altconfig(self): """merging a snippet into the defaults ensures all projects get that new default, even alternative configurations, even if it's deeply nested""" # dummy2 project DOES NOT provide any subnet overrides. it should inherit this override snippet = {'defaults': {'aws': { 'rds': { 'subnets': ['subnet-baz']}}}} project_data = project_files.project_data('dummy2', self.dummy_yaml, [snippet]) project_data = utils.remove_ordereddict(project_data) self.assertEqual(project_data['aws']['rds']['subnets'][0], 'subnet-baz') self.assertEqual(project_data['aws-alt']['alt-config1']['rds']['subnets'][0], 'subnet-baz') self.assertEqual(project_data['aws-alt']['fresh']['rds']['subnets'][0], 'subnet-baz') # load up the expected fixture and switch the value ... expected_data = json.load(open(self.dummy2_config, 'r')) expected_data['aws']['rds']['subnets'] = ['subnet-baz'] expected_data['aws-alt']['alt-config1']['rds']['subnets'] = ['subnet-baz'] expected_data['aws-alt']['fresh']['rds']['subnets'] = ['subnet-baz'] # ... then compare to actual self.assertEqual(expected_data, project_data)
def test_deep_merge_default_snippet_altconfig(self): """merging a snippet into the defaults ensures all projects get that new default, even alternative configurations, even if it's deeply nested""" # dummy2 project DOES NOT provide any subnet overrides. it should inherit this override snippet = {'defaults': {'aws': { 'rds': { 'subnets': ['subnet-baz']}}}} project_data = project_files.project_data('dummy2', self.dummy_yaml, [snippet]) project_data = utils.remove_ordereddict(project_data) self.assertEqual(project_data['aws']['rds']['subnets'][0], 'subnet-baz') self.assertEqual(project_data['aws-alt']['alt-config1']['rds']['subnets'][0], 'subnet-baz') self.assertEqual(project_data['aws-alt']['fresh']['rds']['subnets'][0], 'subnet-baz') # load up the expected fixture and switch the value ... expected_data = json.load(open(self.dummy2_config, 'r')) expected_data['aws']['rds']['subnets'] = ['subnet-baz'] expected_data['aws-alt']['alt-config1']['rds']['subnets'] = ['subnet-baz'] expected_data['aws-alt']['fresh']['rds']['subnets'] = ['subnet-baz'] # ... then compare to actual self.assertEqual(expected_data, project_data)
def project_config(pname): return core_utils.remove_ordereddict(project.project_data(pname))
def project_config(pname): return core_utils.remove_ordereddict(project.project_data(pname))