diff --git a/utils/misc/src/test/java/org/onlab/util/AbstractAccumulatorTest.java b/utils/misc/src/test/java/org/onlab/util/AbstractAccumulatorTest.java
index 179dae6..8a409c3 100644
--- a/utils/misc/src/test/java/org/onlab/util/AbstractAccumulatorTest.java
+++ b/utils/misc/src/test/java/org/onlab/util/AbstractAccumulatorTest.java
@@ -31,7 +31,7 @@
 public class AbstractAccumulatorTest {
 
 
-    private final ManuallyAdvancingTimer timer = new ManuallyAdvancingTimer();
+    private final ManuallyAdvancingTimer timer = new ManuallyAdvancingTimer(true);
 
     private static final int LONG_REAL_TIME_DELAY = 30;
     private static final int SHORT_REAL_TIME_DELAY = 5;
diff --git a/utils/misc/src/test/java/org/onlab/util/ManuallyAdvancingTimer.java b/utils/misc/src/test/java/org/onlab/util/ManuallyAdvancingTimer.java
index 4116cbe..8fb008e 100644
--- a/utils/misc/src/test/java/org/onlab/util/ManuallyAdvancingTimer.java
+++ b/utils/misc/src/test/java/org/onlab/util/ManuallyAdvancingTimer.java
@@ -65,6 +65,14 @@
     /* Data structure for tracking tasks */
     private final TaskQueue queue = new TaskQueue();
 
+    /* Whether execution should execute on the executor thread or the calling thread. */
+    private final boolean runLocally;
+
+    public ManuallyAdvancingTimer(boolean runLocally) {
+        this.runLocally = runLocally;
+    }
+
+
     @Override
     public void schedule(TimerTask task, long delay) {
         if (!staticsPopulated) {
@@ -165,14 +173,16 @@
 
     /**
      * Advances the virtual time a certain number of millis triggers execution delays a certain amount to
-     * allow time for execution.
+     * allow time for execution.  If runLocally is true then all real time delays are ignored.
      *
      * @param virtualTimeAdvance the time to be advances in millis of simulated time.
      * @param realTimeDelay      the time to delay in real time to allow for processing.
      */
     public void advanceTimeMillis(long virtualTimeAdvance, int realTimeDelay) {
         timerKeeper.advanceTimeMillis(virtualTimeAdvance);
-        delay(realTimeDelay);
+        if (!runLocally) {
+            delay(realTimeDelay);
+        }
     }
 
     /**
@@ -238,7 +248,11 @@
                     e.printStackTrace();
                     return false;
                 }
-                executorService.execute(task);
+                if (runLocally) {
+                    task.run();
+                } else {
+                    executorService.execute(task);
+                }
                 return true;
             } else {
                 //Calculate next execution time, using absolute value of period
@@ -253,7 +267,11 @@
                 }
                 //Schedule next execution
                 queue.insertOrdered(task);
-                executorService.execute(task);
+                if (runLocally) {
+                    task.run();
+                } else {
+                    executorService.execute(task);
+                }
                 return true;
             }
         }
diff --git a/utils/misc/src/test/java/org/onlab/util/ManuallyAdvancingTimerTest.java b/utils/misc/src/test/java/org/onlab/util/ManuallyAdvancingTimerTest.java
index bab199f..36b50e6 100644
--- a/utils/misc/src/test/java/org/onlab/util/ManuallyAdvancingTimerTest.java
+++ b/utils/misc/src/test/java/org/onlab/util/ManuallyAdvancingTimerTest.java
@@ -54,7 +54,7 @@
      */
     @Before
     public void setup() {
-        timer = new ManuallyAdvancingTimer();
+        timer = new ManuallyAdvancingTimer(true);
         idGenerator = new AtomicInteger(1);
         tasksRunCount = new AtomicInteger(0);
         taskList = Lists.newArrayList();
