diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/active/ActiveEventsListenerTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/active/ActiveEventsListenerTest.java
index c5465b1..97283b6 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/active/ActiveEventsListenerTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/active/ActiveEventsListenerTest.java
@@ -47,6 +47,7 @@
 import org.apache.asterix.metadata.lock.MetadataLockManager;
 import org.apache.asterix.runtime.utils.CcApplicationContext;
 import org.apache.asterix.test.active.TestEventsListener.Behavior;
+import org.apache.asterix.test.base.TestMethodTracer;
 import org.apache.asterix.translator.IStatementExecutor;
 import org.apache.hyracks.algebricks.common.constraints.AlgebricksAbsolutePartitionConstraint;
 import org.apache.hyracks.api.client.IHyracksClientConnection;
@@ -58,7 +59,9 @@
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.TestRule;
 import org.mockito.Mockito;
 
 public class ActiveEventsListenerTest {
@@ -86,6 +89,9 @@
     static AlgebricksAbsolutePartitionConstraint locations;
     static ExecutorService executor;
 
+    @Rule
+    public TestRule watcher = new TestMethodTracer();
+
     @Before
     public void setUp() throws Exception {
         jobIdFactory = new JobIdFactory();
@@ -373,6 +379,10 @@
         ActivityState state = listener.getState();
         Assert.assertTrue(state == ActivityState.RECOVERING || state == ActivityState.TEMPORARILY_FAILED);
         Assert.assertNotNull(listener.getRecoveryTask());
+        Action stopActivity = users[1].stopActivity(listener);
+        stopActivity.sync();
+        assertSuccess(stopActivity);
+        Assert.assertEquals(ActivityState.STOPPED, listener.getState());
     }
 
     @Test
@@ -394,6 +404,10 @@
         ActivityState state = listener.getState();
         Assert.assertTrue(state == ActivityState.RECOVERING || state == ActivityState.TEMPORARILY_FAILED);
         Assert.assertNotNull(listener.getRecoveryTask());
+        Action stopActivity = users[1].stopActivity(listener);
+        stopActivity.sync();
+        assertSuccess(stopActivity);
+        Assert.assertEquals(ActivityState.STOPPED, listener.getState());
     }
 
     @Test
