package com.github.alexcojocaru.mojo.elasticsearch.v2.step;
import org.apache.maven.plugin.logging.Log;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import com.github.alexcojocaru.mojo.elasticsearch.v2.ClusterConfiguration;
import com.github.alexcojocaru.mojo.elasticsearch.v2.ElasticsearchSetupException;
import com.github.alexcojocaru.mojo.elasticsearch.v2.InstanceConfiguration;
import com.github.alexcojocaru.mojo.elasticsearch.v2.configuration.PluginArtifactResolver;
/**
* @author Alex Cojocaru
*
*/
@RunWith(MockitoJUnitRunner.class)
public class ValidateUniquePortsStepTest
{
@Mock
private PluginArtifactResolver artifactResolver;
@Mock
private Log log;
/**
* Test with 2 instances; the http ports are duplicates, the transport ports are unique.
*/
@Test(expected = ElasticsearchSetupException.class)
public void testWithTwoInstancesWithDuplicateHttpPorts()
{
ClusterConfiguration config = buildConfig(2000, 2010, 2000, 2011);
new ValidateUniquePortsStep().execute(config);
}
/**
* Test with 2 instances; the http ports are unique, the transport ports are duplicates.
*/
@Test(expected = ElasticsearchSetupException.class)
public void testWithTwoInstancesWithDuplicateTransportPorts()
{
ClusterConfiguration config = buildConfig(2000, 2010, 2001, 2010);
new ValidateUniquePortsStep().execute(config);
}
/**
* Test with 2 instances; all ports are unique.
*/
@Test
public void testWithTwoInstancesWithUniquePorts()
{
ClusterConfiguration config = buildConfig(2000, 2010, 2001, 2011);
new ValidateUniquePortsStep().execute(config);
}
/**
* Test with a single instance with duplicate ports.
*/
@Test(expected = ElasticsearchSetupException.class)
public void testWithSingleInstanceWithDuplicatePorts()
{
ClusterConfiguration config = buildConfig(2000, 2000);
new ValidateUniquePortsStep().execute(config);
}
/**
* Test with a single instance with unique ports.
*/
@Test
public void testWithSingleInstanceWithUniquePorts()
{
ClusterConfiguration config = buildConfig(2000, 2010);
new ValidateUniquePortsStep().execute(config);
}
private ClusterConfiguration buildConfig(int... ports)
{
ClusterConfiguration.Builder configBuilder = new ClusterConfiguration.Builder();
for (int i = 0; i < ports.length;)
{
int httpPort = ports[i++];
int transportPort = ports[i++];
configBuilder.addInstanceConfiguration(new InstanceConfiguration.Builder()
.withHttpPort(httpPort)
.withTransportPort(transportPort)
.build());
}
ClusterConfiguration config = configBuilder.build();
return config;
}
}