use of org.apache.cassandra.streaming.messages.StreamMessage.Type.STREAM in project cassandra by apache.
the class StreamingTest method testStreaming.
private void testStreaming(int nodes, int replicationFactor, int rowCount, String compactionStrategy) throws Throwable {
try (Cluster cluster = builder().withNodes(nodes).withDataDirCount(// this test expects there to only be a single sstable to stream (with ddirs = 3, we get 3 sstables)
1).withConfig(config -> config.with(NETWORK)).start()) {
cluster.schemaChange("CREATE KEYSPACE " + KEYSPACE + " WITH replication = {'class': 'SimpleStrategy', 'replication_factor': " + replicationFactor + "};");
cluster.schemaChange(String.format("CREATE TABLE %s.cf (k text, c1 text, c2 text, PRIMARY KEY (k)) WITH compaction = {'class': '%s', 'enabled': 'true'}", KEYSPACE, compactionStrategy));
for (int i = 0; i < rowCount; ++i) {
for (int n = 1; n < nodes; ++n) cluster.get(n).executeInternal(String.format("INSERT INTO %s.cf (k, c1, c2) VALUES (?, 'value1', 'value2');", KEYSPACE), Integer.toString(i));
}
cluster.get(nodes).executeInternal("TRUNCATE system.available_ranges;");
{
Object[][] results = cluster.get(nodes).executeInternal(String.format("SELECT k, c1, c2 FROM %s.cf;", KEYSPACE));
Assert.assertEquals(0, results.length);
}
// collect message and state
registerSink(cluster, nodes);
cluster.get(nodes).runOnInstance(() -> StorageService.instance.rebuild(null, KEYSPACE, null, null));
{
Object[][] results = cluster.get(nodes).executeInternal(String.format("SELECT k, c1, c2 FROM %s.cf;", KEYSPACE));
Assert.assertEquals(1000, results.length);
Arrays.sort(results, Comparator.comparingInt(a -> Integer.parseInt((String) a[0])));
for (int i = 0; i < results.length; ++i) {
Assert.assertEquals(Integer.toString(i), results[i][0]);
Assert.assertEquals("value1", results[i][1]);
Assert.assertEquals("value2", results[i][2]);
}
}
}
}
Aggregations