You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by bh...@apache.org on 2014/03/07 17:10:46 UTC
[1/2] git commit: ACCUMULO-2187 Refactor method to read file in
AddSplitsCommand and CreateTableCommand
Repository: accumulo
Updated Branches:
refs/heads/master feff9e62f -> ff605865d
ACCUMULO-2187 Refactor method to read file in AddSplitsCommand and CreateTableCommand
Signed-off-by: Bill Havanki <bh...@cloudera.com>
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/2d68f577
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/2d68f577
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/2d68f577
Branch: refs/heads/master
Commit: 2d68f5772cce9ef995d97730f4c9f95f203d72b1
Parents: feff9e6
Author: Vikram Srivastava <vi...@cloudera.com>
Authored: Thu Mar 6 12:45:23 2014 -0800
Committer: Bill Havanki <bh...@cloudera.com>
Committed: Fri Mar 7 11:00:58 2014 -0500
----------------------------------------------------------------------
.../accumulo/core/util/shell/ShellUtil.java | 58 +++++++++++++++++
.../util/shell/commands/AddSplitsCommand.java | 15 +----
.../util/shell/commands/CreateTableCommand.java | 19 +-----
.../accumulo/core/util/shell/ShellUtilTest.java | 66 ++++++++++++++++++++
4 files changed, 128 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/2d68f577/core/src/main/java/org/apache/accumulo/core/util/shell/ShellUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/util/shell/ShellUtil.java b/core/src/main/java/org/apache/accumulo/core/util/shell/ShellUtil.java
new file mode 100644
index 0000000..831895b
--- /dev/null
+++ b/core/src/main/java/org/apache/accumulo/core/util/shell/ShellUtil.java
@@ -0,0 +1,58 @@
+/*
+ * 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.core.util.shell;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.List;
+import java.util.Scanner;
+
+import org.apache.accumulo.core.Constants;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.hadoop.io.Text;
+
+import com.google.common.collect.Lists;
+
+public class ShellUtil {
+
+ /**
+ * Scans the given file line-by-line (ignoring empty lines) and returns a list
+ * containing those lines. If decode is set to true, every line is decoded using
+ * {@link Base64.decodeBase64} before inserting in the list.
+ *
+ * @param filename Path to the file that needs to be scanned
+ * @param decode Whether to decode lines in the file
+ * @return List of {@link Text} objects containing data in the given file
+ * @throws FileNotFoundException if the given file doesn't exist
+ */
+ public static List<Text> scanFile(String filename, boolean decode) throws FileNotFoundException {
+ String line;
+ Scanner file = new Scanner(new File(filename), Constants.UTF8.name());
+ List<Text> result = Lists.newArrayList();
+ try {
+ while (file.hasNextLine()) {
+ line = file.nextLine();
+ if (!line.isEmpty()) {
+ result.add(decode ? new Text(Base64.decodeBase64(line.getBytes(Constants.UTF8))) : new Text(line));
+ }
+ }
+ } finally {
+ file.close();
+ }
+ return result;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/accumulo/blob/2d68f577/core/src/main/java/org/apache/accumulo/core/util/shell/commands/AddSplitsCommand.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/util/shell/commands/AddSplitsCommand.java b/core/src/main/java/org/apache/accumulo/core/util/shell/commands/AddSplitsCommand.java
index 6bd260c..b8ba621 100644
--- a/core/src/main/java/org/apache/accumulo/core/util/shell/commands/AddSplitsCommand.java
+++ b/core/src/main/java/org/apache/accumulo/core/util/shell/commands/AddSplitsCommand.java
@@ -16,18 +16,16 @@
*/
package org.apache.accumulo.core.util.shell.commands;
-import java.io.File;
import java.util.TreeSet;
-import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.client.TableNotFoundException;
import org.apache.accumulo.core.util.shell.Shell;
import org.apache.accumulo.core.util.shell.Shell.Command;
+import org.apache.accumulo.core.util.shell.ShellUtil;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.MissingArgumentException;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
-import org.apache.commons.codec.binary.Base64;
import org.apache.hadoop.io.Text;
public class AddSplitsCommand extends Command {
@@ -40,16 +38,7 @@ public class AddSplitsCommand extends Command {
final TreeSet<Text> splits = new TreeSet<Text>();
if (cl.hasOption(optSplitsFile.getOpt())) {
- final String f = cl.getOptionValue(optSplitsFile.getOpt());
-
- String line;
- java.util.Scanner file = new java.util.Scanner(new File(f), Constants.UTF8.name());
- while (file.hasNextLine()) {
- line = file.nextLine();
- if (!line.isEmpty()) {
- splits.add(decode ? new Text(Base64.decodeBase64(line.getBytes(Constants.UTF8))) : new Text(line));
- }
- }
+ splits.addAll(ShellUtil.scanFile(cl.getOptionValue(optSplitsFile.getOpt()), decode));
} else {
if (cl.getArgList().isEmpty()) {
throw new MissingArgumentException("No split points specified");
http://git-wip-us.apache.org/repos/asf/accumulo/blob/2d68f577/core/src/main/java/org/apache/accumulo/core/util/shell/commands/CreateTableCommand.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/util/shell/commands/CreateTableCommand.java b/core/src/main/java/org/apache/accumulo/core/util/shell/commands/CreateTableCommand.java
index 25b92be..bc5f1d1 100644
--- a/core/src/main/java/org/apache/accumulo/core/util/shell/commands/CreateTableCommand.java
+++ b/core/src/main/java/org/apache/accumulo/core/util/shell/commands/CreateTableCommand.java
@@ -16,16 +16,13 @@
*/
package org.apache.accumulo.core.util.shell.commands;
-import java.io.File;
import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
-import java.util.Scanner;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
-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.TableExistsException;
@@ -37,12 +34,12 @@ import org.apache.accumulo.core.iterators.IteratorUtil;
import org.apache.accumulo.core.security.VisibilityConstraint;
import org.apache.accumulo.core.util.shell.Shell;
import org.apache.accumulo.core.util.shell.Shell.Command;
+import org.apache.accumulo.core.util.shell.ShellUtil;
import org.apache.accumulo.core.util.shell.Token;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionGroup;
import org.apache.commons.cli.Options;
-import org.apache.commons.codec.binary.Base64;
import org.apache.hadoop.io.Text;
public class CreateTableCommand extends Command {
@@ -75,19 +72,7 @@ public class CreateTableCommand extends Command {
final boolean decode = cl.hasOption(base64Opt.getOpt());
if (cl.hasOption(createTableOptSplit.getOpt())) {
- final String f = cl.getOptionValue(createTableOptSplit.getOpt());
-
- String line;
- Scanner file = new Scanner(new File(f), Constants.UTF8.name());
- try {
- while (file.hasNextLine()) {
- line = file.nextLine();
- if (!line.isEmpty())
- partitions.add(decode ? new Text(Base64.decodeBase64(line.getBytes(Constants.UTF8 ))) : new Text(line));
- }
- } finally {
- file.close();
- }
+ partitions.addAll(ShellUtil.scanFile(cl.getOptionValue(createTableOptSplit.getOpt()), decode));
} else if (cl.hasOption(createTableOptCopySplits.getOpt())) {
final String oldTable = cl.getOptionValue(createTableOptCopySplits.getOpt());
if (!shellState.getConnector().tableOperations().exists(oldTable)) {
http://git-wip-us.apache.org/repos/asf/accumulo/blob/2d68f577/core/src/test/java/org/apache/accumulo/core/util/shell/ShellUtilTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/util/shell/ShellUtilTest.java b/core/src/test/java/org/apache/accumulo/core/util/shell/ShellUtilTest.java
new file mode 100644
index 0000000..3d5cbec
--- /dev/null
+++ b/core/src/test/java/org/apache/accumulo/core/util/shell/ShellUtilTest.java
@@ -0,0 +1,66 @@
+/*
+ * 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.core.util.shell;
+
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.accumulo.core.Constants;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.io.FileUtils;
+import org.apache.hadoop.io.Text;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+
+import com.google.common.collect.ImmutableList;
+
+public class ShellUtilTest {
+
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder(new File(System.getProperty("user.dir") + "/target"));
+
+ // String with 3 lines, with one empty line
+ private static final String FILEDATA = "line1\n\nline2";
+
+ @Test
+ public void testWithoutDecode() throws IOException {
+ File testFile = new File(folder.getRoot(), "testFileNoDecode.txt");
+ FileUtils.writeStringToFile(testFile, FILEDATA);
+ List<Text> output = ShellUtil.scanFile(testFile.getAbsolutePath(), false);
+ assertEquals(ImmutableList.of(new Text("line1"), new Text("line2")), output);
+ }
+
+ @Test
+ public void testWithDecode() throws IOException {
+ File testFile = new File(folder.getRoot(), "testFileWithDecode.txt");
+ FileUtils.writeStringToFile(testFile, FILEDATA);
+ List<Text> output = ShellUtil.scanFile(testFile.getAbsolutePath(), true);
+ assertEquals(ImmutableList.of(
+ new Text(Base64.decodeBase64("line1".getBytes(Constants.UTF8))),
+ new Text(Base64.decodeBase64("line2".getBytes(Constants.UTF8)))), output);
+ }
+
+ @Test(expected=FileNotFoundException.class)
+ public void testWithMissingFile() throws FileNotFoundException {
+ ShellUtil.scanFile("missingFile.txt", false);
+ }
+}
[2/2] git commit: ACCUMULO-2187 Clean whitespace, format ShellUtilTest
Posted by bh...@apache.org.
ACCUMULO-2187 Clean whitespace, format ShellUtilTest
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/ff605865
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/ff605865
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/ff605865
Branch: refs/heads/master
Commit: ff605865d1388a07687a924b064e3dd3495d3102
Parents: 2d68f57
Author: Bill Havanki <bh...@cloudera.com>
Authored: Fri Mar 7 11:07:09 2014 -0500
Committer: Bill Havanki <bh...@cloudera.com>
Committed: Fri Mar 7 11:07:09 2014 -0500
----------------------------------------------------------------------
.../org/apache/accumulo/core/util/shell/ShellUtil.java | 2 +-
.../apache/accumulo/core/util/shell/ShellUtilTest.java | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/ff605865/core/src/main/java/org/apache/accumulo/core/util/shell/ShellUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/util/shell/ShellUtil.java b/core/src/main/java/org/apache/accumulo/core/util/shell/ShellUtil.java
index 831895b..30b7824 100644
--- a/core/src/main/java/org/apache/accumulo/core/util/shell/ShellUtil.java
+++ b/core/src/main/java/org/apache/accumulo/core/util/shell/ShellUtil.java
@@ -55,4 +55,4 @@ public class ShellUtil {
}
return result;
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/ff605865/core/src/test/java/org/apache/accumulo/core/util/shell/ShellUtilTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/util/shell/ShellUtilTest.java b/core/src/test/java/org/apache/accumulo/core/util/shell/ShellUtilTest.java
index 3d5cbec..fe7c1db 100644
--- a/core/src/test/java/org/apache/accumulo/core/util/shell/ShellUtilTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/util/shell/ShellUtilTest.java
@@ -37,7 +37,7 @@ public class ShellUtilTest {
@Rule
public TemporaryFolder folder = new TemporaryFolder(new File(System.getProperty("user.dir") + "/target"));
-
+
// String with 3 lines, with one empty line
private static final String FILEDATA = "line1\n\nline2";
@@ -54,12 +54,12 @@ public class ShellUtilTest {
File testFile = new File(folder.getRoot(), "testFileWithDecode.txt");
FileUtils.writeStringToFile(testFile, FILEDATA);
List<Text> output = ShellUtil.scanFile(testFile.getAbsolutePath(), true);
- assertEquals(ImmutableList.of(
- new Text(Base64.decodeBase64("line1".getBytes(Constants.UTF8))),
- new Text(Base64.decodeBase64("line2".getBytes(Constants.UTF8)))), output);
+ assertEquals(
+ ImmutableList.of(new Text(Base64.decodeBase64("line1".getBytes(Constants.UTF8))), new Text(Base64.decodeBase64("line2".getBytes(Constants.UTF8)))),
+ output);
}
- @Test(expected=FileNotFoundException.class)
+ @Test(expected = FileNotFoundException.class)
public void testWithMissingFile() throws FileNotFoundException {
ShellUtil.scanFile("missingFile.txt", false);
}