def test_merge_envs_with_param_default_merge_strategy(self): files = { 'env_1': json.dumps(self.env_1), 'env_2': json.dumps(self.env_2) } environment_files = ['env_1', 'env_2'] # Test env_util.merge_environments(environment_files, files, self.params, self.param_schemata) # Verify expected = { 'parameters': { 'json_value1': { u'3': [u'str3', u'str4'] }, 'json_value2': { u'4': [u'test3', u'test4'] }, 'del_lst_value1': '5,6', 'del_lst_value2': '7,8', 'lst_value1': [5, 6], 'str_value1': u'string3', 'str_value2': u'string4' }, 'resource_registry': { 'test::R1': "OS::Heat::RandomString", 'test::R2': "OS::Heat::None" }, 'parameter_defaults': { 'lst_value2': [7, 8] } } self.assertEqual(expected, self.params)
def test_merge_envs_with_param_specific_merge_strategy(self): merge_strategies = { "default": "overwrite", "lst_value1": "merge", "lst_value2": "merge", "json_value1": "deep_merge", } self.env_2["parameter_merge_strategies"] = merge_strategies files = {"env_1": json.dumps(self.env_1), "env_2": json.dumps(self.env_2)} environment_files = ["env_1", "env_2"] # Test env_util.merge_environments(environment_files, files, self.params, self.param_schemata) # Verify expected = { "parameters": { "json_value1": {u"3": [u"str3", u"str4"], u"1": [u"str1", u"str2"]}, # added "json_value2": {u"4": [u"test3", u"test4"]}, "del_lst_value1": "5,6", "del_lst_value2": "7,8", "lst_value1": [1, 2, 5, 6], # added "str_value1": u"string3", "str_value2": u"string4", }, "resource_registry": {"test::R1": "OS::Heat::RandomString", "test::R2": "OS::Heat::None"}, "parameter_defaults": {"lst_value2": [3, 4, 7, 8]}, } self.assertEqual(expected, self.params)
def test_merge_envs_with_param_specific_merge_strategy(self): merge_strategies = { 'default': 'overwrite', 'lst_value1': 'merge', 'lst_value2': 'merge', 'json_value1': 'deep_merge'} self.env_2['parameter_merge_strategies'] = merge_strategies files = {'env_1': json.dumps(self.env_1), 'env_2': json.dumps(self.env_2)} environment_files = ['env_1', 'env_2'] # Test env_util.merge_environments(environment_files, files, self.params, self.param_schemata) # Verify expected = {'parameters': { 'json_value1': {u'3': [u'str3', u'str4'], u'1': [u'str1', u'str2']}, # added 'json_value2': {u'4': [u'test3', u'test4']}, 'del_lst_value1': '5,6', 'del_lst_value2': '7,8', 'lst_value1': [1, 2, 5, 6], # added 'str_value1': u'string3', 'str_value2': u'string4'}, 'resource_registry': { 'test::R1': 'OS::Heat::RandomString', 'test::R2': 'OS::Heat::None'}, 'parameter_defaults': { 'lst_value2': [3, 4, 7, 8]}} self.assertEqual(expected, self.params)
def test_merge_environments(self): # Setup params = { 'parameters': { 'p0': 'CORRECT', 'p1': 'INCORRECT', 'p2': 'INCORRECT' } } env_1 = ''' {'parameters' : { 'p1': 'CORRECT', 'p2': 'INCORRECT-ENV-1', }}''' env_2 = ''' {'parameters': { 'p2': 'CORRECT' }}''' files = {'env_1': env_1, 'env_2': env_2} environment_files = ['env_1', 'env_2'] # Test env_util.merge_environments(environment_files, files, params) # Verify expected = { 'parameters': { 'p0': 'CORRECT', 'p1': 'CORRECT', 'p2': 'CORRECT', } } self.assertEqual(expected, params)
def test_merge_environments_no_env_files(self): files = {"env_1": json.dumps(self.env_1)} # Test - Should ignore env_1 in files env_util.merge_environments(None, files, self.params, self.param_schemata) # Verify expected = {"parameters": {}, "resource_registry": {}, "parameter_defaults": {}} self.assertEqual(expected, self.params)
def test_merge_envs_with_zeros(self): env1 = {'parameter_defaults': {'value1': 1}} env2 = {'parameter_defaults': {'value1': 0}} files = {'env_1': json.dumps(env1), 'env_2': json.dumps(env2)} environment_files = ['env_1', 'env_2'] param_schemata = { 'value1': parameters.Schema(parameters.Schema.NUMBER) } env_util.merge_environments(environment_files, files, self.params, param_schemata) self.assertEqual({'value1': 0}, self.params['parameter_defaults'])
def test_merge_envs_with_zeros(self): env1 = {'parameter_defaults': {'value1': 1}} env2 = {'parameter_defaults': {'value1': 0}} files = {'env_1': json.dumps(env1), 'env_2': json.dumps(env2)} environment_files = ['env_1', 'env_2'] param_schemata = { 'value1': parameters.Schema(parameters.Schema.NUMBER)} env_util.merge_environments(environment_files, files, self.params, param_schemata) self.assertEqual({'value1': 0}, self.params['parameter_defaults'])
def test_merge_environments_no_env_files(self): files = {'env_1': json.dumps(self.env_1)} # Test - Should ignore env_1 in files env_util.merge_environments(None, files, self.params, self.param_schemata) # Verify expected = { 'parameters': {}, 'resource_registry': {}, 'parameter_defaults': {} } self.assertEqual(expected, self.params)
def test_merge_environments_no_env_files(self): params = {'parameters': {'p0': 'CORRECT'}} env_1 = ''' {'parameters' : { 'p0': 'INCORRECT', }}''' files = {'env_1': env_1} # Test - Should ignore env_1 in files env_util.merge_environments(None, files, params) # Verify expected = {'parameters': {'p0': 'CORRECT'}} self.assertEqual(expected, params)
def test_merge_envs_with_zeros_in_maps(self): env1 = {'parameter_defaults': {'value1': {'foo': 1}}} env2 = {'parameter_defaults': {'value1': {'foo': 0}}, 'parameter_merge_strategies': {'value1': 'deep_merge'}} files = {'env_1': json.dumps(env1), 'env_2': json.dumps(env2)} environment_files = ['env_1', 'env_2'] param_schemata = { 'value1': parameters.Schema(parameters.Schema.MAP)} env_util.merge_environments(environment_files, files, self.params, param_schemata) self.assertEqual({'value1': {'foo': 0}}, self.params['parameter_defaults'])
def test_merge_environments_deep_merge(self): # Setup params = { 'parameters': { 'p0': 'CORRECT', 'p1': ['CORRECT1'], 'p2': { 'A': ['CORRECT1', 'CORRECT2'] }, 'p3': 'CORRECT1,CORRECT2' } } env_1 = ''' {'parameters' : { 'p1': ['CORRECT2', 'CORRECT3'], 'p2': {'B': ['CORRECT3', 'CORRECT4'], 'C': [CORRECT5]}, 'p3': 'CORRECT3,CORRECT4' }}''' env_2 = ''' {'parameters': { 'p2': {'C': ['CORRECT6']}, 'p3': 'CORRECT5,CORRECT6' }}''' files = {'env_1': env_1, 'env_2': env_2} environment_files = ['env_1', 'env_2'] # Test env_util.merge_environments(environment_files, files, params) # Verify # Does not work for comma_delimited_list. expected = { 'parameters': { 'p0': 'CORRECT', 'p1': ['CORRECT1', 'CORRECT2', 'CORRECT3'], 'p2': { 'A': ['CORRECT1', 'CORRECT2'], 'B': ['CORRECT3', 'CORRECT4'], 'C': ['CORRECT5', 'CORRECT6'] }, 'p3': 'CORRECT5,CORRECT6' } } self.assertEqual(expected, params)
def test_merge_envs_with_param_specific_merge_strategy(self): merge_strategies = { 'default': 'overwrite', 'lst_value1': 'merge', 'lst_value2': 'merge', 'json_value1': 'deep_merge' } self.env_2['parameter_merge_strategies'] = merge_strategies files = { 'env_1': json.dumps(self.env_1), 'env_2': json.dumps(self.env_2) } environment_files = ['env_1', 'env_2'] # Test env_util.merge_environments(environment_files, files, self.params, self.param_schemata) # Verify expected = { 'parameters': { 'json_value1': { u'3': [u'str3', u'str4'], u'1': [u'str1', u'str2'] }, # added 'json_value2': { u'4': [u'test3', u'test4'] }, 'del_lst_value1': '5,6', 'del_lst_value2': '7,8', 'lst_value1': [1, 2, 5, 6], # added 'str_value1': u'string3', 'str_value2': u'string4' }, 'resource_registry': { 'test::R1': 'OS::Heat::RandomString', 'test::R2': 'OS::Heat::None' }, 'parameter_defaults': { 'lst_value2': [3, 4, 7, 8] } } self.assertEqual(expected, self.params)
def test_merge_environments_no_env_files(self): files = {'env_1': json.dumps(self.env_1)} # Test - Should ignore env_1 in files env_util.merge_environments(None, files, self.params, self.param_schemata) # Verify expected = {'parameters': { 'str_value1': "test1", 'str_value2': "test2", 'del_lst_value1': '', 'del_lst_value2': '', 'lst_value1': [], 'lst_value2': [], 'json_value1': {}, 'json_value2': {}}, 'resource_registry': {}} self.assertEqual(expected, self.params)
def test_merge_envs_with_zeros_in_maps(self): env1 = {'parameter_defaults': {'value1': {'foo': 1}}} env2 = { 'parameter_defaults': { 'value1': { 'foo': 0 } }, 'parameter_merge_strategies': { 'value1': 'deep_merge' } } files = {'env_1': json.dumps(env1), 'env_2': json.dumps(env2)} environment_files = ['env_1', 'env_2'] param_schemata = {'value1': parameters.Schema(parameters.Schema.MAP)} env_util.merge_environments(environment_files, files, self.params, param_schemata) self.assertEqual({'value1': { 'foo': 0 }}, self.params['parameter_defaults'])
def test_merge_envs_with_param_default_merge_strategy(self): files = {"env_1": json.dumps(self.env_1), "env_2": json.dumps(self.env_2)} environment_files = ["env_1", "env_2"] # Test env_util.merge_environments(environment_files, files, self.params, self.param_schemata) # Verify expected = { "parameters": { "json_value1": {u"3": [u"str3", u"str4"]}, "json_value2": {u"4": [u"test3", u"test4"]}, "del_lst_value1": "5,6", "del_lst_value2": "7,8", "lst_value1": [5, 6], "str_value1": u"string3", "str_value2": u"string4", }, "resource_registry": {"test::R1": "OS::Heat::RandomString", "test::R2": "OS::Heat::None"}, "parameter_defaults": {"lst_value2": [7, 8]}, } self.assertEqual(expected, self.params)
def test_merge_environments_no_env_files(self): files = {'env_1': json.dumps(self.env_1)} # Test - Should ignore env_1 in files env_util.merge_environments(None, files, self.params, self.param_schemata) # Verify expected = { 'parameters': { 'str_value1': "test1", 'str_value2': "test2", 'del_lst_value1': '', 'del_lst_value2': '', 'lst_value1': [], 'lst_value2': [], 'json_value1': {}, 'json_value2': {} }, 'resource_registry': {} } self.assertEqual(expected, self.params)
def test_merge_envs_with_param_default_merge_strategy(self): files = {'env_1': json.dumps(self.env_1), 'env_2': json.dumps(self.env_2)} environment_files = ['env_1', 'env_2'] # Test env_util.merge_environments(environment_files, files, self.params, self.param_schemata) # Verify expected = {'parameters': { 'json_value1': {u'3': [u'str3', u'str4']}, 'json_value2': {u'4': [u'test3', u'test4']}, 'del_lst_value1': '5,6', 'del_lst_value2': '7,8', 'lst_value1': [5, 6], 'lst_value2': [7, 8], 'str_value1': u'string3', 'str_value2': u'string4'}, 'resource_registry': { 'test::R1': "OS::Heat::RandomString", 'test::R2': "OS::Heat::None"}} self.assertEqual(expected, self.params)