package com.hmsonline.virgil; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.apache.cassandra.thrift.ConsistencyLevel; import org.apache.cassandra.thrift.InvalidRequestException; import org.json.simple.JSONObject; import org.junit.Ignore; import org.junit.Test; import org.mortbay.util.ajax.JSON; import com.hmsonline.virgil.CassandraStorage; import com.hmsonline.virgil.VirgilService; @Ignore public class CassandraStorageTest extends VirgilServerTest { private static final String KEY = "TEST_ROW"; private static final String COLUMN_FAMILY = "TEST_CF"; private static final String KEYSPACE = "TEST_KEYSPACE"; @SuppressWarnings("unchecked") @Test public void testDatabaseServices() throws Exception { CassandraStorage dataService = VirgilService.storage; JSONObject slice = new JSONObject(); slice.put("FIRST_NAME", "John"); slice.put("LAST_NAME", "Smith"); try { // CLEANUP FROM BEFORE dataService.dropKeyspace(KEYSPACE); } catch (Exception e) { } // CREATE KEYSPACE dataService.addKeyspace(KEYSPACE); // CREATE COLUMN FAMILY dataService.createColumnFamily(KEYSPACE, COLUMN_FAMILY, null); // INSERT THE ROW dataService.setColumn(KEYSPACE, COLUMN_FAMILY, KEY, slice, ConsistencyLevel.ONE, false); // FETCH THE ROW (VERIFY INSERT ROW) JSONObject json = dataService.getSlice(KEYSPACE, COLUMN_FAMILY, KEY, ConsistencyLevel.ONE); assertEquals(JSON.parse("{\"FIRST_NAME\":\"John\",\"LAST_NAME\":\"Smith\"}"), json); // ADD A COLUMN dataService.addColumn(KEYSPACE, COLUMN_FAMILY, KEY, "STATE", "CA", ConsistencyLevel.ONE, false); // FETCH THE ROW (VERIFY ADD COLUMN) json = dataService.getSlice(KEYSPACE, COLUMN_FAMILY, KEY, ConsistencyLevel.ONE); assertEquals(JSON.parse("{\"STATE\":\"CA\",\"FIRST_NAME\":\"John\",\"LAST_NAME\":\"Smith\"}"), json); // DELETE THE ROW dataService.deleteRow(KEYSPACE, COLUMN_FAMILY, "TEST_SLICE", ConsistencyLevel.ONE, false); json = dataService.getSlice(KEYSPACE, COLUMN_FAMILY, "TEST_SLICE", ConsistencyLevel.ONE); assertEquals(null, json); // DROP COLUMN FAMILY dataService.dropColumnFamily(KEYSPACE, COLUMN_FAMILY); boolean threw = false; try { json = dataService.getSlice(KEYSPACE, COLUMN_FAMILY, "TEST_SLICE", ConsistencyLevel.ONE); } catch (InvalidRequestException ire) { threw = true; } assertTrue("Expected exception when accessing dropped column family.", threw); // DROP KEY SPACE dataService.dropKeyspace(KEYSPACE); boolean threw1 = false; try { json = dataService.getSlice(KEYSPACE, COLUMN_FAMILY, "TEST_SLICE", ConsistencyLevel.ONE); } catch (InvalidRequestException ire) { threw1 = true; } assertTrue("Expected exception when accessing dropped key space.", threw1); } }