Esempio n. 1
0
 def test_contains(self):
     config = Configuration({"a": {"b": 1}})
     self.assertTrue("a" in config)
     self.assertFalse("foo" in config)
     view = config.get("a")
     self.assertTrue("b" in view)
     self.assertFalse("foo" in view)
Esempio n. 2
0
 def test_contains(self):
     config = Configuration({'a': {'b': 1}})
     self.assertTrue('a' in config)
     self.assertFalse('foo' in config)
     view = config.get('a')
     self.assertTrue('b' in view)
     self.assertFalse('foo' in view)
Esempio n. 3
0
 def test_env_replacement(self):
     config = Configuration({
         'replace': 'prefix_$(env.FOO_BAR)_suffix',
         'type_conversion': 'prefix_$(env.FOURTYTWO)',
         'keep_int': '$(env.FOURTYTWO)',
         'keep_dict': '$(env.DICT)',
         'no_parens': '$env.FOO_BAR',
         'no_namespace': '$(FOO_BAR)',
         'nested': '$(var.nested.foo)',
         'dashes': '$(var.dashed-name)',
     }, env={
         'FOO_BAR': '42',
         'FOURTYTWO': 42,
         'DICT': {},
     }, var=Configuration({
         'dashed-name': True,
         'nested': {
             'foo': 1764,
         }
     }))
     self.assertEqual(config.get('replace'), 'prefix_42_suffix')
     self.assertEqual(config.get('type_conversion'), 'prefix_42')
     self.assertEqual(config.get('keep_int'), 42)
     self.assertEqual(config.get('keep_dict'), {})
     self.assertEqual(config.get('no_parens'), '$env.FOO_BAR')
     self.assertEqual(config.get('no_namespace'), '$(FOO_BAR)')
     self.assertEqual(config.get('nested'), 1764)
     self.assertEqual(config.get('dashes'), True)
Esempio n. 4
0
 def test_setdefault_without_previous_value(self):
     config = Configuration({
         'nested': {}
     })
     config.setdefault('foo', 1)
     self.assertEqual(config.get('foo'), 1)
     config.setdefault('nested.foo', 2)
     self.assertEqual(config.get('nested.foo'), 2)
Esempio n. 5
0
class DisabledHealtcheckTest(WebServiceTestCase):
    service_class = DisabledHealtcheckInterface
    service_config = Configuration({'healthcheck': {'enabled': False}})

    def test_health_404(self):
        response = self.client.get('/_health/')
        self.assertEqual(response.status_code, 404)
Esempio n. 6
0
    def test_get_missing_key(self):
        config = Configuration({'a': {'b': 1}, 'c': None})

        self.assertIsNone(config.get('x'))
        self.assertEqual(config.get('x', 2), 2)

        self.assertIsNone(config.get('x.x'), None)
        self.assertEqual(config.get('x.x', 2), 2)

        self.assertIsNone(config.get('c.x'), None)
        self.assertEqual(config.get('c.x', 2), 2)
Esempio n. 7
0
 def test_setdefault_without_previous_value(self):
     config = Configuration({
         'nested': {}
     })
     config.setdefault('foo', 1)
     self.assertEqual(config.get('foo'), 1)
     config.setdefault('nested.foo', 2)
     self.assertEqual(config.get('nested.foo'), 2)
Esempio n. 8
0
class RequestTraceIdPropagation(WebServiceTestCase):
    service_class = Web
    service_config = Configuration({
        'tracing': {
            'request_header': 'X-Trace-Id'
        },
    })

    def test_trace_id_propagation(self):
        response = self.client.get('/test/', headers={'X-Trace-Id': 'forced'})
        self.assertEqual(response.headers.get('X-Trace-Id'), 'forced')
Esempio n. 9
0
class CustomHealthcheckEndpointTest(WebServiceTestCase):
    service_class = CustomHealthcheckEndpointInterface
    service_config = Configuration({'healthcheck': {'endpoint': '/_foo/'}})

    def test_health_404(self):
        response = self.client.get('/_health/')
        self.assertEqual(response.status_code, 404)

    def test_custom_endpoint_200(self):
        response = self.client.get('/_foo/')
        self.assertEqual(response.status_code, 200)
Esempio n. 10
0
    def test_get_missing_key(self):
        config = Configuration({"a": {"b": 1}, "c": None})

        self.assertIsNone(config.get("x"))
        self.assertEqual(config.get("x", 2), 2)

        self.assertIsNone(config.get("x.x"), None)
        self.assertEqual(config.get("x.x", 2), 2)

        self.assertIsNone(config.get("c.x"), None)
        self.assertEqual(config.get("c.x", 2), 2)
Esempio n. 11
0
    def test_get_missing_key(self):
        config = Configuration({'a': {'b': 1}, 'c': None})

        self.assertIsNone(config.get('x'))
        self.assertEqual(config.get('x', 2), 2)

        self.assertIsNone(config.get('x.x'), None)
        self.assertEqual(config.get('x.x', 2), 2)

        self.assertIsNone(config.get('c.x'), None)
        self.assertEqual(config.get('c.x', 2), 2)
Esempio n. 12
0
class GetInstanceTest(unittest.TestCase):
    config = Configuration(
        {"thing": {
            "class": "%s:ConfigurableThing" % __name__,
        }})

    def test_creates_instance_based_on_configuration(self):
        instance = self.config.get_instance("thing")
        self.assertIsInstance(instance, ConfigurableThing)

    def test_returns_the_same_instance_on_multiple_invocations(self):
        instance_1 = self.config.get_instance("thing")
        instance_2 = self.config.get_instance("thing")
        self.assertIs(instance_1, instance_2)
Esempio n. 13
0
class StorageInterfaceTest(StoreTestCase, RPCServiceTestCase):

    service_class = None  # Define the interface here
    service_config = Configuration({
        "store": {
            "class": "lymph.sqlalchemy.store:Store",
            "uri": "postgresql://postgres/lymph-test-sqlalchemy"
        }
    })

    @classmethod
    def url(cls):
        return cls.service_config.get("store.uri")

    @classmethod
    def create_store(cls, connection=None):
        store = cls.service_config.get_instance('store')
        store.connection = connection
        return store
Esempio n. 14
0
class GetDependencyTest(unittest.TestCase):
    config = Configuration({
        "dependencies": {
            "thing": {
                "class": "%s:ConfigurableThing" % __name__
            },
        },
        "key": {
            "client": "dep:thing",
        }
    })

    def test_creates_instance_based_on_configuration(self):
        instance = self.config.get_instance("key.client")
        self.assertIsInstance(instance, ConfigurableThing)

    def test_returns_the_same_instance_on_multiple_invocations(self):
        instance_1 = self.config.get_instance("key.client")
        instance_2 = self.config.get_instance("key.client")
        self.assertIs(instance_1, instance_2)
Esempio n. 15
0
class CreateInstanceTest(unittest.TestCase):
    config = Configuration({
        "thing": {
            "class": "%s:ConfigurableThing" % __name__,
            "param": 41
        },
        "section": {
            "thing": {
                "class": "%s:ConfigurableThing" % __name__,
                "param": 42
            },
        }
    })

    def test_create_instance(self):
        obj = self.config.create_instance('thing')
        self.assertIsInstance(obj, ConfigurableThing)
        self.assertEqual(obj.config['param'], 41)

    def test_create_instance_on_view(self):
        config = self.config.get('section')
        obj = config.create_instance('thing')
        self.assertIsInstance(obj, ConfigurableThing)
        self.assertEqual(obj.config['param'], 42)
Esempio n. 16
0
 def test_env_replacement(self):
     config = Configuration(
         {
             "replace": "prefix_$(env.FOO_BAR)_suffix",
             "type_conversion": "prefix_$(env.FOURTYTWO)",
             "keep_int": "$(env.FOURTYTWO)",
             "keep_dict": "$(env.DICT)",
             "no_parens": "$env.FOO_BAR",
             "no_namespace": "$(FOO_BAR)",
             "nested": "$(var.nested.foo)",
             "dashes": "$(var.dashed-name)",
         },
         env={"FOO_BAR": "42", "FOURTYTWO": 42, "DICT": {}},
         var=Configuration({"dashed-name": True, "nested": {"foo": 1764}}),
     )
     self.assertEqual(config.get("replace"), "prefix_42_suffix")
     self.assertEqual(config.get("type_conversion"), "prefix_42")
     self.assertEqual(config.get("keep_int"), 42)
     self.assertEqual(config.get("keep_dict"), {})
     self.assertEqual(config.get("no_parens"), "$env.FOO_BAR")
     self.assertEqual(config.get("no_namespace"), "$(FOO_BAR)")
     self.assertEqual(config.get("nested"), 1764)
     self.assertEqual(config.get("dashes"), True)
Esempio n. 17
0
 def test_update(self):
     config = Configuration({'a': 1, 'b': {'c': 2}})
     config.update({'a': 2})
     self.assertEqual(config.get('a'), 2)
     self.assertEqual(config.get('b.c'), 2)
Esempio n. 18
0
def generate_from_config(config_file):
    """Generate schema from config file path."""
    config = Configuration()
    config.load_file(config_file)

    return Schema(_get_interfaces(config))
Esempio n. 19
0
 def test_config_view_get(self):
     config = Configuration({"namespace": {"values": {"foo": 42}}})
     config_view = config.get("namespace")
     self.assertEqual(config_view.get("values.foo"), 42)
Esempio n. 20
0
 def test_config_view_get(self):
     config = Configuration({'namespace': {'values': {'foo': 42}}})
     config_view = config.get('namespace')
     self.assertEqual(config_view.get('values.foo'), 42)
Esempio n. 21
0
 def test_update(self):
     config = Configuration({"a": 1, "b": {"c": 2}})
     config.update({"a": 2})
     self.assertEqual(config.get("a"), 2)
     self.assertEqual(config.get("b.c"), 2)
Esempio n. 22
0
 def test_setdefault_with_previous_value(self):
     config = Configuration({"foo": 1, "nested": {"foo": 2}})
     config.setdefault("foo", 0)
     self.assertEqual(config.get("foo"), 1)
     config.setdefault("nested.foo", 0)
     self.assertEqual(config.get("nested.foo"), 2)
Esempio n. 23
0
File: main.py Progetto: torte/lymph
def setup_config(args):
    import os
    import sys

    from lymph.config import Configuration
    from lymph.utils.sockets import guess_external_ip

    vars_file = args.get('--vars') or os.environ.get('LYMPH_VARS')
    env_vars = Configuration(raw=True)
    if vars_file:
        env_vars.load_file(vars_file)
        os.environ['LYMPH_VARS'] = vars_file

    config = Configuration({'container': {}}, env=os.environ, var=env_vars)

    if 'LYMPH_NODE_CONFIG' in os.environ:
        config.load_file(os.environ['LYMPH_NODE_CONFIG'],
                         sections=[
                             'container', 'registry', 'event_system',
                             'plugins', 'dependencies'
                         ])

    config_file = args.get('--config') or os.environ.get(
        'LYMPH_CONFIG', '.lymph.yml')
    config.load_file(config_file)
    config.source = config_file

    config.setdefault('container.ip',
                      os.environ.get('LYMPH_NODE_IP', '127.0.0.1'))
    ip = args.get('--ip')
    if args.get('--guess-external-ip'):
        if ip:
            sys.exit('Cannot combine --ip and --guess-external-ip')
        ip = guess_external_ip()
        if ip is None:
            sys.exit('Cannot guess external ip, aborting ...')
    if ip:
        config.set('container.ip', ip)

    port = args.get('--port')
    if port:
        config.set('container.port', port)

    return config
Esempio n. 24
0
 def load_yaml(self, yml):
     return Configuration(yaml.load(textwrap.dedent(yml)))
Esempio n. 25
0
 def test_update(self):
     config = Configuration({'a': 1, 'b': {'c': 2}})
     config.update({'a': 2})
     self.assertEqual(config.get('a'), 2)
     self.assertEqual(config.get('b.c'), 2)
Esempio n. 26
0
File: main.py Progetto: 1-Hash/lymph
def setup_config(args):
    import os
    import sys

    from lymph.config import Configuration
    from lymph.utils.sockets import guess_external_ip

    vars_file = args.get('--vars') or os.environ.get('LYMPH_VARS')
    env_vars = Configuration(raw=True)
    if vars_file:
        env_vars.load_file(vars_file)
        os.environ['LYMPH_VARS'] = vars_file

    config = Configuration({'container': {}}, env=os.environ, var=env_vars)

    if 'LYMPH_NODE_CONFIG' in os.environ:
        config.load_file(os.environ['LYMPH_NODE_CONFIG'], sections=['container', 'registry', 'event_system', 'plugins', 'dependencies'])

    config_file = args.get('--config') or os.environ.get('LYMPH_CONFIG', '.lymph.yml')
    config.load_file(config_file)
    config.source = config_file

    config.setdefault('container.ip', os.environ.get('LYMPH_NODE_IP', '127.0.0.1'))
    ip = args.get('--ip')
    if args.get('--guess-external-ip'):
        if ip:
            sys.exit('Cannot combine --ip and --guess-external-ip')
        ip = guess_external_ip()
        if ip is None:
            sys.exit('Cannot guess external ip, aborting ...')
    if ip:
        config.set('container.ip', ip)

    port = args.get('--port')
    if port:
        config.set('container.port', port)

    return config
Esempio n. 27
0
File: main.py Progetto: adrpar/lymph
def setup_config(args):
    import os

    from lymph.config import Configuration
    from lymph.utils.sockets import guess_external_ip

    config = Configuration({
        'container': {}
    })

    if 'IRIS_NODE_CONFIG' in os.environ:
        config.load_file(os.environ['IRIS_NODE_CONFIG'], sections=['registry', 'event_system', 'plugins'])

    config_file = args.get('--config') or '.lymph.yml'
    config.load_file(config_file)
    config.source = config_file

    config.setdefault('container.ip', os.environ.get('IRIS_NODE_IP', '127.0.0.1'))
    ip = args.get('--ip')
    if args.get('--guess-external-ip'):
        if ip:
            print('cannot combine --ip and --guess-external-ip')
            return 1
        ip = guess_external_ip()
    if ip:
        config.set('container.ip', ip)

    port = args.get('--port')
    if port:
        config.set('container.port', port)

    return config
Esempio n. 28
0
def setup_config(args):
    import os

    from lymph.config import Configuration
    from lymph.utils.sockets import guess_external_ip

    config = Configuration({'container': {}})

    if 'IRIS_NODE_CONFIG' in os.environ:
        config.load_file(os.environ['IRIS_NODE_CONFIG'],
                         sections=['registry', 'event_system', 'plugins'])

    config_file = args.get('--config') or '.lymph.yml'
    config.load_file(config_file)
    config.source = config_file

    config.setdefault('container.ip',
                      os.environ.get('IRIS_NODE_IP', '127.0.0.1'))
    ip = args.get('--ip')
    if args.get('--guess-external-ip'):
        if ip:
            print('cannot combine --ip and --guess-external-ip')
            return 1
        ip = guess_external_ip()
    if ip:
        config.set('container.ip', ip)

    port = args.get('--port')
    if port:
        config.set('container.port', port)

    return config