You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by vi...@apache.org on 2014/01/29 21:16:01 UTC
[2/2] git commit: Merge remote-tracking branch
'origin/1.5.1-SNAPSHOT' into 1.6.0-SNAPSHOT
Merge remote-tracking branch 'origin/1.5.1-SNAPSHOT' into 1.6.0-SNAPSHOT
Conflicts:
core/src/test/java/org/apache/accumulo/core/iterators/user/RegExFilterTest.java
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/d22816cb
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/d22816cb
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/d22816cb
Branch: refs/heads/1.6.0-SNAPSHOT
Commit: d22816cb435bbdef8512dc67454e492a373d0dda
Parents: 3f92e01 cabdbe8
Author: John Vines <vi...@apache.org>
Authored: Wed Jan 29 15:15:54 2014 -0500
Committer: John Vines <vi...@apache.org>
Committed: Wed Jan 29 15:15:54 2014 -0500
----------------------------------------------------------------------
.../core/iterators/user/RegExFilterTest.java | 149 ++++++++++++-------
1 file changed, 98 insertions(+), 51 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/d22816cb/core/src/test/java/org/apache/accumulo/core/iterators/user/RegExFilterTest.java
----------------------------------------------------------------------
diff --cc core/src/test/java/org/apache/accumulo/core/iterators/user/RegExFilterTest.java
index 6d2b36b,cdfa772..73edd04
--- a/core/src/test/java/org/apache/accumulo/core/iterators/user/RegExFilterTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/user/RegExFilterTest.java
@@@ -23,10 -23,21 +23,22 @@@ import java.util.TreeMap
import junit.framework.TestCase;
+import org.apache.accumulo.core.Constants;
+ import org.apache.accumulo.core.client.AccumuloException;
+ import org.apache.accumulo.core.client.AccumuloSecurityException;
+ import org.apache.accumulo.core.client.BatchWriter;
+ import org.apache.accumulo.core.client.BatchWriterConfig;
+ import org.apache.accumulo.core.client.Connector;
+ import org.apache.accumulo.core.client.Instance;
import org.apache.accumulo.core.client.IteratorSetting;
+ import org.apache.accumulo.core.client.Scanner;
+ import org.apache.accumulo.core.client.TableExistsException;
+ import org.apache.accumulo.core.client.TableNotFoundException;
+ import org.apache.accumulo.core.client.mock.MockInstance;
+ import org.apache.accumulo.core.client.security.tokens.PasswordToken;
import org.apache.accumulo.core.data.ByteSequence;
import org.apache.accumulo.core.data.Key;
+ import org.apache.accumulo.core.data.Mutation;
import org.apache.accumulo.core.data.Range;
import org.apache.accumulo.core.data.Value;
import org.apache.accumulo.core.iterators.DefaultIteratorEnvironment;
@@@ -219,21 -232,54 +233,54 @@@ public class RegExFilterTest extends Te
// -----------------------------------------------------
String multiByteText = new String("\u6d67" + "\u6F68" + "\u7067");
String multiByteRegex = new String(".*" + "\u6F68" + ".*");
-
+
Key k4 = new Key("boo4".getBytes(), "hoo".getBytes(), "20080203".getBytes(), "".getBytes(), 1l);
- Value inVal = new Value(multiByteText.getBytes("UTF-8"));
+ Value inVal = new Value(multiByteText.getBytes(Constants.UTF8));
tm.put(k4, inVal);
-
+
is.clearOptions();
-
+
RegExFilter.setRegexs(is, null, null, null, multiByteRegex, true);
rei.init(new SortedMapIterator(tm), is.getOptions(), new DefaultIteratorEnvironment());
rei.seek(new Range(), EMPTY_COL_FAMS, false);
-
+
assertTrue(rei.hasTop());
Value outValue = rei.getTopValue();
- String outVal = new String(outValue.get(), "UTF-8");
+ String outVal = new String(outValue.get(), Constants.UTF8);
assertTrue(outVal.equals(multiByteText));
-
+
+ }
+
+ @Test
+ public void testNullByteInKey() throws AccumuloException, AccumuloSecurityException, TableExistsException, TableNotFoundException {
+ String table = "nullRegexTest";
+
+ String s1 = "first", s2 = "second";
+ byte[] b1 = s1.getBytes(), b2 = s2.getBytes(), ball;
+ ball = new byte[b1.length + b2.length + 1];
+ System.arraycopy(b1, 0, ball, 0, b1.length);
+ ball[b1.length] = (byte) 0;
+ System.arraycopy(b2, 0, ball, b1.length + 1, b2.length);
+
+ Instance instance = new MockInstance();
+ Connector conn = instance.getConnector("root", new PasswordToken(new byte[0]));
+
+ conn.tableOperations().create(table);
+ BatchWriter bw = conn.createBatchWriter(table, new BatchWriterConfig());
+ Mutation m = new Mutation(ball);
+ m.put(new byte[0], new byte[0], new byte[0]);
+ bw.addMutation(m);
+ bw.close();
+
+ IteratorSetting is = new IteratorSetting(5, RegExFilter.class);
+ RegExFilter.setRegexs(is, s2, null, null, null, true, true);
+
+ Scanner scanner = conn.createScanner(table, new Authorizations());
+ scanner.addScanIterator(is);
+
+ assertTrue("Client side iterator couldn't find a match when it should have", scanner.iterator().hasNext());
+
+ conn.tableOperations().attachIterator(table, is);
+ assertTrue("server side iterator couldn't find a match when it should have", conn.createScanner(table, new Authorizations()).iterator().hasNext());
}
}