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 2013/10/10 22:35:58 UTC

git commit: ACCUMULO-1537 Check exception in test cleanup and separate compact test

Updated Branches:
  refs/heads/master e79adf2ed -> 12dfbe474


ACCUMULO-1537 Check exception in test cleanup and separate compact test


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/12dfbe47
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/12dfbe47
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/12dfbe47

Branch: refs/heads/master
Commit: 12dfbe47461cb12289efef20b9e22b2fce8dbc67
Parents: e79adf2
Author: Christopher Tubbs <ct...@apache.org>
Authored: Thu Oct 10 16:34:02 2013 -0400
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Thu Oct 10 16:34:02 2013 -0400

----------------------------------------------------------------------
 .../org/apache/accumulo/test/ShellServerIT.java | 199 ++++++++++---------
 1 file changed, 104 insertions(+), 95 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/12dfbe47/test/src/test/java/org/apache/accumulo/test/ShellServerIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/ShellServerIT.java b/test/src/test/java/org/apache/accumulo/test/ShellServerIT.java
index d526cd4..9694ce9 100644
--- a/test/src/test/java/org/apache/accumulo/test/ShellServerIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/ShellServerIT.java
@@ -34,6 +34,7 @@ import jline.console.ConsoleReader;
 import org.apache.accumulo.core.Constants;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Scanner;
+import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.Key;
@@ -63,25 +64,25 @@ import org.junit.rules.TemporaryFolder;
 public class ShellServerIT {
   public static class TestOutputStream extends OutputStream {
     StringBuilder sb = new StringBuilder();
-    
+
     @Override
     public void write(int b) throws IOException {
       sb.append((char) (0xff & b));
     }
-    
+
     public String get() {
       return sb.toString();
     }
-    
+
     public void clear() {
       sb.setLength(0);
     }
   }
-  
+
   public static class StringInputStream extends InputStream {
     private String source = "";
     private int offset = 0;
-    
+
     @Override
     public int read() throws IOException {
       if (offset == source.length())
@@ -89,13 +90,13 @@ public class ShellServerIT {
       else
         return source.charAt(offset++);
     }
-    
+
     public void set(String other) {
       source = other;
       offset = 0;
     }
   }
-  
+
   private static String secret = "superSecret";
   public static TemporaryFolder folder = new TemporaryFolder();
   public static MiniAccumuloCluster cluster;
@@ -103,13 +104,13 @@ public class ShellServerIT {
   public static StringInputStream input;
   public static Shell shell;
   private static Process traceProcess;
-  
+
   static String exec(String cmd) throws IOException {
     output.clear();
     shell.execCommand(cmd, true, true);
     return output.get();
   }
-  
+
   static String exec(String cmd, boolean expectGoodExit) throws IOException {
     String result = exec(cmd);
     if (expectGoodExit)
@@ -118,11 +119,11 @@ public class ShellServerIT {
       assertBadExit("", true);
     return result;
   }
-  
+
   static String exec(String cmd, boolean expectGoodExit, String expectString) throws IOException {
     return exec(cmd, expectGoodExit, expectString, true);
   }
-  
+
   static String exec(String cmd, boolean expectGoodExit, String expectString, boolean stringPresent) throws IOException {
     String result = exec(cmd);
     if (expectGoodExit)
@@ -131,15 +132,15 @@ public class ShellServerIT {
       assertBadExit(expectString, stringPresent);
     return result;
   }
-  
+
   static void assertGoodExit(String s, boolean stringPresent) {
     Shell.log.info(output.get());
     assertEquals(0, shell.getExitCode());
-    
+
     if (s.length() > 0)
       assertEquals(s + " present in " + output.get() + " was not " + stringPresent, stringPresent, output.get().contains(s));
   }
-  
+
   static void assertBadExit(String s, boolean stringPresent) {
     Shell.log.debug(output.get());
     assertTrue(shell.getExitCode() > 0);
@@ -147,17 +148,17 @@ public class ShellServerIT {
       assertEquals(s + " present in " + output.get() + " was not " + stringPresent, stringPresent, output.get().contains(s));
     shell.resetExitCode();
   }
-  
+
   @BeforeClass
   public static void setUpBeforeClass() throws Exception {
     folder.create();
     MiniAccumuloConfig cfg = new MiniAccumuloConfig(folder.newFolder("miniAccumulo"), secret);
     cluster = new MiniAccumuloCluster(cfg);
     cluster.start();
-    
+
     // history file is updated in $HOME
     System.setProperty("HOME", folder.getRoot().getAbsolutePath());
-    
+
     // start the shell
     output = new TestOutputStream();
     input = new StringInputStream();
@@ -167,33 +168,37 @@ public class ShellServerIT {
     exec("quit", true);
     shell.start();
     shell.setExit(false);
-    
+
     // use reflection to call this method so it does not need to be made public
     Method method = cluster.getClass().getDeclaredMethod("exec", Class.class, String[].class);
     method.setAccessible(true);
     traceProcess = (Process) method.invoke(cluster, TraceServer.class, new String[0]);
-    
+
     // give the tracer some time to start
     UtilWaitThread.sleep(1000);
   }
-  
+
   @AfterClass
   public static void tearDownAfterClass() throws Exception {
     cluster.stop();
     traceProcess.destroy();
     folder.delete();
   }
-  
+
   @After
   public void tearDown() throws Exception {
     Connector c = cluster.getConnector("root", secret);
     for (String table : c.tableOperations().list()) {
       if (!table.equals(MetadataTable.NAME) && !table.equals(RootTable.NAME) && !table.equals("trace"))
-        c.tableOperations().delete(table);
+        try {
+          c.tableOperations().delete(table);
+        } catch (TableNotFoundException e) {
+          // don't care
+        }
     }
   }
-  
-  @Test(timeout = 30*1000)
+
+  @Test(timeout = 30 * 1000)
   public void exporttableImporttable() throws Exception {
     // exporttable / importtable
     exec("createtable t -evc", true);
@@ -214,7 +219,7 @@ public class ShellServerIT {
     exec("deletetable -f t", true);
     exec("deletetable -f t2", true);
   }
-  
+
   private DistCp newDistCp() {
     try {
       @SuppressWarnings("unchecked")
@@ -234,7 +239,7 @@ public class ShellServerIT {
     }
     throw new RuntimeException("Unexpected constructors for DistCp");
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void setscaniterDeletescaniter() throws Exception {
     // setscaniter, deletescaniter
@@ -248,9 +253,9 @@ public class ShellServerIT {
     exec("deletescaniter -n name", true);
     exec("scan", true, "1", true);
     exec("deletetable -f t");
-    
+
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void execfile() throws Exception {
     // execfile
@@ -259,9 +264,9 @@ public class ShellServerIT {
     writer.println("about");
     writer.close();
     exec("execfile " + file.getAbsolutePath(), true, Constants.VERSION, true);
-    
+
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void egrep() throws Exception {
     // egrep
@@ -271,7 +276,7 @@ public class ShellServerIT {
     assertTrue(lines.split("\n").length - 1 == 3);
     exec("deletetable -f t");
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void du() throws Exception {
     // du
@@ -286,7 +291,7 @@ public class ShellServerIT {
     assertTrue(o.matches(".*[1-9][0-9][0-9]\\s\\[t\\]\\n"));
     exec("deletetable -f t");
   }
-  
+
   @Test(timeout = 1000)
   public void debug() throws Exception {
     exec("debug", true, "off", true);
@@ -297,7 +302,7 @@ public class ShellServerIT {
     exec("debug debug", false);
     exec("debug debug debug", false);
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void user() throws Exception {
     // createuser, deleteuser, user, users, droptable, grant, revoke
@@ -331,7 +336,7 @@ public class ShellServerIT {
     exec("deleteuser xyzzy", true);
     exec("users", true, "xyzzy", false);
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void iter() throws Exception {
     // setshelliter, listshelliter, deleteshelliter
@@ -376,9 +381,9 @@ public class ShellServerIT {
     exec("listiter -scan", true, "Iterator name", false);
     exec("listiter -scan", true, "Iterator xyzzy", true);
     exec("deletetable -f t");
-    
+
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void notable() throws Exception {
     // notable
@@ -390,7 +395,7 @@ public class ShellServerIT {
     assertFalse(output.get().contains(" xyzzy>"));
     exec("deletetable -f xyzzy");
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void sleep() throws Exception {
     // sleep
@@ -400,7 +405,7 @@ public class ShellServerIT {
     assertTrue(diff >= 200);
     assertTrue(diff < 400);
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void addauths() throws Exception {
     // addauths
@@ -414,7 +419,7 @@ public class ShellServerIT {
     exec("scan -s bar", true, "[foo]", false);
     exec("deletetable -f xyzzy");
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void byeQuitExit() throws Exception {
     // bye, quit, exit
@@ -425,13 +430,13 @@ public class ShellServerIT {
       shell.setExit(false);
     }
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void classpath() throws Exception {
     // classpath
     exec("classpath", true, "Level 2: Java Classloader (loads everything defined by java classpath) URL classpath items are", true);
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void clearCls() throws Exception {
     // clear/cls
@@ -443,20 +448,9 @@ public class ShellServerIT {
       exec("clear", false, "does not support");
     }
   }
-  
+
   @Test(timeout = 30 * 1000)
-  public void clonetable() throws Exception {
-    // clonetable
-    exec("createtable orig -evc");
-    exec("config -t orig -s table.split.threshold=123M", true);
-    exec("addsplits -t orig a b c", true);
-    exec("insert a b c value");
-    exec("scan", true, "value", true);
-    exec("clonetable orig clone");
-    // verify constraint, config, and splits were cloned
-    exec("constraint --list -t clone", true, "VisibilityConstraint=2", true);
-    exec("config -t clone -np", true, "123M", true);
-    exec("getsplits -t clone", true, "a\nb\nc\n");
+  public void testCompactions() throws IOException {
     // compact
     exec("createtable c");
     // make two files
@@ -484,11 +478,26 @@ public class ShellServerIT {
     exec("merge --all -t c");
     exec("compact -w");
     assertTrue(countFiles() == oldCount - 3);
+    exec("deletetable -f c");
+  }
+
+  @Test(timeout = 30 * 1000)
+  public void clonetable() throws Exception {
+    // clonetable
+    exec("createtable orig -evc");
+    exec("config -t orig -s table.split.threshold=123M", true);
+    exec("addsplits -t orig a b c", true);
+    exec("insert a b c value");
+    exec("scan", true, "value", true);
+    exec("clonetable orig clone");
+    // verify constraint, config, and splits were cloned
+    exec("constraint --list -t clone", true, "VisibilityConstraint=2", true);
+    exec("config -t clone -np", true, "123M", true);
+    exec("getsplits -t clone", true, "a\nb\nc\n");
     exec("deletetable -f orig");
     exec("deletetable -f clone");
-    exec("deletetable -f c");
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void constraint() throws Exception {
     // constraint
@@ -499,7 +508,7 @@ public class ShellServerIT {
     exec("constraint -l -t c", true, "VisibilityConstraint=2", false);
     exec("deletetable -f c");
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void deletemany() throws Exception {
     // deletemany
@@ -526,7 +535,7 @@ public class ShellServerIT {
     assertEquals(9, countkeys("t"));
     exec("deletetable -f t");
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void deleterows() throws Exception {
     // deleterows
@@ -540,7 +549,7 @@ public class ShellServerIT {
     assertTrue(base + 2 == countFiles());
     exec("deletetable -f t");
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void groups() throws Exception {
     exec("createtable t");
@@ -549,7 +558,7 @@ public class ShellServerIT {
     exec("getgroups -t t", true, "num=1,2,3", true);
     exec("deletetable -f t");
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void grep() throws Exception {
     exec("createtable t", true);
@@ -558,7 +567,7 @@ public class ShellServerIT {
     exec("grep row5", true, "row5", true);
     exec("deletetable -f t", true);
   }
-  
+
   @Test
   // (timeout = 30 * 1000)
   public void help() throws Exception {
@@ -572,7 +581,7 @@ public class ShellServerIT {
       exec("help " + c, true);
     }
   }
-  
+
   // @Test(timeout = 30 * 1000)
   public void history() throws Exception {
     exec("history -c", true);
@@ -581,7 +590,7 @@ public class ShellServerIT {
     exec("history", true, "unusualstring", true);
     exec("history", true, "history", true);
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void importDirectory() throws Exception {
     Configuration conf = new Configuration();
@@ -615,12 +624,12 @@ public class ShellServerIT {
     exec("scan -r 00000099", true, "00000099", true);
     exec("deletetable -f t");
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void info() throws Exception {
     exec("info", true, Constants.VERSION, true);
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void interpreter() throws Exception {
     exec("createtable t", true);
@@ -633,7 +642,7 @@ public class ShellServerIT {
     exec("scan -b 02", true, "value", true);
     exec("deletetable -f t", true);
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void listcompactions() throws Exception {
     exec("createtable t", true);
@@ -652,7 +661,7 @@ public class ShellServerIT {
     assertEquals(12, parts.length);
     exec("deletetable -f t", true);
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void maxrow() throws Exception {
     exec("createtable t", true);
@@ -665,7 +674,7 @@ public class ShellServerIT {
     exec("maxrow", true, "ccc", true);
     exec("deletetable -f t", true);
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void merge() throws Exception {
     exec("createtable t");
@@ -682,7 +691,7 @@ public class ShellServerIT {
     exec("getsplits -t !METADATA", true);
     assertEquals(1, output.get().split("\n").length);
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void ping() throws Exception {
     for (int i = 0; i < 10; i++) {
@@ -691,11 +700,11 @@ public class ShellServerIT {
       if (output.get().split("\n").length == 3)
         break;
       UtilWaitThread.sleep(1000);
-      
+
     }
     assertEquals(3, output.get().split("\n").length);
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void renametable() throws Exception {
     exec("createtable aaaa");
@@ -706,7 +715,7 @@ public class ShellServerIT {
     exec("scan -t xyzzy", true, "value", true);
     exec("deletetable -f xyzzy", true);
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void systempermission() throws Exception {
     exec("systempermissions");
@@ -714,7 +723,7 @@ public class ShellServerIT {
     exec("tablepermissions", true);
     assertEquals(6, output.get().split("\n").length - 1);
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void listscans() throws Exception {
     exec("createtable t", true);
@@ -749,48 +758,48 @@ public class ShellServerIT {
     thread.join();
     exec("deletetable -f t", true);
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void testPertableClasspath() throws Exception {
     File fooFilterJar = File.createTempFile("FooFilter", ".jar");
     FileUtils.copyURLToFile(this.getClass().getResource("/FooFilter.jar"), fooFilterJar);
     fooFilterJar.deleteOnExit();
-    
+
     File fooConstraintJar = File.createTempFile("FooConstraint", ".jar");
     FileUtils.copyURLToFile(this.getClass().getResource("/FooConstraint.jar"), fooConstraintJar);
     fooConstraintJar.deleteOnExit();
-    
+
     exec(
         "config -s " + Property.VFS_CONTEXT_CLASSPATH_PROPERTY.getKey() + "cx1=" + fooFilterJar.toURI().toString() + "," + fooConstraintJar.toURI().toString(),
         true);
-    
+
     exec("createtable ptc", true);
     exec("config -t ptc -s " + Property.TABLE_CLASSPATH.getKey() + "=cx1", true);
-    
+
     UtilWaitThread.sleep(200);
-    
+
     exec("setiter -scan -class org.apache.accumulo.test.FooFilter -p 10 -n foo", true);
-    
+
     exec("insert foo f q v", true);
-    
+
     UtilWaitThread.sleep(100);
-    
+
     exec("scan -np", true, "foo", false);
-    
+
     exec("constraint -a FooConstraint", true);
-    
+
     exec("offline -w ptc");
     exec("online -w ptc");
-    
+
     exec("table ptc", true);
     exec("insert foo f q v", false);
     exec("insert ok foo q v", true);
-    
+
     exec("deletetable ptc", true);
     exec("config -d " + Property.VFS_CONTEXT_CLASSPATH_PROPERTY.getKey() + "cx1");
-    
+
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void trace() throws Exception {
     exec("trace on", true);
@@ -805,19 +814,19 @@ public class ShellServerIT {
     assertTrue(trace.contains("startScan"));
     assertTrue(trace.contains("DeleteTable"));
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void badLogin() throws Exception {
     input.set(secret + "\n");
     String err = exec("user NoSuchUser", false);
     assertTrue(err.contains("BAD_CREDENTIALS for user NoSuchUser"));
   }
-  
+
   private int countkeys(String table) throws IOException {
     exec("scan -np -t " + table);
     return output.get().split("\n").length - 1;
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void scans() throws Exception {
     exec("createtable t");
@@ -836,7 +845,7 @@ public class ShellServerIT {
     assertEquals(11, result.split("\n").length);
     exec("deletetable -f t");
   }
-  
+
   @Test(timeout = 30 * 1000)
   public void whoami() throws Exception {
     assertTrue(exec("whoami", true).contains("root"));
@@ -851,16 +860,16 @@ public class ShellServerIT {
     input.set(secret + "\n");
     exec("user root", true);
   }
-  
+
   private void make10() throws IOException {
     for (int i = 0; i < 10; i++) {
       exec(String.format("insert row%d cf col%d value", i, i));
     }
   }
-  
+
   private int countFiles() throws IOException {
     exec("scan -t !METADATA -np -c file");
     return output.get().split("\n").length - 1;
   }
-  
+
 }