killbill-memoizeit

util: add checks before and after each test This uncovered

11/15/2013 2:21:28 PM

Details

diff --git a/util/src/test/java/com/ning/billing/util/audit/dao/TestDefaultAuditDao.java b/util/src/test/java/com/ning/billing/util/audit/dao/TestDefaultAuditDao.java
index bdee1c6..b249338 100644
--- a/util/src/test/java/com/ning/billing/util/audit/dao/TestDefaultAuditDao.java
+++ b/util/src/test/java/com/ning/billing/util/audit/dao/TestDefaultAuditDao.java
@@ -24,6 +24,7 @@ import org.testng.Assert;
 import org.testng.annotations.Test;
 
 import com.ning.billing.ObjectType;
+import com.ning.billing.api.TestApiListener.NextEvent;
 import com.ning.billing.util.UtilTestSuiteWithEmbeddedDB;
 import com.ning.billing.util.api.AuditLevel;
 import com.ning.billing.util.api.TagApiException;
@@ -72,7 +73,10 @@ public class TestDefaultAuditDao extends UtilTestSuiteWithEmbeddedDB {
         Assert.assertEquals(firstAuditLogs.size(), 1);
         Assert.assertEquals(firstAuditLogs.get(0).getChangeType(), ChangeType.INSERT);
 
+        eventsListener.pushExpectedEvent(NextEvent.TAG);
         tagDao.deleteTag(tag.getObjectId(), tag.getObjectType(), tag.getTagDefinitionId(), internalCallContext);
+        assertListenerStatus();
+
         final List<AuditLog> secondAuditLogs = auditDao.getAuditLogsForId(TableName.TAG, tag.getId(), AuditLevel.FULL, internalCallContext);
         Assert.assertEquals(secondAuditLogs.size(), 2);
         Assert.assertEquals(secondAuditLogs.get(0).getChangeType(), ChangeType.INSERT);
@@ -81,9 +85,12 @@ public class TestDefaultAuditDao extends UtilTestSuiteWithEmbeddedDB {
 
     private void addTag() throws TagDefinitionApiException, TagApiException {
         // Create a tag definition
+        eventsListener.pushExpectedEvent(NextEvent.TAG_DEFINITION);
         final TagDefinitionModelDao tagDefinition = tagDefinitionDao.create(UUID.randomUUID().toString().substring(0, 5),
                                                                             UUID.randomUUID().toString().substring(0, 5),
                                                                             internalCallContext);
+        assertListenerStatus();
+
         Assert.assertEquals(tagDefinitionDao.getById(tagDefinition.getId(), internalCallContext), tagDefinition);
 
         // Create a tag
@@ -91,7 +98,10 @@ public class TestDefaultAuditDao extends UtilTestSuiteWithEmbeddedDB {
 
         final Tag theTag = new DescriptiveTag(tagDefinition.getId(), ObjectType.ACCOUNT, objectId, clock.getUTCNow());
 
+        eventsListener.pushExpectedEvent(NextEvent.TAG);
         tagDao.create(new TagModelDao(theTag), internalCallContext);
+        assertListenerStatus();
+
         final List<TagModelDao> tags = tagDao.getTagsForObject(objectId, ObjectType.ACCOUNT, internalCallContext);
         Assert.assertEquals(tags.size(), 1);
         tag = tags.get(0);
diff --git a/util/src/test/java/com/ning/billing/util/customfield/TestFieldStore.java b/util/src/test/java/com/ning/billing/util/customfield/TestFieldStore.java
index f75ddae..1a18955 100644
--- a/util/src/test/java/com/ning/billing/util/customfield/TestFieldStore.java
+++ b/util/src/test/java/com/ning/billing/util/customfield/TestFieldStore.java
@@ -21,6 +21,7 @@ import java.util.UUID;
 import org.testng.annotations.Test;
 
 import com.ning.billing.ObjectType;
+import com.ning.billing.api.TestApiListener.NextEvent;
 import com.ning.billing.util.UtilTestSuiteWithEmbeddedDB;
 import com.ning.billing.util.api.CustomFieldApiException;
 import com.ning.billing.util.customfield.dao.CustomFieldModelDao;
@@ -36,11 +37,15 @@ public class TestFieldStore extends UtilTestSuiteWithEmbeddedDB {
         String fieldValue = "Kitty Hawk";
 
         final CustomField field = new StringCustomField(fieldName, fieldValue, objectType, id, internalCallContext.getCreatedDate());
+        eventsListener.pushExpectedEvent(NextEvent.CUSTOM_FIELD);
         customFieldDao.create(new CustomFieldModelDao(field), internalCallContext);
+        assertListenerStatus();
 
         fieldName = "TestField2";
         fieldValue = "Cape Canaveral";
         final CustomField field2 = new StringCustomField(fieldName, fieldValue, objectType, id, internalCallContext.getCreatedDate());
+        eventsListener.pushExpectedEvent(NextEvent.CUSTOM_FIELD);
         customFieldDao.create(new CustomFieldModelDao(field2), internalCallContext);
+        assertListenerStatus();
     }
 }
diff --git a/util/src/test/java/com/ning/billing/util/dao/TestPagination.java b/util/src/test/java/com/ning/billing/util/dao/TestPagination.java
index 0f0832a..01b7b8a 100644
--- a/util/src/test/java/com/ning/billing/util/dao/TestPagination.java
+++ b/util/src/test/java/com/ning/billing/util/dao/TestPagination.java
@@ -21,6 +21,7 @@ import java.util.List;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
+import com.ning.billing.api.TestApiListener.NextEvent;
 import com.ning.billing.util.UtilTestSuiteWithEmbeddedDB;
 import com.ning.billing.util.tag.dao.TagDefinitionModelDao;
 import com.ning.billing.util.tag.dao.TagDefinitionSqlDao;
@@ -36,7 +37,9 @@ public class TestPagination extends UtilTestSuiteWithEmbeddedDB {
         for (int i = 0; i < 10; i++) {
             final String definitionName = "name-" + i;
             final String description = "description-" + i;
+            eventsListener.pushExpectedEvent(NextEvent.TAG_DEFINITION);
             tagDefinitionDao.create(definitionName, description, internalCallContext);
+            assertListenerStatus();
         }
 
         // Tests via SQL dao directly
diff --git a/util/src/test/java/com/ning/billing/util/tag/dao/TestDefaultTagDao.java b/util/src/test/java/com/ning/billing/util/tag/dao/TestDefaultTagDao.java
index e9ebb64..ff33436 100644
--- a/util/src/test/java/com/ning/billing/util/tag/dao/TestDefaultTagDao.java
+++ b/util/src/test/java/com/ning/billing/util/tag/dao/TestDefaultTagDao.java
@@ -38,23 +38,6 @@ import static org.testng.Assert.assertEquals;
 
 public class TestDefaultTagDao extends UtilTestSuiteWithEmbeddedDB {
 
-    private TestApiListener eventsListener;
-
-    @Override
-    @BeforeMethod(groups = "slow")
-    public void beforeMethod() throws Exception {
-        super.beforeMethod();
-        eventsListener = new TestApiListener(null, idbi);
-        eventBus.register(eventsListener);
-    }
-
-    @Override
-    @AfterMethod(groups = "slow")
-    public void afterMethod() throws Exception {
-        eventBus.unregister(eventsListener);
-        super.afterMethod();
-    }
-
     @Test(groups = "slow")
     public void testGetByIds() throws TagDefinitionApiException {
         final List<UUID> uuids = new ArrayList<UUID>();
@@ -63,11 +46,19 @@ public class TestDefaultTagDao extends UtilTestSuiteWithEmbeddedDB {
         List<TagDefinitionModelDao> result = tagDefinitionDao.getByIds(uuids, internalCallContext);
         assertEquals(result.size(), 0);
 
+        eventsListener.pushExpectedEvent(NextEvent.TAG_DEFINITION);
         final TagDefinitionModelDao defYo = tagDefinitionDao.create(UUID.randomUUID().toString().substring(0, 5), "defintion yo", internalCallContext);
+        assertListenerStatus();
         uuids.add(defYo.getId());
+
+        eventsListener.pushExpectedEvent(NextEvent.TAG_DEFINITION);
         final TagDefinitionModelDao defBah = tagDefinitionDao.create(UUID.randomUUID().toString().substring(0, 5), "defintion bah", internalCallContext);
+        assertListenerStatus();
         uuids.add(defBah.getId());
+
+        eventsListener.pushExpectedEvent(NextEvent.TAG_DEFINITION);
         final TagDefinitionModelDao defZoo = tagDefinitionDao.create(UUID.randomUUID().toString().substring(0, 5), "defintion zoo", internalCallContext);
+        assertListenerStatus();
         uuids.add(defZoo.getId());
 
         result = tagDefinitionDao.getByIds(uuids, internalCallContext);
@@ -85,7 +76,10 @@ public class TestDefaultTagDao extends UtilTestSuiteWithEmbeddedDB {
     @Test(groups = "slow")
     public void testGetById() throws TagDefinitionApiException {
         // User Tag
+        eventsListener.pushExpectedEvent(NextEvent.TAG_DEFINITION);
         final TagDefinitionModelDao defYo = tagDefinitionDao.create(UUID.randomUUID().toString().substring(0, 5), "defintion yo", internalCallContext);
+        assertListenerStatus();
+
         final TagDefinitionModelDao resDefYo = tagDefinitionDao.getById(defYo.getId(), internalCallContext);
         assertEquals(defYo, resDefYo);
 
@@ -104,7 +98,10 @@ public class TestDefaultTagDao extends UtilTestSuiteWithEmbeddedDB {
     @Test(groups = "slow")
     public void testGetByName() throws TagDefinitionApiException {
         // User Tag
+        eventsListener.pushExpectedEvent(NextEvent.TAG_DEFINITION);
         final TagDefinitionModelDao defYo = tagDefinitionDao.create(UUID.randomUUID().toString().substring(0, 5), "defintion yo", internalCallContext);
+        assertListenerStatus();
+
         final TagDefinitionModelDao resDefYo = tagDefinitionDao.getByName(defYo.getName(), internalCallContext);
         assertEquals(defYo, resDefYo);
 
@@ -132,13 +129,13 @@ public class TestDefaultTagDao extends UtilTestSuiteWithEmbeddedDB {
         final TagDefinitionModelDao createdTagDefinition = tagDefinitionDao.create(definitionName, description, internalCallContext);
         Assert.assertEquals(createdTagDefinition.getName(), definitionName);
         Assert.assertEquals(createdTagDefinition.getDescription(), description);
-        Assert.assertTrue(eventsListener.isCompleted(2000));
+        assertListenerStatus();
 
         // Make sure we can create a tag
         eventsListener.pushExpectedEvent(NextEvent.TAG);
         final Tag tag = new DescriptiveTag(createdTagDefinition.getId(), objectType, objectId, internalCallContext.getCreatedDate());
         tagDao.create(new TagModelDao(tag), internalCallContext);
-        Assert.assertTrue(eventsListener.isCompleted(2000));
+        assertListenerStatus();
 
         // Make sure we can retrieve it via the DAO
         final List<TagModelDao> foundTags = tagDao.getTagsForObject(objectId, objectType, internalCallContext);
@@ -158,7 +155,7 @@ public class TestDefaultTagDao extends UtilTestSuiteWithEmbeddedDB {
         // Delete the tag
         eventsListener.pushExpectedEvent(NextEvent.TAG);
         tagDao.deleteTag(objectId, objectType, createdTagDefinition.getId(), internalCallContext);
-        Assert.assertTrue(eventsListener.isCompleted(2000));
+        assertListenerStatus();
 
         // Make sure the tag is deleted
         Assert.assertEquals(tagDao.getTagsForObject(objectId, objectType, internalCallContext).size(), 0);
diff --git a/util/src/test/java/com/ning/billing/util/tag/dao/TestDefaultTagDefinitionDao.java b/util/src/test/java/com/ning/billing/util/tag/dao/TestDefaultTagDefinitionDao.java
index 5c5c627..1c8bc17 100644
--- a/util/src/test/java/com/ning/billing/util/tag/dao/TestDefaultTagDefinitionDao.java
+++ b/util/src/test/java/com/ning/billing/util/tag/dao/TestDefaultTagDefinitionDao.java
@@ -35,25 +35,6 @@ import com.google.common.eventbus.Subscribe;
 
 public class TestDefaultTagDefinitionDao extends UtilTestSuiteWithEmbeddedDB {
 
-    private TestApiListener eventsListener;
-
-
-    @Override
-    @BeforeMethod(groups = "slow")
-    public void beforeMethod() throws Exception {
-        super.beforeMethod();
-        eventsListener = new TestApiListener(null, idbi);
-        eventBus.register(eventsListener);
-    }
-
-    @Override
-    @AfterMethod(groups = "slow")
-    public void afterMethod() throws Exception {
-        eventBus.unregister(eventsListener);
-        super.afterMethod();
-    }
-
-
     @Test(groups = "slow")
     public void testCatchEventsOnCreateAndDelete() throws Exception {
         final String definitionName = UUID.randomUUID().toString().substring(0, 5);
@@ -64,8 +45,7 @@ public class TestDefaultTagDefinitionDao extends UtilTestSuiteWithEmbeddedDB {
         final TagDefinitionModelDao createdTagDefinition = tagDefinitionDao.create(definitionName, description, internalCallContext);
         Assert.assertEquals(createdTagDefinition.getName(), definitionName);
         Assert.assertEquals(createdTagDefinition.getDescription(), description);
-
-        Assert.assertTrue(eventsListener.isCompleted(2000));
+        assertListenerStatus();
 
         // Make sure we can retrieve it via the DAO
         final TagDefinitionModelDao foundTagDefinition = tagDefinitionDao.getByName(definitionName, internalCallContext);
@@ -84,7 +64,7 @@ public class TestDefaultTagDefinitionDao extends UtilTestSuiteWithEmbeddedDB {
         // Delete the tag definition
         eventsListener.pushExpectedEvent(NextEvent.TAG_DEFINITION);
         tagDefinitionDao.deleteById(foundTagDefinition.getId(), internalCallContext);
-        Assert.assertTrue(eventsListener.isCompleted(2000));
+        assertListenerStatus();
 
         // Make sure the tag definition is deleted
         Assert.assertNull(tagDefinitionDao.getByName(definitionName, internalCallContext));
diff --git a/util/src/test/java/com/ning/billing/util/tag/TestTagStore.java b/util/src/test/java/com/ning/billing/util/tag/TestTagStore.java
index 70e8766..6d2fc68 100644
--- a/util/src/test/java/com/ning/billing/util/tag/TestTagStore.java
+++ b/util/src/test/java/com/ning/billing/util/tag/TestTagStore.java
@@ -22,6 +22,7 @@ import java.util.UUID;
 import org.testng.annotations.Test;
 
 import com.ning.billing.ObjectType;
+import com.ning.billing.api.TestApiListener.NextEvent;
 import com.ning.billing.util.UtilTestSuiteWithEmbeddedDB;
 import com.ning.billing.util.api.TagApiException;
 import com.ning.billing.util.api.TagDefinitionApiException;
@@ -41,14 +42,19 @@ public class TestTagStore extends UtilTestSuiteWithEmbeddedDB {
     public void testTagCreationAndRetrieval() throws TagApiException, TagDefinitionApiException {
         final UUID accountId = UUID.randomUUID();
 
-        TagDefinitionModelDao testTagDefinition;
+        eventsListener.pushExpectedEvent(NextEvent.TAG_DEFINITION);
         tagDefinitionDao.create("tag1", "First tag", internalCallContext);
-        testTagDefinition = tagDefinitionDao.create("testTagDefinition", "Second tag", internalCallContext);
+        assertListenerStatus();
 
+        eventsListener.pushExpectedEvent(NextEvent.TAG_DEFINITION);
+        final TagDefinitionModelDao testTagDefinition = tagDefinitionDao.create("testTagDefinition", "Second tag", internalCallContext);
+        assertListenerStatus();
 
         final Tag tag = new DescriptiveTag(testTagDefinition.getId(), ObjectType.ACCOUNT, accountId, clock.getUTCNow());
 
+        eventsListener.pushExpectedEvent(NextEvent.TAG);
         tagDao.create(new TagModelDao(tag), internalCallContext);
+        assertListenerStatus();
 
         final TagModelDao savedTag = tagDao.getById(tag.getId(), internalCallContext);
         assertEquals(savedTag.getTagDefinitionId(), tag.getTagDefinitionId());
@@ -60,7 +66,9 @@ public class TestTagStore extends UtilTestSuiteWithEmbeddedDB {
         final UUID accountId = UUID.randomUUID();
 
         final ControlTag tag = new DefaultControlTag(ControlTagType.AUTO_INVOICING_OFF, ObjectType.ACCOUNT, accountId, clock.getUTCNow());
+        eventsListener.pushExpectedEvent(NextEvent.TAG);
         tagDao.create(new TagModelDao(tag), internalCallContext);
+        assertListenerStatus();
 
         final TagModelDao savedTag = tagDao.getById(tag.getId(), internalCallContext);
         assertEquals(savedTag.getTagDefinitionId(), tag.getTagDefinitionId());
@@ -76,12 +84,17 @@ public class TestTagStore extends UtilTestSuiteWithEmbeddedDB {
     @Test(groups = "slow")
     public void testTagDefinitionDeletionForUnusedDefinition() throws TagDefinitionApiException {
         final String definitionName = "TestTag1234";
+        eventsListener.pushExpectedEvent(NextEvent.TAG_DEFINITION);
         tagDefinitionDao.create(definitionName, "Some test tag", internalCallContext);
+        assertListenerStatus();
 
         TagDefinitionModelDao tagDefinition = tagDefinitionDao.getByName(definitionName, internalCallContext);
         assertNotNull(tagDefinition);
 
+        eventsListener.pushExpectedEvent(NextEvent.TAG_DEFINITION);
         tagDefinitionDao.deleteById(tagDefinition.getId(), internalCallContext);
+        assertListenerStatus();
+
         tagDefinition = tagDefinitionDao.getByName(definitionName, internalCallContext);
         assertNull(tagDefinition);
     }
@@ -89,26 +102,28 @@ public class TestTagStore extends UtilTestSuiteWithEmbeddedDB {
     @Test(groups = "slow", expectedExceptions = TagDefinitionApiException.class)
     public void testTagDefinitionDeletionForDefinitionInUse() throws TagDefinitionApiException, TagApiException {
         final String definitionName = "TestTag12345";
+        eventsListener.pushExpectedEvent(NextEvent.TAG_DEFINITION);
         tagDefinitionDao.create(definitionName, "Some test tag", internalCallContext);
+        assertListenerStatus();
 
         final TagDefinitionModelDao tagDefinition = tagDefinitionDao.getByName(definitionName, internalCallContext);
         assertNotNull(tagDefinition);
 
         final UUID objectId = UUID.randomUUID();
         final Tag tag = new DescriptiveTag(tagDefinition.getId(), ObjectType.ACCOUNT, objectId, internalCallContext.getCreatedDate());
+        eventsListener.pushExpectedEvent(NextEvent.TAG);
         tagDao.create(new TagModelDao(tag), internalCallContext);
+        assertListenerStatus();
 
         tagDefinitionDao.deleteById(tagDefinition.getId(), internalCallContext);
     }
 
     @Test(groups = "slow")
-    public void testDeleteTagBeforeDeleteTagDefinition() throws TagApiException {
+    public void testDeleteTagBeforeDeleteTagDefinition() throws TagDefinitionApiException, TagApiException {
         final String definitionName = "TestTag1234567";
-        try {
-            tagDefinitionDao.create(definitionName, "Some test tag", internalCallContext);
-        } catch (TagDefinitionApiException e) {
-            fail("Could not create tag definition", e);
-        }
+        eventsListener.pushExpectedEvent(NextEvent.TAG_DEFINITION);
+        tagDefinitionDao.create(definitionName, "Some test tag", internalCallContext);
+        assertListenerStatus();
 
         final TagDefinitionModelDao tagDefinition = tagDefinitionDao.getByName(definitionName, internalCallContext);
         assertNotNull(tagDefinition);
@@ -116,14 +131,17 @@ public class TestTagStore extends UtilTestSuiteWithEmbeddedDB {
         final UUID objectId = UUID.randomUUID();
 
         final Tag tag = new DescriptiveTag(tagDefinition.getId(), ObjectType.ACCOUNT, objectId, internalCallContext.getCreatedDate());
+        eventsListener.pushExpectedEvent(NextEvent.TAG);
         tagDao.create(new TagModelDao(tag), internalCallContext);
+        assertListenerStatus();
+
+        eventsListener.pushExpectedEvent(NextEvent.TAG);
         tagDao.deleteTag(objectId, ObjectType.ACCOUNT, tagDefinition.getId(), internalCallContext);
+        assertListenerStatus();
 
-        try {
-            tagDefinitionDao.deleteById(tagDefinition.getId(), internalCallContext);
-        } catch (TagDefinitionApiException e) {
-            fail("Could not delete tag definition", e);
-        }
+        eventsListener.pushExpectedEvent(NextEvent.TAG_DEFINITION);
+        tagDefinitionDao.deleteById(tagDefinition.getId(), internalCallContext);
+        assertListenerStatus();
     }
 
     @Test(groups = "slow")
diff --git a/util/src/test/java/com/ning/billing/util/UtilTestSuiteWithEmbeddedDB.java b/util/src/test/java/com/ning/billing/util/UtilTestSuiteWithEmbeddedDB.java
index ee15ee9..ad1e535 100644
--- a/util/src/test/java/com/ning/billing/util/UtilTestSuiteWithEmbeddedDB.java
+++ b/util/src/test/java/com/ning/billing/util/UtilTestSuiteWithEmbeddedDB.java
@@ -19,11 +19,16 @@ package com.ning.billing.util;
 import javax.inject.Inject;
 
 import org.skife.jdbi.v2.IDBI;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.Assert;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 
 import com.ning.billing.GuicyKillbillTestSuiteWithEmbeddedDB;
+import com.ning.billing.api.TestApiListener;
+import com.ning.billing.api.TestListenerStatus;
 import com.ning.billing.bus.api.PersistentBus;
 import com.ning.billing.notificationq.api.NotificationQueueService;
 import com.ning.billing.util.audit.dao.AuditDao;
@@ -41,8 +46,13 @@ import com.google.inject.Guice;
 import com.google.inject.Injector;
 import com.google.inject.Stage;
 
+import static org.testng.Assert.assertTrue;
 
-public abstract class UtilTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuiteWithEmbeddedDB {
+public abstract class UtilTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuiteWithEmbeddedDB implements TestListenerStatus {
+
+    private static final Logger log = LoggerFactory.getLogger(UtilTestSuiteWithEmbeddedDB.class);
+
+    protected static final long DELAY = 10000;
 
     @Inject
     protected PersistentBus eventBus;
@@ -69,24 +79,62 @@ public abstract class UtilTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuite
     @Inject
     protected IDBI idbi;
 
+    protected TestApiListener eventsListener;
+
+    private boolean isListenerFailed;
+    private String listenerFailedMsg;
+
     @BeforeClass(groups = "slow")
     public void beforeClass() throws Exception {
         final Injector g = Guice.createInjector(Stage.PRODUCTION, new TestUtilModuleWithEmbeddedDB(configSource));
         g.injectMembers(this);
+
+        eventsListener = new TestApiListener(this, idbi);
     }
 
     @Override
     @BeforeMethod(groups = "slow")
     public void beforeMethod() throws Exception {
         super.beforeMethod();
-        controlCacheDispatcher.clearAll();
+
+        resetTestListenerStatus();
+        eventsListener.reset();
+
         eventBus.start();
+        eventBus.register(eventsListener);
+
+        controlCacheDispatcher.clearAll();
+
+        // Make sure we start with a clean state
+        assertListenerStatus();
     }
 
     @AfterMethod(groups = "slow")
     public void afterMethod() throws Exception {
+        // Make sure we finish in a clean state
+        assertListenerStatus();
+
+        eventBus.unregister(eventsListener);
         eventBus.stop();
     }
 
+    @Override
+    public void failed(final String msg) {
+        isListenerFailed = true;
+        listenerFailedMsg = msg;
+    }
 
+    @Override
+    public void resetTestListenerStatus() {
+        isListenerFailed = false;
+        listenerFailedMsg = null;
+    }
+
+    protected void assertListenerStatus() {
+        assertTrue(eventsListener.isCompleted(DELAY));
+        if (isListenerFailed) {
+            log.error(listenerFailedMsg);
+            Assert.fail(listenerFailedMsg);
+        }
+    }
 }