You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ct...@apache.org on 2015/01/09 03:44:31 UTC
[27/66] [abbrv] accumulo git commit: ACCUMULO-3451 Format master
branch (1.7.0-SNAPSHOT)
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/core/src/test/java/org/apache/accumulo/core/iterators/system/SourceSwitchingIteratorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/iterators/system/SourceSwitchingIteratorTest.java b/core/src/test/java/org/apache/accumulo/core/iterators/system/SourceSwitchingIteratorTest.java
index 23f08a8..7567871 100644
--- a/core/src/test/java/org/apache/accumulo/core/iterators/system/SourceSwitchingIteratorTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/system/SourceSwitchingIteratorTest.java
@@ -35,19 +35,19 @@ import org.apache.accumulo.core.iterators.system.SourceSwitchingIterator.DataSou
import org.apache.hadoop.io.Text;
public class SourceSwitchingIteratorTest extends TestCase {
-
+
Key nk(String row, String cf, String cq, long time) {
return new Key(new Text(row), new Text(cf), new Text(cq), time);
}
-
+
void put(TreeMap<Key,Value> tm, String row, String cf, String cq, long time, Value val) {
tm.put(nk(row, cf, cq, time), val);
}
-
+
void put(TreeMap<Key,Value> tm, String row, String cf, String cq, long time, String val) {
put(tm, row, cf, cq, time, new Value(val.getBytes()));
}
-
+
private void ane(SortedKeyValueIterator<Key,Value> rdi, String row, String cf, String cq, long time, String val, boolean callNext) throws Exception {
assertTrue(rdi.hasTop());
assertEquals(nk(row, cf, cq, time), rdi.getTopKey());
@@ -55,49 +55,49 @@ public class SourceSwitchingIteratorTest extends TestCase {
if (callNext)
rdi.next();
}
-
+
class TestDataSource implements DataSource {
-
+
DataSource next;
SortedKeyValueIterator<Key,Value> iter;
List<TestDataSource> copies = new ArrayList<TestDataSource>();
AtomicBoolean iflag;
-
+
TestDataSource(SortedKeyValueIterator<Key,Value> iter) {
this(iter, new ArrayList<TestDataSource>());
}
-
+
public TestDataSource(SortedKeyValueIterator<Key,Value> iter, List<TestDataSource> copies) {
this.iter = iter;
this.copies = copies;
copies.add(this);
}
-
+
@Override
public DataSource getNewDataSource() {
return next;
}
-
+
@Override
public boolean isCurrent() {
return next == null;
}
-
+
@Override
public SortedKeyValueIterator<Key,Value> iterator() {
if (iflag != null)
((InterruptibleIterator) iter).setInterruptFlag(iflag);
return iter;
}
-
+
@Override
public DataSource getDeepCopyDataSource(IteratorEnvironment env) {
return new TestDataSource(iter.deepCopy(env), copies);
}
-
+
void setNext(TestDataSource next) {
this.next = next;
-
+
for (TestDataSource tds : copies) {
if (tds != this)
tds.next = new TestDataSource(next.iter.deepCopy(null), next.copies);
@@ -109,54 +109,54 @@ public class SourceSwitchingIteratorTest extends TestCase {
this.iflag = flag;
}
}
-
+
public void test1() throws Exception {
TreeMap<Key,Value> tm1 = new TreeMap<Key,Value>();
put(tm1, "r1", "cf1", "cq1", 5, "v1");
put(tm1, "r1", "cf1", "cq3", 5, "v2");
put(tm1, "r2", "cf1", "cq1", 5, "v3");
-
+
SortedMapIterator smi = new SortedMapIterator(tm1);
TestDataSource tds = new TestDataSource(smi);
SourceSwitchingIterator ssi = new SourceSwitchingIterator(tds);
-
+
ssi.seek(new Range(), new ArrayList<ByteSequence>(), false);
ane(ssi, "r1", "cf1", "cq1", 5, "v1", true);
ane(ssi, "r1", "cf1", "cq3", 5, "v2", true);
ane(ssi, "r2", "cf1", "cq1", 5, "v3", true);
assertFalse(ssi.hasTop());
}
-
+
public void test2() throws Exception {
TreeMap<Key,Value> tm1 = new TreeMap<Key,Value>();
put(tm1, "r1", "cf1", "cq1", 5, "v1");
put(tm1, "r1", "cf1", "cq3", 5, "v2");
put(tm1, "r2", "cf1", "cq1", 5, "v3");
-
+
SortedMapIterator smi = new SortedMapIterator(tm1);
TestDataSource tds = new TestDataSource(smi);
SourceSwitchingIterator ssi = new SourceSwitchingIterator(tds);
-
+
ssi.seek(new Range(), new ArrayList<ByteSequence>(), false);
ane(ssi, "r1", "cf1", "cq1", 5, "v1", true);
-
+
TreeMap<Key,Value> tm2 = new TreeMap<Key,Value>();
put(tm2, "r1", "cf1", "cq1", 5, "v4");
put(tm2, "r1", "cf1", "cq3", 5, "v5");
put(tm2, "r2", "cf1", "cq1", 5, "v6");
-
+
SortedMapIterator smi2 = new SortedMapIterator(tm2);
TestDataSource tds2 = new TestDataSource(smi2);
tds.next = tds2;
-
+
ane(ssi, "r1", "cf1", "cq3", 5, "v2", true);
ane(ssi, "r2", "cf1", "cq1", 5, "v6", true);
assertFalse(ssi.hasTop());
}
-
+
public void test3() throws Exception {
// test switching after a row
-
+
TreeMap<Key,Value> tm1 = new TreeMap<Key,Value>();
put(tm1, "r1", "cf1", "cq1", 5, "v1");
put(tm1, "r1", "cf1", "cq2", 5, "v2");
@@ -164,82 +164,82 @@ public class SourceSwitchingIteratorTest extends TestCase {
put(tm1, "r1", "cf1", "cq4", 5, "v4");
put(tm1, "r3", "cf1", "cq1", 5, "v5");
put(tm1, "r3", "cf1", "cq2", 5, "v6");
-
+
SortedMapIterator smi = new SortedMapIterator(tm1);
TestDataSource tds = new TestDataSource(smi);
SourceSwitchingIterator ssi = new SourceSwitchingIterator(tds, true);
-
+
ssi.seek(new Range(), new ArrayList<ByteSequence>(), false);
ane(ssi, "r1", "cf1", "cq1", 5, "v1", true);
-
+
TreeMap<Key,Value> tm2 = new TreeMap<Key,Value>(tm1);
put(tm2, "r1", "cf1", "cq5", 5, "v7"); // should not see this because it should not switch until the row is finished
put(tm2, "r2", "cf1", "cq1", 5, "v8"); // should see this new row after it switches
-
+
// setup a new data source, but it should not switch until the current row is finished
SortedMapIterator smi2 = new SortedMapIterator(tm2);
TestDataSource tds2 = new TestDataSource(smi2);
tds.next = tds2;
-
+
ane(ssi, "r1", "cf1", "cq2", 5, "v2", true);
ane(ssi, "r1", "cf1", "cq3", 5, "v3", true);
ane(ssi, "r1", "cf1", "cq4", 5, "v4", true);
ane(ssi, "r2", "cf1", "cq1", 5, "v8", true);
ane(ssi, "r3", "cf1", "cq1", 5, "v5", true);
ane(ssi, "r3", "cf1", "cq2", 5, "v6", true);
-
+
}
-
+
public void test4() throws Exception {
// ensure switch is done on initial seek
TreeMap<Key,Value> tm1 = new TreeMap<Key,Value>();
put(tm1, "r1", "cf1", "cq1", 5, "v1");
put(tm1, "r1", "cf1", "cq2", 5, "v2");
-
+
SortedMapIterator smi = new SortedMapIterator(tm1);
TestDataSource tds = new TestDataSource(smi);
SourceSwitchingIterator ssi = new SourceSwitchingIterator(tds, false);
-
+
TreeMap<Key,Value> tm2 = new TreeMap<Key,Value>();
put(tm2, "r1", "cf1", "cq1", 6, "v3");
put(tm2, "r1", "cf1", "cq2", 6, "v4");
-
+
SortedMapIterator smi2 = new SortedMapIterator(tm2);
TestDataSource tds2 = new TestDataSource(smi2);
tds.next = tds2;
-
+
ssi.seek(new Range(), new ArrayList<ByteSequence>(), false);
-
+
ane(ssi, "r1", "cf1", "cq1", 6, "v3", true);
ane(ssi, "r1", "cf1", "cq2", 6, "v4", true);
-
+
}
-
+
public void test5() throws Exception {
// esnure switchNow() works w/ deepCopy()
TreeMap<Key,Value> tm1 = new TreeMap<Key,Value>();
put(tm1, "r1", "cf1", "cq1", 5, "v1");
put(tm1, "r1", "cf1", "cq2", 5, "v2");
-
+
SortedMapIterator smi = new SortedMapIterator(tm1);
TestDataSource tds = new TestDataSource(smi);
SourceSwitchingIterator ssi = new SourceSwitchingIterator(tds, false);
-
+
SortedKeyValueIterator<Key,Value> dc1 = ssi.deepCopy(null);
-
+
TreeMap<Key,Value> tm2 = new TreeMap<Key,Value>();
put(tm2, "r1", "cf1", "cq1", 6, "v3");
put(tm2, "r2", "cf1", "cq2", 6, "v4");
-
+
SortedMapIterator smi2 = new SortedMapIterator(tm2);
TestDataSource tds2 = new TestDataSource(smi2);
tds.setNext(tds2);
-
+
ssi.switchNow();
-
+
ssi.seek(new Range("r1"), new ArrayList<ByteSequence>(), false);
dc1.seek(new Range("r2"), new ArrayList<ByteSequence>(), false);
-
+
ane(ssi, "r1", "cf1", "cq1", 6, "v3", true);
assertFalse(ssi.hasTop());
ane(dc1, "r2", "cf1", "cq2", 6, "v4", true);
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/core/src/test/java/org/apache/accumulo/core/iterators/system/TimeSettingIteratorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/iterators/system/TimeSettingIteratorTest.java b/core/src/test/java/org/apache/accumulo/core/iterators/system/TimeSettingIteratorTest.java
index 188ec47..783dbc0 100644
--- a/core/src/test/java/org/apache/accumulo/core/iterators/system/TimeSettingIteratorTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/system/TimeSettingIteratorTest.java
@@ -28,57 +28,57 @@ import org.apache.accumulo.core.data.Value;
import org.apache.accumulo.core.iterators.SortedMapIterator;
public class TimeSettingIteratorTest extends TestCase {
-
+
public void test1() throws Exception {
TreeMap<Key,Value> tm1 = new TreeMap<Key,Value>();
-
+
tm1.put(new Key("r0", "cf1", "cq1", 9l), new Value("v0".getBytes()));
tm1.put(new Key("r1", "cf1", "cq1", Long.MAX_VALUE), new Value("v1".getBytes()));
tm1.put(new Key("r1", "cf1", "cq1", 90l), new Value("v2".getBytes()));
tm1.put(new Key("r1", "cf1", "cq1", 0l), new Value("v3".getBytes()));
tm1.put(new Key("r2", "cf1", "cq1", 6l), new Value("v4".getBytes()));
-
+
TimeSettingIterator tsi = new TimeSettingIterator(new SortedMapIterator(tm1), 50);
-
+
tsi.seek(new Range(new Key("r1", "cf1", "cq1", 50l), true, new Key("r1", "cf1", "cq1", 50l), true), new HashSet<ByteSequence>(), false);
-
+
assertTrue(tsi.hasTop());
assertEquals(new Key("r1", "cf1", "cq1", 50l), tsi.getTopKey());
assertEquals("v1", tsi.getTopValue().toString());
tsi.next();
-
+
assertTrue(tsi.hasTop());
assertEquals(new Key("r1", "cf1", "cq1", 50l), tsi.getTopKey());
assertEquals("v2", tsi.getTopValue().toString());
tsi.next();
-
+
assertTrue(tsi.hasTop());
assertEquals(new Key("r1", "cf1", "cq1", 50l), tsi.getTopKey());
assertEquals("v3", tsi.getTopValue().toString());
tsi.next();
-
+
assertFalse(tsi.hasTop());
-
+
tsi.seek(new Range(new Key("r1", "cf1", "cq1", 50l), false, null, true), new HashSet<ByteSequence>(), false);
-
+
assertTrue(tsi.hasTop());
assertEquals(new Key("r2", "cf1", "cq1", 50l), tsi.getTopKey());
assertEquals("v4", tsi.getTopValue().toString());
tsi.next();
-
+
assertFalse(tsi.hasTop());
-
+
tsi.seek(new Range(null, true, new Key("r1", "cf1", "cq1", 50l), false), new HashSet<ByteSequence>(), false);
-
+
assertTrue(tsi.hasTop());
assertEquals(new Key("r0", "cf1", "cq1", 50l), tsi.getTopKey());
assertEquals("v0", tsi.getTopValue().toString());
tsi.next();
-
+
assertFalse(tsi.hasTop());
-
+
tsi.seek(new Range(new Key("r1", "cf1", "cq1", 51l), true, new Key("r1", "cf1", "cq1", 50l), false), new HashSet<ByteSequence>(), false);
assertFalse(tsi.hasTop());
}
-
+
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/core/src/test/java/org/apache/accumulo/core/iterators/system/VisibilityFilterTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/iterators/system/VisibilityFilterTest.java b/core/src/test/java/org/apache/accumulo/core/iterators/system/VisibilityFilterTest.java
index 6bc7bdc..667aa5f 100644
--- a/core/src/test/java/org/apache/accumulo/core/iterators/system/VisibilityFilterTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/system/VisibilityFilterTest.java
@@ -32,21 +32,21 @@ import org.apache.log4j.Level;
import org.apache.log4j.Logger;
public class VisibilityFilterTest extends TestCase {
-
+
public void testBadVisibility() throws IOException {
TreeMap<Key,Value> tm = new TreeMap<Key,Value>();
-
+
tm.put(new Key("r1", "cf1", "cq1", "A&"), new Value(new byte[0]));
VisibilityFilter filter = new VisibilityFilter(new SortedMapIterator(tm), new Authorizations("A"), "".getBytes());
-
+
// suppress logging
Level prevLevel = Logger.getLogger(VisibilityFilter.class).getLevel();
Logger.getLogger(VisibilityFilter.class).setLevel(Level.FATAL);
filter.seek(new Range(), new HashSet<ByteSequence>(), false);
assertFalse(filter.hasTop());
-
+
Logger.getLogger(VisibilityFilter.class).setLevel(prevLevel);
}
-
+
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/core/src/test/java/org/apache/accumulo/core/iterators/user/BigDecimalCombinerTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/iterators/user/BigDecimalCombinerTest.java b/core/src/test/java/org/apache/accumulo/core/iterators/user/BigDecimalCombinerTest.java
index 9e3d975..c15fe55 100644
--- a/core/src/test/java/org/apache/accumulo/core/iterators/user/BigDecimalCombinerTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/user/BigDecimalCombinerTest.java
@@ -50,7 +50,6 @@ public class BigDecimalCombinerTest {
List<Column> columns;
Combiner ai;
-
@Before
public void setup() {
encoder = new BigDecimalCombiner.BigDecimalEncoder();
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/core/src/test/java/org/apache/accumulo/core/iterators/user/ColumnSliceFilterTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/iterators/user/ColumnSliceFilterTest.java b/core/src/test/java/org/apache/accumulo/core/iterators/user/ColumnSliceFilterTest.java
index 44fe00f..f15bad4 100644
--- a/core/src/test/java/org/apache/accumulo/core/iterators/user/ColumnSliceFilterTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/user/ColumnSliceFilterTest.java
@@ -40,238 +40,237 @@ import org.junit.Test;
public class ColumnSliceFilterTest {
- private static final Collection<ByteSequence> EMPTY_COL_FAMS = new ArrayList<ByteSequence>();
-
- private static final SortedMap<Key,Value> TEST_DATA = new TreeMap<Key,Value>();
- private static final Key KEY_1 = nkv(TEST_DATA, "boo1", "yup", "20080201", "dog");
- private static final Key KEY_2 = nkv(TEST_DATA, "boo1", "yap", "20080202", "cat");
- private static final Key KEY_3 = nkv(TEST_DATA, "boo2", "yap", "20080203", "hamster");
- private static final Key KEY_4 = nkv(TEST_DATA, "boo2", "yop", "20080204", "lion");
- private static final Key KEY_5 = nkv(TEST_DATA, "boo2", "yup", "20080206", "tiger");
- private static final Key KEY_6 = nkv(TEST_DATA, "boo2", "yip", "20080203", "tiger");
-
- private static IteratorEnvironment iteratorEnvironment;
-
- private ColumnSliceFilter columnSliceFilter = new ColumnSliceFilter();
- private IteratorSetting is;
-
- private static Key nkv(SortedMap<Key,Value> tm, String row, String cf, String cq, String val) {
- Key k = nk(row, cf, cq);
- tm.put(k, new Value(val.getBytes()));
- return k;
- }
-
- private static Key nk(String row, String cf, String cq) {
- return new Key(new Text(row), new Text(cf), new Text(cq));
- }
-
- @Before
- public void setUp() throws Exception {
- columnSliceFilter.describeOptions();
- iteratorEnvironment = new DefaultIteratorEnvironment();
- is = new IteratorSetting(1, ColumnSliceFilter.class);
+ private static final Collection<ByteSequence> EMPTY_COL_FAMS = new ArrayList<ByteSequence>();
+
+ private static final SortedMap<Key,Value> TEST_DATA = new TreeMap<Key,Value>();
+ private static final Key KEY_1 = nkv(TEST_DATA, "boo1", "yup", "20080201", "dog");
+ private static final Key KEY_2 = nkv(TEST_DATA, "boo1", "yap", "20080202", "cat");
+ private static final Key KEY_3 = nkv(TEST_DATA, "boo2", "yap", "20080203", "hamster");
+ private static final Key KEY_4 = nkv(TEST_DATA, "boo2", "yop", "20080204", "lion");
+ private static final Key KEY_5 = nkv(TEST_DATA, "boo2", "yup", "20080206", "tiger");
+ private static final Key KEY_6 = nkv(TEST_DATA, "boo2", "yip", "20080203", "tiger");
+
+ private static IteratorEnvironment iteratorEnvironment;
+
+ private ColumnSliceFilter columnSliceFilter = new ColumnSliceFilter();
+ private IteratorSetting is;
+
+ private static Key nkv(SortedMap<Key,Value> tm, String row, String cf, String cq, String val) {
+ Key k = nk(row, cf, cq);
+ tm.put(k, new Value(val.getBytes()));
+ return k;
+ }
+
+ private static Key nk(String row, String cf, String cq) {
+ return new Key(new Text(row), new Text(cf), new Text(cq));
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ columnSliceFilter.describeOptions();
+ iteratorEnvironment = new DefaultIteratorEnvironment();
+ is = new IteratorSetting(1, ColumnSliceFilter.class);
+ }
+
+ @Test
+ public void testBasic() throws IOException {
+ ColumnSliceFilter.setSlice(is, "20080202", "20080204");
+
+ assertTrue(columnSliceFilter.validateOptions(is.getOptions()));
+ columnSliceFilter.init(new SortedMapIterator(TEST_DATA), is.getOptions(), iteratorEnvironment);
+ columnSliceFilter.seek(new Range(), EMPTY_COL_FAMS, true);
+
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_2));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_3));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_6));
+ columnSliceFilter.next();
+ assertFalse(columnSliceFilter.hasTop());
+ }
+
+ @Test
+ public void testBothInclusive() throws IOException {
+ ColumnSliceFilter.setSlice(is, "20080202", true, "20080204", true);
+
+ columnSliceFilter.validateOptions(is.getOptions());
+ columnSliceFilter.init(new SortedMapIterator(TEST_DATA), is.getOptions(), iteratorEnvironment);
+ columnSliceFilter.seek(new Range(), EMPTY_COL_FAMS, false);
+
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_2));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_3));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_6));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_4));
+ columnSliceFilter.next();
+ assertFalse(columnSliceFilter.hasTop());
+ }
+
+ @Test
+ public void testBothExclusive() throws IOException {
+ ColumnSliceFilter.setSlice(is, "20080202", false, "20080204", false);
+
+ columnSliceFilter.validateOptions(is.getOptions());
+ columnSliceFilter.init(new SortedMapIterator(TEST_DATA), is.getOptions(), iteratorEnvironment);
+ columnSliceFilter.seek(new Range(), EMPTY_COL_FAMS, false);
+
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_3));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_6));
+ columnSliceFilter.next();
+ assertFalse(columnSliceFilter.hasTop());
+ }
+
+ @Test
+ public void testStartExclusiveEndInclusive() throws IOException {
+ ColumnSliceFilter.setSlice(is, "20080202", false, "20080204", true);
+
+ columnSliceFilter.validateOptions(is.getOptions());
+ columnSliceFilter.init(new SortedMapIterator(TEST_DATA), is.getOptions(), iteratorEnvironment);
+ columnSliceFilter.seek(new Range(), EMPTY_COL_FAMS, false);
+
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_3));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_6));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_4));
+ columnSliceFilter.next();
+ assertFalse(columnSliceFilter.hasTop());
+ }
+
+ @Test
+ public void testNullStart() throws IOException {
+ ColumnSliceFilter.setSlice(is, null, "20080204");
+
+ columnSliceFilter.validateOptions(is.getOptions());
+ columnSliceFilter.init(new SortedMapIterator(TEST_DATA), is.getOptions(), iteratorEnvironment);
+ columnSliceFilter.seek(new Range(), EMPTY_COL_FAMS, false);
+
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_2));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_1));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_3));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_6));
+ columnSliceFilter.next();
+ assertFalse(columnSliceFilter.hasTop());
+ }
+
+ @Test
+ public void testNullEnd() throws IOException {
+ ColumnSliceFilter.setSlice(is, "20080202", null);
+
+ columnSliceFilter.validateOptions(is.getOptions());
+ columnSliceFilter.init(new SortedMapIterator(TEST_DATA), is.getOptions(), iteratorEnvironment);
+ columnSliceFilter.seek(new Range(), EMPTY_COL_FAMS, false);
+
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_2));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_3));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_6));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_4));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_5));
+ columnSliceFilter.next();
+ assertFalse(columnSliceFilter.hasTop());
+ }
+
+ @Test
+ public void testBothNull() throws IOException {
+ ColumnSliceFilter.setSlice(is, null, null);
+
+ columnSliceFilter.validateOptions(is.getOptions());
+ columnSliceFilter.init(new SortedMapIterator(TEST_DATA), is.getOptions(), iteratorEnvironment);
+ columnSliceFilter.seek(new Range(), EMPTY_COL_FAMS, false);
+
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_2));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_1));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_3));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_6));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_4));
+ columnSliceFilter.next();
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_5));
+ columnSliceFilter.next();
+ assertFalse(columnSliceFilter.hasTop());
+ }
+
+ @Test
+ public void testStartAfterEnd() throws IOException {
+ try {
+ ColumnSliceFilter.setSlice(is, "20080204", "20080202");
+ fail("IllegalArgumentException expected but not thrown");
+ } catch (IllegalArgumentException expectedException) {
+ // Exception successfully thrown
}
-
- @Test
- public void testBasic() throws IOException {
- ColumnSliceFilter.setSlice(is, "20080202", "20080204");
-
- assertTrue(columnSliceFilter.validateOptions(is.getOptions()));
- columnSliceFilter.init(new SortedMapIterator(TEST_DATA), is.getOptions(), iteratorEnvironment);
- columnSliceFilter.seek(new Range(), EMPTY_COL_FAMS, true);
-
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_2));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_3));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_6));
- columnSliceFilter.next();
- assertFalse(columnSliceFilter.hasTop());
+ }
+
+ @Test
+ public void testStartEqualToEndStartInclusiveEndExclusive() throws IOException {
+ try {
+ ColumnSliceFilter.setSlice(is, "20080202", "20080202");
+ fail("IllegalArgumentException expected but not thrown");
+ } catch (IllegalArgumentException expectedException) {
+ // Exception successfully thrown
}
-
- @Test
- public void testBothInclusive() throws IOException {
- ColumnSliceFilter.setSlice(is, "20080202", true, "20080204", true);
-
- columnSliceFilter.validateOptions(is.getOptions());
- columnSliceFilter.init(new SortedMapIterator(TEST_DATA), is.getOptions(), iteratorEnvironment);
- columnSliceFilter.seek(new Range(), EMPTY_COL_FAMS, false);
-
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_2));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_3));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_6));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_4));
- columnSliceFilter.next();
- assertFalse(columnSliceFilter.hasTop());
+ }
+
+ @Test
+ public void testStartEqualToEndStartExclusiveEndInclusive() throws IOException {
+ try {
+ ColumnSliceFilter.setSlice(is, "20080202", false, "20080202", true);
+ fail("IllegalArgumentException expected but not thrown");
+ } catch (IllegalArgumentException expectedException) {
+ // Exception successfully thrown
}
+ }
- @Test
- public void testBothExclusive() throws IOException {
- ColumnSliceFilter.setSlice(is, "20080202", false, "20080204", false);
-
- columnSliceFilter.validateOptions(is.getOptions());
- columnSliceFilter.init(new SortedMapIterator(TEST_DATA), is.getOptions(), iteratorEnvironment);
- columnSliceFilter.seek(new Range(), EMPTY_COL_FAMS, false);
-
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_3));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_6));
- columnSliceFilter.next();
- assertFalse(columnSliceFilter.hasTop());
- }
+ @Test
+ public void testStartEqualToEndBothInclusive() throws IOException {
+ ColumnSliceFilter.setSlice(is, "20080202", true, "20080202", true);
- @Test
- public void testStartExclusiveEndInclusive() throws IOException {
- ColumnSliceFilter.setSlice(is, "20080202", false, "20080204", true);
-
- columnSliceFilter.validateOptions(is.getOptions());
- columnSliceFilter.init(new SortedMapIterator(TEST_DATA), is.getOptions(), iteratorEnvironment);
- columnSliceFilter.seek(new Range(), EMPTY_COL_FAMS, false);
-
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_3));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_6));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_4));
- columnSliceFilter.next();
- assertFalse(columnSliceFilter.hasTop());
- }
+ columnSliceFilter.validateOptions(is.getOptions());
+ columnSliceFilter.init(new SortedMapIterator(TEST_DATA), is.getOptions(), iteratorEnvironment);
+ columnSliceFilter.seek(new Range(), EMPTY_COL_FAMS, false);
- @Test
- public void testNullStart() throws IOException {
- ColumnSliceFilter.setSlice(is, null, "20080204");
-
- columnSliceFilter.validateOptions(is.getOptions());
- columnSliceFilter.init(new SortedMapIterator(TEST_DATA), is.getOptions(), iteratorEnvironment);
- columnSliceFilter.seek(new Range(), EMPTY_COL_FAMS, false);
-
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_2));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_1));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_3));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_6));
- columnSliceFilter.next();
- assertFalse(columnSliceFilter.hasTop());
- }
-
- @Test
- public void testNullEnd() throws IOException {
- ColumnSliceFilter.setSlice(is, "20080202", null);
-
- columnSliceFilter.validateOptions(is.getOptions());
- columnSliceFilter.init(new SortedMapIterator(TEST_DATA), is.getOptions(), iteratorEnvironment);
- columnSliceFilter.seek(new Range(), EMPTY_COL_FAMS, false);
-
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_2));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_3));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_6));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_4));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_5));
- columnSliceFilter.next();
- assertFalse(columnSliceFilter.hasTop());
- }
-
- @Test
- public void testBothNull() throws IOException {
- ColumnSliceFilter.setSlice(is, null, null);
-
- columnSliceFilter.validateOptions(is.getOptions());
- columnSliceFilter.init(new SortedMapIterator(TEST_DATA), is.getOptions(), iteratorEnvironment);
- columnSliceFilter.seek(new Range(), EMPTY_COL_FAMS, false);
-
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_2));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_1));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_3));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_6));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_4));
- columnSliceFilter.next();
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_5));
- columnSliceFilter.next();
- assertFalse(columnSliceFilter.hasTop());
- }
-
- @Test
- public void testStartAfterEnd() throws IOException {
- try {
- ColumnSliceFilter.setSlice(is, "20080204", "20080202");
- fail("IllegalArgumentException expected but not thrown");
- } catch(IllegalArgumentException expectedException) {
- // Exception successfully thrown
- }
- }
-
- @Test
- public void testStartEqualToEndStartInclusiveEndExclusive() throws IOException {
- try {
- ColumnSliceFilter.setSlice(is, "20080202", "20080202");
- fail("IllegalArgumentException expected but not thrown");
- } catch(IllegalArgumentException expectedException) {
- // Exception successfully thrown
- }
- }
-
- @Test
- public void testStartEqualToEndStartExclusiveEndInclusive() throws IOException {
- try {
- ColumnSliceFilter.setSlice(is, "20080202", false, "20080202", true);
- fail("IllegalArgumentException expected but not thrown");
- } catch(IllegalArgumentException expectedException) {
- // Exception successfully thrown
- }
- }
-
- @Test
- public void testStartEqualToEndBothInclusive() throws IOException {
- ColumnSliceFilter.setSlice(is, "20080202", true, "20080202", true);
-
- columnSliceFilter.validateOptions(is.getOptions());
- columnSliceFilter.init(new SortedMapIterator(TEST_DATA), is.getOptions(), iteratorEnvironment);
- columnSliceFilter.seek(new Range(), EMPTY_COL_FAMS, false);
-
- assertTrue(columnSliceFilter.hasTop());
- assertTrue(columnSliceFilter.getTopKey().equals(KEY_2));
- columnSliceFilter.next();
- assertFalse(columnSliceFilter.hasTop());
- }
+ assertTrue(columnSliceFilter.hasTop());
+ assertTrue(columnSliceFilter.getTopKey().equals(KEY_2));
+ columnSliceFilter.next();
+ assertFalse(columnSliceFilter.hasTop());
+ }
}
-
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/core/src/test/java/org/apache/accumulo/core/iterators/user/CombinerTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/iterators/user/CombinerTest.java b/core/src/test/java/org/apache/accumulo/core/iterators/user/CombinerTest.java
index 41d6425..cdac2fb 100644
--- a/core/src/test/java/org/apache/accumulo/core/iterators/user/CombinerTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/user/CombinerTest.java
@@ -50,511 +50,511 @@ import org.junit.Assert;
import org.junit.Test;
public class CombinerTest {
-
+
private static final Collection<ByteSequence> EMPTY_COL_FAMS = new ArrayList<ByteSequence>();
-
+
static Key nk(int row, int colf, int colq, long ts, boolean deleted) {
Key k = nk(row, colf, colq, ts);
k.setDeleted(deleted);
return k;
}
-
+
static Key nk(int row, int colf, int colq, long ts) {
return new Key(nr(row), new Text(String.format("cf%03d", colf)), new Text(String.format("cq%03d", colq)), ts);
}
-
+
static Range nr(int row, int colf, int colq, long ts, boolean inclusive) {
return new Range(nk(row, colf, colq, ts), inclusive, null, true);
}
-
+
static Range nr(int row, int colf, int colq, long ts) {
return nr(row, colf, colq, ts, true);
}
-
+
static <V> void nkv(TreeMap<Key,Value> tm, int row, int colf, int colq, long ts, boolean deleted, V val, Encoder<V> encoder) {
Key k = nk(row, colf, colq, ts);
k.setDeleted(deleted);
tm.put(k, new Value(encoder.encode(val)));
}
-
+
static Text nr(int row) {
return new Text(String.format("r%03d", row));
}
-
+
@Test
public void test1() throws IOException {
Encoder<Long> encoder = LongCombiner.VAR_LEN_ENCODER;
-
+
TreeMap<Key,Value> tm1 = new TreeMap<Key,Value>();
-
+
// keys that do not aggregate
nkv(tm1, 1, 1, 1, 1, false, 2l, encoder);
nkv(tm1, 1, 1, 1, 2, false, 3l, encoder);
nkv(tm1, 1, 1, 1, 3, false, 4l, encoder);
-
+
Combiner ai = new SummingCombiner();
-
+
IteratorSetting is = new IteratorSetting(1, SummingCombiner.class);
LongCombiner.setEncodingType(is, SummingCombiner.Type.VARLEN);
Combiner.setColumns(is, Collections.singletonList(new IteratorSetting.Column("2")));
-
+
ai.init(new SortedMapIterator(tm1), is.getOptions(), null);
ai.seek(new Range(), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 3), ai.getTopKey());
assertEquals("4", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 2), ai.getTopKey());
assertEquals("3", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 1), ai.getTopKey());
assertEquals("2", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertFalse(ai.hasTop());
-
+
// try seeking
-
+
ai.seek(nr(1, 1, 1, 2), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 2), ai.getTopKey());
assertEquals("3", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 1), ai.getTopKey());
assertEquals("2", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertFalse(ai.hasTop());
-
+
// seek after everything
ai.seek(nr(1, 1, 1, 0), EMPTY_COL_FAMS, false);
-
+
assertFalse(ai.hasTop());
-
+
}
-
+
@Test
public void test2() throws IOException {
Encoder<Long> encoder = LongCombiner.VAR_LEN_ENCODER;
-
+
TreeMap<Key,Value> tm1 = new TreeMap<Key,Value>();
-
+
// keys that aggregate
nkv(tm1, 1, 1, 1, 1, false, 2l, encoder);
nkv(tm1, 1, 1, 1, 2, false, 3l, encoder);
nkv(tm1, 1, 1, 1, 3, false, 4l, encoder);
-
+
Combiner ai = new SummingCombiner();
-
+
IteratorSetting is = new IteratorSetting(1, SummingCombiner.class);
LongCombiner.setEncodingType(is, VarLenEncoder.class);
Combiner.setColumns(is, Collections.singletonList(new IteratorSetting.Column("cf001")));
-
+
ai.init(new SortedMapIterator(tm1), is.getOptions(), null);
ai.seek(new Range(), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 3), ai.getTopKey());
assertEquals("9", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertFalse(ai.hasTop());
-
+
// try seeking to the beginning of a key that aggregates
-
+
ai.seek(nr(1, 1, 1, 3), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 3), ai.getTopKey());
assertEquals("9", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertFalse(ai.hasTop());
-
+
// try seeking the middle of a key the aggregates
ai.seek(nr(1, 1, 1, 2), EMPTY_COL_FAMS, false);
-
+
assertFalse(ai.hasTop());
-
+
// try seeking to the end of a key the aggregates
ai.seek(nr(1, 1, 1, 1), EMPTY_COL_FAMS, false);
-
+
assertFalse(ai.hasTop());
-
+
// try seeking before a key the aggregates
ai.seek(nr(1, 1, 1, 4), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 3), ai.getTopKey());
assertEquals("9", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertFalse(ai.hasTop());
}
-
+
@Test
public void test3() throws IOException {
Encoder<Long> encoder = LongCombiner.FIXED_LEN_ENCODER;
-
+
TreeMap<Key,Value> tm1 = new TreeMap<Key,Value>();
-
+
// keys that aggregate
nkv(tm1, 1, 1, 1, 1, false, 2l, encoder);
nkv(tm1, 1, 1, 1, 2, false, 3l, encoder);
nkv(tm1, 1, 1, 1, 3, false, 4l, encoder);
-
+
// keys that do not aggregate
nkv(tm1, 2, 2, 1, 1, false, 2l, encoder);
nkv(tm1, 2, 2, 1, 2, false, 3l, encoder);
-
+
Combiner ai = new SummingCombiner();
-
+
IteratorSetting is = new IteratorSetting(1, SummingCombiner.class);
LongCombiner.setEncodingType(is, FixedLenEncoder.class.getName());
Combiner.setColumns(is, Collections.singletonList(new IteratorSetting.Column("cf001")));
-
+
ai.init(new SortedMapIterator(tm1), is.getOptions(), null);
ai.seek(new Range(), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 3), ai.getTopKey());
assertEquals("9", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertTrue(ai.hasTop());
assertEquals(nk(2, 2, 1, 2), ai.getTopKey());
assertEquals("3", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertTrue(ai.hasTop());
assertEquals(nk(2, 2, 1, 1), ai.getTopKey());
assertEquals("2", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertFalse(ai.hasTop());
-
+
// seek after key that aggregates
ai.seek(nr(1, 1, 1, 2), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(2, 2, 1, 2), ai.getTopKey());
assertEquals("3", encoder.decode(ai.getTopValue().get()).toString());
-
+
// seek before key that aggregates
ai.seek(nr(1, 1, 1, 4), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 3), ai.getTopKey());
assertEquals("9", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertTrue(ai.hasTop());
assertEquals(nk(2, 2, 1, 2), ai.getTopKey());
assertEquals("3", encoder.decode(ai.getTopValue().get()).toString());
-
+
}
-
+
@Test
public void testDeepCopy() throws IOException {
Encoder<Long> encoder = LongCombiner.FIXED_LEN_ENCODER;
-
+
TreeMap<Key,Value> tm1 = new TreeMap<Key,Value>();
-
+
// keys that aggregate
nkv(tm1, 1, 1, 1, 1, false, 2l, encoder);
nkv(tm1, 1, 1, 1, 2, false, 3l, encoder);
nkv(tm1, 1, 1, 1, 3, false, 4l, encoder);
-
+
// keys that do not aggregate
nkv(tm1, 2, 2, 1, 1, false, 2l, encoder);
nkv(tm1, 2, 2, 1, 2, false, 3l, encoder);
-
+
Combiner ai = new SummingCombiner();
-
+
IteratorSetting is = new IteratorSetting(1, SummingCombiner.class);
LongCombiner.setEncodingType(is, FixedLenEncoder.class.getName());
Combiner.setColumns(is, Collections.singletonList(new IteratorSetting.Column("cf001")));
-
+
ai.init(new SortedMapIterator(tm1), is.getOptions(), null);
-
+
SortedKeyValueIterator<Key,Value> ai2 = ai.deepCopy(null);
SortedKeyValueIterator<Key,Value> ai3 = ai.deepCopy(null);
ai.seek(new Range(), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 3), ai.getTopKey());
assertEquals("9", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertTrue(ai.hasTop());
assertEquals(nk(2, 2, 1, 2), ai.getTopKey());
assertEquals("3", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertTrue(ai.hasTop());
assertEquals(nk(2, 2, 1, 1), ai.getTopKey());
assertEquals("2", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertFalse(ai.hasTop());
-
+
// seek after key that aggregates
ai2.seek(nr(1, 1, 1, 2), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai2.hasTop());
assertEquals(nk(2, 2, 1, 2), ai2.getTopKey());
assertEquals("3", encoder.decode(ai2.getTopValue().get()).toString());
-
+
// seek before key that aggregates
ai3.seek(nr(1, 1, 1, 4), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai3.hasTop());
assertEquals(nk(1, 1, 1, 3), ai3.getTopKey());
assertEquals("9", encoder.decode(ai3.getTopValue().get()).toString());
-
+
ai3.next();
-
+
assertTrue(ai3.hasTop());
assertEquals(nk(2, 2, 1, 2), ai3.getTopKey());
assertEquals("3", encoder.decode(ai3.getTopValue().get()).toString());
}
-
+
@Test
public void test4() throws IOException {
Encoder<Long> encoder = LongCombiner.STRING_ENCODER;
-
+
TreeMap<Key,Value> tm1 = new TreeMap<Key,Value>();
-
+
// keys that do not aggregate
nkv(tm1, 0, 0, 1, 1, false, 7l, encoder);
-
+
// keys that aggregate
nkv(tm1, 1, 1, 1, 1, false, 2l, encoder);
nkv(tm1, 1, 1, 1, 2, false, 3l, encoder);
nkv(tm1, 1, 1, 1, 3, false, 4l, encoder);
-
+
// keys that do not aggregate
nkv(tm1, 2, 2, 1, 1, false, 2l, encoder);
nkv(tm1, 2, 2, 1, 2, false, 3l, encoder);
-
+
Combiner ai = new SummingCombiner();
-
+
IteratorSetting is = new IteratorSetting(1, SummingCombiner.class);
LongCombiner.setEncodingType(is, SummingCombiner.Type.STRING);
Combiner.setColumns(is, Collections.singletonList(new IteratorSetting.Column("cf001")));
-
+
ai.init(new SortedMapIterator(tm1), is.getOptions(), null);
ai.seek(new Range(), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(0, 0, 1, 1), ai.getTopKey());
assertEquals("7", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 3), ai.getTopKey());
assertEquals("9", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertTrue(ai.hasTop());
assertEquals(nk(2, 2, 1, 2), ai.getTopKey());
assertEquals("3", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertTrue(ai.hasTop());
assertEquals(nk(2, 2, 1, 1), ai.getTopKey());
assertEquals("2", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertFalse(ai.hasTop());
-
+
// seek test
ai.seek(nr(0, 0, 1, 0), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 3), ai.getTopKey());
assertEquals("9", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertTrue(ai.hasTop());
assertEquals(nk(2, 2, 1, 2), ai.getTopKey());
assertEquals("3", encoder.decode(ai.getTopValue().get()).toString());
-
+
// seek after key that aggregates
ai.seek(nr(1, 1, 1, 2), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(2, 2, 1, 2), ai.getTopKey());
assertEquals("3", encoder.decode(ai.getTopValue().get()).toString());
-
+
// combine all columns
-
+
is = new IteratorSetting(1, SummingCombiner.class);
LongCombiner.setEncodingType(is, SummingCombiner.Type.STRING);
Combiner.setCombineAllColumns(is, true);
-
+
ai.init(new SortedMapIterator(tm1), is.getOptions(), null);
ai.seek(new Range(), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(0, 0, 1, 1), ai.getTopKey());
assertEquals("7", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 3), ai.getTopKey());
assertEquals("9", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertTrue(ai.hasTop());
assertEquals(nk(2, 2, 1, 2), ai.getTopKey());
assertEquals("5", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertFalse(ai.hasTop());
}
-
+
@Test
public void test5() throws IOException {
Encoder<Long> encoder = LongCombiner.STRING_ENCODER;
// try aggregating across multiple data sets that contain
// the exact same keys w/ different values
-
+
TreeMap<Key,Value> tm1 = new TreeMap<Key,Value>();
nkv(tm1, 1, 1, 1, 1, false, 2l, encoder);
-
+
TreeMap<Key,Value> tm2 = new TreeMap<Key,Value>();
nkv(tm2, 1, 1, 1, 1, false, 3l, encoder);
-
+
TreeMap<Key,Value> tm3 = new TreeMap<Key,Value>();
nkv(tm3, 1, 1, 1, 1, false, 4l, encoder);
-
+
Combiner ai = new SummingCombiner();
-
+
IteratorSetting is = new IteratorSetting(1, SummingCombiner.class);
LongCombiner.setEncodingType(is, StringEncoder.class);
Combiner.setColumns(is, Collections.singletonList(new IteratorSetting.Column("cf001")));
-
+
List<SortedKeyValueIterator<Key,Value>> sources = new ArrayList<SortedKeyValueIterator<Key,Value>>(3);
sources.add(new SortedMapIterator(tm1));
sources.add(new SortedMapIterator(tm2));
sources.add(new SortedMapIterator(tm3));
-
+
MultiIterator mi = new MultiIterator(sources, true);
ai.init(mi, is.getOptions(), null);
ai.seek(new Range(), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 1), ai.getTopKey());
assertEquals("9", encoder.decode(ai.getTopValue().get()).toString());
}
-
+
@Test
public void test6() throws IOException {
Encoder<Long> encoder = LongCombiner.VAR_LEN_ENCODER;
TreeMap<Key,Value> tm1 = new TreeMap<Key,Value>();
-
+
// keys that aggregate
nkv(tm1, 1, 1, 1, 1, false, 2l, encoder);
nkv(tm1, 1, 1, 1, 2, false, 3l, encoder);
nkv(tm1, 1, 1, 1, 3, false, 4l, encoder);
-
+
Combiner ai = new SummingCombiner();
-
+
IteratorSetting is = new IteratorSetting(1, SummingCombiner.class);
LongCombiner.setEncodingType(is, VarLenEncoder.class.getName());
Combiner.setColumns(is, Collections.singletonList(new IteratorSetting.Column("cf001")));
-
+
ai.init(new SortedMapIterator(tm1), is.getOptions(), new DefaultIteratorEnvironment());
-
+
// try seeking to the beginning of a key that aggregates
-
+
ai.seek(nr(1, 1, 1, 3, false), EMPTY_COL_FAMS, false);
-
+
assertFalse(ai.hasTop());
-
+
}
-
+
@Test
public void test7() throws IOException {
Encoder<Long> encoder = LongCombiner.FIXED_LEN_ENCODER;
-
+
// test that delete is not aggregated
-
+
TreeMap<Key,Value> tm1 = new TreeMap<Key,Value>();
-
+
nkv(tm1, 1, 1, 1, 2, true, 0l, encoder);
nkv(tm1, 1, 1, 1, 3, false, 4l, encoder);
nkv(tm1, 1, 1, 1, 4, false, 3l, encoder);
-
+
Combiner ai = new SummingCombiner();
-
+
IteratorSetting is = new IteratorSetting(1, SummingCombiner.class);
LongCombiner.setEncodingType(is, SummingCombiner.Type.FIXEDLEN);
Combiner.setColumns(is, Collections.singletonList(new IteratorSetting.Column("cf001")));
-
+
ai.init(new SortedMapIterator(tm1), is.getOptions(), new DefaultIteratorEnvironment());
-
+
ai.seek(nr(1, 1, 1, 4, true), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 4), ai.getTopKey());
assertEquals("7", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 2, true), ai.getTopKey());
assertEquals("0", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
assertFalse(ai.hasTop());
-
+
tm1 = new TreeMap<Key,Value>();
nkv(tm1, 1, 1, 1, 2, true, 0l, encoder);
ai = new SummingCombiner();
ai.init(new SortedMapIterator(tm1), is.getOptions(), new DefaultIteratorEnvironment());
-
+
ai.seek(nr(1, 1, 1, 4, true), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 2, true), ai.getTopKey());
assertEquals("0", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
assertFalse(ai.hasTop());
}
-
+
@Test
public void valueIteratorTest() throws IOException {
TreeMap<Key,Value> tm = new TreeMap<Key,Value>();
@@ -567,7 +567,7 @@ public class CombinerTest {
assertEquals(iter.next().toString(), "1");
assertFalse(iter.hasNext());
}
-
+
@Test
public void sumAllColumns() throws IOException {
TreeMap<Key,Value> tm = new TreeMap<Key,Value>();
@@ -585,11 +585,11 @@ public class CombinerTest {
iter.init(smi, s.getOptions(), new DefaultIteratorEnvironment());
Combiner iter2 = new SummingCombiner();
IteratorSetting s2 = new IteratorSetting(10, "s2", SummingCombiner.class);
- SummingCombiner.setColumns(s2, Collections.singletonList(new IteratorSetting.Column("count","a")));
+ SummingCombiner.setColumns(s2, Collections.singletonList(new IteratorSetting.Column("count", "a")));
SummingCombiner.setEncodingType(s2, LongCombiner.StringEncoder.class);
iter2.init(iter, s.getOptions(), new DefaultIteratorEnvironment());
iter2.seek(new Range(), EMPTY_COL_FAMS, false);
-
+
assertTrue(iter2.hasTop());
assertEquals("2", iter2.getTopValue().toString());
iter2.next();
@@ -601,51 +601,49 @@ public class CombinerTest {
iter2.next();
assertFalse(iter2.hasTop());
}
-
-
@Test
public void maxMinTest() throws IOException {
Encoder<Long> encoder = LongCombiner.VAR_LEN_ENCODER;
-
+
TreeMap<Key,Value> tm1 = new TreeMap<Key,Value>();
-
+
// keys that aggregate
nkv(tm1, 1, 1, 1, 1, false, 4l, encoder);
nkv(tm1, 1, 1, 1, 2, false, 3l, encoder);
nkv(tm1, 1, 1, 1, 3, false, 2l, encoder);
-
+
Combiner ai = new MaxCombiner();
-
+
IteratorSetting is = new IteratorSetting(1, SummingCombiner.class);
LongCombiner.setEncodingType(is, SummingCombiner.Type.VARLEN);
Combiner.setColumns(is, Collections.singletonList(new IteratorSetting.Column("cf001")));
-
+
ai.init(new SortedMapIterator(tm1), is.getOptions(), null);
ai.seek(new Range(), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 3), ai.getTopKey());
assertEquals("4", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertFalse(ai.hasTop());
-
+
ai = new MinCombiner();
-
+
ai.init(new SortedMapIterator(tm1), is.getOptions(), null);
ai.seek(new Range(), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 3), ai.getTopKey());
assertEquals("2", encoder.decode(ai.getTopValue().get()).toString());
-
+
ai.next();
-
+
assertFalse(ai.hasTop());
}
-
+
public static List<Long> nal(Long... longs) {
List<Long> al = new ArrayList<Long>(longs.length);
for (Long l : longs) {
@@ -653,110 +651,110 @@ public class CombinerTest {
}
return al;
}
-
+
public static void assertBytesEqual(byte[] a, byte[] b) {
assertEquals(a.length, b.length);
for (int i = 0; i < a.length; i++)
assertEquals(a[i], b[i]);
}
-
+
public static void sumArray(Class<? extends Encoder<List<Long>>> encoderClass, SummingArrayCombiner.Type type) throws IOException, InstantiationException,
IllegalAccessException {
Encoder<List<Long>> encoder = encoderClass.newInstance();
-
+
TreeMap<Key,Value> tm1 = new TreeMap<Key,Value>();
-
+
// keys that aggregate
nkv(tm1, 1, 1, 1, 1, false, nal(1l, 2l), encoder);
nkv(tm1, 1, 1, 1, 2, false, nal(3l, 4l, 5l), encoder);
nkv(tm1, 1, 1, 1, 3, false, nal(), encoder);
-
+
Combiner ai = new SummingArrayCombiner();
-
+
IteratorSetting is = new IteratorSetting(1, SummingArrayCombiner.class);
SummingArrayCombiner.setEncodingType(is, type);
Combiner.setColumns(is, Collections.singletonList(new IteratorSetting.Column("cf001")));
-
+
ai.init(new SortedMapIterator(tm1), is.getOptions(), null);
ai.seek(new Range(), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 3), ai.getTopKey());
assertBytesEqual(encoder.encode(nal(4l, 6l, 5l)), ai.getTopValue().get());
-
+
ai.next();
-
+
assertFalse(ai.hasTop());
-
+
is.clearOptions();
SummingArrayCombiner.setEncodingType(is, encoderClass);
Combiner.setColumns(is, Collections.singletonList(new IteratorSetting.Column("cf001")));
-
+
ai.init(new SortedMapIterator(tm1), is.getOptions(), null);
ai.seek(new Range(), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 3), ai.getTopKey());
assertBytesEqual(encoder.encode(nal(4l, 6l, 5l)), ai.getTopValue().get());
-
+
ai.next();
-
+
assertFalse(ai.hasTop());
-
+
is.clearOptions();
SummingArrayCombiner.setEncodingType(is, encoderClass.getName());
Combiner.setColumns(is, Collections.singletonList(new IteratorSetting.Column("cf001")));
-
+
ai.init(new SortedMapIterator(tm1), is.getOptions(), null);
ai.seek(new Range(), EMPTY_COL_FAMS, false);
-
+
assertTrue(ai.hasTop());
assertEquals(nk(1, 1, 1, 3), ai.getTopKey());
assertBytesEqual(encoder.encode(nal(4l, 6l, 5l)), ai.getTopValue().get());
-
+
ai.next();
-
+
assertFalse(ai.hasTop());
-
+
is.clearOptions();
SummingArrayCombiner.setEncodingType(is, SummingCombiner.VAR_LEN_ENCODER.getClass().getName());
Combiner.setColumns(is, Collections.singletonList(new IteratorSetting.Column("cf001")));
-
+
try {
ai.init(new SortedMapIterator(tm1), is.getOptions(), null);
Assert.fail();
} catch (IllegalArgumentException e) {}
-
+
is.clearOptions();
SummingArrayCombiner.setEncodingType(is, BadEncoder.class.getName());
Combiner.setColumns(is, Collections.singletonList(new IteratorSetting.Column("cf001")));
-
+
try {
ai.init(new SortedMapIterator(tm1), is.getOptions(), null);
Assert.fail();
} catch (IllegalArgumentException e) {}
}
-
+
public static class BadEncoder implements Encoder<List<Long>> {
@Override
public byte[] encode(List<Long> v) {
return new byte[0];
}
-
+
@Override
public List<Long> decode(byte[] b) {
return new ArrayList<Long>();
}
-
+
}
-
+
@Test
public void sumArrayTest() throws IOException, InstantiationException, IllegalAccessException {
sumArray(SummingArrayCombiner.VarLongArrayEncoder.class, SummingArrayCombiner.Type.VARLEN);
sumArray(SummingArrayCombiner.FixedLongArrayEncoder.class, SummingArrayCombiner.Type.FIXEDLEN);
sumArray(SummingArrayCombiner.StringArrayEncoder.class, SummingArrayCombiner.Type.STRING);
}
-
+
@Test
public void testEncoders() {
TypedValueCombiner.testEncoder(SummingCombiner.FIXED_LEN_ENCODER, Long.MAX_VALUE);
@@ -774,12 +772,12 @@ public class CombinerTest {
TypedValueCombiner.testEncoder(SummingCombiner.STRING_ENCODER, 42l);
TypedValueCombiner.testEncoder(SummingCombiner.STRING_ENCODER, -42l);
TypedValueCombiner.testEncoder(SummingCombiner.STRING_ENCODER, 0l);
-
+
TypedValueCombiner.testEncoder(SummingArrayCombiner.FIXED_LONG_ARRAY_ENCODER, Arrays.asList(0l, -1l, 10l, Long.MAX_VALUE, Long.MIN_VALUE));
TypedValueCombiner.testEncoder(SummingArrayCombiner.VAR_LONG_ARRAY_ENCODER, Arrays.asList(0l, -1l, 10l, Long.MAX_VALUE, Long.MIN_VALUE));
TypedValueCombiner.testEncoder(SummingArrayCombiner.STRING_ARRAY_ENCODER, Arrays.asList(0l, -1l, 10l, Long.MAX_VALUE, Long.MIN_VALUE));
}
-
+
@Test
public void testAdds() {
assertEquals(LongCombiner.safeAdd(Long.MIN_VALUE + 5, -10), Long.MIN_VALUE);
@@ -787,5 +785,5 @@ public class CombinerTest {
assertEquals(LongCombiner.safeAdd(Long.MIN_VALUE + 5, -5), Long.MIN_VALUE);
assertEquals(LongCombiner.safeAdd(Long.MAX_VALUE - 5, 5), Long.MAX_VALUE);
}
-
+
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/core/src/test/java/org/apache/accumulo/core/iterators/user/FilterTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/iterators/user/FilterTest.java b/core/src/test/java/org/apache/accumulo/core/iterators/user/FilterTest.java
index b7a842f..3aefdf1 100644
--- a/core/src/test/java/org/apache/accumulo/core/iterators/user/FilterTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/user/FilterTest.java
@@ -47,10 +47,10 @@ import org.apache.hadoop.io.Text;
import org.junit.Test;
public class FilterTest {
-
+
private static final Collection<ByteSequence> EMPTY_COL_FAMS = new ArrayList<ByteSequence>();
private static final Map<String,String> EMPTY_OPTS = new HashMap<String,String>();
-
+
public static class SimpleFilter extends Filter {
public boolean accept(Key k, Value v) {
// System.out.println(k.getRow());
@@ -59,7 +59,7 @@ public class FilterTest {
return false;
}
}
-
+
public static class SimpleFilter2 extends Filter {
public boolean accept(Key k, Value v) {
if (k.getColumnFamily().toString().equals("a"))
@@ -67,7 +67,7 @@ public class FilterTest {
return true;
}
}
-
+
private static int size(SortedKeyValueIterator<Key,Value> iterator) throws IOException {
int size = 0;
while (iterator.hasTop()) {
@@ -77,33 +77,33 @@ public class FilterTest {
}
return size;
}
-
+
@Test
public void test1() throws IOException {
Text colf = new Text("a");
Text colq = new Text("b");
Value dv = new Value();
TreeMap<Key,Value> tm = new TreeMap<Key,Value>();
-
+
for (int i = 0; i < 1000; i++) {
Key k = new Key(new Text(String.format("%03d", i)), colf, colq);
tm.put(k, dv);
}
assertTrue(tm.size() == 1000);
-
+
Filter filter1 = new SimpleFilter();
filter1.init(new SortedMapIterator(tm), EMPTY_OPTS, null);
filter1.seek(new Range(), EMPTY_COL_FAMS, false);
int size = size(filter1);
assertTrue("size = " + size, size == 100);
-
+
Filter fi = new SimpleFilter();
fi.init(new SortedMapIterator(tm), EMPTY_OPTS, null);
Key k = new Key(new Text("500"));
fi.seek(new Range(k, null), EMPTY_COL_FAMS, false);
size = size(fi);
assertTrue("size = " + size, size == 50);
-
+
filter1 = new SimpleFilter();
filter1.init(new SortedMapIterator(tm), EMPTY_OPTS, null);
Filter filter2 = new SimpleFilter2();
@@ -112,36 +112,36 @@ public class FilterTest {
size = size(filter2);
assertTrue("size = " + size, size == 0);
}
-
+
@Test
public void test1neg() throws IOException {
Text colf = new Text("a");
Text colq = new Text("b");
Value dv = new Value();
TreeMap<Key,Value> tm = new TreeMap<Key,Value>();
-
+
for (int i = 0; i < 1000; i++) {
Key k = new Key(new Text(String.format("%03d", i)), colf, colq);
tm.put(k, dv);
}
assertTrue(tm.size() == 1000);
-
+
Filter filter = new SimpleFilter();
-
+
IteratorSetting is = new IteratorSetting(1, SimpleFilter.class);
Filter.setNegate(is, true);
-
+
filter.init(new SortedMapIterator(tm), is.getOptions(), null);
filter.seek(new Range(), EMPTY_COL_FAMS, false);
int size = size(filter);
assertTrue("size = " + size, size == 900);
-
+
filter.init(new SortedMapIterator(tm), is.getOptions(), null);
Key k = new Key(new Text("500"));
filter.seek(new Range(k, null), EMPTY_COL_FAMS, false);
size = size(filter);
assertTrue("size = " + size, size == 450);
-
+
filter.init(new SortedMapIterator(tm), EMPTY_OPTS, null);
Filter filter2 = new SimpleFilter2();
filter2.init(filter, is.getOptions(), null);
@@ -149,25 +149,25 @@ public class FilterTest {
size = size(filter2);
assertTrue("size = " + size, size == 100);
}
-
+
@Test
public void testDeepCopy() throws IOException {
Text colf = new Text("a");
Text colq = new Text("b");
Value dv = new Value();
TreeMap<Key,Value> tm = new TreeMap<Key,Value>();
-
+
for (int i = 0; i < 1000; i++) {
Key k = new Key(new Text(String.format("%03d", i)), colf, colq);
tm.put(k, dv);
}
assertTrue(tm.size() == 1000);
-
+
SimpleFilter filter = new SimpleFilter();
-
+
IteratorSetting is = new IteratorSetting(1, SimpleFilter.class);
Filter.setNegate(is, true);
-
+
filter.init(new SortedMapIterator(tm), is.getOptions(), null);
SortedKeyValueIterator<Key,Value> copy = filter.deepCopy(null);
filter.seek(new Range(), EMPTY_COL_FAMS, false);
@@ -177,21 +177,21 @@ public class FilterTest {
size = size(copy);
assertTrue("size = " + size, size == 900);
}
-
+
@Test
public void test2() throws IOException {
Text colf = new Text("a");
Text colq = new Text("b");
Value dv = new Value();
TreeMap<Key,Value> tm = new TreeMap<Key,Value>();
-
+
for (int i = 0; i < 1000; i++) {
Key k = new Key(new Text(String.format("%03d", i)), colf, colq);
k.setTimestamp(i);
tm.put(k, dv);
}
assertTrue(tm.size() == 1000);
-
+
SortedKeyValueIterator<Key,Value> a = new AgeOffFilter();
IteratorSetting is = new IteratorSetting(1, AgeOffFilter.class);
AgeOffFilter.setTTL(is, 101l);
@@ -210,7 +210,7 @@ public class FilterTest {
copy.seek(new Range(), EMPTY_COL_FAMS, false);
assertEquals(size(copy), 900);
}
-
+
@Test
public void test2a() throws IOException {
Text colf = new Text("a");
@@ -220,26 +220,26 @@ public class FilterTest {
IteratorSetting is = new IteratorSetting(1, ColumnAgeOffFilter.class);
ColumnAgeOffFilter.addTTL(is, new IteratorSetting.Column("a"), 901l);
long ts = System.currentTimeMillis();
-
+
for (long i = 0; i < 1000; i++) {
Key k = new Key(new Text(String.format("%03d", i)), colf, colq, ts - i);
tm.put(k, dv);
}
assertTrue(tm.size() == 1000);
-
+
ColumnAgeOffFilter a = new ColumnAgeOffFilter();
assertTrue(a.validateOptions(is.getOptions()));
a.init(new SortedMapIterator(tm), is.getOptions(), new DefaultIteratorEnvironment());
a.overrideCurrentTime(ts);
a.seek(new Range(), EMPTY_COL_FAMS, false);
assertEquals(size(a), 902);
-
+
ColumnAgeOffFilter.addTTL(is, new IteratorSetting.Column("a", "b"), 101l);
a.init(new SortedMapIterator(tm), is.getOptions(), new DefaultIteratorEnvironment());
a.overrideCurrentTime(ts);
a.seek(new Range(), EMPTY_COL_FAMS, false);
assertEquals(size(a), 102);
-
+
ColumnAgeOffFilter.removeTTL(is, new IteratorSetting.Column("a", "b"));
a.init(new SortedMapIterator(tm), is.getOptions(), new DefaultIteratorEnvironment());
a = (ColumnAgeOffFilter) a.deepCopy(null);
@@ -247,14 +247,14 @@ public class FilterTest {
a.seek(new Range(), EMPTY_COL_FAMS, false);
assertEquals(size(a), 902);
}
-
+
@Test
public void test3() throws IOException {
Value dv = new Value();
TreeMap<Key,Value> tm = new TreeMap<Key,Value>();
HashSet<Column> hsc = new HashSet<Column>();
hsc.add(new Column("c".getBytes(), null, null));
-
+
Text colf1 = new Text("a");
Text colq1 = new Text("b");
Text colf2 = new Text("c");
@@ -274,93 +274,93 @@ public class FilterTest {
tm.put(k, dv);
}
assertTrue(tm.size() == 1000);
-
+
ColumnQualifierFilter a = new ColumnQualifierFilter(new SortedMapIterator(tm), hsc);
a.seek(new Range(), EMPTY_COL_FAMS, false);
assertEquals(size(a), 1000);
-
+
hsc = new HashSet<Column>();
hsc.add(new Column("a".getBytes(), "b".getBytes(), null));
a = new ColumnQualifierFilter(new SortedMapIterator(tm), hsc);
a.seek(new Range(), EMPTY_COL_FAMS, false);
int size = size(a);
assertTrue("size was " + size, size == 500);
-
+
hsc = new HashSet<Column>();
a = new ColumnQualifierFilter(new SortedMapIterator(tm), hsc);
a.seek(new Range(), EMPTY_COL_FAMS, false);
size = size(a);
assertTrue("size was " + size, size == 1000);
}
-
+
@Test
public void test4() throws IOException {
Value dv = new Value();
TreeMap<Key,Value> tm = new TreeMap<Key,Value>();
-
+
ColumnVisibility le1 = new ColumnVisibility("L1");
ColumnVisibility le2 = new ColumnVisibility("L0&OFFICIAL");
ColumnVisibility le3 = new ColumnVisibility("L1&L2");
ColumnVisibility le4 = new ColumnVisibility("L1&L2&G1");
ColumnVisibility[] lea = {le1, le2, le3, le4};
Authorizations auths = new Authorizations("L1", "L2", "L0", "OFFICIAL");
-
+
for (int i = 0; i < 1000; i++) {
Key k = new Key(new Text(String.format("%03d", i)), new Text("a"), new Text("b"), new Text(lea[i % 4].getExpression()));
tm.put(k, dv);
}
assertTrue(tm.size() == 1000);
-
+
VisibilityFilter a = new VisibilityFilter(new SortedMapIterator(tm), auths, le2.getExpression());
a.seek(new Range(), EMPTY_COL_FAMS, false);
int size = size(a);
assertTrue("size was " + size, size == 750);
}
-
+
private ColumnQualifierFilter ncqf(TreeMap<Key,Value> tm, Column... columns) throws IOException {
HashSet<Column> hsc = new HashSet<Column>();
-
+
for (Column column : columns) {
hsc.add(column);
}
-
+
ColumnQualifierFilter a = new ColumnQualifierFilter(new SortedMapIterator(tm), hsc);
a.seek(new Range(), EMPTY_COL_FAMS, false);
return a;
}
-
+
@Test
public void test5() throws IOException {
Value dv = new Value();
TreeMap<Key,Value> tm = new TreeMap<Key,Value>();
-
+
tm.put(new Key(new Text(String.format("%03d", 1)), new Text("a"), new Text("x")), dv);
tm.put(new Key(new Text(String.format("%03d", 2)), new Text("a"), new Text("y")), dv);
tm.put(new Key(new Text(String.format("%03d", 3)), new Text("a"), new Text("z")), dv);
tm.put(new Key(new Text(String.format("%03d", 4)), new Text("b"), new Text("x")), dv);
tm.put(new Key(new Text(String.format("%03d", 5)), new Text("b"), new Text("y")), dv);
-
+
assertTrue(tm.size() == 5);
-
+
int size = size(ncqf(tm, new Column("c".getBytes(), null, null)));
assertTrue(size == 5);
-
+
size = size(ncqf(tm, new Column("a".getBytes(), null, null)));
assertTrue(size == 5);
-
+
size = size(ncqf(tm, new Column("a".getBytes(), "x".getBytes(), null)));
assertTrue(size == 1);
-
+
size = size(ncqf(tm, new Column("a".getBytes(), "x".getBytes(), null), new Column("b".getBytes(), "x".getBytes(), null)));
assertTrue(size == 2);
-
+
size = size(ncqf(tm, new Column("a".getBytes(), "x".getBytes(), null), new Column("b".getBytes(), "y".getBytes(), null)));
assertTrue(size == 2);
-
+
size = size(ncqf(tm, new Column("a".getBytes(), "x".getBytes(), null), new Column("b".getBytes(), null, null)));
assertTrue(size == 3);
}
-
+
@Test
public void testNoVisFilter() throws IOException {
TreeMap<Key,Value> tm = new TreeMap<Key,Value>();
@@ -370,28 +370,28 @@ public class FilterTest {
tm.put(k, v);
}
assertTrue(tm.size() == 1000);
-
+
Filter filter = new ReqVisFilter();
filter.init(new SortedMapIterator(tm), EMPTY_OPTS, null);
filter.seek(new Range(), EMPTY_COL_FAMS, false);
int size = size(filter);
assertTrue("size = " + size, size == 100);
}
-
+
@Test
public void testTimestampFilter() throws IOException, ParseException {
Text colf = new Text("a");
Text colq = new Text("b");
Value dv = new Value();
TreeMap<Key,Value> tm = new TreeMap<Key,Value>();
-
+
for (int i = 0; i < 100; i++) {
Key k = new Key(new Text(String.format("%02d", i)), colf, colq);
k.setTimestamp(i);
tm.put(k, dv);
}
assertTrue(tm.size() == 100);
-
+
SimpleDateFormat dateParser = new SimpleDateFormat("yyyyMMddHHmmssz");
long baseTime = dateParser.parse("19990101000000GMT").getTime();
tm.clear();
@@ -412,76 +412,76 @@ public class FilterTest {
a.init(new SortedMapIterator(tm), is.getOptions(), null);
a.seek(new Range(), EMPTY_COL_FAMS, false);
assertEquals(size(a), 21);
-
+
TimestampFilter.setEnd(is, "19990101000031GMT", false);
a.init(new SortedMapIterator(tm), is.getOptions(), null);
a.seek(new Range(), EMPTY_COL_FAMS, false);
assertEquals(size(a), 20);
-
+
TimestampFilter.setStart(is, "19990101000011GMT", false);
a.init(new SortedMapIterator(tm), is.getOptions(), null);
a.seek(new Range(), EMPTY_COL_FAMS, false);
assertEquals(size(a), 19);
-
+
TimestampFilter.setEnd(is, "19990101000031GMT", true);
a.init(new SortedMapIterator(tm), is.getOptions(), null);
a.seek(new Range(), EMPTY_COL_FAMS, false);
assertEquals(size(a), 20);
-
+
is.clearOptions();
TimestampFilter.setStart(is, "19990101000011GMT", true);
a.init(new SortedMapIterator(tm), is.getOptions(), null);
a.seek(new Range(), EMPTY_COL_FAMS, false);
assertEquals(size(a), 89);
-
+
TimestampFilter.setStart(is, "19990101000011GMT", false);
assertTrue(a.validateOptions(is.getOptions()));
a.init(new SortedMapIterator(tm), is.getOptions(), null);
a.seek(new Range(), EMPTY_COL_FAMS, false);
assertEquals(size(a), 88);
-
+
is.clearOptions();
TimestampFilter.setEnd(is, "19990101000031GMT", true);
a.init(new SortedMapIterator(tm), is.getOptions(), null);
a.seek(new Range(), EMPTY_COL_FAMS, false);
assertEquals(size(a), 32);
-
+
TimestampFilter.setEnd(is, "19990101000031GMT", false);
assertTrue(a.validateOptions(is.getOptions()));
a.init(new SortedMapIterator(tm), is.getOptions(), null);
a.seek(new Range(), EMPTY_COL_FAMS, false);
assertEquals(size(a), 31);
-
+
TimestampFilter.setEnd(is, 253402300800001l, true);
a.init(new SortedMapIterator(tm), is.getOptions(), null);
-
+
is.clearOptions();
is.addOption(TimestampFilter.START, "19990101000011GMT");
assertTrue(a.validateOptions(is.getOptions()));
a.init(new SortedMapIterator(tm), is.getOptions(), null);
a.seek(new Range(), EMPTY_COL_FAMS, false);
assertEquals(size(a), 89);
-
+
is.clearOptions();
is.addOption(TimestampFilter.END, "19990101000031GMT");
assertTrue(a.validateOptions(is.getOptions()));
a.init(new SortedMapIterator(tm), is.getOptions(), null);
a.seek(new Range(), EMPTY_COL_FAMS, false);
assertEquals(size(a), 32);
-
+
try {
a.validateOptions(EMPTY_OPTS);
assertTrue(false);
} catch (IllegalArgumentException e) {}
}
-
+
@Test
public void testDeletes() throws IOException {
Text colf = new Text("a");
Text colq = new Text("b");
Value dv = new Value();
TreeMap<Key,Value> tm = new TreeMap<Key,Value>();
-
+
Key k = new Key(new Text("0"), colf, colq);
tm.put(k, dv);
k = new Key(new Text("1"), colf, colq, 10);
@@ -491,14 +491,14 @@ public class FilterTest {
tm.put(k, dv);
k = new Key(new Text("10"), colf, colq);
tm.put(k, dv);
-
+
assertTrue(tm.size() == 4);
-
+
Filter filter = new SimpleFilter();
filter.init(new SortedMapIterator(tm), EMPTY_OPTS, null);
filter.seek(new Range(), EMPTY_COL_FAMS, false);
int size = size(filter);
assertTrue("size = " + size, size == 3);
-
+
}
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/core/src/test/java/org/apache/accumulo/core/iterators/user/GrepIteratorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/iterators/user/GrepIteratorTest.java b/core/src/test/java/org/apache/accumulo/core/iterators/user/GrepIteratorTest.java
index bfce3db..23af994 100644
--- a/core/src/test/java/org/apache/accumulo/core/iterators/user/GrepIteratorTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/user/GrepIteratorTest.java
@@ -41,33 +41,33 @@ public class GrepIteratorTest {
private static final Collection<ByteSequence> EMPTY_COL_FAMS = new ArrayList<ByteSequence>();
SortedMap<Key,Value> input;
SortedMap<Key,Value> output;
-
+
@Before
public void init() {
input = new TreeMap<Key,Value>();
output = new TreeMap<Key,Value>();
input.put(new Key("abcdef", "xyz", "xyz", 0), new Value("xyz".getBytes()));
output.put(new Key("abcdef", "xyz", "xyz", 0), new Value("xyz".getBytes()));
-
+
input.put(new Key("bdf", "ace", "xyz", 0), new Value("xyz".getBytes()));
input.put(new Key("bdf", "abcdef", "xyz", 0), new Value("xyz".getBytes()));
output.put(new Key("bdf", "abcdef", "xyz", 0), new Value("xyz".getBytes()));
input.put(new Key("bdf", "xyz", "xyz", 0), new Value("xyz".getBytes()));
-
+
input.put(new Key("ceg", "xyz", "abcdef", 0), new Value("xyz".getBytes()));
output.put(new Key("ceg", "xyz", "abcdef", 0), new Value("xyz".getBytes()));
input.put(new Key("ceg", "xyz", "xyz", 0), new Value("xyz".getBytes()));
-
+
input.put(new Key("dfh", "xyz", "xyz", 0), new Value("abcdef".getBytes()));
output.put(new Key("dfh", "xyz", "xyz", 0), new Value("abcdef".getBytes()));
input.put(new Key("dfh", "xyz", "xyz", 1), new Value("xyz".getBytes()));
-
+
Key k = new Key("dfh", "xyz", "xyz", 1);
k.setDeleted(true);
input.put(k, new Value("xyz".getBytes()));
output.put(k, new Value("xyz".getBytes()));
}
-
+
public static void checkEntries(SortedKeyValueIterator<Key,Value> skvi, SortedMap<Key,Value> map) throws IOException {
for (Entry<Key,Value> e : map.entrySet()) {
assertTrue(skvi.hasTop());
@@ -77,7 +77,7 @@ public class GrepIteratorTest {
}
assertFalse(skvi.hasTop());
}
-
+
@Test
public void test() throws IOException {
GrepIterator gi = new GrepIterator();
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/core/src/test/java/org/apache/accumulo/core/iterators/user/IndexedDocIteratorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/iterators/user/IndexedDocIteratorTest.java b/core/src/test/java/org/apache/accumulo/core/iterators/user/IndexedDocIteratorTest.java
index ac0ab6b..117fcac 100644
--- a/core/src/test/java/org/apache/accumulo/core/iterators/user/IndexedDocIteratorTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/user/IndexedDocIteratorTest.java
@@ -43,29 +43,29 @@ import org.apache.log4j.Level;
import org.apache.log4j.Logger;
public class IndexedDocIteratorTest extends TestCase {
-
+
private static final Logger log = Logger.getLogger(IndexedDocIteratorTest.class);
-
+
private static final Collection<ByteSequence> EMPTY_COL_FAMS = new ArrayList<ByteSequence>();
private static final byte[] nullByte = {0};
-
+
private static IteratorEnvironment env = new DefaultIteratorEnvironment();
-
+
TreeMap<Key,Value> map;
Text[] columnFamilies;
Text[] otherColumnFamilies;
-
+
static int docid = 0;
static String docColfPrefix = "doc";
static Text indexColf = new Text("index");
static Text docColf = new Text(docColfPrefix);
-
+
static {
log.setLevel(Level.OFF);
docColf.append(nullByte, 0, 1);
docColf.append("type".getBytes(), 0, "type".getBytes().length);
}
-
+
private TreeMap<Key,Value> createSortedMap(float hitRatio, int numRows, int numDocsPerRow, Text[] columnFamilies, Text[] otherColumnFamilies,
HashSet<Text> docs, Text[] negatedColumns) {
StringBuilder sb = new StringBuilder();
@@ -73,7 +73,7 @@ public class IndexedDocIteratorTest extends TestCase {
Value v = new Value(new byte[0]);
TreeMap<Key,Value> map = new TreeMap<Key,Value>();
boolean[] negateMask = new boolean[columnFamilies.length];
-
+
for (int i = 0; i < columnFamilies.length; i++) {
negateMask[i] = false;
if (negatedColumns.length > 0)
@@ -131,20 +131,20 @@ public class IndexedDocIteratorTest extends TestCase {
}
return map;
}
-
+
static TestRFile trf = new TestRFile(AccumuloConfiguration.getDefaultConfiguration());
-
+
private SortedKeyValueIterator<Key,Value> createIteratorStack(float hitRatio, int numRows, int numDocsPerRow, Text[] columnFamilies,
Text[] otherColumnFamilies, HashSet<Text> docs) throws IOException {
Text nullText[] = new Text[0];
return createIteratorStack(hitRatio, numRows, numDocsPerRow, columnFamilies, otherColumnFamilies, docs, nullText);
}
-
+
private SortedKeyValueIterator<Key,Value> createIteratorStack(float hitRatio, int numRows, int numDocsPerRow, Text[] columnFamilies,
Text[] otherColumnFamilies, HashSet<Text> docs, Text[] negatedColumns) throws IOException {
// write a map file
trf.openWriter(false);
-
+
TreeMap<Key,Value> inMemoryMap = createSortedMap(hitRatio, numRows, numDocsPerRow, columnFamilies, otherColumnFamilies, docs, negatedColumns);
trf.writer.startNewLocalityGroup("docs", RFileTest.ncfs(docColf.toString()));
for (Entry<Key,Value> entry : inMemoryMap.entrySet()) {
@@ -156,28 +156,28 @@ public class IndexedDocIteratorTest extends TestCase {
if (entry.getKey().getColumnFamily().equals(indexColf))
trf.writer.append(entry.getKey(), entry.getValue());
}
-
+
trf.closeWriter();
-
+
trf.openReader();
return trf.reader;
}
-
+
private synchronized static void cleanup() throws IOException {
trf.closeReader();
docid = 0;
}
-
+
public void testNull() {}
-
+
@Override
public void setUp() {
Logger.getRootLogger().setLevel(Level.ERROR);
}
-
+
private static final int NUM_ROWS = 5;
private static final int NUM_DOCIDS = 200;
-
+
public void test1() throws IOException {
columnFamilies = new Text[2];
columnFamilies[0] = new Text("CC");
@@ -187,7 +187,7 @@ public class IndexedDocIteratorTest extends TestCase {
otherColumnFamilies[1] = new Text("B");
otherColumnFamilies[2] = new Text("D");
otherColumnFamilies[3] = new Text("F");
-
+
float hitRatio = 0.5f;
HashSet<Text> docs = new HashSet<Text>();
SortedKeyValueIterator<Key,Value> source = createIteratorStack(hitRatio, NUM_ROWS, NUM_DOCIDS, columnFamilies, otherColumnFamilies, docs);
@@ -204,17 +204,17 @@ public class IndexedDocIteratorTest extends TestCase {
Value v = iter.getTopValue();
// System.out.println(k.toString());
// System.out.println(iter.getDocID(k));
-
+
Text d = IndexedDocIterator.parseDocID(k);
assertTrue(docs.contains(d));
assertTrue(new String(v.get()).endsWith(" docID=" + d));
-
+
iter.next();
}
assertEquals(hitCount, docs.size());
cleanup();
}
-
+
public void test2() throws IOException {
columnFamilies = new Text[3];
columnFamilies[0] = new Text("A");
@@ -225,7 +225,7 @@ public class IndexedDocIteratorTest extends TestCase {
otherColumnFamilies[1] = new Text("C");
otherColumnFamilies[2] = new Text("D");
otherColumnFamilies[3] = new Text("F");
-
+
float hitRatio = 0.5f;
HashSet<Text> docs = new HashSet<Text>();
SortedKeyValueIterator<Key,Value> source = createIteratorStack(hitRatio, NUM_ROWS, NUM_DOCIDS, columnFamilies, otherColumnFamilies, docs);
@@ -248,7 +248,7 @@ public class IndexedDocIteratorTest extends TestCase {
assertEquals(hitCount, docs.size());
cleanup();
}
-
+
public void test3() throws IOException {
columnFamilies = new Text[6];
columnFamilies[0] = new Text("C");
@@ -262,7 +262,7 @@ public class IndexedDocIteratorTest extends TestCase {
otherColumnFamilies[1] = new Text("B");
otherColumnFamilies[2] = new Text("D");
otherColumnFamilies[3] = new Text("F");
-
+
float hitRatio = 0.5f;
HashSet<Text> docs = new HashSet<Text>();
SortedKeyValueIterator<Key,Value> source = createIteratorStack(hitRatio, NUM_ROWS, NUM_DOCIDS, columnFamilies, otherColumnFamilies, docs);
@@ -290,7 +290,7 @@ public class IndexedDocIteratorTest extends TestCase {
assertEquals(hitCount, docs.size());
cleanup();
}
-
+
public void test4() throws IOException {
columnFamilies = new Text[3];
boolean[] notFlags = new boolean[3];
@@ -308,7 +308,7 @@ public class IndexedDocIteratorTest extends TestCase {
otherColumnFamilies[1] = new Text("C");
otherColumnFamilies[2] = new Text("D");
otherColumnFamilies[3] = new Text("F");
-
+
float hitRatio = 0.5f;
HashSet<Text> docs = new HashSet<Text>();
SortedKeyValueIterator<Key,Value> source = createIteratorStack(hitRatio, NUM_ROWS, NUM_DOCIDS, columnFamilies, otherColumnFamilies, docs, negatedColumns);