Repository: incubator-slider
Updated Branches:
  refs/heads/develop ebc216a7e -> 95cf1759e


SLIDER-838 add better assertions for test failures in agent provider tests


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

Branch: refs/heads/develop
Commit: e9ace6a4fe5d1994ada092a72a52bc8f9d5fc4bb
Parents: ebc216a
Author: Steve Loughran <ste...@apache.org>
Authored: Thu Apr 2 18:54:29 2015 +0100
Committer: Steve Loughran <ste...@apache.org>
Committed: Thu Apr 2 18:54:29 2015 +0100

----------------------------------------------------------------------
 .../org/apache/slider/client/SliderClient.java  | 12 +++--
 .../providers/agent/AgentClientProvider.java    |  4 +-
 .../actions/TestActionInstallPackage.groovy     |  5 ++-
 .../agent/actions/TestActionPackage.groovy      |  7 ++-
 .../agent/TestAgentClientProvider2.java         | 47 +++++++++++---------
 5 files changed, 46 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e9ace6a4/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java 
b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
index 053a1db..883942d 100644
--- a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
+++ b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
@@ -204,6 +204,12 @@ import static 
org.apache.slider.common.params.SliderActions.*;
 public class SliderClient extends AbstractSliderLaunchedService implements 
RunService,
     SliderExitCodes, SliderKeys, ErrorStrings, SliderClientAPI {
   private static final Logger log = 
LoggerFactory.getLogger(SliderClient.class);
+  public static final String E_MUST_BE_A_VALID_JSON_FILE
+      = "Invalid configuration. Must be a valid json file.";
+  public static final String E_INVALID_APPLICATION_PACKAGE_LOCATION
+      = "A valid application package location required.";
+  public static final String E_INVALID_INSTALL_LOCATION
+      = "A valid install location must be provided for the client.";
   private static PrintStream clientOutputStream = System.out;
 
   // value should not be changed without updating string find in slider.py
@@ -906,7 +912,7 @@ public class SliderClient extends 
AbstractSliderLaunchedService implements RunSe
     }
 
     if (StringUtils.isEmpty(installPkgInfo.packageURI)) {
-      throw new BadCommandArgumentsException("A valid application package 
location required.");
+      throw new 
BadCommandArgumentsException(E_INVALID_APPLICATION_PACKAGE_LOCATION);
     } else {
       File pkgFile = new File(installPkgInfo.packageURI);
       if (!pkgFile.exists() || pkgFile.isDirectory()) {
@@ -1030,7 +1036,7 @@ public class SliderClient extends 
AbstractSliderLaunchedService implements RunSe
 
     if (clientInfo.installLocation == null) {
       throw new BadCommandArgumentsException(
-          "A valid install location must be provided for the client.\n"
+          E_INVALID_INSTALL_LOCATION +"\n"
           + CommonArgs.usage(serviceArgs, ACTION_CLIENT));
     } else {
       if (!clientInfo.installLocation.exists()) {
@@ -1061,7 +1067,7 @@ public class SliderClient extends 
AbstractSliderLaunchedService implements RunSe
         config = new JSONObject(new String(encoded, Charset.defaultCharset()));
       }catch(JSONException jsonEx) {
         log.error("Unable to read supplied config", jsonEx);
-        throw new SliderException("Invalid configuration. Must be a valid json 
file.", jsonEx);
+        throw new BadConfigException(E_MUST_BE_A_VALID_JSON_FILE, jsonEx);
       }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e9ace6a4/slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java
 
b/slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java
index ed453ec..1df1533 100644
--- 
a/slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java
+++ 
b/slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java
@@ -82,6 +82,8 @@ public class AgentClientProvider extends 
AbstractClientProvider
       LoggerFactory.getLogger(AgentClientProvider.class);
   protected static final String NAME = "agent";
   private static final ProviderUtils providerUtils = new ProviderUtils(log);
+  public static final String E_COULD_NOT_READ_METAINFO
+      = "Not a valid app package. Could not read metainfo.";
 
 
   protected AgentClientProvider(Configuration conf) {
@@ -387,7 +389,7 @@ public class AgentClientProvider extends 
AbstractClientProvider
       }
 
       if (metaInfo == null) {
-        throw new SliderException("Not a valid app package. Could not read 
metainfo.");
+        throw new BadConfigException(E_COULD_NOT_READ_METAINFO);
       }
 
       expandAgentTar(agentPkgDir);

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e9ace6a4/slider-core/src/test/groovy/org/apache/slider/agent/actions/TestActionInstallPackage.groovy
----------------------------------------------------------------------
diff --git 
a/slider-core/src/test/groovy/org/apache/slider/agent/actions/TestActionInstallPackage.groovy
 
b/slider-core/src/test/groovy/org/apache/slider/agent/actions/TestActionInstallPackage.groovy
index 064c7a9..2cc2431 100644
--- 
a/slider-core/src/test/groovy/org/apache/slider/agent/actions/TestActionInstallPackage.groovy
+++ 
b/slider-core/src/test/groovy/org/apache/slider/agent/actions/TestActionInstallPackage.groovy
@@ -22,9 +22,11 @@ import groovy.transform.CompileStatic
 import groovy.util.logging.Slf4j
 import org.apache.hadoop.yarn.conf.YarnConfiguration
 import org.apache.slider.agent.AgentMiniClusterTestBase
+import org.apache.slider.client.SliderClient
 import org.apache.slider.common.params.Arguments
 import org.apache.slider.common.params.SliderActions
 import org.apache.slider.core.exceptions.BadCommandArgumentsException
+import org.apache.slider.core.main.LauncherExitCodes
 import org.apache.slider.core.main.ServiceLauncher
 import org.junit.Before
 import org.junit.Test
@@ -74,7 +76,8 @@ class TestActionInstallPackage extends 
AgentMiniClusterTestBase {
       )
       fail("expected an exception, got a status code " + 
launcher.serviceExitCode)
     } catch (BadCommandArgumentsException e) {
-      assert e.message.contains("A valid application package location 
required")
+      assertExceptionDetails(e, LauncherExitCodes.EXIT_COMMAND_ARGUMENT_ERROR,
+          SliderClient.E_INVALID_APPLICATION_PACKAGE_LOCATION);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e9ace6a4/slider-core/src/test/groovy/org/apache/slider/agent/actions/TestActionPackage.groovy
----------------------------------------------------------------------
diff --git 
a/slider-core/src/test/groovy/org/apache/slider/agent/actions/TestActionPackage.groovy
 
b/slider-core/src/test/groovy/org/apache/slider/agent/actions/TestActionPackage.groovy
index fa6145e..9edd830 100644
--- 
a/slider-core/src/test/groovy/org/apache/slider/agent/actions/TestActionPackage.groovy
+++ 
b/slider-core/src/test/groovy/org/apache/slider/agent/actions/TestActionPackage.groovy
@@ -22,9 +22,11 @@ import groovy.transform.CompileStatic
 import groovy.util.logging.Slf4j
 import org.apache.hadoop.yarn.conf.YarnConfiguration
 import org.apache.slider.agent.AgentMiniClusterTestBase
+import org.apache.slider.client.SliderClient
 import org.apache.slider.common.params.Arguments
 import org.apache.slider.common.params.SliderActions
 import org.apache.slider.core.exceptions.BadCommandArgumentsException
+import org.apache.slider.core.main.LauncherExitCodes
 import org.apache.slider.core.main.ServiceLauncher
 import org.junit.Before
 import org.junit.Test
@@ -76,7 +78,8 @@ class TestActionPackage extends AgentMiniClusterTestBase {
       )
       fail("expected an exception, got a status code " + 
launcher.serviceExitCode)
     } catch (BadCommandArgumentsException e) {
-      assert e.message.contains("A valid application package location 
required")
+      assertExceptionDetails(e, LauncherExitCodes.EXIT_COMMAND_ARGUMENT_ERROR,
+          SliderClient.E_INVALID_APPLICATION_PACKAGE_LOCATION);
     }
   }
 
@@ -242,7 +245,7 @@ class TestActionPackage extends AgentMiniClusterTestBase {
       )
       fail("expected an exception, got a status code " + 
launcher.serviceExitCode)
     } catch (BadCommandArgumentsException e) {
-      assert e.message.contains("Package does not exists")
+      assert e.message.contains("Package does not exist")
     }
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e9ace6a4/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentClientProvider2.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentClientProvider2.java
 
b/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentClientProvider2.java
index 65e0fbd..6c9cdc5 100644
--- 
a/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentClientProvider2.java
+++ 
b/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentClientProvider2.java
@@ -24,16 +24,19 @@ import 
org.apache.hadoop.registry.client.binding.RegistryUtils;
 import org.apache.log4j.BasicConfigurator;
 import org.apache.slider.api.InternalKeys;
 import org.apache.slider.client.SliderClient;
+import org.apache.slider.common.SliderExitCodes;
 import org.apache.slider.common.params.ActionClientArgs;
 import org.apache.slider.common.tools.SliderFileSystem;
 import org.apache.slider.core.conf.AggregateConf;
 import org.apache.slider.core.conf.ConfTree;
 import org.apache.slider.core.exceptions.BadCommandArgumentsException;
+import org.apache.slider.core.exceptions.BadConfigException;
 import org.apache.slider.core.exceptions.SliderException;
 import org.apache.slider.providers.ProviderUtils;
 import org.apache.slider.providers.agent.application.metadata.Application;
 import org.apache.slider.providers.agent.application.metadata.Metainfo;
 import org.apache.slider.providers.agent.application.metadata.Package;
+import org.apache.slider.test.SliderTestUtils;
 import org.codehaus.jettison.json.JSONObject;
 import org.junit.Assert;
 import org.junit.BeforeClass;
@@ -61,7 +64,7 @@ import static org.easymock.EasyMock.expect;
  */
 @RunWith(PowerMockRunner.class)
 @PrepareForTest({ProviderUtils.class, ProcessBuilder.class, 
AgentClientProvider.class, RegistryUtils.class})
-public class TestAgentClientProvider2 {
+public class TestAgentClientProvider2 extends SliderTestUtils {
   protected static final Logger log =
       LoggerFactory.getLogger(TestAgentClientProvider2.class);
   @Rule
@@ -144,9 +147,9 @@ public class TestAgentClientProvider2 {
                                                 clientInstallPath,
                                                 appName);
     JSONObject outConfigs = output.getJSONObject("configurations");
-    Assert.assertNotNull(outConfigs);
+    Assert.assertNotNull("null configurations section", outConfigs);
     JSONObject outGlobal = outConfigs.getJSONObject("global");
-    Assert.assertNotNull(outGlobal);
+    Assert.assertNotNull("null globals section", outGlobal);
     Assert.assertEquals("b", outGlobal.getString("a"));
     Assert.assertEquals("/tmp/file1/d", outGlobal.getString("d"));
     Assert.assertEquals("/tmp/file1", outGlobal.getString("app_install_dir"));
@@ -163,21 +166,21 @@ public class TestAgentClientProvider2 {
     defaultConfig.put("global", global);
 
     output = provider.getCommandJson(defaultConfig,
-                                     inputConfig,
-                                     metainfo,
-                                     clientInstallPath,
-                                     null);
+        inputConfig,
+        metainfo,
+        clientInstallPath,
+        null);
     outConfigs = output.getJSONObject("configurations");
-    Assert.assertNotNull(outConfigs);
+    Assert.assertNotNull("null configurations section", outConfigs);
     outGlobal = outConfigs.getJSONObject("global");
-    Assert.assertNotNull(outGlobal);
+    Assert.assertNotNull("null globals section", outGlobal);
     Assert.assertEquals("b", outGlobal.getString("a"));
     Assert.assertEquals("/tmp/file1/d", outGlobal.getString("d"));
     Assert.assertEquals("b2", outGlobal.getString("a1"));
     Assert.assertEquals("/tmp/file1/d", outGlobal.getString("d1"));
     Assert.assertEquals("/tmp/file1", outGlobal.getString("app_install_dir"));
     Assert.assertEquals("{app_name}", outGlobal.getString("e"));
-    Assert.assertFalse(outGlobal.has("app_name"));
+    Assert.assertFalse("no 'app_name' field", outGlobal.has("app_name"));
     Assert.assertEquals(user, outGlobal.getString("app_user"));
 
     PowerMock.verify(RegistryUtils.class);
@@ -226,8 +229,8 @@ public class TestAgentClientProvider2 {
     try {
       client.actionClient(args);
     } catch (BadCommandArgumentsException e) {
-      log.info(e.getMessage());
-      Assert.assertTrue(e.getMessage().contains("A valid install location must 
be provided for the client"));
+      assertExceptionDetails(e, SliderExitCodes.EXIT_COMMAND_ARGUMENT_ERROR,
+          SliderClient.E_INVALID_INSTALL_LOCATION);
     }
 
     File tmpFile = File.createTempFile("del", "");
@@ -236,16 +239,16 @@ public class TestAgentClientProvider2 {
     try {
       client.actionClient(args);
     } catch (BadCommandArgumentsException e) {
-      log.info(e.getMessage());
-      Assert.assertTrue(e.getMessage().contains("Install path does not exist 
at"));
+      assertExceptionDetails(e, SliderExitCodes.EXIT_COMMAND_ARGUMENT_ERROR,
+          "Install path does not exist at");
     }
 
     dest.mkdir();
     try {
       client.actionClient(args);
     } catch (BadCommandArgumentsException e) {
-      log.info(e.getMessage());
-      Assert.assertTrue(e.getMessage().contains("A valid application package 
location required"));
+      assertExceptionDetails(e, SliderExitCodes.EXIT_COMMAND_ARGUMENT_ERROR,
+          SliderClient.E_INVALID_APPLICATION_PACKAGE_LOCATION);
     }
 
     tmpFile = File.createTempFile("del", ".zip");
@@ -253,17 +256,17 @@ public class TestAgentClientProvider2 {
     args.clientConfig = tmpFile;
     try {
       client.actionClient(args);
-    } catch (SliderException e) {
-      log.info(e.getMessage());
-      Assert.assertTrue(e.getMessage().contains("Invalid configuration. Must 
be a valid json file"));
+    } catch (BadConfigException e) {
+      assertExceptionDetails(e, SliderExitCodes.EXIT_BAD_CONFIGURATION,
+          SliderClient.E_MUST_BE_A_VALID_JSON_FILE);
     }
 
     args.clientConfig = null;
     try {
       client.actionClient(args);
-    } catch (SliderException e) {
-      log.info(e.getMessage());
-      Assert.assertTrue(e.getMessage().contains("Not a valid app package. 
Could not read metainfo"));
+    } catch (BadConfigException e) {
+      assertExceptionDetails(e, SliderExitCodes.EXIT_BAD_CONFIGURATION,
+          AgentClientProvider.E_COULD_NOT_READ_METAINFO);
     }
   }
 }

Reply via email to