You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by am...@apache.org on 2015/06/18 08:14:38 UTC

incubator-lens git commit: LENS-517 : Add cascade option to drop db from lens cli

Repository: incubator-lens
Updated Branches:
  refs/heads/master 44a6f5162 -> 2a61a7b54


LENS-517 : Add cascade option to drop db from lens cli


Project: http://git-wip-us.apache.org/repos/asf/incubator-lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-lens/commit/2a61a7b5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-lens/tree/2a61a7b5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-lens/diff/2a61a7b5

Branch: refs/heads/master
Commit: 2a61a7b54c7515dfed7de29bce8206fe34208b4a
Parents: 44a6f51
Author: Rajat Khandelwal <pr...@apache.org>
Authored: Thu Jun 18 11:44:25 2015 +0530
Committer: Amareshwari Sriramadasu <am...@apache.org>
Committed: Thu Jun 18 11:44:25 2015 +0530

----------------------------------------------------------------------
 .../lens/cli/commands/LensDatabaseCommands.java |  8 +--
 .../lens/cli/TestLensDatabaseCommands.java      | 51 ++++++++++++++------
 .../java/org/apache/lens/client/LensClient.java | 10 ++--
 .../lens/client/LensClientSingletonWrapper.java | 37 +++++++-------
 .../apache/lens/client/LensMetadataClient.java  |  3 +-
 .../org/apache/lens/client/TestLensClient.java  |  2 +-
 6 files changed, 67 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/2a61a7b5/lens-cli/src/main/java/org/apache/lens/cli/commands/LensDatabaseCommands.java
----------------------------------------------------------------------
diff --git a/lens-cli/src/main/java/org/apache/lens/cli/commands/LensDatabaseCommands.java b/lens-cli/src/main/java/org/apache/lens/cli/commands/LensDatabaseCommands.java
index 800c0b5..1de24a4 100644
--- a/lens-cli/src/main/java/org/apache/lens/cli/commands/LensDatabaseCommands.java
+++ b/lens-cli/src/main/java/org/apache/lens/cli/commands/LensDatabaseCommands.java
@@ -86,9 +86,9 @@ public class LensDatabaseCommands extends LensCRUDCommand {
    * @return the string
    */
   @CliCommand(value = "drop database", help = "drop a database with specified name")
-  public String dropDatabase(@CliOption(key = {"", "db"}, mandatory = true,
-    help = "<database-name>") String database) {
-    return drop(database, false);
+  public String dropDatabase(@CliOption(key = {"", "db"}, mandatory = true, help = "<database-name>") String database,
+    @CliOption(key = "cascade", specifiedDefaultValue = "true", unspecifiedDefaultValue = "false") boolean cascade) {
+    return drop(database, cascade);
   }
 
   @Override
@@ -116,6 +116,6 @@ public class LensDatabaseCommands extends LensCRUDCommand {
 
   @Override
   protected APIResult doDelete(String name, boolean cascade) {
-    return getClient().dropDatabase(name);
+    return getClient().dropDatabase(name, cascade);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/2a61a7b5/lens-cli/src/test/java/org/apache/lens/cli/TestLensDatabaseCommands.java
----------------------------------------------------------------------
diff --git a/lens-cli/src/test/java/org/apache/lens/cli/TestLensDatabaseCommands.java b/lens-cli/src/test/java/org/apache/lens/cli/TestLensDatabaseCommands.java
index f8958c4..b6f96e6 100644
--- a/lens-cli/src/test/java/org/apache/lens/cli/TestLensDatabaseCommands.java
+++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensDatabaseCommands.java
@@ -18,12 +18,17 @@
  */
 package org.apache.lens.cli;
 
+import static org.testng.Assert.*;
+
+import java.io.File;
+import java.net.URISyntaxException;
+
+import org.apache.lens.cli.commands.LensCubeCommands;
 import org.apache.lens.cli.commands.LensDatabaseCommands;
 import org.apache.lens.client.LensClient;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.testng.Assert;
 import org.testng.annotations.Test;
 
 /**
@@ -38,28 +43,44 @@ public class TestLensDatabaseCommands extends LensCliApplicationTest {
    * Test database commands.
    */
   @Test
-  public void testDatabaseCommands() {
+  public void testDatabaseCommands() throws URISyntaxException {
     LensClient client = new LensClient();
     LensDatabaseCommands command = new LensDatabaseCommands();
+    LensCubeCommands cubeCommand = new LensCubeCommands();
     command.setClient(client);
+    cubeCommand.setClient(client);
+    boolean cascade = true;
+    for(int i = 0; i < 4; i++, cascade = !cascade) {
+      testDrop(command, cubeCommand, cascade);
+    }
+  }
 
+  private void testDrop(LensDatabaseCommands command, LensCubeCommands cubeCommand, boolean cascade)
+    throws URISyntaxException {
     String myDatabase = "my_db";
-    String databaseList = command.showAllDatabases();
-    Assert.assertFalse(databaseList.contains(myDatabase));
+    assertFalse(command.showAllDatabases().contains(myDatabase));
+    assertFalse(cubeCommand.showCubes().contains("sample_cube"));
     String result;
     command.createDatabase(myDatabase, false);
-
-    databaseList = command.showAllDatabases();
-    Assert.assertTrue(databaseList.contains(myDatabase));
-
+    assertTrue(command.showAllDatabases().contains(myDatabase));
     result = command.switchDatabase(myDatabase);
-    Assert.assertEquals("Successfully switched to my_db", result);
-
+    assertEquals(result, "Successfully switched to my_db");
+    if (cascade) {
+      String createOutput = cubeCommand.createCube(
+        new File(TestLensDatabaseCommands.class.getClassLoader().getResource("sample-cube.xml").toURI())
+          .getAbsolutePath());
+      assertEquals(createOutput, "succeeded");
+      assertTrue(cubeCommand.showCubes().contains("sample_cube"));
+    }
     result = command.switchDatabase("default");
-    Assert.assertEquals("Successfully switched to default", result);
-
-    result = command.dropDatabase(myDatabase);
-    Assert.assertEquals(result, "succeeded");
+    assertEquals(result, "Successfully switched to default");
+    assertFalse(cubeCommand.showCubes().contains("sample_cube"));
+    if (cascade) {
+      assertEquals(command.dropDatabase(myDatabase, false), "failed");
+    }
+    result = command.dropDatabase(myDatabase, cascade);
+    assertEquals(result, "succeeded");
+    assertFalse(command.showAllDatabases().contains(myDatabase));
+    assertFalse(cubeCommand.showCubes().contains("sample_cube"));
   }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/2a61a7b5/lens-client/src/main/java/org/apache/lens/client/LensClient.java
----------------------------------------------------------------------
diff --git a/lens-client/src/main/java/org/apache/lens/client/LensClient.java b/lens-client/src/main/java/org/apache/lens/client/LensClient.java
index ca017b8..5c3daa8 100644
--- a/lens-client/src/main/java/org/apache/lens/client/LensClient.java
+++ b/lens-client/src/main/java/org/apache/lens/client/LensClient.java
@@ -76,6 +76,10 @@ public class LensClient {
     this(cred.getUsername(), cred.getPassword());
   }
 
+  public LensMetadataClient getMetadataClient() {
+    return mc;
+  }
+
   public QueryHandle executeQueryAsynch(String sql, String queryName) {
     LOG.debug("Executing query " + sql);
     statement.execute(sql, false, queryName);
@@ -270,9 +274,9 @@ public class LensClient {
     return result.getStatus() == APIResult.Status.SUCCEEDED;
   }
 
-  public APIResult dropDatabase(String database) {
-    LOG.debug("Dropping database " + database);
-    APIResult result = mc.dropDatabase(database);
+  public APIResult dropDatabase(String database, boolean cascade) {
+    LOG.debug("Dropping database " + database + ", cascade: " + cascade);
+    APIResult result = mc.dropDatabase(database, cascade);
     LOG.debug("Return status of dropping " + database + " result " + result);
     return result;
   }

http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/2a61a7b5/lens-client/src/main/java/org/apache/lens/client/LensClientSingletonWrapper.java
----------------------------------------------------------------------
diff --git a/lens-client/src/main/java/org/apache/lens/client/LensClientSingletonWrapper.java b/lens-client/src/main/java/org/apache/lens/client/LensClientSingletonWrapper.java
index d9ab5a1..14a0690 100644
--- a/lens-client/src/main/java/org/apache/lens/client/LensClientSingletonWrapper.java
+++ b/lens-client/src/main/java/org/apache/lens/client/LensClientSingletonWrapper.java
@@ -72,25 +72,24 @@ public class LensClientSingletonWrapper {
   }
 
   public LensClient getClient() {
-    if (client != null) {
-      return client;
-    }
-    try {
-      client = new LensClient();
-    } catch (LensClientServerConnectionException e) {
-      if (e.getErrorCode() != 401) {
-        explainFailedAttempt(e);
-        throw e;
-      }
-      // Connecting without password prompt failed.
-      for (int i = 0; i < MAX_RETRIES; i++) {
-        try {
-          client = new LensClient(Credentials.prompt());
-          break;
-        } catch (LensClientServerConnectionException lensClientServerConnectionException) {
-          explainFailedAttempt(lensClientServerConnectionException);
-          if (i == MAX_RETRIES - 1) {
-            throw lensClientServerConnectionException;
+    if (client == null) {
+      try {
+        client = new LensClient();
+      } catch (LensClientServerConnectionException e) {
+        if (e.getErrorCode() != 401) {
+          explainFailedAttempt(e);
+          throw e;
+        }
+        // Connecting without password prompt failed.
+        for (int i = 0; i < MAX_RETRIES; i++) {
+          try {
+            client = new LensClient(Credentials.prompt());
+            break;
+          } catch (LensClientServerConnectionException lensClientServerConnectionException) {
+            explainFailedAttempt(lensClientServerConnectionException);
+            if (i == MAX_RETRIES - 1) {
+              throw lensClientServerConnectionException;
+            }
           }
         }
       }

http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/2a61a7b5/lens-client/src/main/java/org/apache/lens/client/LensMetadataClient.java
----------------------------------------------------------------------
diff --git a/lens-client/src/main/java/org/apache/lens/client/LensMetadataClient.java b/lens-client/src/main/java/org/apache/lens/client/LensMetadataClient.java
index c58f5ee..b4e0552 100644
--- a/lens-client/src/main/java/org/apache/lens/client/LensMetadataClient.java
+++ b/lens-client/src/main/java/org/apache/lens/client/LensMetadataClient.java
@@ -138,11 +138,10 @@ public class LensMetadataClient {
 
   public APIResult dropDatabase(String database, boolean cascade) {
     WebTarget target = getMetastoreWebTarget();
-    APIResult result = target.path("databases").path(database)
+    return target.path("databases").path(database)
       .queryParam("sessionid", this.connection.getSessionHandle())
       .queryParam("cascade", cascade)
       .request().delete(APIResult.class);
-    return result;
   }
 
   public APIResult dropDatabase(String database) {

http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/2a61a7b5/lens-client/src/test/java/org/apache/lens/client/TestLensClient.java
----------------------------------------------------------------------
diff --git a/lens-client/src/test/java/org/apache/lens/client/TestLensClient.java b/lens-client/src/test/java/org/apache/lens/client/TestLensClient.java
index 24f3473..35d52db 100644
--- a/lens-client/src/test/java/org/apache/lens/client/TestLensClient.java
+++ b/lens-client/src/test/java/org/apache/lens/client/TestLensClient.java
@@ -78,7 +78,7 @@ public class TestLensClient extends LensAllApplicationJerseyTest {
       "current database");
     client.createDatabase("testclientdb", true);
     Assert.assertTrue(client.getAllDatabases().contains("testclientdb"));
-    client.dropDatabase("testclientdb");
+    client.dropDatabase("testclientdb", false);
     Assert.assertFalse(client.getAllDatabases().contains("testclientdb"));
   }
 }