Search in sources :

Example 1 with STREAM

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]);
            }
        }
    }
}
Also used : RECEIVED(org.apache.cassandra.streaming.messages.StreamMessage.Type.RECEIVED) InetAddressAndPort(org.apache.cassandra.locator.InetAddressAndPort) Arrays(java.util.Arrays) PREPARE_SYNACK(org.apache.cassandra.streaming.messages.StreamMessage.Type.PREPARE_SYNACK) STREAM_INIT(org.apache.cassandra.streaming.messages.StreamMessage.Type.STREAM_INIT) STREAMING(org.apache.cassandra.streaming.StreamSession.State.STREAMING) InetAddress(java.net.InetAddress) PREPARE_ACK(org.apache.cassandra.streaming.messages.StreamMessage.Type.PREPARE_ACK) StreamSession(org.apache.cassandra.streaming.StreamSession) PREPARE_SYN(org.apache.cassandra.streaming.messages.StreamMessage.Type.PREPARE_SYN) Map(java.util.Map) StreamMessage(org.apache.cassandra.streaming.messages.StreamMessage) LinkedList(java.util.LinkedList) NETWORK(org.apache.cassandra.distributed.api.Feature.NETWORK) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) StorageService(org.apache.cassandra.service.StorageService) Test(org.junit.Test) InetSocketAddress(java.net.InetSocketAddress) Collectors(java.util.stream.Collectors) Serializable(java.io.Serializable) List(java.util.List) IInvokableInstance(org.apache.cassandra.distributed.api.IInvokableInstance) PREPARING(org.apache.cassandra.streaming.StreamSession.State.PREPARING) STREAM(org.apache.cassandra.streaming.messages.StreamMessage.Type.STREAM) Cluster(org.apache.cassandra.distributed.Cluster) Queue(java.util.Queue) VisibleForTesting(com.google.common.annotations.VisibleForTesting) Comparator(java.util.Comparator) Assert(org.junit.Assert) WAIT_COMPLETE(org.apache.cassandra.streaming.StreamSession.State.WAIT_COMPLETE) Cluster(org.apache.cassandra.distributed.Cluster)

Aggregations

VisibleForTesting (com.google.common.annotations.VisibleForTesting)1 Serializable (java.io.Serializable)1 InetAddress (java.net.InetAddress)1 InetSocketAddress (java.net.InetSocketAddress)1 Arrays (java.util.Arrays)1 Comparator (java.util.Comparator)1 LinkedList (java.util.LinkedList)1 List (java.util.List)1 Map (java.util.Map)1 Queue (java.util.Queue)1 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)1 Collectors (java.util.stream.Collectors)1 Cluster (org.apache.cassandra.distributed.Cluster)1 NETWORK (org.apache.cassandra.distributed.api.Feature.NETWORK)1 IInvokableInstance (org.apache.cassandra.distributed.api.IInvokableInstance)1 InetAddressAndPort (org.apache.cassandra.locator.InetAddressAndPort)1 StorageService (org.apache.cassandra.service.StorageService)1 StreamSession (org.apache.cassandra.streaming.StreamSession)1 PREPARING (org.apache.cassandra.streaming.StreamSession.State.PREPARING)1 STREAMING (org.apache.cassandra.streaming.StreamSession.State.STREAMING)1