All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.netflix.eureka2.testkit.junit.resources.ReadServerResource Maven / Gradle / Ivy

The newest version!
package com.netflix.eureka2.testkit.junit.resources;

import com.netflix.eureka2.client.resolver.ServerResolver;
import com.netflix.eureka2.client.resolver.ServerResolvers;
import com.netflix.eureka2.registry.datacenter.LocalDataCenterInfo.DataCenterType;
import com.netflix.eureka2.server.config.EurekaServerConfig;
import com.netflix.eureka2.server.transport.tcp.discovery.TcpDiscoveryServer;
import com.netflix.eureka2.testkit.embedded.server.EmbeddedReadServer;
import com.netflix.eureka2.transport.EurekaTransports.Codec;
import org.junit.rules.ExternalResource;

/**
 * @author Tomasz Bak
 */
public class ReadServerResource extends ExternalResource {

    public static final String DEFAULT_READ_CLUSTER_NAME = "read-test";

    private final String name;
    private final WriteServerResource writeServerResource;

    private EmbeddedReadServer server;
    private int discoveryPort;

    public ReadServerResource(WriteServerResource writeServerResource) {
        this(DEFAULT_READ_CLUSTER_NAME, writeServerResource);
    }

    public ReadServerResource(String name, WriteServerResource writeServerResource) {
        this.name = name;
        this.writeServerResource = writeServerResource;
    }

    @Override
    protected void before() throws Throwable {
        EurekaServerConfig config = EurekaServerConfig.baseBuilder()
                .withAppName(name)
                .withVipAddress(name)
                .withDataCenterType(DataCenterType.Basic)
                .withDiscoveryPort(0)
                .withShutDownPort(0)
                .withWebAdminPort(0)
                .withCodec(Codec.Avro)
                .build();
        ServerResolver registrationResolver = ServerResolvers.just("localhost", writeServerResource.getRegistrationPort());
        ServerResolver discoveryResolver = ServerResolvers.just("localhost", writeServerResource.getDiscoveryPort());
        server = new EmbeddedReadServer(config, registrationResolver, discoveryResolver, false, false);
        server.start();

        // Find ephemeral port numbers
        discoveryPort = server.getInjector().getInstance(TcpDiscoveryServer.class).serverPort();
    }

    @Override
    protected void after() {
        if (server != null) {
            server.shutdown();
        }
    }

    public String getName() {
        return name;
    }

    public int getDiscoveryPort() {
        return discoveryPort;
    }

    public ServerResolver getDiscoveryResolver() {
        return ServerResolvers.just("localhost", discoveryPort);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy