package me.prettyprint.cassandra.model;
import static me.prettyprint.hector.api.factory.HFactory.createKeyspace;
import static me.prettyprint.hector.api.factory.HFactory.getOrCreateCluster;
import static org.junit.Assert.*;
import java.util.NoSuchElementException;
import java.util.UUID;
import me.prettyprint.cassandra.BaseEmbededServerSetupTest;
import me.prettyprint.cassandra.serializers.IntegerSerializer;
import me.prettyprint.cassandra.serializers.LongSerializer;
import me.prettyprint.cassandra.serializers.StringSerializer;
import me.prettyprint.cassandra.serializers.UUIDSerializer;
import me.prettyprint.cassandra.service.HColumnFamilyImpl;
import me.prettyprint.cassandra.utils.TimeUUIDUtils;
import me.prettyprint.hector.api.Cluster;
import me.prettyprint.hector.api.HColumnFamily;
import me.prettyprint.hector.api.Keyspace;
import me.prettyprint.hector.api.factory.HFactory;
import me.prettyprint.hector.api.mutation.Mutator;
import org.junit.Before;
import org.junit.Test;
public class HColumnFamilyTest extends BaseEmbededServerSetupTest {
private Keyspace keyspace;
private UUID timeUUID;
@Before
public void setupLocal() {
//setupClient();
Cluster cluster = getOrCreateCluster("MyCluster", "127.0.0.1:9170");
keyspace = createKeyspace("Keyspace1", cluster);
Mutator<String> mutator = HFactory.createMutator(keyspace, StringSerializer.get());
mutator.addInsertion("zznate", "Standard1", HFactory.createStringColumn("email", "nate@datastax.com"));
mutator.addInsertion("zznate", "Standard1", HFactory.createColumn("int", 1, StringSerializer.get(), IntegerSerializer.get()));
mutator.addInsertion("zznate", "Standard1", HFactory.createColumn("long", 1L, StringSerializer.get(), LongSerializer.get()));
timeUUID = TimeUUIDUtils.getTimeUUID(System.currentTimeMillis());
mutator.addInsertion("zznate", "Standard1", HFactory.createColumn("uuid", timeUUID, StringSerializer.get(), UUIDSerializer.get()));
mutator.execute();
}
@Test
public void testColumnFamilySetup() {
HColumnFamily<String, String> columnFamily = new HColumnFamilyImpl<String,String>(keyspace, "Standard1",StringSerializer.get(), StringSerializer.get());
columnFamily.addKey("zznate");
// columnFamily.loadSlice(15); columnFamily.addKey().loadSlice() ~ def. 100
assertEquals(1,columnFamily.getInt("int"));
assertEquals("nate@datastax.com",columnFamily.getString("email"));
assertEquals(1L, columnFamily.getLong("long"));
assertEquals(timeUUID, columnFamily.getUUID("uuid"));
}
@Test
public void testColumnFamilyReadahead() {
HColumnFamily<String, String> columnFamily = new HColumnFamilyImpl<String,String>(keyspace, "Standard1",StringSerializer.get(), StringSerializer.get());
columnFamily.addKey("zznate").setCount(10);
assertEquals(4,columnFamily.getColumns().size());
assertEquals(1,columnFamily.getInt("int"));
assertEquals("nate@datastax.com",columnFamily.getString("email"));
assertEquals(1L, columnFamily.getLong("long"));
assertEquals(timeUUID, columnFamily.getUUID("uuid"));
}
@Test
public void testClearAndRecall() {
HColumnFamily<String, String> columnFamily = new HColumnFamilyImpl<String,String>(keyspace, "Standard1",StringSerializer.get(), StringSerializer.get());
columnFamily.addKey("zznate").setCount(10);
assertEquals(4,columnFamily.getColumns().size());
assertEquals(1,columnFamily.getInt("int"));
assertEquals("nate@datastax.com",columnFamily.getString("email"));
assertEquals(1L, columnFamily.getLong("long"));
assertEquals(timeUUID, columnFamily.getUUID("uuid"));
columnFamily.clear();
assertNull(columnFamily.getUUID("uuid"));
assertEquals(4,columnFamily.getColumns().size());
assertEquals(timeUUID, columnFamily.getUUID("uuid"));
}
@Test
public void testToggleMultiget() {
Mutator<String> mutator = HFactory.createMutator(keyspace, StringSerializer.get());
mutator.addInsertion("patricioe", "Standard1", HFactory.createStringColumn("email", "patricioe@datastax.com"));
mutator.addInsertion("patricioe", "Standard1", HFactory.createColumn("int", 2, StringSerializer.get(), IntegerSerializer.get()));
mutator.addInsertion("patricioe", "Standard1", HFactory.createColumn("long", 2L, StringSerializer.get(), LongSerializer.get()));
timeUUID = TimeUUIDUtils.getTimeUUID(System.currentTimeMillis());
mutator.addInsertion("patricioe", "Standard1", HFactory.createColumn("uuid", timeUUID, StringSerializer.get(), UUIDSerializer.get()));
mutator.execute();
HColumnFamilyImpl<String, String> columnFamily = new HColumnFamilyImpl<String,String>(keyspace, "Standard1",StringSerializer.get(), StringSerializer.get());
columnFamily.addKey("zznate").addKey("patricioe").setCount(10);
assertEquals("nate@datastax.com",columnFamily.getString("email"));
assertTrue(columnFamily.hasNext());
columnFamily.next();
assertEquals("patricioe@datastax.com",columnFamily.getString("email"));
assertFalse(columnFamily.hasNext());
try {
columnFamily.next();
fail();
} catch (NoSuchElementException nsee) {
assertNotNull(nsee);
}
}
}