Search in sources :

Example 26 with Range

use of org.apache.cassandra.dht.Range in project cassandra by apache.

the class StreamingTransferTest method testRequestEmpty.

@Test
public void testRequestEmpty() throws Exception {
    // requesting empty data should succeed
    IPartitioner p = Util.testPartitioner();
    List<Range<Token>> ranges = new ArrayList<>();
    ranges.add(new Range<>(p.getMinimumToken(), p.getToken(ByteBufferUtil.bytes("key1"))));
    ranges.add(new Range<>(p.getToken(ByteBufferUtil.bytes("key2")), p.getMinimumToken()));
    StreamResultFuture futureResult = new StreamPlan("StreamingTransferTest").requestRanges(LOCAL, LOCAL, KEYSPACE2, ranges).execute();
    UUID planId = futureResult.planId;
    StreamState result = futureResult.get();
    assert planId.equals(result.planId);
    assert result.description.equals("StreamingTransferTest");
    // we should have completed session with empty transfer
    assert result.sessions.size() == 1;
    SessionInfo session = Iterables.get(result.sessions, 0);
    assert session.peer.equals(LOCAL);
    assert session.getTotalFilesReceived() == 0;
    assert session.getTotalFilesSent() == 0;
    assert session.getTotalSizeReceived() == 0;
    assert session.getTotalSizeSent() == 0;
}
Also used : Range(org.apache.cassandra.dht.Range) IPartitioner(org.apache.cassandra.dht.IPartitioner) Test(org.junit.Test)

Example 27 with Range

use of org.apache.cassandra.dht.Range in project cassandra by apache.

the class MerkleTreeTest method testHashRandom.

@Test
public void testHashRandom() {
    int max = 1000000;
    TOKEN_SCALE = new BigInteger("" + max);
    mt = new MerkleTree(partitioner, fullRange(), RECOMMENDED_DEPTH, 32);
    Random random = new Random();
    while (true) {
        if (!mt.split(tok(random.nextInt(max))))
            break;
    }
    // validate the tree
    TreeRangeIterator ranges = mt.invalids();
    for (TreeRange range : ranges) range.addHash(new RowHash(range.right, new byte[0], 0));
    assert mt.hash(new Range<>(tok(-1), tok(-1))) != null : "Could not hash tree " + mt;
}
Also used : RowHash(org.apache.cassandra.utils.MerkleTree.RowHash) TreeRange(org.apache.cassandra.utils.MerkleTree.TreeRange) BigInteger(java.math.BigInteger) Range(org.apache.cassandra.dht.Range) TreeRange(org.apache.cassandra.utils.MerkleTree.TreeRange) TreeRangeIterator(org.apache.cassandra.utils.MerkleTree.TreeRangeIterator) Test(org.junit.Test)

Example 28 with Range

use of org.apache.cassandra.dht.Range in project cassandra by apache.

the class StreamingTransferTest method transferRanges.

private void transferRanges(ColumnFamilyStore cfs) throws Exception {
    IPartitioner p = cfs.getPartitioner();
    List<Range<Token>> ranges = new ArrayList<>();
    // wrapped range
    ranges.add(new Range<Token>(p.getToken(ByteBufferUtil.bytes("key1")), p.getToken(ByteBufferUtil.bytes("key0"))));
    StreamPlan streamPlan = new StreamPlan("StreamingTransferTest").transferRanges(LOCAL, cfs.keyspace.getName(), ranges, cfs.getTableName());
    streamPlan.execute().get();
    verifyConnectionsAreClosed();
    //cannot add ranges after stream session is finished
    try {
        streamPlan.transferRanges(LOCAL, cfs.keyspace.getName(), ranges, cfs.getTableName());
        fail("Should have thrown exception");
    } catch (RuntimeException e) {
    //do nothing
    }
}
Also used : Token(org.apache.cassandra.dht.Token) Range(org.apache.cassandra.dht.Range) IPartitioner(org.apache.cassandra.dht.IPartitioner)

Example 29 with Range

use of org.apache.cassandra.dht.Range in project cassandra by apache.

the class StorageServiceServerTest method testPrimaryRangesWithNetworkTopologyStrategy.

@Test
public void testPrimaryRangesWithNetworkTopologyStrategy() throws Exception {
    TokenMetadata metadata = StorageService.instance.getTokenMetadata();
    metadata.clearUnsafe();
    // DC1
    metadata.updateNormalToken(new StringToken("A"), InetAddress.getByName("127.0.0.1"));
    metadata.updateNormalToken(new StringToken("C"), InetAddress.getByName("127.0.0.2"));
    // DC2
    metadata.updateNormalToken(new StringToken("B"), InetAddress.getByName("127.0.0.4"));
    metadata.updateNormalToken(new StringToken("D"), InetAddress.getByName("127.0.0.5"));
    Map<String, String> configOptions = new HashMap<>();
    configOptions.put("DC1", "1");
    configOptions.put("DC2", "1");
    configOptions.put(ReplicationParams.CLASS, "NetworkTopologyStrategy");
    Keyspace.clear("Keyspace1");
    KeyspaceMetadata meta = KeyspaceMetadata.create("Keyspace1", KeyspaceParams.create(false, configOptions));
    Schema.instance.load(meta);
    Collection<Range<Token>> primaryRanges = StorageService.instance.getPrimaryRangesForEndpoint(meta.name, InetAddress.getByName("127.0.0.1"));
    assert primaryRanges.size() == 1;
    assert primaryRanges.contains(new Range<Token>(new StringToken("D"), new StringToken("A")));
    primaryRanges = StorageService.instance.getPrimaryRangesForEndpoint(meta.name, InetAddress.getByName("127.0.0.2"));
    assert primaryRanges.size() == 1;
    assert primaryRanges.contains(new Range<Token>(new StringToken("B"), new StringToken("C")));
    primaryRanges = StorageService.instance.getPrimaryRangesForEndpoint(meta.name, InetAddress.getByName("127.0.0.4"));
    assert primaryRanges.size() == 1;
    assert primaryRanges.contains(new Range<Token>(new StringToken("A"), new StringToken("B")));
    primaryRanges = StorageService.instance.getPrimaryRangesForEndpoint(meta.name, InetAddress.getByName("127.0.0.5"));
    assert primaryRanges.size() == 1;
    assert primaryRanges.contains(new Range<Token>(new StringToken("C"), new StringToken("D")));
}
Also used : LongToken(org.apache.cassandra.dht.Murmur3Partitioner.LongToken) StringToken(org.apache.cassandra.dht.OrderPreservingPartitioner.StringToken) Token(org.apache.cassandra.dht.Token) TokenMetadata(org.apache.cassandra.locator.TokenMetadata) Range(org.apache.cassandra.dht.Range) KeyspaceMetadata(org.apache.cassandra.schema.KeyspaceMetadata) StringToken(org.apache.cassandra.dht.OrderPreservingPartitioner.StringToken) Test(org.junit.Test)

Example 30 with Range

use of org.apache.cassandra.dht.Range in project cassandra by apache.

the class StorageServiceServerTest method testPrimaryRangesWithSimpleStrategy.

@Test
public void testPrimaryRangesWithSimpleStrategy() throws Exception {
    TokenMetadata metadata = StorageService.instance.getTokenMetadata();
    metadata.clearUnsafe();
    metadata.updateNormalToken(new StringToken("A"), InetAddress.getByName("127.0.0.1"));
    metadata.updateNormalToken(new StringToken("B"), InetAddress.getByName("127.0.0.2"));
    metadata.updateNormalToken(new StringToken("C"), InetAddress.getByName("127.0.0.3"));
    Keyspace.clear("Keyspace1");
    KeyspaceMetadata meta = KeyspaceMetadata.create("Keyspace1", KeyspaceParams.simpleTransient(2));
    Schema.instance.load(meta);
    Collection<Range<Token>> primaryRanges = StorageService.instance.getPrimaryRangesForEndpoint(meta.name, InetAddress.getByName("127.0.0.1"));
    assert primaryRanges.size() == 1;
    assert primaryRanges.contains(new Range<Token>(new StringToken("C"), new StringToken("A")));
    primaryRanges = StorageService.instance.getPrimaryRangesForEndpoint(meta.name, InetAddress.getByName("127.0.0.2"));
    assert primaryRanges.size() == 1;
    assert primaryRanges.contains(new Range<Token>(new StringToken("A"), new StringToken("B")));
    primaryRanges = StorageService.instance.getPrimaryRangesForEndpoint(meta.name, InetAddress.getByName("127.0.0.3"));
    assert primaryRanges.size() == 1;
    assert primaryRanges.contains(new Range<Token>(new StringToken("B"), new StringToken("C")));
}
Also used : LongToken(org.apache.cassandra.dht.Murmur3Partitioner.LongToken) StringToken(org.apache.cassandra.dht.OrderPreservingPartitioner.StringToken) Token(org.apache.cassandra.dht.Token) TokenMetadata(org.apache.cassandra.locator.TokenMetadata) Range(org.apache.cassandra.dht.Range) KeyspaceMetadata(org.apache.cassandra.schema.KeyspaceMetadata) StringToken(org.apache.cassandra.dht.OrderPreservingPartitioner.StringToken) Test(org.junit.Test)

Aggregations

Range (org.apache.cassandra.dht.Range)120 Token (org.apache.cassandra.dht.Token)74 Test (org.junit.Test)63 InetAddress (java.net.InetAddress)35 SSTableReader (org.apache.cassandra.io.sstable.format.SSTableReader)28 TokenMetadata (org.apache.cassandra.locator.TokenMetadata)17 TreeRange (org.apache.cassandra.utils.MerkleTree.TreeRange)17 IPartitioner (org.apache.cassandra.dht.IPartitioner)14 UUID (java.util.UUID)12 ColumnFamilyStore (org.apache.cassandra.db.ColumnFamilyStore)12 StringToken (org.apache.cassandra.dht.OrderPreservingPartitioner.StringToken)9 IOException (java.io.IOException)8 ArrayList (java.util.ArrayList)8 LifecycleTransaction (org.apache.cassandra.db.lifecycle.LifecycleTransaction)8 BigIntegerToken (org.apache.cassandra.dht.RandomPartitioner.BigIntegerToken)8 KeyspaceMetadata (org.apache.cassandra.schema.KeyspaceMetadata)8 LongToken (org.apache.cassandra.dht.Murmur3Partitioner.LongToken)7 BigInteger (java.math.BigInteger)6 HashSet (java.util.HashSet)6 BytesToken (org.apache.cassandra.dht.ByteOrderedPartitioner.BytesToken)6