@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);
}