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/04/15 21:49:42 UTC

[08/50] [abbrv] incubator-lens git commit: LENS-402: In Query End Notification mail, Send status message along with of errorMessage (Amareshwari Sriramadasu via prongs)

LENS-402: In Query End Notification mail, Send status message along with of errorMessage (Amareshwari Sriramadasu via prongs)


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

Branch: refs/heads/current-release-line
Commit: 36764bb7414f395da0b725c46ab11e954e3dbab0
Parents: 7f6634a
Author: Amareshwari Sriramadasu <am...@apache.org>
Authored: Thu Mar 26 19:11:15 2015 +0530
Committer: Rajat Khandelwal <pr...@apache.org>
Committed: Thu Mar 26 19:11:15 2015 +0530

----------------------------------------------------------------------
 .../org/apache/lens/driver/hive/HiveDriver.java |   3 +-
 .../org/apache/lens/driver/jdbc/JDBCDriver.java |   3 +-
 .../lens/server/query/QueryEndNotifier.java     |  10 +-
 .../lens/server/query/ResultFormatter.java      |   2 +-
 .../server/query/TestQueryEndEmailNotifier.java | 293 +++++++++++++++++++
 .../lens/server/query/TestQueryService.java     |  63 ----
 6 files changed, 307 insertions(+), 67 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/36764bb7/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java
----------------------------------------------------------------------
diff --git a/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java b/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java
index 9e3c723..1dc87b6 100644
--- a/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java
+++ b/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java
@@ -544,7 +544,8 @@ public class HiveDriver implements LensDriver {
         break;
       case ERROR:
         context.getDriverStatus().setState(DriverQueryState.FAILED);
-        context.getDriverStatus().setStatusMessage(
+        context.getDriverStatus().setStatusMessage("Query execution failed!");
+        context.getDriverStatus().setErrorMessage(
           "Query failed with errorCode:" + opStatus.getOperationException().getErrorCode() + " with errorMessage: "
             + opStatus.getOperationException().getMessage());
         break;

http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/36764bb7/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriver.java
----------------------------------------------------------------------
diff --git a/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriver.java b/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriver.java
index 35a9067..121b56b 100644
--- a/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriver.java
+++ b/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriver.java
@@ -922,7 +922,8 @@ public class JDBCDriver implements LensDriver {
         context.getDriverStatus().setStatusMessage(context.getQueryHandle() + " cancelled");
       } else if (ctx.getQueryResult() != null && ctx.getQueryResult().error != null) {
         context.getDriverStatus().setState(DriverQueryState.FAILED);
-        context.getDriverStatus().setStatusMessage(ctx.getQueryResult().error.getMessage());
+        context.getDriverStatus().setStatusMessage("Query execution failed!");
+        context.getDriverStatus().setErrorMessage(ctx.getQueryResult().error.getMessage());
       } else {
         context.getDriverStatus().setState(DriverQueryState.SUCCESSFUL);
         context.getDriverStatus().setStatusMessage(context.getQueryHandle() + " successful");

http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/36764bb7/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java
----------------------------------------------------------------------
diff --git a/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java b/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java
index 70f9dba..1c6f186 100644
--- a/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java
+++ b/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java
@@ -38,6 +38,7 @@ import org.apache.lens.server.api.metrics.MetricsService;
 import org.apache.lens.server.api.query.QueryContext;
 import org.apache.lens.server.api.query.QueryEnded;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.conf.HiveConf;
@@ -153,15 +154,22 @@ public class QueryEndNotifier extends AsyncEventListener<QueryEnded> {
       msgBuilder.append("/httpresultset");
       break;
     case FAILED:
-      msgBuilder.append(queryContext.getStatus().getErrorMessage());
+      msgBuilder.append(queryContext.getStatus().getStatusMessage());
+      if (!StringUtils.isBlank(queryContext.getStatus().getErrorMessage())) {
+        msgBuilder.append("\n Reason:\n");
+        msgBuilder.append(queryContext.getStatus().getErrorMessage());
+      }
       break;
     case CANCELED:
+      msgBuilder.append(queryContext.getStatus().getStatusMessage());
+      break;
     case CLOSED:
     default:
       break;
     }
     return msgBuilder.toString();
   }
+
   @Data
   public static class Email {
     private final String from;

http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/36764bb7/lens-server/src/main/java/org/apache/lens/server/query/ResultFormatter.java
----------------------------------------------------------------------
diff --git a/lens-server/src/main/java/org/apache/lens/server/query/ResultFormatter.java b/lens-server/src/main/java/org/apache/lens/server/query/ResultFormatter.java
index 0b215d8..b40f949 100644
--- a/lens-server/src/main/java/org/apache/lens/server/query/ResultFormatter.java
+++ b/lens-server/src/main/java/org/apache/lens/server/query/ResultFormatter.java
@@ -134,7 +134,7 @@ public class ResultFormatter extends AsyncEventListener<QueryExecuted> {
       metricsService.incrCounter(ResultFormatter.class, "formatting-errors");
       LOG.warn("Exception while formatting result for " + queryHandle, e);
       try {
-        queryService.setFailedStatus(ctx, "Result formatting failed!", e.getLocalizedMessage());
+        queryService.setFailedStatus(ctx, "Result formatting failed!", e.getMessage());
       } catch (LensException e1) {
         LOG.error("Exception while setting failure for " + queryHandle, e1);
       }

http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/36764bb7/lens-server/src/test/java/org/apache/lens/server/query/TestQueryEndEmailNotifier.java
----------------------------------------------------------------------
diff --git a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryEndEmailNotifier.java b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryEndEmailNotifier.java
new file mode 100644
index 0000000..5726602
--- /dev/null
+++ b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryEndEmailNotifier.java
@@ -0,0 +1,293 @@
+/**
+ * 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.lens.server.query;
+
+import java.util.*;
+
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.Application;
+import javax.ws.rs.core.MediaType;
+
+import org.apache.lens.api.LensConf;
+import org.apache.lens.api.LensSessionHandle;
+import org.apache.lens.api.query.*;
+import org.apache.lens.api.query.QueryStatus.Status;
+import org.apache.lens.server.LensJerseyTest;
+import org.apache.lens.server.LensServices;
+import org.apache.lens.server.LensTestUtil;
+import org.apache.lens.server.api.LensConfConstants;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.hive.conf.HiveConf;
+
+import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.media.multipart.FormDataBodyPart;
+import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
+import org.glassfish.jersey.media.multipart.FormDataMultiPart;
+import org.glassfish.jersey.media.multipart.MultiPartFeature;
+import org.subethamail.wiser.Wiser;
+import org.subethamail.wiser.WiserMessage;
+import org.testng.Assert;
+import org.testng.annotations.AfterTest;
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.Test;
+
+/**
+ * The query completion email notifier
+ */
+@Test(groups = "unit-test")
+public class TestQueryEndEmailNotifier extends LensJerseyTest {
+
+  /** The Constant LOG. */
+  public static final Log LOG = LogFactory.getLog(TestQueryEndEmailNotifier.class);
+
+  /** The query service. */
+  QueryExecutionServiceImpl queryService;
+
+  /** The lens session id. */
+  LensSessionHandle lensSessionId;
+
+  /** The wiser. */
+  private Wiser wiser;
+
+  /*
+   * (non-Javadoc)
+   *
+   * @see org.glassfish.jersey.test.JerseyTest#setUp()
+   */
+  @BeforeTest
+  public void setUp() throws Exception {
+    super.setUp();
+    wiser = new Wiser();
+    wiser.setHostname("localhost");
+    wiser.setPort(25000);
+    queryService = (QueryExecutionServiceImpl) LensServices.get().getService("query");
+    Map<String, String> sessionconf = new HashMap<String, String>();
+    sessionconf.put("test.session.key", "svalue");
+    sessionconf.put(LensConfConstants.QUERY_MAIL_NOTIFY, "true");
+    sessionconf.put(LensConfConstants.QUERY_RESULT_EMAIL_CC, "foo1@localhost,foo2@localhost,foo3@localhost");
+    lensSessionId = queryService.openSession("foo@localhost", "bar", sessionconf); // @localhost should be removed
+    // automatically
+    createTable(TEST_TABLE);
+    loadData(TEST_TABLE, TEST_DATA_FILE);
+  }
+
+  /*
+   * (non-Javadoc)
+   *
+   * @see org.glassfish.jersey.test.JerseyTest#tearDown()
+   */
+  @AfterTest
+  public void tearDown() throws Exception {
+    dropTable(TEST_TABLE);
+    queryService.closeSession(lensSessionId);
+    super.tearDown();
+  }
+
+  /*
+   * (non-Javadoc)
+   *
+   * @see org.glassfish.jersey.test.JerseyTest#configure()
+   */
+  @Override
+  protected Application configure() {
+    return new QueryApp();
+  }
+
+  /*
+   * (non-Javadoc)
+   *
+   * @see org.glassfish.jersey.test.JerseyTest#configureClient(org.glassfish.jersey.client.ClientConfig)
+   */
+  @Override
+  protected void configureClient(ClientConfig config) {
+    config.register(MultiPartFeature.class);
+  }
+
+  /** The test table. */
+  public static final String TEST_TABLE = "EMAIL_NOTIFIER_TEST_TABLE";
+
+  /** The Constant TEST_DATA_FILE. */
+  public static final String TEST_DATA_FILE = "./testdata/testdata2.data";
+
+  /**
+   * Creates the table.
+   *
+   * @param tblName the tbl name
+   * @throws InterruptedException the interrupted exception
+   */
+  private void createTable(String tblName) throws InterruptedException {
+    LensTestUtil.createTable(tblName, target(), lensSessionId);
+  }
+
+  /**
+   * Load data.
+   *
+   * @param tblName      the tbl name
+   * @param testDataFile the test data file
+   * @throws InterruptedException the interrupted exception
+   */
+  private void loadData(String tblName, final String testDataFile) throws InterruptedException {
+    LensTestUtil.loadData(tblName, testDataFile, target(), lensSessionId);
+  }
+
+  /**
+   * Drop table.
+   *
+   * @param tblName the tbl name
+   * @throws InterruptedException the interrupted exception
+   */
+  private void dropTable(String tblName) throws InterruptedException {
+    LensTestUtil.dropTable(tblName, target(), lensSessionId);
+  }
+
+  private QueryHandle launchAndWaitForQuery(LensConf conf, String query, Status expectedStatus)
+    throws InterruptedException {
+    final WebTarget target = target().path("queryapi/queries");
+    final FormDataMultiPart mp = new FormDataMultiPart();
+    mp.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("sessionid").build(), lensSessionId,
+      MediaType.APPLICATION_XML_TYPE));
+    mp.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("query").build(), query));
+    mp.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("operation").build(), "execute"));
+    mp.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("conf").fileName("conf").build(), conf,
+      MediaType.APPLICATION_XML_TYPE));
+    final QueryHandle handle = target.request().post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA_TYPE),
+      QueryHandle.class);
+
+    Assert.assertNotNull(handle);
+    LensQuery ctx = target.path(handle.toString()).queryParam("sessionid", lensSessionId).request()
+      .get(LensQuery.class);
+    QueryStatus stat = ctx.getStatus();
+    while (!stat.isFinished()) {
+      ctx = target.path(handle.toString()).queryParam("sessionid", lensSessionId).request().get(LensQuery.class);
+      stat = ctx.getStatus();
+      Thread.sleep(1000);
+    }
+    Assert.assertEquals(ctx.getStatus().getStatus(), expectedStatus);
+    return handle;
+  }
+  /**
+   * Test launch fail.
+   *
+   * @throws InterruptedException the interrupted exception
+   */
+  @Test
+  public void testEmailNotification() throws InterruptedException {
+    wiser.start();
+    LensConf conf = new LensConf();
+    // launch failure
+    QueryHandle handle = launchAndWaitForQuery(conf, "select ID from non_exist_table", QueryStatus.Status.FAILED);
+    List<WiserMessage> messages = new ArrayList<WiserMessage>();
+    for (int i = 0; i < 20; i++) {
+      messages = wiser.getMessages();
+      if (messages.size() > 0) {
+        break;
+      }
+      Thread.sleep(10000);
+    }
+
+    Assert.assertEquals(messages.size(), 4);
+    Assert.assertTrue(messages.get(0).toString().contains(handle.toString()));
+    Assert.assertEquals(messages.size(), 4);
+    Assert.assertTrue(messages.get(0).toString().contains(handle.toString()));
+    Assert.assertTrue(messages.get(0).toString().contains("Launching query failed"));
+    Assert.assertTrue(messages.get(0).toString().contains("Reason"));
+
+    // rewriter failure
+    handle = launchAndWaitForQuery(conf, "cube select ID from nonexist", QueryStatus.Status.FAILED);
+    messages = new ArrayList<WiserMessage>();
+    for (int i = 0; i < 20; i++) {
+      messages = wiser.getMessages();
+      if (messages.size() > 4) {
+        break;
+      }
+      Thread.sleep(10000);
+    }
+
+    Assert.assertEquals(messages.size(), 8);
+    Assert.assertTrue(messages.get(4).toString().contains(handle.toString()));
+    Assert.assertTrue(messages.get(4).toString().contains("Launching query failed"));
+    Assert.assertTrue(messages.get(4).toString().contains("Reason"));
+
+    // formatting failure
+    conf = new LensConf();
+    conf.addProperty(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "true");
+    conf.addProperty(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+    conf.addProperty(LensConfConstants.QUERY_OUTPUT_SERDE, "NonexistentSerde.class");
+    handle = launchAndWaitForQuery(conf, "select ID, IDSTR from " + TEST_TABLE,
+      QueryStatus.Status.FAILED);
+    messages = new ArrayList<WiserMessage>();
+    for (int i = 0; i < 20; i++) {
+      messages = wiser.getMessages();
+      if (messages.size() > 8) {
+        break;
+      }
+      Thread.sleep(10000);
+    }
+
+    Assert.assertEquals(messages.size(), 12);
+    Assert.assertTrue(messages.get(8).toString().contains(handle.toString()));
+    Assert.assertTrue(messages.get(8).toString().contains("Result formatting failed!"));
+    Assert.assertTrue(messages.get(8).toString().contains("Reason"));
+
+    // execution failure
+    conf = new LensConf();
+    conf.addProperty(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "true");
+    conf.addProperty(HiveConf.ConfVars.COMPRESSRESULT.name(), "true");
+    conf.addProperty("mapred.compress.map.output", "true");
+    conf.addProperty("mapred.map.output.compression.codec", "nonexisting");
+    handle = launchAndWaitForQuery(conf, "select count(ID) from " + TEST_TABLE, QueryStatus.Status.FAILED);
+    messages = new ArrayList<WiserMessage>();
+    for (int i = 0; i < 20; i++) {
+      messages = wiser.getMessages();
+      if (messages.size() > 12) {
+        break;
+      }
+      Thread.sleep(10000);
+    }
+
+    Assert.assertEquals(messages.size(), 16);
+    Assert.assertTrue(messages.get(12).toString().contains(handle.toString()));
+    Assert.assertTrue(messages.get(12).toString().contains("Query execution failed!"));
+    Assert.assertTrue(messages.get(12).toString().contains("Reason"));
+
+    // successful query
+    conf = new LensConf();
+    conf.addProperty(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "true");
+    conf.addProperty(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "true");
+    handle = launchAndWaitForQuery(conf, "select ID, IDSTR from " + TEST_TABLE, QueryStatus.Status.SUCCESSFUL);
+    messages = new ArrayList<WiserMessage>();
+    for (int i = 0; i < 20; i++) {
+      messages = wiser.getMessages();
+      if (messages.size() > 16) {
+        break;
+      }
+      Thread.sleep(10000);
+    }
+
+    Assert.assertEquals(messages.size(), 20);
+    Assert.assertTrue(messages.get(16).toString().contains(handle.toString()));
+    Assert.assertTrue(messages.get(16).toString().contains("Query  SUCCESSFUL"));
+    Assert.assertTrue(messages.get(16).toString().contains("Result available at"));
+
+    wiser.stop();
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/36764bb7/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java
----------------------------------------------------------------------
diff --git a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java
index 14a4eb2..e3e3d4b 100644
--- a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java
+++ b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java
@@ -66,8 +66,6 @@ import org.glassfish.jersey.media.multipart.FormDataBodyPart;
 import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
 import org.glassfish.jersey.media.multipart.FormDataMultiPart;
 import org.glassfish.jersey.media.multipart.MultiPartFeature;
-import org.subethamail.wiser.Wiser;
-import org.subethamail.wiser.WiserMessage;
 import org.testng.Assert;
 import org.testng.annotations.AfterTest;
 import org.testng.annotations.BeforeTest;
@@ -93,9 +91,6 @@ public class TestQueryService extends LensJerseyTest {
   /** The lens session id. */
   LensSessionHandle lensSessionId;
 
-  /** The wiser. */
-  private Wiser wiser;
-
   /*
    * (non-Javadoc)
    *
@@ -104,9 +99,6 @@ public class TestQueryService extends LensJerseyTest {
   @BeforeTest
   public void setUp() throws Exception {
     super.setUp();
-    wiser = new Wiser();
-    wiser.setHostname("localhost");
-    wiser.setPort(25000);
     queryService = (QueryExecutionServiceImpl) LensServices.get().getService("query");
     metricsSvc = (MetricsService) LensServices.get().getService(MetricsService.NAME);
     Map<String, String> sessionconf = new HashMap<String, String>();
@@ -779,61 +771,6 @@ public class TestQueryService extends LensJerseyTest {
   }
 
   /**
-   * Test notification.
-   *
-   * @throws IOException          Signals that an I/O exception has occurred.
-   * @throws InterruptedException the interrupted exception
-   */
-  @Test
-  public void testNotification() throws IOException, InterruptedException {
-    wiser.start();
-    final WebTarget target = target().path("queryapi/queries");
-    final FormDataMultiPart mp2 = new FormDataMultiPart();
-    LensConf conf = new LensConf();
-    conf.addProperty(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
-    conf.addProperty(LensConfConstants.QUERY_MAIL_NOTIFY, "true");
-    conf.addProperty(LensConfConstants.QUERY_RESULT_EMAIL_CC, "foo1@localhost,foo2@localhost,foo3@localhost");
-    mp2.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("sessionid").build(), lensSessionId,
-      MediaType.APPLICATION_XML_TYPE));
-    mp2.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("query").build(), "select ID, IDSTR from "
-      + TEST_TABLE));
-    mp2.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("operation").build(), "execute"));
-    mp2.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("conf").fileName("conf").build(), conf,
-      MediaType.APPLICATION_XML_TYPE));
-    final QueryHandle handle = target.request().post(Entity.entity(mp2, MediaType.MULTIPART_FORM_DATA_TYPE),
-      QueryHandle.class);
-
-    Assert.assertNotNull(handle);
-
-    LensQuery ctx = target.path(handle.toString()).queryParam("sessionid", lensSessionId).request()
-      .get(LensQuery.class);
-    Assert.assertTrue(ctx.getStatus().getStatus().equals(Status.QUEUED)
-      || ctx.getStatus().getStatus().equals(Status.LAUNCHED) || ctx.getStatus().getStatus().equals(Status.RUNNING)
-      || ctx.getStatus().getStatus().equals(Status.SUCCESSFUL));
-
-    // wait till the query finishes
-    QueryStatus stat = ctx.getStatus();
-    while (!stat.isFinished()) {
-      ctx = target.path(handle.toString()).queryParam("sessionid", lensSessionId).request().get(LensQuery.class);
-      stat = ctx.getStatus();
-      Thread.sleep(1000);
-    }
-    Assert.assertEquals(ctx.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
-    List<WiserMessage> messages = new ArrayList<WiserMessage>();
-    for (int i = 0; i < 20; i++) {
-      messages = wiser.getMessages();
-      if (messages.size() > 0) {
-        break;
-      }
-      Thread.sleep(10000);
-    }
-
-    Assert.assertEquals(messages.size(), 4);
-    Assert.assertTrue(messages.get(0).toString().contains(handle.toString()));
-    wiser.stop();
-  }
-
-  /**
    * Validate persisted result.
    *
    * @param handle        the handle