Author: [email protected]
Date: Thu Feb 24 15:45:28 2011
New Revision: 842
Log:
[AMDATU-318] Cassandra PM test now runs in Fork mode, spawning a new jvm for
each individual Test.
Modified:
branches/0.2/amdatu-cassandra/cassandra-persistencemanager/pom.xml
branches/0.2/amdatu-cassandra/cassandra-persistencemanager/src/test/java/org/amdatu/cassandra/persistencemanager/PersistenceManagerTest.java
branches/0.2/amdatu-cassandra/cassandra-persistencemanager/src/test/java/org/amdatu/cassandra/persistencemanager/mock/CassandraDaemonMock.java
Modified: branches/0.2/amdatu-cassandra/cassandra-persistencemanager/pom.xml
==============================================================================
--- branches/0.2/amdatu-cassandra/cassandra-persistencemanager/pom.xml
(original)
+++ branches/0.2/amdatu-cassandra/cassandra-persistencemanager/pom.xml Thu Feb
24 15:45:28 2011
@@ -48,6 +48,15 @@
<build>
<plugins>
<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.6</version>
+ <configuration>
+ <forkMode>pertest</forkMode>
+ <argLine>-enableassertions</argLine>
+ </configuration>
+ </plugin>
+ <plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
Modified:
branches/0.2/amdatu-cassandra/cassandra-persistencemanager/src/test/java/org/amdatu/cassandra/persistencemanager/PersistenceManagerTest.java
==============================================================================
---
branches/0.2/amdatu-cassandra/cassandra-persistencemanager/src/test/java/org/amdatu/cassandra/persistencemanager/PersistenceManagerTest.java
(original)
+++
branches/0.2/amdatu-cassandra/cassandra-persistencemanager/src/test/java/org/amdatu/cassandra/persistencemanager/PersistenceManagerTest.java
Thu Feb 24 15:45:28 2011
@@ -17,6 +17,7 @@
package org.amdatu.cassandra.persistencemanager;
+import java.io.IOException;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.net.URISyntaxException;
@@ -40,9 +41,7 @@
import org.apache.cassandra.thrift.InvalidRequestException;
import org.apache.cassandra.thrift.NotFoundException;
import org.apache.thrift.TException;
-import org.junit.After;
import org.junit.Assert;
-import org.junit.Before;
import org.junit.Test;
@@ -61,12 +60,16 @@
private HectorCassandraPersistenceManagerImpl m_hectorPM;
private ThriftCassandraPersistenceManagerImpl m_thriftPM;
- @Before
- public void setUp() throws InvalidRequestException, TException,
URISyntaxException, NotFoundException, InterruptedException {
+ private void startDaemon() throws InvalidRequestException, TException,
URISyntaxException, NotFoundException, InterruptedException, IOException {
// Start a new Cassandra daemon
CassandraConfigurationService config = new
CassandraConfigurationServiceMock();
m_daemon = new CassandraDaemonMock();
- m_daemon.start();
+ m_daemon.init();
+
+ Thread startThread = m_daemon.new
CassandraDaemonStartThread(m_daemon.getDaemon());
+ startThread.setDaemon(true);
+ startThread.start();
+ startThread.join();
// Setup Hector and Thrift persistence managers
m_hectorPM = new HectorCassandraPersistenceManagerImpl();
@@ -89,32 +92,52 @@
m_daemon.addColumnFamily(TEST_KEYSPACE_THRIFT,
TEST_STANDARD_CF, "Standard", "BytesType", null);
}
- @After
- public void tearDown() throws InvalidRequestException, TException {
+ private void stopDaemon() throws Exception {
m_daemon.dropKeyspace(TEST_KEYSPACE_HECTOR);
m_daemon.dropKeyspace(TEST_KEYSPACE_THRIFT);
+
+ Thread stopThread = m_daemon.new
CassandraDaemonStopThread(m_daemon.getDaemon());
+ stopThread.setDaemon(true);
+ stopThread.start();
+ stopThread.join();
}
@Test
- public void testGetRowKeys() throws CassandraException,
UnsupportedEncodingException {
- // Remove all rows first
- deleteAllRows(TEST_SUPER_CF);
- deleteAllRows(TEST_STANDARD_CF);
-
- testGetRowKeys(TEST_SUPER_CF, true, true);
- testGetRowKeys(TEST_SUPER_CF, true, false);
- testGetRowKeys(TEST_STANDARD_CF, false, true);
- testGetRowKeys(TEST_STANDARD_CF, false, false);
+ public void testGetRowKeys() throws Exception {
+ LOG.info("testGetRowKeys started");
+ startDaemon();
+
+ try {
+ // Remove all rows first
+ deleteAllRows(TEST_SUPER_CF);
+ deleteAllRows(TEST_STANDARD_CF);
+
+ testGetRowKeys(TEST_SUPER_CF, true, true);
+ testGetRowKeys(TEST_SUPER_CF, true, false);
+ testGetRowKeys(TEST_STANDARD_CF, false, true);
+ testGetRowKeys(TEST_STANDARD_CF, false, false);
+ } finally {
+ stopDaemon();
+ }
+ LOG.info("testGetRowKeys finished");
}
@Test
- public void testHectorObjectTypes() throws CassandraException,
UnsupportedEncodingException {
- // Remove all rows first
- deleteAllRows(TEST_SUPER_CF);
- deleteAllRows(TEST_STANDARD_CF);
-
- testValueTypes(TEST_SUPER_CF, true);
- testValueTypes(TEST_STANDARD_CF, false);
+ public void testHectorObjectTypes() throws Exception {
+ LOG.info("testHectorObjectTypes started");
+ startDaemon();
+
+ try {
+ // Remove all rows first
+ deleteAllRows(TEST_SUPER_CF);
+ deleteAllRows(TEST_STANDARD_CF);
+
+ testValueTypes(TEST_SUPER_CF, true);
+ testValueTypes(TEST_STANDARD_CF, false);
+ } finally {
+ stopDaemon();
+ }
+ LOG.info("testHectorObjectTypes finished");
}
private void testValueTypes(String cf, boolean isSuper) throws
CassandraException, UnsupportedEncodingException {
@@ -129,37 +152,37 @@
m_hectorPM.setValue(cf, "bRow", isSuper ? TEST_SUPERCOLUMN :
null, TEST_COLUMN, bytesValue);
byte[] bytesResult = m_hectorPM.getValue(cf, "bRow", isSuper ?
TEST_SUPERCOLUMN : null, TEST_COLUMN, byte[].class);
assertEqual(bytesValue, bytesResult);
-
+
// Double
boolean booleanValue = true;
m_hectorPM.setValue(cf, "bRow", isSuper ? TEST_SUPERCOLUMN :
null, TEST_COLUMN, booleanValue);
boolean booleanResult = m_hectorPM.getValue(cf, "bRow", isSuper
? TEST_SUPERCOLUMN : null, TEST_COLUMN, Boolean.class);
Assert.assertEquals(booleanValue, booleanResult);
-
+
// Date
Date dateValue = Calendar.getInstance().getTime();
m_hectorPM.setValue(cf, "bRow", isSuper ? TEST_SUPERCOLUMN :
null, TEST_COLUMN, dateValue);
Date dateResult = m_hectorPM.getValue(cf, "bRow", isSuper ?
TEST_SUPERCOLUMN : null, TEST_COLUMN, Date.class);
Assert.assertEquals(dateValue, dateResult);
-
+
// Long
long longValue = 37;
m_hectorPM.setValue(cf, "bRow", isSuper ? TEST_SUPERCOLUMN :
null, TEST_COLUMN, longValue);
long longResult = m_hectorPM.getValue(cf, "bRow", isSuper ?
TEST_SUPERCOLUMN : null, TEST_COLUMN, Long.class);
Assert.assertEquals(longValue, longResult);
-
+
// Integer
int intValue = 373;
m_hectorPM.setValue(cf, "bRow", isSuper ? TEST_SUPERCOLUMN :
null, TEST_COLUMN, intValue);
int intResult = m_hectorPM.getValue(cf, "bRow", isSuper ?
TEST_SUPERCOLUMN : null, TEST_COLUMN, Integer.class);
Assert.assertEquals(intValue, intResult);
-
+
// UUID
UUID uuidValue = UUID.randomUUID();
m_hectorPM.setValue(cf, "bRow", isSuper ? TEST_SUPERCOLUMN :
null, TEST_COLUMN, uuidValue);
UUID uuidResult = m_hectorPM.getValue(cf, "bRow", isSuper ?
TEST_SUPERCOLUMN : null, TEST_COLUMN, UUID.class);
Assert.assertEquals(uuidValue, uuidResult);
-
+
// Object (must be serializable)
Serializable objectValue = new SerializableObject();
m_hectorPM.setValue(cf, "bRow", isSuper ? TEST_SUPERCOLUMN :
null, TEST_COLUMN, objectValue);
@@ -237,7 +260,7 @@
Assert.assertTrue(column.getValue().startsWith("value_"));
}
}
-
+
// Step 4 - Test if 1000 rowkeys are returned
Assert.assertTrue(m_hectorPM.getRowKeys(cf).size() == 100);
Assert.assertTrue(m_thriftPM.getRowKeys(cf).size() == 100);
Modified:
branches/0.2/amdatu-cassandra/cassandra-persistencemanager/src/test/java/org/amdatu/cassandra/persistencemanager/mock/CassandraDaemonMock.java
==============================================================================
---
branches/0.2/amdatu-cassandra/cassandra-persistencemanager/src/test/java/org/amdatu/cassandra/persistencemanager/mock/CassandraDaemonMock.java
(original)
+++
branches/0.2/amdatu-cassandra/cassandra-persistencemanager/src/test/java/org/amdatu/cassandra/persistencemanager/mock/CassandraDaemonMock.java
Thu Feb 24 15:45:28 2011
@@ -16,6 +16,7 @@
*/
package org.amdatu.cassandra.persistencemanager.mock;
+import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
@@ -25,6 +26,7 @@
import org.amdatu.cassandra.application.CassandraDaemonService;
import org.apache.cassandra.db.Table;
+import org.apache.cassandra.service.ClientState;
import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.thrift.CassandraDaemon;
import org.apache.cassandra.thrift.CassandraServer;
@@ -58,7 +60,7 @@
public CassandraDaemonMock() {
}
- public synchronized void start() throws URISyntaxException,
TTransportException, InterruptedException {
+ public void init() throws URISyntaxException, TTransportException,
InterruptedException, IOException {
// Set config files
URL yaml = getClass().getResource("/cassandra.yaml");
System.setProperty("cassandra.config", yaml.toURI().toString());
@@ -66,13 +68,11 @@
System.setProperty("log4j.configuration", log4j.toURI().toString());
m_daemon = new CassandraDaemon();
- m_daemon.activate();
- m_cassandraServer = new CassandraServer();
+ m_daemon.init(null);
}
- public synchronized void stop() throws URISyntaxException {
- m_daemon.deactivate();
- m_daemon.destroy();
+ public CassandraDaemon getDaemon() {
+ return m_daemon;
}
public synchronized boolean keyspaceExists(String keyspaceName) throws
TException, InvalidRequestException {
@@ -259,4 +259,30 @@
private void log(String msg) {
LOG.info(msg);
}
+
+ public class CassandraDaemonStartThread extends Thread {
+ private CassandraDaemon m_daemon;
+
+ public CassandraDaemonStartThread(CassandraDaemon daemon) {
+ m_daemon = daemon;
+ }
+
+ public void run() {
+ m_daemon.start();
+ m_cassandraServer = new CassandraServer();
+ }
+ }
+
+ public class CassandraDaemonStopThread extends Thread {
+ private CassandraDaemon m_daemon;
+
+ public CassandraDaemonStopThread(CassandraDaemon daemon) {
+ m_daemon = daemon;
+ }
+
+ public void run() {
+ m_cassandraServer = null;
+ //m_daemon.stop();
+ }
+ }
}
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits