Package org.aeonbits.owner.loaders

Source Code of org.aeonbits.owner.loaders.ZooKeeperLoaderTest$ZooKeeperConfig

/*
* Copyright (c) 2012-2014, Luigi R. Viggiano
* All rights reserved.
*
* This software is distributable under the BSD license.
* See the terms of the BSD license in the documentation provided with this software.
*/

package org.aeonbits.owner.loaders;

import org.aeonbits.owner.Config;
import org.aeonbits.owner.ConfigFactory;
import org.aeonbits.owner.Factory;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.test.TestingServer;
import org.apache.curator.utils.ZKPaths;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import sun.net.www.protocol.zookeeper.NoRetryPolicy;

import java.io.IOException;
import java.util.List;

import static java.util.Arrays.asList;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.aeonbits.owner.Config.Sources;
import static org.junit.Assert.*;

/**
* @author Koray Sariteke
* @author Luigi R. Viggiano
*/
public class ZooKeeperLoaderTest {
    private TestingServer server;
    private Factory configFactory;

    @Sources("zookeeper://127.0.0.1:65403/test")
    public static interface ZooKeeperConfig extends Config {
        String thanks();
        List<String> greetings();
        String notAvailable();
    }

    @Sources("zookeeper://127.0.0.1:65403/wrong")
    public static interface ZooKeeperWrongPathConfig extends Config {
        String thanks();
        List<String> greetings();
        String notAvailable();
    }

    @Test
    public void shouldLoadPropertiesFromZookeeperSource() throws Exception {
        ZooKeeperConfig sample = configFactory.create(ZooKeeperConfig.class);
        assertEquals("welcome", sample.thanks());
        assertTrue(sample.greetings().containsAll(asList("hi", "bonjour", "hiya", "hi!")));
        assertNull(sample.notAvailable());
    }

    @Test
    public void whenPathIsWrongEverythingIsNull() throws Exception {
        ZooKeeperWrongPathConfig config = configFactory.create(ZooKeeperWrongPathConfig.class);
        assertNull(config.notAvailable());
        assertNull(config.greetings());
        assertNull(config.thanks());
    }

    @Before
    public void before() throws Exception {
        server = new TestingServer(65403);
        server.start();

        String connectString = server.getConnectString();

        CuratorFramework client = CuratorFrameworkFactory.newClient(connectString, 50, 50, new NoRetryPolicy());
        try {
            client.start();
            client.blockUntilConnected(30, SECONDS);
            String basePath = "/test";
            setDataInZookeperServer(client, basePath, "thanks", "welcome");
            setDataInZookeperServer(client, basePath, "greetings", "hi,bonjour,hiya,hi!");
        } finally {
            client.close();
        }

        configFactory = ConfigFactory.newInstance();
        configFactory.registerLoader(new ZooKeeperLoader());
    }

    private void setDataInZookeperServer(CuratorFramework client,
                                         String basePath, String property, String value) throws Exception {
        String path = ZKPaths.makePath(basePath, property);
        client.create().creatingParentsIfNeeded().forPath(path, value.getBytes());
    }

    @After
    public void after() throws IOException {
        server.stop();
    }
}
TOP

Related Classes of org.aeonbits.owner.loaders.ZooKeeperLoaderTest$ZooKeeperConfig

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.