package com.lordofthejars.nosqlunit.cassandra;
import static com.lordofthejars.nosqlunit.cassandra.EmbeddedCassandra.EmbeddedCassandraRuleBuilder.newEmbeddedCassandraRule;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.verify;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import com.lordofthejars.nosqlunit.core.ConnectionManagement;
public class WhenEmbeddedCassandraLifecycleIsManaged {
@Mock
private EmbeddedCassandraServerHelper embeddedCassandraServerHelper;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void embedded_cassandra_should_be_registered_and_started_with_default_parameters() throws Throwable {
EmbeddedCassandra cassandraRule = newEmbeddedCassandraRule().build();
cassandraRule.embeddedCassandraLifecycleManager.setEmbeddedCassandraServerHelper(embeddedCassandraServerHelper);
Statement noStatement = new Statement() {
@Override
public void evaluate() throws Throwable {
assertThat(ConnectionManagement.getInstance().isConnectionRegistered(EmbeddedCassandraLifecycleManager.LOCALHOST, EmbeddedCassandraLifecycleManager.DEFAULT_PORT), is(true));
}
};
Statement decotedStatement = cassandraRule.apply(noStatement, Description.EMPTY);
decotedStatement.evaluate();
verify(embeddedCassandraServerHelper).startEmbeddedCassandra(EmbeddedCassandraLifecycleManager.DEFAULT_CASSANDRA_CONFIGURATION_FILE_LOCATION, EmbeddedCassandraLifecycleManager.DEFAULT_CASSANDRA_TARGET_PATH);
verify(embeddedCassandraServerHelper).stopEmbeddedCassandra();
assertThat(ConnectionManagement.getInstance().isConnectionRegistered(EmbeddedCassandraLifecycleManager.LOCALHOST, EmbeddedCassandraLifecycleManager.DEFAULT_PORT), is(false));
}
@Test
public void embedded_cassandra_should_be_registered_and_started_with_custom_parameters() throws Throwable {
EmbeddedCassandra cassandraRule = newEmbeddedCassandraRule().targetPath("tmp").cassandraConfigurationPath("my_cassandra.yaml").build();
cassandraRule.embeddedCassandraLifecycleManager.setEmbeddedCassandraServerHelper(embeddedCassandraServerHelper);
Statement noStatement = new Statement() {
@Override
public void evaluate() throws Throwable {
assertThat(ConnectionManagement.getInstance().isConnectionRegistered(EmbeddedCassandraLifecycleManager.LOCALHOST, EmbeddedCassandraLifecycleManager.DEFAULT_PORT), is(true));
}
};
Statement decotedStatement = cassandraRule.apply(noStatement, Description.EMPTY);
decotedStatement.evaluate();
verify(embeddedCassandraServerHelper).startEmbeddedCassandra("my_cassandra.yaml", "tmp");
verify(embeddedCassandraServerHelper).stopEmbeddedCassandra();
assertThat(ConnectionManagement.getInstance().isConnectionRegistered(EmbeddedCassandraLifecycleManager.LOCALHOST, EmbeddedCassandraLifecycleManager.DEFAULT_PORT), is(false));
}
@Test
public void simulataneous_cassandra_should_start_only_one_instance() throws Throwable {
EmbeddedCassandra cassandraRule = newEmbeddedCassandraRule().build();
cassandraRule.embeddedCassandraLifecycleManager.setEmbeddedCassandraServerHelper(embeddedCassandraServerHelper);
Statement noStatement = new Statement() {
@Override
public void evaluate() throws Throwable {
EmbeddedCassandra defaultEmbeddedCassandra =newEmbeddedCassandraRule().build();
defaultEmbeddedCassandra.embeddedCassandraLifecycleManager.setEmbeddedCassandraServerHelper(embeddedCassandraServerHelper);
Statement defaultNoStatement = new Statement() {
@Override
public void evaluate() throws Throwable {
assertThat(ConnectionManagement.getInstance().isConnectionRegistered(EmbeddedCassandraLifecycleManager.LOCALHOST, EmbeddedCassandraLifecycleManager.DEFAULT_PORT), is(true));
}
};
Statement defaultStatement = defaultEmbeddedCassandra.apply(defaultNoStatement, Description.EMPTY);
defaultStatement.evaluate();
assertThat(ConnectionManagement.getInstance().isConnectionRegistered(EmbeddedCassandraLifecycleManager.LOCALHOST, EmbeddedCassandraLifecycleManager.DEFAULT_PORT), is(true));
}
};
Statement decotedStatement = cassandraRule.apply(noStatement, Description.EMPTY);
decotedStatement.evaluate();
verify(embeddedCassandraServerHelper).startEmbeddedCassandra(EmbeddedCassandraLifecycleManager.DEFAULT_CASSANDRA_CONFIGURATION_FILE_LOCATION, EmbeddedCassandraLifecycleManager.DEFAULT_CASSANDRA_TARGET_PATH);
verify(embeddedCassandraServerHelper).stopEmbeddedCassandra();
assertThat(ConnectionManagement.getInstance().isConnectionRegistered(EmbeddedCassandraLifecycleManager.LOCALHOST, EmbeddedCassandraLifecycleManager.DEFAULT_PORT), is(false));
}
}