<s> import json <EOL> import shutil <EOL> import tempfile <EOL> import unittest2 <EOL> from os import path <EOL> from neckbeard . loader import NeckbeardLoader <EOL> from neckbeard . configuration import ( <EOL> ConfigurationManager , <EOL> CircularSeedEnvironmentError , <EOL> ) <EOL> from neckbeard . scaling import MaxScalingBackend <EOL> class TestConfigContext ( unittest2 . TestCase ) : <EOL> def test_environment_constants ( self ) : <EOL> constants = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } , <EOL> } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> constants = constants , <EOL> secrets = { } , <EOL> secrets_tpl = { } , <EOL> environments = { } , <EOL> node_templates = { } , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> test1_constants = configuration . _get_environment_constants ( '<STR_LIT>' ) <EOL> self . assertEqual ( len ( test1_constants ) , <NUM_LIT:1> ) <EOL> self . assertEqual ( test1_constants [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> test2_constants = configuration . _get_environment_constants ( '<STR_LIT>' ) <EOL> self . assertEqual ( len ( test2_constants ) , <NUM_LIT:1> ) <EOL> self . assertEqual ( test2_constants [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> def test_environment_secrets ( self ) : <EOL> secrets = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } , <EOL> } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> constants = { } , <EOL> secrets = secrets , <EOL> secrets_tpl = { } , <EOL> environments = { } , <EOL> node_templates = { } , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> secrets = configuration . _get_environment_secrets ( '<STR_LIT>' ) <EOL> self . assertEqual ( len ( secrets ) , <NUM_LIT:1> ) <EOL> self . assertEqual ( secrets [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> secrets = configuration . _get_environment_secrets ( '<STR_LIT>' ) <EOL> self . assertEqual ( len ( secrets ) , <NUM_LIT:1> ) <EOL> self . assertEqual ( secrets [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> def test_seed_environment ( self ) : <EOL> constants = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:foo>' : '<STR_LIT>' , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:foo>' : '<STR_LIT>' , <EOL> } , <EOL> } , <EOL> } <EOL> secrets = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } , <EOL> } , <EOL> } <EOL> environments = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> constants = constants , <EOL> secrets = secrets , <EOL> secrets_tpl = { } , <EOL> environments = environments , <EOL> node_templates = { } , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> constants = configuration . _get_seed_environment_constants ( '<STR_LIT>' ) <EOL> self . assertEqual ( len ( constants ) , <NUM_LIT:1> ) <EOL> self . assertEqual ( constants [ '<STR_LIT:foo>' ] , '<STR_LIT>' ) <EOL> secrets = configuration . _get_seed_environment_secrets ( '<STR_LIT>' ) <EOL> self . assertEqual ( len ( secrets ) , <NUM_LIT:1> ) <EOL> self . assertEqual ( secrets [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> def test_seed_environment_not_set ( self ) : <EOL> environments = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> constants = { } , <EOL> secrets = { } , <EOL> secrets_tpl = { } , <EOL> environments = environments , <EOL> node_templates = { } , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> constants = configuration . _get_seed_environment_constants ( '<STR_LIT>' ) <EOL> self . assertEqual ( constants , { } ) <EOL> secrets = configuration . _get_seed_environment_secrets ( '<STR_LIT>' ) <EOL> self . assertEqual ( secrets , { } ) <EOL> def test_circular_seed_environment ( self ) : <EOL> environments = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> constants = { } , <EOL> secrets = { } , <EOL> secrets_tpl = { } , <EOL> environments = environments , <EOL> node_templates = { } , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> self . assertRaises ( <EOL> CircularSeedEnvironmentError , <EOL> configuration . _get_seed_environment_constants , <EOL> '<STR_LIT>' , <EOL> ) <EOL> self . assertRaises ( <EOL> CircularSeedEnvironmentError , <EOL> configuration . _get_seed_environment_constants , <EOL> '<STR_LIT>' , <EOL> ) <EOL> self . assertRaises ( <EOL> CircularSeedEnvironmentError , <EOL> configuration . _get_seed_environment_secrets , <EOL> '<STR_LIT>' , <EOL> ) <EOL> self . assertRaises ( <EOL> CircularSeedEnvironmentError , <EOL> configuration . _get_seed_environment_secrets , <EOL> '<STR_LIT>' , <EOL> ) <EOL> def test_node ( self ) : <EOL> environments = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : <NUM_LIT:0> , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> constants = { } , <EOL> secrets = { } , <EOL> secrets_tpl = { } , <EOL> environments = environments , <EOL> node_templates = { } , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> node_context = configuration . _get_resource_context ( <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:1> , <EOL> ) <EOL> expected = { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : <NUM_LIT:1> , <EOL> } <EOL> self . assertEqual ( node_context , expected ) <EOL> def test_node_not_zero ( self ) : <EOL> environments = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> constants = { } , <EOL> secrets = { } , <EOL> secrets_tpl = { } , <EOL> environments = environments , <EOL> node_templates = { } , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> node_context = configuration . _get_resource_context ( <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <NUM_LIT:7> , <EOL> ) <EOL> expected = { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : None , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : <NUM_LIT:7> , <EOL> } <EOL> self . assertEqual ( len ( node_context ) , len ( expected ) ) <EOL> for key , value in expected . items ( ) : <EOL> self . assertEqual ( node_context . get ( key ) , value ) <EOL> def test_seed_node ( self ) : <EOL> environments = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : <NUM_LIT:3> , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> constants = { } , <EOL> secrets = { } , <EOL> secrets_tpl = { } , <EOL> environments = environments , <EOL> node_templates = { } , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> node_context = configuration . _get_seed_node_context ( <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> <NUM_LIT:3> , <EOL> ) <EOL> expected = { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : None , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : <NUM_LIT:3> , <EOL> } <EOL> self . assertEqual ( len ( node_context ) , len ( expected ) ) <EOL> for key , value in expected . items ( ) : <EOL> self . assertEqual ( node_context . get ( key ) , value ) <EOL> node_context = configuration . _get_seed_node_context ( <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> <NUM_LIT:0> , <EOL> ) <EOL> expected = { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : None , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : <NUM_LIT:0> , <EOL> } <EOL> self . assertEqual ( len ( node_context ) , len ( expected ) ) <EOL> for key , value in expected . items ( ) : <EOL> self . assertEqual ( node_context . get ( key ) , value ) <EOL> def test_no_seed_node ( self ) : <EOL> environments = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { } , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> constants = { } , <EOL> secrets = { } , <EOL> secrets_tpl = { } , <EOL> environments = environments , <EOL> node_templates = { } , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> node_context = configuration . _get_seed_node_context ( <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> <NUM_LIT:0> , <EOL> ) <EOL> self . assertEqual ( len ( node_context ) , <NUM_LIT:0> ) <EOL> def test_circular_seed_node ( self ) : <EOL> environments = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> constants = { } , <EOL> secrets = { } , <EOL> secrets_tpl = { } , <EOL> environments = environments , <EOL> node_templates = { } , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> self . assertRaises ( <EOL> CircularSeedEnvironmentError , <EOL> configuration . _get_seed_node_context , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> <NUM_LIT:0> , <EOL> ) <EOL> def test_full_config_context ( self ) : <EOL> constants = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } , <EOL> } , <EOL> } <EOL> secrets = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } , <EOL> } , <EOL> } <EOL> secrets_tpl = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : None , <EOL> } , <EOL> } , <EOL> } <EOL> environments = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> constants = constants , <EOL> secrets = secrets , <EOL> secrets_tpl = secrets_tpl , <EOL> environments = environments , <EOL> node_templates = { } , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> context = configuration . _get_config_context_for_resource ( <EOL> environment = '<STR_LIT>' , <EOL> resource_type = '<STR_LIT>' , <EOL> name = '<STR_LIT>' , <EOL> scaling_index = <NUM_LIT:0> , <EOL> ) <EOL> expected_variables = [ <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> ] <EOL> self . assertEqual ( sorted ( context . keys ( ) ) , sorted ( expected_variables ) ) <EOL> self . assertEqual ( context [ '<STR_LIT>' ] [ '<STR_LIT>' ] [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( <EOL> context [ '<STR_LIT>' ] [ '<STR_LIT>' ] [ '<STR_LIT>' ] , <EOL> '<STR_LIT>' , <EOL> ) <EOL> self . assertEqual ( <EOL> context [ '<STR_LIT>' ] [ '<STR_LIT:name>' ] , <EOL> '<STR_LIT>' , <EOL> ) <EOL> self . assertEqual ( <EOL> context [ '<STR_LIT>' ] [ '<STR_LIT>' ] , <EOL> <NUM_LIT:0> , <EOL> ) <EOL> self . assertEqual ( len ( context [ '<STR_LIT>' ] [ '<STR_LIT>' ] ) , <NUM_LIT:0> ) <EOL> self . assertEqual ( len ( context [ '<STR_LIT>' ] [ '<STR_LIT>' ] ) , <NUM_LIT:0> ) <EOL> self . assertEqual ( len ( context [ '<STR_LIT>' ] ) , <NUM_LIT:0> ) <EOL> class TestNodeTemplateApplication ( unittest2 . TestCase ) : <EOL> def test_no_template ( self ) : <EOL> environments = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } <EOL> node_templates = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> environments = environments , <EOL> node_templates = node_templates , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> expanded_conf = configuration . _apply_node_template ( <EOL> '<STR_LIT>' , <EOL> environments [ '<STR_LIT>' ] [ '<STR_LIT>' ] [ '<STR_LIT>' ] [ '<STR_LIT>' ] , <EOL> ) <EOL> self . assertEqual ( expanded_conf [ '<STR_LIT:name>' ] , '<STR_LIT>' ) <EOL> def test_variables_added ( self ) : <EOL> environments = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } <EOL> node_templates = { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT>" : { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> "<STR_LIT>" : { } , <EOL> } , <EOL> } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> environments = environments , <EOL> node_templates = node_templates , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> expanded_conf = configuration . _apply_node_template ( <EOL> '<STR_LIT>' , <EOL> environments [ '<STR_LIT>' ] [ '<STR_LIT>' ] [ '<STR_LIT>' ] [ '<STR_LIT>' ] , <EOL> ) <EOL> self . assertEqual ( expanded_conf . get ( '<STR_LIT>' ) , '<STR_LIT>' ) <EOL> def test_resource_preference ( self ) : <EOL> environments = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT:foo>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } <EOL> node_templates = { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT>" : { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:foo>" : "<STR_LIT>" , <EOL> } , <EOL> "<STR_LIT>" : { } , <EOL> } , <EOL> } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> environments = environments , <EOL> node_templates = node_templates , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> expanded_conf = configuration . _apply_node_template ( <EOL> '<STR_LIT>' , <EOL> environments [ '<STR_LIT>' ] [ '<STR_LIT>' ] [ '<STR_LIT>' ] [ '<STR_LIT>' ] , <EOL> ) <EOL> self . assertEqual ( expanded_conf [ '<STR_LIT:foo>' ] , '<STR_LIT>' ) <EOL> def test_deep_merge ( self ) : <EOL> environments = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:foo>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } <EOL> node_templates = { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT>" : { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:foo>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : True , <EOL> } , <EOL> } , <EOL> } , <EOL> "<STR_LIT>" : { } , <EOL> } , <EOL> } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> environments = environments , <EOL> node_templates = node_templates , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> expanded_conf = configuration . _apply_node_template ( <EOL> '<STR_LIT>' , <EOL> environments [ '<STR_LIT>' ] [ '<STR_LIT>' ] [ '<STR_LIT>' ] [ '<STR_LIT>' ] , <EOL> ) <EOL> service_addons = expanded_conf . get ( "<STR_LIT>" , { } ) <EOL> celery = service_addons . get ( '<STR_LIT>' , { } ) <EOL> self . assertEqual ( celery . get ( '<STR_LIT>' ) , True ) <EOL> redis = service_addons . get ( '<STR_LIT>' , { } ) <EOL> self . assertEqual ( redis . get ( '<STR_LIT:foo>' ) , "<STR_LIT>" ) <EOL> self . assertEqual ( redis . get ( '<STR_LIT>' ) , "<STR_LIT>" ) <EOL> class TestConfigExpansion ( unittest2 . TestCase ) : <EOL> def test_environment_configuration ( self ) : <EOL> secrets = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:foo>' : '<STR_LIT>' , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:foo>' : '<STR_LIT>' , <EOL> } , <EOL> } , <EOL> } <EOL> constants = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:foo>' : '<STR_LIT>' , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:foo>' : '<STR_LIT>' , <EOL> } , <EOL> } , <EOL> } <EOL> environments = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:foo>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:foo>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : <NUM_LIT:1> , <EOL> "<STR_LIT>" : <NUM_LIT:2> , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } <EOL> node_templates = { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT>" : { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:foo>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : True , <EOL> } , <EOL> } , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> "<STR_LIT>" : { } , <EOL> } , <EOL> } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> constants = constants , <EOL> secrets = secrets , <EOL> secrets_tpl = { } , <EOL> environments = environments , <EOL> node_templates = node_templates , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> expanded_configuration = configuration . get_environment_config ( <EOL> '<STR_LIT>' , <EOL> ) <EOL> expected = { <EOL> "<STR_LIT>" : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:foo>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : True , <EOL> } , <EOL> } , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:foo>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : True , <EOL> } , <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : <NUM_LIT:1> , <EOL> "<STR_LIT>" : <NUM_LIT:2> , <EOL> } , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:foo>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : True , <EOL> } , <EOL> } , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : <NUM_LIT:1> , <EOL> "<STR_LIT>" : <NUM_LIT:2> , <EOL> } , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } <EOL> actual_unique_ids = expanded_configuration [ '<STR_LIT>' ] . keys ( ) <EOL> for unique_id in expected [ '<STR_LIT>' ] . keys ( ) : <EOL> self . assertTrue ( <EOL> unique_id in actual_unique_ids , <EOL> msg = "<STR_LIT>" % ( <EOL> unique_id , <EOL> actual_unique_ids , <EOL> ) , <EOL> ) <EOL> for unique_id in expected [ '<STR_LIT>' ] . keys ( ) : <EOL> self . assertDictEqual ( <EOL> expanded_configuration [ '<STR_LIT>' ] [ unique_id ] , <EOL> expected [ '<STR_LIT>' ] [ unique_id ] , <EOL> msg = "<STR_LIT>" % unique_id , <EOL> ) <EOL> def test_config_data_types ( self ) : <EOL> environments = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:list>" : [ <EOL> "<STR_LIT>" , <EOL> <NUM_LIT:1> , <EOL> <NUM_LIT:1.0> , <EOL> True , <EOL> None , <EOL> ] , <EOL> "<STR_LIT>" : u'<STR_LIT>' , <EOL> "<STR_LIT:int>" : <NUM_LIT:1> , <EOL> "<STR_LIT:float>" : <NUM_LIT> , <EOL> "<STR_LIT:bool>" : False , <EOL> "<STR_LIT:none>" : None , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> environments = environments , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> expanded_configuration = configuration . get_environment_config ( <EOL> '<STR_LIT>' , <EOL> ) <EOL> expected = { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:list>" : [ <EOL> "<STR_LIT>" , <EOL> <NUM_LIT:1> , <EOL> <NUM_LIT:1.0> , <EOL> True , <EOL> None , <EOL> ] , <EOL> "<STR_LIT>" : u'<STR_LIT>' , <EOL> "<STR_LIT:int>" : <NUM_LIT:1> , <EOL> "<STR_LIT:float>" : <NUM_LIT> , <EOL> "<STR_LIT:bool>" : False , <EOL> "<STR_LIT:none>" : None , <EOL> } , <EOL> } , <EOL> } , <EOL> } <EOL> self . assertEqual ( expanded_configuration , expected ) <EOL> def test_seeds_references_dont_error ( self ) : <EOL> environments = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> environments = environments , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> expanded_configuration = configuration . get_environment_config ( <EOL> '<STR_LIT>' , <EOL> ) <EOL> expected = { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } <EOL> self . assertEqual ( expanded_configuration , expected ) <EOL> def test_neckbeard_configuration ( self ) : <EOL> secrets = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:foo>' : '<STR_LIT>' , <EOL> } , <EOL> } , <EOL> } , <EOL> } <EOL> constants = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:path>' : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } <EOL> neckbeard_meta = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:path>' : "<STR_LIT>" , <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> environments = { } , <EOL> constants = constants , <EOL> secrets = secrets , <EOL> neckbeard_meta = neckbeard_meta , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> expanded_configuration = configuration . get_neckbeard_meta_config ( ) <EOL> expected = { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:path>' : "<STR_LIT>" , <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } <EOL> self . assertEqual ( expanded_configuration , expected ) <EOL> class TestFileDumping ( unittest2 . TestCase ) : <EOL> def setUp ( self ) : <EOL> self . tmp_dir = tempfile . mkdtemp ( ) <EOL> def tearDown ( self ) : <EOL> shutil . rmtree ( self . tmp_dir ) <EOL> def test_vanilla ( self ) : <EOL> environments = { <EOL> NeckbeardLoader . VERSION_OPTION : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : <NUM_LIT:1> , <EOL> "<STR_LIT>" : <NUM_LIT:2> , <EOL> } , <EOL> } , <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:name>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> } , <EOL> } , <EOL> } , <EOL> } , <EOL> } <EOL> configuration = ConfigurationManager ( <EOL> environments = environments , <EOL> scaling_backend = MaxScalingBackend ( ) , <EOL> ) <EOL> output_dir = path . join ( self . tmp_dir , '<STR_LIT>' ) <EOL> configuration . dump_environment_config ( <EOL> '<STR_LIT>' , <EOL> output_dir , <EOL> ) <EOL> self . assertTrue ( path . exists ( output_dir ) ) <EOL> for resource_type in [ '<STR_LIT>' , '<STR_LIT>' ] : <EOL> resource_type_dir = path . join ( output_dir , resource_type ) <EOL> self . assertTrue ( path . exists ( resource_type_dir ) ) <EOL> ec2_dir = path . join ( output_dir , '<STR_LIT>' ) <EOL> for unique_id in [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] : <EOL> resource_path = path . join ( ec2_dir , '<STR_LIT>' % unique_id ) <EOL> self . assertTrue ( path . exists ( resource_path ) ) <EOL> with open ( resource_path , '<STR_LIT:r>' ) as fp : <EOL> data = json . load ( fp ) <EOL> self . assertEqual ( data [ '<STR_LIT>' ] , unique_id ) <EOL> baz_dir = path . join ( output_dir , '<STR_LIT>' ) <EOL> unique_id = '<STR_LIT>' <EOL> resource_path = path . join ( baz_dir , '<STR_LIT>' % unique_id ) <EOL> self . assertTrue ( path . exists ( resource_path ) ) <EOL> with open ( resource_path , '<STR_LIT:r>' ) as fp : <EOL> data = json . load ( fp ) <EOL> self . assertEqual ( data [ '<STR_LIT>' ] , unique_id ) </s>
