package me.prettyprint.cassandra.service;
import static me.prettyprint.hector.api.factory.HFactory.createColumn;
import static me.prettyprint.hector.api.factory.HFactory.createKeyspace;
import static me.prettyprint.hector.api.factory.HFactory.createMutator;
import static me.prettyprint.hector.api.factory.HFactory.getOrCreateCluster;
import static org.junit.Assert.assertEquals;
import me.prettyprint.cassandra.BaseEmbededServerSetupTest;
import me.prettyprint.cassandra.serializers.IntegerSerializer;
import me.prettyprint.cassandra.serializers.StringSerializer;
import me.prettyprint.hector.api.Cluster;
import me.prettyprint.hector.api.Keyspace;
import me.prettyprint.hector.api.mutation.Mutator;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class KeyIteratorTest extends BaseEmbededServerSetupTest {
private static final StringSerializer se = new StringSerializer();
private static final IntegerSerializer is = IntegerSerializer.get();
private static final String CF = "Standard1";
private Cluster cluster;
private Keyspace keyspace;
@Before
public void setupCase() {
cluster = getOrCreateCluster("Test Cluster", "127.0.0.1:9170");
keyspace = createKeyspace("Keyspace1", cluster);
}
@After
public void teardownCase() {
keyspace = null;
cluster = null;
}
@Test
public void testIterator() {
// Insert 100 rows
Mutator<String> m = createMutator(keyspace, se);
for (int i = 1; i <= 9; i++) {
m.addInsertion("k" + i, CF, createColumn(new Integer(i), new Integer(i), is, is));
}
m.execute();
assertKeys(5, "k5", null);
assertKeys(9, null, null);
assertKeys(7, null, "k7");
assertStringKeys(5, "k5", null);
assertStringKeys(9, null, null);
assertStringKeys(7, null, "k7");
assertKeys(5, "k5", 1);
assertKeys(9, null, 2);
assertKeys(9, null, 5);
assertKeys(8, "k2", 7);
assertKeys(7, "k3", 10);
}
private void assertKeys(int expected, String start, String end) {
Iterable<String> it = new KeyIterator.Builder<String>(keyspace, CF, se).start(start).end(end).build();
int tot = 0;
for (String key : it)
tot++;
assertEquals(expected, tot);
}
private void assertStringKeys(int expected, String start, String end) {
StringKeyIterator sk = new StringKeyIterator.Builder(keyspace, CF).start(start).end(end).build();
int tot = 0;
for (String key : sk)
tot++;
assertEquals(expected, tot);
}
private void assertKeys(int expected, String start, int count) {
Iterable<String> it = new KeyIterator.Builder<String>(keyspace, CF, se).start(start).maxRowCount(count).build();
int tot = 0;
for (String key : it)
tot++;
assertEquals(expected, tot);
}
}