package com.netflix.raigad.resources;
import com.google.common.collect.ImmutableList;
import com.netflix.raigad.identity.InstanceManager;
import com.netflix.raigad.identity.RaigadInstance;
import com.netflix.raigad.startup.RaigadServer;
import com.netflix.raigad.utils.TribeUtils;
import mockit.Expectations;
import mockit.Mocked;
import mockit.integration.junit4.JMockit;
import org.junit.Test;
import org.junit.runner.RunWith;
import javax.ws.rs.core.Response;
import java.net.UnknownHostException;
import java.util.List;
import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;
@RunWith(JMockit.class)
public class TestElasticsearchConfig {
@Test
public void getNodes(
@Mocked final RaigadServer raigadServer,
@Mocked final TribeUtils tribeUtils,
@Mocked final InstanceManager instanceManager) throws Exception {
ElasticsearchConfig elasticsearchConfig = new ElasticsearchConfig(raigadServer, tribeUtils);
RaigadInstance raigadInstance1 = new RaigadInstance();
raigadInstance1.setApp("fake-app1");
RaigadInstance raigadInstance2 = new RaigadInstance();
raigadInstance2.setApp("fake-app2");
RaigadInstance raigadInstance3 = new RaigadInstance();
raigadInstance3.setApp("fake-app3");
final List<RaigadInstance> nodes = asList(raigadInstance1, raigadInstance2, raigadInstance3);
new Expectations() {
{
raigadServer.getInstanceManager();
result = instanceManager;
times = 1;
instanceManager.getAllInstances();
result = nodes;
times = 1;
}
};
Response response = elasticsearchConfig.getNodes();
assertEquals(200, response.getStatus());
}
@Test
public void getNodes_notFound(
@Mocked final RaigadServer raigadServer,
@Mocked final TribeUtils tribeUtils,
@Mocked final InstanceManager instanceManager) throws Exception {
ElasticsearchConfig elasticsearchConfig = new ElasticsearchConfig(raigadServer, tribeUtils);
final List<String> nodes = ImmutableList.of();
new Expectations() {
{
raigadServer.getInstanceManager();
result = instanceManager;
times = 1;
instanceManager.getAllInstances();
result = nodes;
times = 1;
}
};
Response response = elasticsearchConfig.getNodes();
assertEquals(200, response.getStatus());
}
@Test
public void getNodes_Error(
@Mocked final RaigadServer raigadServer,
@Mocked final TribeUtils tribeUtils,
@Mocked final InstanceManager instanceManager) throws Exception {
ElasticsearchConfig elasticsearchConfig = new ElasticsearchConfig(raigadServer, tribeUtils);
final List<String> nodes = null;
new Expectations() {
{
raigadServer.getInstanceManager();
result = instanceManager;
times = 1;
instanceManager.getAllInstances();
result = nodes;
times = 1;
}
};
Response response = elasticsearchConfig.getNodes();
assertEquals(500, response.getStatus());
}
@Test
public void getNodes_handlesUnknownHostException(
@Mocked final RaigadServer raigadServer,
@Mocked final TribeUtils tribeUtils,
@Mocked final InstanceManager instanceManager) throws Exception {
ElasticsearchConfig elasticsearchConfig = new ElasticsearchConfig(raigadServer, tribeUtils);
new Expectations() {
{
raigadServer.getInstanceManager();
result = instanceManager;
times = 1;
instanceManager.getAllInstances();
result = new UnknownHostException();
}
};
Response response = elasticsearchConfig.getNodes();
assertEquals(500, response.getStatus());
}
}