Package com.netflix.suro.sink.kafka

Source Code of com.netflix.suro.sink.kafka.ZkExternalResource

package com.netflix.suro.sink.kafka;

import org.I0Itec.zkclient.ZkClient;
import org.I0Itec.zkclient.exception.ZkMarshallingError;
import org.I0Itec.zkclient.serialize.ZkSerializer;
import org.apache.curator.test.TestingServer;
import org.junit.rules.ExternalResource;
import org.junit.rules.TemporaryFolder;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

public class ZkExternalResource extends ExternalResource {
    private TestingServer zkServer;
    private ZkClient    zkClient;
    private TemporaryFolder tempDir = new TemporaryFolder();


    @Override
    protected void before() throws Throwable {
        tempDir.create();

        zkServer = new TestingServer();

        zkClient = new ZkClient("localhost:" + zkServer.getPort(), 20000, 20000, new ZkSerializer() {
            @Override
            public byte[] serialize(Object data) throws ZkMarshallingError {
                try {
                    return ((String)data).getBytes("UTF-8");
                } catch (UnsupportedEncodingException e) {
                    throw new RuntimeException(e);
                }
            }

            @Override
            public Object deserialize(byte[] bytes) throws ZkMarshallingError {
                if (bytes == null)
                    return null;
                try {
                    return new String(bytes, "UTF-8");
                } catch (UnsupportedEncodingException e) {
                    throw new RuntimeException(e);
                }
            }
        });
    }

    @Override
    protected void after() {
        if (zkServer != null) {
            try {
                zkServer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        tempDir.delete();
    }

    public ZkClient getZkClient() {
        return zkClient;
    }
    public int getServerPort() { return zkServer.getPort(); }
    public String getConnectionString() { return zkServer.getConnectString(); }
}
TOP

Related Classes of com.netflix.suro.sink.kafka.ZkExternalResource

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.