Example #1
0
    def setUp(self):
        super(TestJonesClient, self).setUp()
        self.config = None
        self.service = 'testservice'
        self.hostname = '127.0.0.2'
        self.ev = threading.Event()

        self.jones = Jones(self.service, self.client)
        fixture.init_tree(self.jones)
        self.jones_client = JonesClient(self.client, self.service,
                                        self.default_cb, self.hostname)
Example #2
0
    def test_defaults_to_root(self):
        """
        If a hostname doesn't map to anything,
        make sure to default to the root.
        That way we don't have to add every
        host under our control to zk.
        """

        ev = threading.Event()
        hostname = '0.0.0.0'
        self.assertTrue(hostname not in fixture.ASSOCIATIONS.keys())

        def cb(config):
            ev.set()

        client = JonesClient(self.client, self.service, cb, hostname)
        ev.wait(MAGIC_NUMBER)
        self.assertEquals(client.config, fixture.CONFIG['root'])
        self.assertTrue(ev.isSet())

        ev.clear()
        self.jones.assoc_host(hostname, Env('parent'))
        ev.wait(MAGIC_NUMBER)
        self.assertEquals(client.config, fixture.PARENT)
        self.assertTrue(ev.isSet())
Example #3
0
    def setUp(self):
        super(TestJonesClient, self).setUp()
        self.config = None
        self.service = 'testservice'
        self.hostname = '127.0.0.2'
        self.ev = threading.Event()

        self.jones = Jones(self.service, self.client)
        fixture.init_tree(self.jones)
        self.jones_client = JonesClient(self.client, self.service,
                                        self.default_cb, self.hostname)
Example #4
0
class TestJonesClient(KazooTestCase):

    def setUp(self):
        super(TestJonesClient, self).setUp()
        self.config = None
        self.service = 'testservice'
        self.hostname = '127.0.0.2'
        self.ev = threading.Event()

        self.jones = Jones(self.service, self.client)
        fixture.init_tree(self.jones)
        self.jones_client = JonesClient(self.client, self.service,
                                        self.default_cb, self.hostname)

    def default_cb(self, config):
        self.config = config
        self.ev.set()

    def test_gets_config(self):
        self.ev.wait(MAGIC_NUMBER)
        self.assertEquals(self.jones_client, fixture.CHILD1)
        self.assertEquals(self.config, fixture.CHILD1)

    def test_default_value(self):
        self.ev.wait(MAGIC_NUMBER)
        self.assertEquals(self.jones_client.get('a'), fixture.CHILD1['a'])
        self.assertEquals(self.jones_client.get('notinhere', 1), 1)

    def test_raises_with_no_environment(self):
        self.assertRaises(
            EnvironmentNotFoundException,
            JonesClient,
            self.client, 'newservice'
        )

    def test_responds_to_remap(self):
        """test that changing the associations updates config properly."""

        self.ev.clear()
        self.jones.assoc_host(self.hostname, Env('parent'))
        self.ev.wait(MAGIC_NUMBER)
        self.assertEquals(self.config, fixture.PARENT)

    def test_defaults_to_root(self):
        """
        If a hostname doesn't map to anything,
        make sure to default to the root.
        That way we don't have to add every
        host under our control to zk.
        """

        ev = threading.Event()
        hostname = '0.0.0.0'
        self.assertTrue(hostname not in fixture.ASSOCIATIONS.keys())

        def cb(config):
            ev.set()

        client = JonesClient(self.client, self.service, cb, hostname)
        ev.wait(MAGIC_NUMBER)
        self.assertEquals(client.config, fixture.CONFIG['root'])
        self.assertTrue(ev.isSet())

        ev.clear()
        self.jones.assoc_host(hostname, Env('parent'))
        ev.wait(MAGIC_NUMBER)
        self.assertEquals(client.config, fixture.PARENT)
        self.assertTrue(ev.isSet())

    def test_works_if_zk_down(self):
        self.assertEquals(self.config, fixture.CHILD1)
        self.expire_session()
        self.assertEquals(self.config, fixture.CHILD1)

    def test_resets_watches(self):
        def test(fixt):
            self.ev.clear()
            self.jones.set_config(Env('parent'), {'k': fixt}, -1)
            self.ev.wait(MAGIC_NUMBER)
            self.assertEquals(self.config['k'], fixt)

        for fixt in ('a', 'b', 'c'):
            test(fixt)
Example #5
0
class TestJonesClient(KazooTestCase):
    def setUp(self):
        super(TestJonesClient, self).setUp()
        self.config = None
        self.service = 'testservice'
        self.hostname = '127.0.0.2'
        self.ev = threading.Event()

        self.jones = Jones(self.service, self.client)
        fixture.init_tree(self.jones)
        self.jones_client = JonesClient(self.client, self.service,
                                        self.default_cb, self.hostname)

    def default_cb(self, config):
        self.config = config
        self.ev.set()

    def test_gets_config(self):
        self.ev.wait(MAGIC_NUMBER)
        self.assertEquals(self.jones_client, fixture.CHILD1)
        self.assertEquals(self.config, fixture.CHILD1)

    def test_default_value(self):
        self.ev.wait(MAGIC_NUMBER)
        self.assertEquals(self.jones_client.get('a'), fixture.CHILD1['a'])
        self.assertEquals(self.jones_client.get('notinhere', 1), 1)

    def test_raises_with_no_environment(self):
        self.assertRaises(EnvironmentNotFoundException, JonesClient,
                          self.client, 'newservice')

    def test_responds_to_remap(self):
        """test that changing the associations updates config properly."""

        self.ev.clear()
        self.jones.assoc_host(self.hostname, Env('parent'))
        self.ev.wait(MAGIC_NUMBER)
        self.assertEquals(self.config, fixture.PARENT)

    def test_defaults_to_root(self):
        """
        If a hostname doesn't map to anything,
        make sure to default to the root.
        That way we don't have to add every
        host under our control to zk.
        """

        ev = threading.Event()
        hostname = '0.0.0.0'
        self.assertTrue(hostname not in fixture.ASSOCIATIONS.keys())

        def cb(config):
            ev.set()

        client = JonesClient(self.client, self.service, cb, hostname)
        ev.wait(MAGIC_NUMBER)
        self.assertEquals(client.config, fixture.CONFIG['root'])
        self.assertTrue(ev.isSet())

        ev.clear()
        self.jones.assoc_host(hostname, Env('parent'))
        ev.wait(MAGIC_NUMBER)
        self.assertEquals(client.config, fixture.PARENT)
        self.assertTrue(ev.isSet())

    def test_works_if_zk_down(self):
        self.assertEquals(self.config, fixture.CHILD1)
        self.expire_session()
        self.assertEquals(self.config, fixture.CHILD1)

    def test_resets_watches(self):
        def test(fixt):
            self.ev.clear()
            self.jones.set_config(Env('parent'), {'k': fixt}, -1)
            self.ev.wait(MAGIC_NUMBER)
            self.assertEquals(self.config['k'], fixt)

        for fixt in ('a', 'b', 'c'):
            test(fixt)