Merge branch '1.7'
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/b38371d9 Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/b38371d9 Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/b38371d9 Branch: refs/heads/master Commit: b38371d9ac2243bf1c32be4c2d4e464bcfd841b3 Parents: dd67808 d77863e Author: Keith Turner <ke...@deenlo.com> Authored: Thu Aug 27 17:33:57 2015 -0400 Committer: Keith Turner <ke...@deenlo.com> Committed: Thu Aug 27 17:33:57 2015 -0400 ---------------------------------------------------------------------- .../apache/accumulo/tserver/FileManager.java | 8 +- .../shell/commands/SetShellIterCommand.java | 15 +--- .../accumulo/test/IsolationAndDeepCopyIT.java | 85 ++++++++++++++++++++ 3 files changed, 93 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/b38371d9/test/src/main/java/org/apache/accumulo/test/IsolationAndDeepCopyIT.java ---------------------------------------------------------------------- diff --cc test/src/main/java/org/apache/accumulo/test/IsolationAndDeepCopyIT.java index 0000000,0000000..5309525 new file mode 100644 --- /dev/null +++ b/test/src/main/java/org/apache/accumulo/test/IsolationAndDeepCopyIT.java @@@ -1,0 -1,0 +1,85 @@@ ++/* ++ * 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.accumulo.test; ++ ++import java.util.Iterator; ++import java.util.Map.Entry; ++ ++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.IteratorSetting; ++import org.apache.accumulo.core.client.MutationsRejectedException; ++import org.apache.accumulo.core.client.Scanner; ++import org.apache.accumulo.core.data.Key; ++import org.apache.accumulo.core.data.Mutation; ++import org.apache.accumulo.core.data.Value; ++import org.apache.accumulo.core.iterators.user.IntersectingIterator; ++import org.apache.accumulo.core.security.Authorizations; ++import org.apache.accumulo.harness.AccumuloClusterHarness; ++import org.apache.hadoop.io.Text; ++import org.junit.Assert; ++import org.junit.Test; ++ ++public class IsolationAndDeepCopyIT extends AccumuloClusterHarness { ++ ++ @Test ++ public void testBugFix() throws Exception { ++ // test bug fox for ACCUMULO-3977 ++ ++ String table = super.getUniqueNames(1)[0]; ++ Connector conn = getConnector(); ++ ++ conn.tableOperations().create(table); ++ ++ BatchWriter bw = conn.createBatchWriter(table, new BatchWriterConfig()); ++ ++ addDocument(bw, "000A", "dog", "cat", "hamster", "iguana", "the"); ++ addDocument(bw, "000B", "java", "perl", "C++", "pascal", "the"); ++ addDocument(bw, "000C", "chrome", "firefox", "safari", "opera", "the"); ++ addDocument(bw, "000D", "logarithmic", "quadratic", "linear", "exponential", "the"); ++ ++ bw.close(); ++ ++ // its a bug when using rfiles, so flush ++ conn.tableOperations().flush(table, null, null, true); ++ ++ IteratorSetting iterCfg = new IteratorSetting(30, "ayeaye", IntersectingIterator.class.getName()); ++ IntersectingIterator.setColumnFamilies(iterCfg, new Text[] {new Text("the"), new Text("hamster")}); ++ ++ Scanner scanner = conn.createScanner(table, Authorizations.EMPTY); ++ scanner.enableIsolation(); ++ scanner.addScanIterator(iterCfg); ++ ++ for (int i = 0; i < 100; i++) { ++ Iterator<Entry<Key,Value>> iter = scanner.iterator(); ++ Assert.assertTrue(iter.hasNext()); ++ Assert.assertEquals("000A", iter.next().getKey().getColumnQualifierData().toString()); ++ Assert.assertFalse(iter.hasNext()); ++ } ++ } ++ ++ private void addDocument(BatchWriter bw, String docId, String... terms) throws MutationsRejectedException { ++ Mutation m = new Mutation(String.format("%04d", docId.hashCode() % 10)); ++ for (String term : terms) { ++ m.put(term, docId, ""); ++ } ++ ++ bw.addMutation(m); ++ } ++}