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

Reply via email to