Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.X a1eef56cc -> 490c1c27c


http://git-wip-us.apache.org/repos/asf/cassandra/blob/490c1c27/test/unit/org/apache/cassandra/index/sasi/disk/TokenTreeTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/index/sasi/disk/TokenTreeTest.java 
b/test/unit/org/apache/cassandra/index/sasi/disk/TokenTreeTest.java
index 7c2498c..927e165 100644
--- a/test/unit/org/apache/cassandra/index/sasi/disk/TokenTreeTest.java
+++ b/test/unit/org/apache/cassandra/index/sasi/disk/TokenTreeTest.java
@@ -19,31 +19,42 @@ package org.apache.cassandra.index.sasi.disk;
 
 import java.io.File;
 import java.io.IOException;
+import java.nio.ByteBuffer;
 import java.util.*;
 
 import com.google.common.collect.Iterators;
 import com.google.common.collect.PeekingIterator;
 
-import com.carrotsearch.hppc.cursors.LongObjectCursor;
 import org.apache.cassandra.config.DatabaseDescriptor;
 import org.apache.cassandra.db.BufferDecoratedKey;
-import org.apache.cassandra.db.ClusteringComparator;
 import org.apache.cassandra.db.DecoratedKey;
-import org.apache.cassandra.db.marshal.LongType;
 import org.apache.cassandra.dht.Murmur3Partitioner;
 import org.apache.cassandra.index.sasi.disk.TokenTreeBuilder.EntryType;
-import org.apache.cassandra.index.sasi.utils.*;
-import org.apache.cassandra.io.util.*;
+import org.apache.cassandra.index.sasi.utils.CombinedTerm;
+import org.apache.cassandra.index.sasi.utils.CombinedValue;
+import org.apache.cassandra.index.sasi.utils.MappedBuffer;
+import org.apache.cassandra.index.sasi.utils.RangeIterator;
+import org.apache.cassandra.db.marshal.LongType;
+import org.apache.cassandra.index.sasi.utils.RangeUnionIterator;
+import org.apache.cassandra.io.util.FileUtils;
+import org.apache.cassandra.io.util.SequentialWriterOption;
+import org.apache.cassandra.utils.MurmurHash;
+import org.apache.cassandra.io.util.RandomAccessReader;
+import org.apache.cassandra.io.util.SequentialWriter;
 
 import junit.framework.Assert;
 
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
+import com.carrotsearch.hppc.LongOpenHashSet;
+import com.carrotsearch.hppc.LongSet;
+import com.carrotsearch.hppc.cursors.LongCursor;
+import com.google.common.base.Function;
 
 public class TokenTreeTest
 {
-    private static final ClusteringComparator CLUSTERING_COMPARATOR = new 
ClusteringComparator(LongType.instance);
+    private static final Function<Long, DecoratedKey> KEY_CONVERTER = new 
KeyConverter();
 
     @BeforeClass
     public static void setupDD()
@@ -51,30 +62,14 @@ public class TokenTreeTest
         DatabaseDescriptor.daemonInitialization();
     }
 
-    static KeyOffsets singleOffset = new KeyOffsets() {{ put(1L, 
KeyOffsets.asArray(10L)); }};
-    static KeyOffsets bigSingleOffset = new KeyOffsets() {{ put(2147521562L, 
KeyOffsets.asArray(10)); }};
-    static KeyOffsets shortPackableCollision = new KeyOffsets() {{
-        put(2L, KeyOffsets.asArray(10));
-        put(3L, KeyOffsets.asArray(10));
-    }}; // can pack two shorts
-    static KeyOffsets intPackableCollision = new KeyOffsets()
-    {{
-        put(6L, KeyOffsets.asArray(10));
-        put(((long) Short.MAX_VALUE) + 1, KeyOffsets.asArray(10));
-    }}; // can pack int & short
-    static KeyOffsets multiCollision = new KeyOffsets()
-    {{
-        put(3L, KeyOffsets.asArray(10));
-        put(4L, KeyOffsets.asArray(10));
-        put(5L, KeyOffsets.asArray(10));
-    }}; // can't pack
-    static KeyOffsets unpackableCollision = new KeyOffsets()
-    {{
-        put(((long) Short.MAX_VALUE) + 1, KeyOffsets.asArray(10));
-        put(((long) Short.MAX_VALUE) + 2, KeyOffsets.asArray(10));
-    }}; // can't pack
+    static LongSet singleOffset = new LongOpenHashSet() {{ add(1); }};
+    static LongSet bigSingleOffset = new LongOpenHashSet() {{ 
add(2147521562L); }};
+    static LongSet shortPackableCollision = new LongOpenHashSet() {{ add(2L); 
add(3L); }}; // can pack two shorts
+    static LongSet intPackableCollision = new LongOpenHashSet() {{ add(6L); 
add(((long) Short.MAX_VALUE) + 1); }}; // can pack int & short
+    static LongSet multiCollision =  new LongOpenHashSet() {{ add(3L); 
add(4L); add(5L); }}; // can't pack
+    static LongSet unpackableCollision = new LongOpenHashSet() {{ add(((long) 
Short.MAX_VALUE) + 1); add(((long) Short.MAX_VALUE) + 2); }}; // can't pack
 
-    final static SortedMap<Long, KeyOffsets> simpleTokenMap = new 
TreeMap<Long, KeyOffsets>()
+    final static SortedMap<Long, LongSet> simpleTokenMap = new TreeMap<Long, 
LongSet>()
     {{
             put(1L, bigSingleOffset); put(3L, shortPackableCollision); put(4L, 
intPackableCollision); put(6L, singleOffset);
             put(9L, multiCollision); put(10L, unpackableCollision); put(12L, 
singleOffset); put(13L, singleOffset);
@@ -86,20 +81,18 @@ public class TokenTreeTest
             put(121L, singleOffset); put(122L, singleOffset); put(123L, 
singleOffset); put(125L, singleOffset);
     }};
 
-    final static SortedMap<Long, KeyOffsets> bigTokensMap = new TreeMap<Long, 
KeyOffsets>()
+    final static SortedMap<Long, LongSet> bigTokensMap = new TreeMap<Long, 
LongSet>()
     {{
             for (long i = 0; i < 1000000; i++)
                 put(i, singleOffset);
     }};
 
-    final static SortedMap<Long, KeyOffsets> collidingTokensMap = new 
TreeMap<Long, KeyOffsets>()
+    final static SortedMap<Long, LongSet> collidingTokensMap = new 
TreeMap<Long, LongSet>()
     {{
-        put(1L, singleOffset);
-        put(7L, singleOffset);
-        put(8L, singleOffset);
+            put(1L, singleOffset); put(7L, singleOffset); put(8L, 
singleOffset);
     }};
 
-    final static SortedMap<Long, KeyOffsets> tokens = bigTokensMap;
+    final static SortedMap<Long, LongSet> tokens = bigTokensMap;
 
     final static SequentialWriterOption DEFAULT_OPT = 
SequentialWriterOption.newBuilder().bufferSize(4096).build();
 
@@ -146,7 +139,7 @@ public class TokenTreeTest
     }
 
 
-    public void buildSerializeAndIterate(TokenTreeBuilder builder, 
SortedMap<Long, KeyOffsets> tokenMap) throws Exception
+    public void buildSerializeAndIterate(TokenTreeBuilder builder, 
SortedMap<Long, LongSet> tokenMap) throws Exception
     {
 
         builder.finish();
@@ -162,12 +155,12 @@ public class TokenTreeTest
         final RandomAccessReader reader = RandomAccessReader.open(treeFile);
         final TokenTree tokenTree = new TokenTree(new MappedBuffer(reader));
 
-        final Iterator<Token> tokenIterator = 
tokenTree.iterator(KeyConverter.instance);
-        final Iterator<Map.Entry<Long, KeyOffsets>> listIterator = 
tokenMap.entrySet().iterator();
+        final Iterator<Token> tokenIterator = 
tokenTree.iterator(KEY_CONVERTER);
+        final Iterator<Map.Entry<Long, LongSet>> listIterator = 
tokenMap.entrySet().iterator();
         while (tokenIterator.hasNext() && listIterator.hasNext())
         {
             Token treeNext = tokenIterator.next();
-            Map.Entry<Long, KeyOffsets> listNext = listIterator.next();
+            Map.Entry<Long, LongSet> listNext = listIterator.next();
 
             Assert.assertEquals(listNext.getKey(), treeNext.get());
             Assert.assertEquals(convert(listNext.getValue()), 
convert(treeNext));
@@ -200,15 +193,15 @@ public class TokenTreeTest
 
         for (long i = 0; i <= tokMax; i++)
         {
-            TokenTree.OnDiskToken result = tokenTree.get(i, 
KeyConverter.instance);
+            TokenTree.OnDiskToken result = tokenTree.get(i, KEY_CONVERTER);
             Assert.assertNotNull("failed to find object for token " + i, 
result);
 
-            KeyOffsets found = result.getOffsets();
+            LongSet found = result.getOffsets();
             Assert.assertEquals(1, found.size());
-            Assert.assertEquals(i, found.iterator().next().key);
+            Assert.assertEquals(i, found.toArray()[0]);
         }
 
-        Assert.assertNull("found missing object", tokenTree.get(tokMax + 10, 
KeyConverter.instance));
+        Assert.assertNull("found missing object", tokenTree.get(tokMax + 10, 
KEY_CONVERTER));
     }
 
     @Test
@@ -223,7 +216,7 @@ public class TokenTreeTest
         buildSerializeIterateAndSkip(new StaticTokenTreeBuilder(new 
FakeCombinedTerm(tokens)), tokens);
     }
 
-    public void buildSerializeIterateAndSkip(TokenTreeBuilder builder, 
SortedMap<Long, KeyOffsets> tokens) throws Exception
+    public void buildSerializeIterateAndSkip(TokenTreeBuilder builder, 
SortedMap<Long, LongSet> tokens) throws Exception
     {
         builder.finish();
         final File treeFile = File.createTempFile("token-tree-iterate-test2", 
"tt");
@@ -238,7 +231,7 @@ public class TokenTreeTest
         final RandomAccessReader reader = RandomAccessReader.open(treeFile);
         final TokenTree tokenTree = new TokenTree(new MappedBuffer(reader));
 
-        final RangeIterator<Long, Token> treeIterator = 
tokenTree.iterator(KeyConverter.instance);
+        final RangeIterator<Long, Token> treeIterator = 
tokenTree.iterator(KEY_CONVERTER);
         final RangeIterator<Long, TokenWithOffsets> listIterator = new 
EntrySetSkippableIterator(tokens);
 
         long lastToken = 0L;
@@ -282,7 +275,7 @@ public class TokenTreeTest
         skipPastEnd(new StaticTokenTreeBuilder(new 
FakeCombinedTerm(simpleTokenMap)), simpleTokenMap);
     }
 
-    public void skipPastEnd(TokenTreeBuilder builder, SortedMap<Long, 
KeyOffsets> tokens) throws Exception
+    public void skipPastEnd(TokenTreeBuilder builder, SortedMap<Long, LongSet> 
tokens) throws Exception
     {
         builder.finish();
         final File treeFile = File.createTempFile("token-tree-skip-past-test", 
"tt");
@@ -295,7 +288,7 @@ public class TokenTreeTest
         }
 
         final RandomAccessReader reader = RandomAccessReader.open(treeFile);
-        final RangeIterator<Long, Token> tokenTree = new TokenTree(new 
MappedBuffer(reader)).iterator(KeyConverter.instance);
+        final RangeIterator<Long, Token> tokenTree = new TokenTree(new 
MappedBuffer(reader)).iterator(KEY_CONVERTER);
 
         tokenTree.skipTo(tokens.lastKey() + 10);
     }
@@ -320,8 +313,8 @@ public class TokenTreeTest
         TokenTree treeA = generateTree(min, max, isStatic);
         TokenTree treeB = generateTree(min, max, isStatic);
 
-        RangeIterator<Long, Token> a = treeA.iterator(KeyConverter.instance);
-        RangeIterator<Long, Token> b = treeB.iterator(KeyConverter.instance);
+        RangeIterator<Long, Token> a = treeA.iterator(new KeyConverter());
+        RangeIterator<Long, Token> b = treeB.iterator(new KeyConverter());
 
         long count = min;
         while (a.hasNext() && b.hasNext())
@@ -339,8 +332,7 @@ public class TokenTreeTest
             // should fail when trying to merge different tokens
             try
             {
-                long l = tokenA.get();
-                tokenA.merge(new TokenWithOffsets(l + 1, convert(count)));
+                tokenA.merge(new TokenWithOffsets(tokenA.get() + 1, 
convert(count)));
                 Assert.fail();
             }
             catch (IllegalArgumentException e)
@@ -349,8 +341,8 @@ public class TokenTreeTest
             }
 
             final Set<Long> offsets = new TreeSet<>();
-            for (RowKey key : tokenA)
-                
offsets.add(LongType.instance.compose(key.decoratedKey.getKey()));
+            for (DecoratedKey key : tokenA)
+                 offsets.add(LongType.instance.compose(key.getKey()));
 
             Set<Long> expected = new TreeSet<>();
             {
@@ -381,7 +373,7 @@ public class TokenTreeTest
         testMergingOfEqualTokenTrees(bigTokensMap);
     }
 
-    public void testMergingOfEqualTokenTrees(SortedMap<Long, KeyOffsets> 
tokensMap) throws Exception
+    public void testMergingOfEqualTokenTrees(SortedMap<Long, LongSet> 
tokensMap) throws Exception
     {
         TokenTreeBuilder tokensA = new DynamicTokenTreeBuilder(tokensMap);
         TokenTreeBuilder tokensB = new DynamicTokenTreeBuilder(tokensMap);
@@ -394,8 +386,8 @@ public class TokenTreeTest
             public RangeIterator<Long, Token> getTokenIterator()
             {
                 RangeIterator.Builder<Long, Token> union = 
RangeUnionIterator.builder();
-                union.add(a.iterator(KeyConverter.instance));
-                union.add(b.iterator(KeyConverter.instance));
+                union.add(a.iterator(new KeyConverter()));
+                union.add(b.iterator(new KeyConverter()));
 
                 return union.build();
             }
@@ -403,30 +395,31 @@ public class TokenTreeTest
 
         TokenTree c = buildTree(tokensC);
         Assert.assertEquals(tokensMap.size(), c.getCount());
-        Iterator<Token> tokenIterator = c.iterator(KeyConverter.instance);
-        Iterator<Map.Entry<Long, KeyOffsets>> listIterator = 
tokensMap.entrySet().iterator();
 
+        Iterator<Token> tokenIterator = c.iterator(KEY_CONVERTER);
+        Iterator<Map.Entry<Long, LongSet>> listIterator = 
tokensMap.entrySet().iterator();
         while (tokenIterator.hasNext() && listIterator.hasNext())
         {
             Token treeNext = tokenIterator.next();
-            Map.Entry<Long, KeyOffsets> listNext = listIterator.next();
+            Map.Entry<Long, LongSet> listNext = listIterator.next();
 
             Assert.assertEquals(listNext.getKey(), treeNext.get());
             Assert.assertEquals(convert(listNext.getValue()), 
convert(treeNext));
         }
 
-        for (Map.Entry<Long, KeyOffsets> entry : tokensMap.entrySet())
+        for (Map.Entry<Long, LongSet> entry : tokensMap.entrySet())
         {
-            TokenTree.OnDiskToken result = c.get(entry.getKey(), 
KeyConverter.instance);
+            TokenTree.OnDiskToken result = c.get(entry.getKey(), 
KEY_CONVERTER);
             Assert.assertNotNull("failed to find object for token " + 
entry.getKey(), result);
-            KeyOffsets found = result.getOffsets();
+
+            LongSet found = result.getOffsets();
             Assert.assertEquals(entry.getValue(), found);
 
         }
     }
 
 
-    private TokenTree buildTree(TokenTreeBuilder builder) throws Exception
+    private static TokenTree buildTree(TokenTreeBuilder builder) throws 
Exception
     {
         builder.finish();
         final File treeFile = File.createTempFile("token-tree-", "db");
@@ -444,9 +437,9 @@ public class TokenTreeTest
 
     private static class EntrySetSkippableIterator extends RangeIterator<Long, 
TokenWithOffsets>
     {
-        private final PeekingIterator<Map.Entry<Long, KeyOffsets>> elements;
+        private final PeekingIterator<Map.Entry<Long, LongSet>> elements;
 
-        EntrySetSkippableIterator(SortedMap<Long, KeyOffsets> elms)
+        EntrySetSkippableIterator(SortedMap<Long, LongSet> elms)
         {
             super(elms.firstKey(), elms.lastKey(), elms.size());
             elements = Iterators.peekingIterator(elms.entrySet().iterator());
@@ -458,7 +451,7 @@ public class TokenTreeTest
             if (!elements.hasNext())
                 return endOfData();
 
-            Map.Entry<Long, KeyOffsets> next = elements.next();
+            Map.Entry<Long, LongSet> next = elements.next();
             return new TokenWithOffsets(next.getKey(), next.getValue());
         }
 
@@ -485,9 +478,9 @@ public class TokenTreeTest
 
     public static class FakeCombinedTerm extends CombinedTerm
     {
-        private final SortedMap<Long, KeyOffsets> tokens;
+        private final SortedMap<Long, LongSet> tokens;
 
-        public FakeCombinedTerm(SortedMap<Long, KeyOffsets> tokens)
+        public FakeCombinedTerm(SortedMap<Long, LongSet> tokens)
         {
             super(null, null);
             this.tokens = tokens;
@@ -501,9 +494,9 @@ public class TokenTreeTest
 
     public static class TokenMapIterator extends RangeIterator<Long, Token>
     {
-        public final Iterator<Map.Entry<Long, KeyOffsets>> iterator;
+        public final Iterator<Map.Entry<Long, LongSet>> iterator;
 
-        public TokenMapIterator(SortedMap<Long, KeyOffsets> tokens)
+        public TokenMapIterator(SortedMap<Long, LongSet> tokens)
         {
             super(tokens.firstKey(), tokens.lastKey(), tokens.size());
             iterator = tokens.entrySet().iterator();
@@ -514,7 +507,7 @@ public class TokenTreeTest
             if (!iterator.hasNext())
                 return endOfData();
 
-            Map.Entry<Long, KeyOffsets> entry = iterator.next();
+            Map.Entry<Long, LongSet> entry = iterator.next();
             return new TokenWithOffsets(entry.getKey(), entry.getValue());
         }
 
@@ -531,16 +524,16 @@ public class TokenTreeTest
 
     public static class TokenWithOffsets extends Token
     {
-        private final KeyOffsets offsets;
+        private final LongSet offsets;
 
-        public TokenWithOffsets(Long token, final KeyOffsets offsets)
+        public TokenWithOffsets(long token, final LongSet offsets)
         {
             super(token);
             this.offsets = offsets;
         }
 
         @Override
-        public KeyOffsets getOffsets()
+        public LongSet getOffsets()
         {
             return offsets;
         }
@@ -578,56 +571,71 @@ public class TokenTreeTest
         }
 
         @Override
-        public Iterator<RowKey> iterator()
+        public Iterator<DecoratedKey> iterator()
         {
-            List<RowKey> keys = new ArrayList<>(offsets.size());
-            for (LongObjectCursor<long[]> offset : offsets)
-                for (long l : offset.value)
-                    keys.add(KeyConverter.instance.getRowKey(offset.key, l));
+            List<DecoratedKey> keys = new ArrayList<>(offsets.size());
+            for (LongCursor offset : offsets)
+                 keys.add(dk(offset.value));
+
             return keys.iterator();
         }
     }
 
-    private static Set<RowKey> convert(KeyOffsets offsets)
+    private static Set<DecoratedKey> convert(LongSet offsets)
     {
-        Set<RowKey> keys = new HashSet<>();
-        for (LongObjectCursor<long[]> offset : offsets)
-            for (long l : offset.value)
-                keys.add(new RowKey(KeyConverter.dk(offset.key),
-                                    KeyConverter.ck(l),
-                                    CLUSTERING_COMPARATOR));
+        Set<DecoratedKey> keys = new HashSet<>();
+        for (LongCursor offset : offsets)
+            keys.add(KEY_CONVERTER.apply(offset.value));
 
         return keys;
     }
 
-    private static Set<RowKey> convert(Token results)
+    private static Set<DecoratedKey> convert(Token results)
     {
-        Set<RowKey> keys = new HashSet<>();
-        for (RowKey key : results)
+        Set<DecoratedKey> keys = new HashSet<>();
+        for (DecoratedKey key : results)
             keys.add(key);
 
         return keys;
     }
 
-    private static KeyOffsets convert(long... values)
+    private static LongSet convert(long... values)
     {
-        KeyOffsets result = new KeyOffsets(values.length);
+        LongSet result = new LongOpenHashSet(values.length);
         for (long v : values)
-            result.put(v, KeyOffsets.asArray(v + 5));
+            result.add(v);
 
         return result;
     }
 
-    private TokenTree generateTree(final long minToken, final long maxToken, 
boolean isStatic) throws IOException
+    private static class KeyConverter implements Function<Long, DecoratedKey>
+    {
+        @Override
+        public DecoratedKey apply(Long offset)
+        {
+            return dk(offset);
+        }
+    }
+
+    private static DecoratedKey dk(Long token)
+    {
+        ByteBuffer buf = ByteBuffer.allocate(8);
+        buf.putLong(token);
+        buf.flip();
+        Long hashed = MurmurHash.hash2_64(buf, buf.position(), 
buf.remaining(), 0);
+        return new BufferDecoratedKey(new 
Murmur3Partitioner.LongToken(hashed), buf);
+    }
+
+    private static TokenTree generateTree(final long minToken, final long 
maxToken, boolean isStatic) throws IOException
     {
-        final SortedMap<Long, KeyOffsets> toks = new TreeMap<Long, 
KeyOffsets>()
+        final SortedMap<Long, LongSet> toks = new TreeMap<Long, LongSet>()
         {{
-            for (long i = minToken; i <= maxToken; i++)
-            {
-                KeyOffsets offsetSet = new KeyOffsets();
-                offsetSet.put(i, KeyOffsets.asArray(i + 5));
-                put(i, offsetSet);
-            }
+                for (long i = minToken; i <= maxToken; i++)
+                {
+                    LongSet offsetSet = new LongOpenHashSet();
+                    offsetSet.add(i);
+                    put(i, offsetSet);
+                }
         }};
 
         final TokenTreeBuilder builder = isStatic ? new 
StaticTokenTreeBuilder(new FakeCombinedTerm(toks)) : new 
DynamicTokenTreeBuilder(toks);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/490c1c27/test/unit/org/apache/cassandra/index/sasi/plan/OperationTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/index/sasi/plan/OperationTest.java 
b/test/unit/org/apache/cassandra/index/sasi/plan/OperationTest.java
index f89dd6c..e388cd4 100644
--- a/test/unit/org/apache/cassandra/index/sasi/plan/OperationTest.java
+++ b/test/unit/org/apache/cassandra/index/sasi/plan/OperationTest.java
@@ -47,7 +47,7 @@ import org.junit.*;
 
 public class OperationTest extends SchemaLoader
 {
-    private static final String KS_NAME = "operation_test";
+    private static final String KS_NAME = "sasi";
     private static final String CF_NAME = "test_cf";
     private static final String CLUSTERING_CF_NAME = "clustering_test_cf";
     private static final String STATIC_CF_NAME = "static_sasi_test_cf";

http://git-wip-us.apache.org/repos/asf/cassandra/blob/490c1c27/test/unit/org/apache/cassandra/index/sasi/utils/KeyConverter.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/index/sasi/utils/KeyConverter.java 
b/test/unit/org/apache/cassandra/index/sasi/utils/KeyConverter.java
deleted file mode 100644
index 7de502a..0000000
--- a/test/unit/org/apache/cassandra/index/sasi/utils/KeyConverter.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.cassandra.index.sasi.utils;
-
-import java.nio.ByteBuffer;
-
-import org.apache.cassandra.db.*;
-import org.apache.cassandra.db.marshal.*;
-import org.apache.cassandra.dht.*;
-import org.apache.cassandra.index.sasi.*;
-import org.apache.cassandra.index.sasi.disk.*;
-import org.apache.cassandra.utils.*;
-
-public class KeyConverter implements KeyFetcher
-{
-    public final static KeyConverter instance = new KeyConverter();
-
-    KeyConverter()
-    {}
-
-    @Override
-    public DecoratedKey getPartitionKey(long offset)
-    {
-        return dk(offset);
-    }
-
-    @Override
-    public Clustering getClustering(long offset)
-    {
-        return ck(offset);
-    }
-
-    @Override
-
-    public RowKey getRowKey(long partitionOffset, long rowOffset)
-    {
-        return new RowKey(getPartitionKey(partitionOffset), 
getClustering(rowOffset), new ClusteringComparator(LongType.instance));
-    }
-
-    public static DecoratedKey dk(long partitionOffset)
-    {
-        ByteBuffer buf = ByteBuffer.allocate(8);
-        buf.putLong(partitionOffset);
-        buf.flip();
-        Long hashed = MurmurHash.hash2_64(buf, buf.position(), 
buf.remaining(), 0);
-        return new BufferDecoratedKey(new 
Murmur3Partitioner.LongToken(hashed), buf);
-    }
-
-    public static Clustering ck(long offset)
-    {
-        return Clustering.make(ByteBufferUtil.bytes(offset));
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cassandra/blob/490c1c27/test/unit/org/apache/cassandra/index/sasi/utils/LongIterator.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/index/sasi/utils/LongIterator.java 
b/test/unit/org/apache/cassandra/index/sasi/utils/LongIterator.java
index 4f80a1c..205d28f 100644
--- a/test/unit/org/apache/cassandra/index/sasi/utils/LongIterator.java
+++ b/test/unit/org/apache/cassandra/index/sasi/utils/LongIterator.java
@@ -26,8 +26,6 @@ import java.util.List;
 import com.carrotsearch.hppc.LongOpenHashSet;
 import com.carrotsearch.hppc.LongSet;
 import org.apache.cassandra.db.DecoratedKey;
-import org.apache.cassandra.index.sasi.disk.KeyOffsets;
-import org.apache.cassandra.index.sasi.disk.RowKey;
 import org.apache.cassandra.index.sasi.disk.Token;
 
 public class LongIterator extends RangeIterator<Long, Token>
@@ -84,13 +82,13 @@ public class LongIterator extends RangeIterator<Long, Token>
         }
 
         @Override
-        public KeyOffsets getOffsets()
+        public LongSet getOffsets()
         {
-            return new KeyOffsets(4);
+            return new LongOpenHashSet(4);
         }
 
         @Override
-        public Iterator<RowKey> iterator()
+        public Iterator<DecoratedKey> iterator()
         {
             return Collections.emptyIterator();
         }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/490c1c27/test/unit/org/apache/cassandra/index/sasi/utils/RangeUnionIteratorTest.java
----------------------------------------------------------------------
diff --git 
a/test/unit/org/apache/cassandra/index/sasi/utils/RangeUnionIteratorTest.java 
b/test/unit/org/apache/cassandra/index/sasi/utils/RangeUnionIteratorTest.java
index 4819c0d..f69086b 100644
--- 
a/test/unit/org/apache/cassandra/index/sasi/utils/RangeUnionIteratorTest.java
+++ 
b/test/unit/org/apache/cassandra/index/sasi/utils/RangeUnionIteratorTest.java
@@ -31,23 +31,6 @@ import static 
org.apache.cassandra.index.sasi.utils.LongIterator.convert;
 public class RangeUnionIteratorTest
 {
     @Test
-    public void mergingOfEqualTokensTest()
-    {
-        RangeUnionIterator.Builder<Long, Token> builder = 
RangeUnionIterator.builder();
-
-        int size = 1000000;
-        final long[] arr = new long[size];
-        for (int i = 0; i < size; i++)
-            arr[i] = i;
-
-        builder.add(new LongIterator(arr));
-        builder.add(new LongIterator(arr));
-
-        Assert.assertEquals(convert(arr), convert(builder.build()));
-    }
-
-
-    @Test
     public void testNoOverlappingValues()
     {
         RangeUnionIterator.Builder<Long, Token> builder = 
RangeUnionIterator.builder();

Reply via email to