You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by kt...@apache.org on 2012/10/13 21:43:31 UTC
svn commit: r1397936 - in /accumulo/trunk: ./ core/
core/src/main/java/org/apache/accumulo/core/client/admin/
core/src/main/java/org/apache/accumulo/core/client/mock/
core/src/main/java/org/apache/accumulo/core/iterators/
core/src/main/java/org/apache/...
Author: kturner
Date: Sat Oct 13 19:43:30 2012
New Revision: 1397936
URL: http://svn.apache.org/viewvc?rev=1397936&view=rev
Log:
ACCUMULO-795 Applied patch from Drew Farris that allows mock to create tables w/o versioning (merged from 1.4)
Modified:
accumulo/trunk/ (props changed)
accumulo/trunk/core/ (props changed)
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/admin/TableOperationsImpl.java
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/mock/MockTable.java
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/IteratorUtil.java
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/util/shell/commands/CreateTableCommand.java
accumulo/trunk/core/src/test/java/org/apache/accumulo/core/client/mock/MockTableOperationsTest.java
accumulo/trunk/fate/src/main/java/org/apache/accumulo/fate/ZooStore.java (props changed)
accumulo/trunk/server/ (props changed)
accumulo/trunk/src/ (props changed)
Propchange: accumulo/trunk/
------------------------------------------------------------------------------
Merged /accumulo/branches/1.4/src:r1397921
Merged /accumulo/branches/1.4:r1397921
Propchange: accumulo/trunk/core/
------------------------------------------------------------------------------
Merged /accumulo/branches/1.4/core:r1397921
Merged /accumulo/branches/1.4/src/core:r1397921
Modified: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/admin/TableOperationsImpl.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/admin/TableOperationsImpl.java?rev=1397936&r1=1397935&r2=1397936&view=diff
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/admin/TableOperationsImpl.java (original)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/admin/TableOperationsImpl.java Sat Oct 13 19:43:30 2012
@@ -190,11 +190,7 @@ public class TableOperationsImpl extends
List<ByteBuffer> args = Arrays.asList(ByteBuffer.wrap(tableName.getBytes()), ByteBuffer.wrap(timeType.name().getBytes()));
- Map<String,String> opts;
- if (limitVersion) {
- opts = IteratorUtil.generateInitialTableProperties();
- } else
- opts = Collections.emptyMap();
+ Map<String,String> opts = IteratorUtil.generateInitialTableProperties(limitVersion);
try {
doTableOperation(TableOperation.CREATE, args, opts);
Modified: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/mock/MockTable.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/mock/MockTable.java?rev=1397936&r1=1397935&r2=1397936&view=diff
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/mock/MockTable.java (original)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/mock/MockTable.java Sat Oct 13 19:43:30 2012
@@ -88,9 +88,9 @@ public class MockTable {
private TimeType timeType;
SortedSet<Text> splits = new TreeSet<Text>();
- MockTable(boolean useVersions, TimeType timeType) {
+ MockTable(boolean limitVersion, TimeType timeType) {
this.timeType = timeType;
- settings = IteratorUtil.generateInitialTableProperties();
+ settings = IteratorUtil.generateInitialTableProperties(limitVersion);
for (Entry<String,String> entry : AccumuloConfiguration.getDefaultConfiguration()) {
String key = entry.getKey();
if (key.startsWith(Property.TABLE_PREFIX.getKey()))
Modified: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/IteratorUtil.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/IteratorUtil.java?rev=1397936&r1=1397935&r2=1397936&view=diff
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/IteratorUtil.java (original)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/IteratorUtil.java Sat Oct 13 19:43:30 2012
@@ -63,13 +63,22 @@ public class IteratorUtil {
}
- public static Map<String,String> generateInitialTableProperties() {
+ /**
+ * Generate the initial (default) properties for a table
+ * @param limitVersion
+ * include a VersioningIterator at priority 20 that retains a single version of a given K/V pair.
+ * @return A map of Table properties
+ */
+ public static Map<String,String> generateInitialTableProperties(boolean limitVersion) {
TreeMap<String,String> props = new TreeMap<String,String>();
- for (IteratorScope iterScope : IteratorScope.values()) {
- props.put(Property.TABLE_ITERATOR_PREFIX + iterScope.name() + ".vers", "20," + VersioningIterator.class.getName());
- props.put(Property.TABLE_ITERATOR_PREFIX + iterScope.name() + ".vers.opt.maxVersions", "1");
+ if (limitVersion) {
+ for (IteratorScope iterScope : IteratorScope.values()) {
+ props.put(Property.TABLE_ITERATOR_PREFIX + iterScope.name() + ".vers", "20," + VersioningIterator.class.getName());
+ props.put(Property.TABLE_ITERATOR_PREFIX + iterScope.name() + ".vers.opt.maxVersions", "1");
+ }
}
+
return props;
}
Modified: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/util/shell/commands/CreateTableCommand.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/util/shell/commands/CreateTableCommand.java?rev=1397936&r1=1397935&r2=1397936&view=diff
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/util/shell/commands/CreateTableCommand.java (original)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/util/shell/commands/CreateTableCommand.java Sat Oct 13 19:43:30 2012
@@ -110,7 +110,7 @@ public class CreateTableCommand extends
// context
if (cl.hasOption(createTableNoDefaultIters.getOpt())) {
- for (String key : IteratorUtil.generateInitialTableProperties().keySet()) {
+ for (String key : IteratorUtil.generateInitialTableProperties(true).keySet()) {
shellState.getConnector().tableOperations().removeProperty(tableName, key);
}
}
Modified: accumulo/trunk/core/src/test/java/org/apache/accumulo/core/client/mock/MockTableOperationsTest.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/test/java/org/apache/accumulo/core/client/mock/MockTableOperationsTest.java?rev=1397936&r1=1397935&r2=1397936&view=diff
==============================================================================
--- accumulo/trunk/core/src/test/java/org/apache/accumulo/core/client/mock/MockTableOperationsTest.java (original)
+++ accumulo/trunk/core/src/test/java/org/apache/accumulo/core/client/mock/MockTableOperationsTest.java Sat Oct 13 19:43:30 2012
@@ -20,25 +20,36 @@ import java.io.IOException;
import java.net.URI;
import java.nio.ByteBuffer;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.EnumSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Map.Entry;
+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.BatchScanner;
+import org.apache.accumulo.core.client.BatchWriter;
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.MutationsRejectedException;
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.admin.TableOperations;
+import org.apache.accumulo.core.client.admin.TimeType;
import org.apache.accumulo.core.conf.AccumuloConfiguration;
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.file.FileOperations;
import org.apache.accumulo.core.file.FileSKVWriter;
import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
+import org.apache.accumulo.core.iterators.user.VersioningIterator;
import org.apache.accumulo.core.security.Authorizations;
import org.apache.accumulo.core.security.ColumnVisibility;
import org.apache.accumulo.core.security.thrift.AuthInfo;
@@ -50,6 +61,69 @@ import org.junit.Assert;
import org.junit.Test;
public class MockTableOperationsTest {
+
+ @Test
+ public void testCreateUseVersions() throws AccumuloException, AccumuloSecurityException, TableExistsException, TableNotFoundException {
+ Instance instance = new MockInstance("topstest");
+ Connector conn = instance.getConnector("user", "pass");
+ String t = "tableName1";
+
+ {
+ conn.tableOperations().create(t, false, TimeType.LOGICAL);
+
+ writeVersionable(conn, t, 3);
+ assertVersionable(conn, t, 3);
+
+ IteratorSetting settings = new IteratorSetting(20,VersioningIterator.class);
+ conn.tableOperations().attachIterator(t, settings);
+
+ assertVersionable(conn, t, 1);
+
+ conn.tableOperations().delete(t);
+ }
+
+ {
+ conn.tableOperations().create(t, true, TimeType.MILLIS);
+
+ try {
+ IteratorSetting settings = new IteratorSetting(20,VersioningIterator.class);
+ conn.tableOperations().attachIterator(t, settings);
+ Assert.fail();
+ }
+ catch (IllegalArgumentException ex) {}
+
+ writeVersionable(conn, t, 3);
+ assertVersionable(conn, t, 1);
+
+ conn.tableOperations().delete(t);
+ }
+ }
+
+ protected void writeVersionable(Connector c, String tableName, int size) throws TableNotFoundException, MutationsRejectedException {
+ for (int i=0; i < size; i++) {
+ BatchWriter w = c.createBatchWriter(tableName, 100, 100, 1);
+ Mutation m = new Mutation("row1");
+ m.put("cf", "cq", String.valueOf(i));
+ w.addMutation(m);
+ w.close();
+ }
+ }
+
+ protected void assertVersionable(Connector c, String tableName, int size) throws TableNotFoundException {
+ BatchScanner s = c.createBatchScanner(tableName, Constants.NO_AUTHS, 1);
+ s.setRanges(Collections.singleton(Range.exact("row1", "cf", "cq")));
+ int count = 0;
+ for (Map.Entry<Key, Value> e: s) {
+ Assert.assertEquals("row1", e.getKey().getRow().toString());
+ Assert.assertEquals("cf", e.getKey().getColumnFamily().toString());
+ Assert.assertEquals("cq", e.getKey().getColumnQualifier().toString());
+ count++;
+
+ }
+ Assert.assertEquals(size, count);
+ s.close();
+ }
+
@Test
public void testTableNotFound() throws AccumuloException, AccumuloSecurityException, TableExistsException, TableNotFoundException {
Instance instance = new MockInstance("topstest");
Propchange: accumulo/trunk/fate/src/main/java/org/apache/accumulo/fate/ZooStore.java
------------------------------------------------------------------------------
Merged /accumulo/branches/1.4/fate/src/main/java/org/apache/accumulo/fate/ZooStore.java:r1397921
Merged /accumulo/branches/1.4/src/fate/src/main/java/org/apache/accumulo/fate/ZooStore.java:r1397921
Propchange: accumulo/trunk/server/
------------------------------------------------------------------------------
Merged /accumulo/branches/1.4/server:r1397921
Merged /accumulo/branches/1.4/src/server:r1397921
Propchange: accumulo/trunk/src/
------------------------------------------------------------------------------
Merged /accumulo/branches/1.4/src:r1397921
Merged /accumulo/branches/1.4/src/src:r1397921