diff --git a/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java b/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
index fd373279e85f151de765bd4c5cfc7af5de3fac68..e4addbbaac25f9205ea2c1df52562f7b98208239 100644
--- a/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
+++ b/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
@@ -18,6 +18,8 @@
 package net.floodlightcontroller.core.internal;
 
 import static org.easymock.EasyMock.*;
+import static org.junit.Assert.assertEquals;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -26,6 +28,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.DelayQueue;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.Lock;
@@ -47,6 +50,7 @@ import net.floodlightcontroller.core.internal.Controller.SwitchUpdate;
 import net.floodlightcontroller.core.internal.Controller.SwitchUpdateType;
 import net.floodlightcontroller.core.internal.OFChannelState.HandshakeState;
 import net.floodlightcontroller.core.internal.RoleChanger.PendingRoleRequestEntry;
+import net.floodlightcontroller.core.internal.RoleChanger.RoleChangeTask;
 import net.floodlightcontroller.core.module.FloodlightModuleContext;
 import net.floodlightcontroller.core.test.MockFloodlightProvider;
 import net.floodlightcontroller.core.test.MockThreadPoolService;
@@ -1144,8 +1148,17 @@ public class ControllerTest extends FloodlightTestCase
         // test
         replay(sw, lock);
         chdlr.processOFMessage(error);
-        // Verify there is a pending role change request
-        assertTrue(controller.roleChanger.pendingTasks.peek() != null);
+        DelayQueue<RoleChangeTask> pendingTasks =
+                controller.roleChanger.pendingTasks;
+        synchronized (pendingTasks) {
+            RoleChangeTask t;
+            while ((t = pendingTasks.peek()) == null ||
+                    RoleChanger.RoleChangeTask.Type.TIMEOUT != t.type) {
+                pendingTasks.wait();
+            }
+        }
+        // Now there should be exactly one timeout task pending
+        assertEquals(1, pendingTasks.size());
    }
 
     // Helper function.