3
votes

My Test Class :

public class NetworkSettingsDaoTest {

@Rule
public CassandraCQLUnit cassandraCQLUnit = new CassandraCQLUnit(new ClassPathCQLDataSet("simpleWithCreateKeyspace.cql"));
public static Session session;
public static NetworkSettingsDao networkSettingsDao;
@Before
public void init() throws ConfigurationException, TTransportException, IOException, InterruptedException{
    EmbeddedCassandraServerHelper.startEmbeddedCassandra(5600000L);
    //Thread.sleep(4*1000); //workaround for weak machine
    session = cassandraCQLUnit.getSession();
    networkSettingsDao = new NetworkSettingsDao();
}

@Test
public void should_have_started_and_execute_cql_script() throws Exception {
    ResultSet result = session.execute("select * from mytable WHERE id='myKey01'");
    assertThat(result.iterator().next().getString("value"), is("myValue01"));
}   
}

My simpleWithCreateKeyspace.cql file :

CREATE KEYSPACE NETWORKSETTINGS WITH replication={'class' : 'SimpleStrategy', 'replication_factor':1};
USE NETWORKSETTINGS;

CREATE TABLE STBDevice(
    KEY varchar,
    SETTINGS_COLUMN varchar,
    AMSIP varchar,
    PRIMARY KEY(KEY));

INSERT INTO STBDevice(KEY, SETTINGS_COLUMN,AMSIP) values('myKey01','myColumn1','myAMSIP1');

Exception :

java.lang.AssertionError: Cassandra daemon did not start within timeout at org.cassandraunit.utils.EmbeddedCassandraServerHelper.startEmbeddedCassandra(EmbeddedCassandraServerHelper.java:130) at org.cassandraunit.utils.EmbeddedCassandraServerHelper.startEmbeddedCassandra(EmbeddedCassandraServerHelper.java:85) at org.cassandraunit.utils.EmbeddedCassandraServerHelper.startEmbeddedCassandra(EmbeddedCassandraServerHelper.java:64) at org.cassandraunit.utils.EmbeddedCassandraServerHelper.startEmbeddedCassandra(EmbeddedCassandraServerHelper.java:56) at org.cassandraunit.BaseCassandraUnit.before(BaseCassandraUnit.java:28) at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:46) at org.junit.rules.RunRules.evaluate(RunRules.java:20) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

3

3 Answers

1
votes

In my case, the server ALWAYS started within the default 10 sec window until yesterday. Today, it takes 50 to 70 secs. No valid explanation. So, looks like the only option is to increase the timeout.

1
votes

Looks, It depends on the number of queries you fire on Cassandra.. If you have too many queries to run then you need to increase the timeout in EmbeddedCassandra annotation. @EmbeddedCassandra(timeout = 100000L)

-2
votes

This class helped to solve problems

package org.cassandraunit.test.spring.cql;
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;
import org.cassandraunit.spring.CassandraDataSet;
import org.cassandraunit.spring.CassandraUnitTestExecutionListener;
import org.cassandraunit.spring.EmbeddedCassandra;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.TestExecutionListeners;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;


@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners({ CassandraUnitTestExecutionListener.class })
@CassandraDataSet(value = { "simple.cql" })
@EmbeddedCassandra
public class SpringCQLScriptLoadTest {

@Test
public void should_have_started_and_execute_cql_script() throws Exception {
    Cluster cluster = Cluster.builder()
            .addContactPoints("127.0.0.1")
            .withPort(9142)
            .build();
    Session session = cluster.connect("cassandra_unit_keyspace");

    ResultSet result = session.execute("select * from mytable WHERE id='myKey01'");
    assertThat(result.iterator().next().getString("value"), is("myValue01"));
}
  }