package me.prettyprint.hector.api;
import static me.prettyprint.hector.api.factory.HFactory.getOrCreateCluster;
import java.util.ArrayList;
import java.util.List;
import me.prettyprint.cassandra.BaseEmbededServerSetupTest;
import me.prettyprint.cassandra.serializers.StringSerializer;
import me.prettyprint.cassandra.service.ThriftColumnDef;
import me.prettyprint.hector.api.ddl.ColumnDefinition;
import me.prettyprint.hector.api.ddl.ColumnFamilyDefinition;
import me.prettyprint.hector.api.ddl.ComparatorType;
import me.prettyprint.hector.api.ddl.KeyspaceDefinition;
import me.prettyprint.hector.api.factory.HFactory;
import org.apache.cassandra.thrift.ColumnDef;
import org.apache.cassandra.thrift.IndexType;
import org.apache.cassandra.thrift.InvalidRequestException;
import org.apache.thrift.TException;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Ignore
public class KeyspaceCreationTest extends BaseEmbededServerSetupTest {
private static final Logger log = LoggerFactory
.getLogger(KeyspaceCreationTest.class);
private final static String KEYSPACE = "Keyspace2";
private static final StringSerializer se = new StringSerializer();
private Cluster cluster;
private static final int colCount = 6;
@Before
public void setupCase() {
cluster = getOrCreateCluster("MyCluster", "127.0.0.1:9170");
}
@After
public void teardownCase() {
cluster = null;
}
@Test
public void testCreateKeyspace() throws InvalidRequestException, TException {
List<ColumnFamilyDefinition> cf_defs = new ArrayList<ColumnFamilyDefinition>();
List<ColumnDef> columns = new ArrayList<ColumnDef>();
for (int i = 0; i < colCount; i++) {
String cName = "col" + i;
log.info("Creating column " + cName);
columns.add(newIndexedColumnDef(cName, "BytesType"));
}
List<ColumnDefinition> columnMetadata = ThriftColumnDef
.fromThriftList(columns);
ColumnFamilyDefinition cf_def = HFactory.createColumnFamilyDefinition(
KEYSPACE, "TEST_CF", ComparatorType.BYTESTYPE, columnMetadata);
cf_defs.add(cf_def);
makeKeyspace(KEYSPACE, cf_defs);
checkKeyspaces();
log.info("Done, all errors to console after this point likely due to shutdown");
}
public void checkKeyspaces() {
List<KeyspaceDefinition> ksDefs = null;
try {
ksDefs = cluster.describeKeyspaces();
} catch (Exception e) {
log.error("Unable to describe keyspaces", e);
}
if (ksDefs != null) {
for (KeyspaceDefinition ksDef : ksDefs) {
log.info(ksDef.getName().toString());
}
}
}
ColumnDef newIndexedColumnDef(String column_name, String comparer) {
ColumnDef cd = new ColumnDef(se.toByteBuffer(column_name), comparer);
cd.setIndex_name(column_name);
cd.setIndex_type(IndexType.KEYS);
return cd;
}
public void makeKeyspace(String keyspace, List<ColumnFamilyDefinition> cf_defs)
throws InvalidRequestException, TException {
log.info("Creating keyspace: " + keyspace);
try {
KeyspaceDefinition ks_def = HFactory.createKeyspaceDefinition(keyspace,
"org.apache.cassandra.locator.SimpleStrategy", 1, cf_defs);
cluster.addKeyspace(ks_def);
log.info("Created keyspace: " + keyspace);
} catch (Exception e) {
log.error("Unable to create keyspace " + keyspace, e);
}
}
}