Fix ModuleFactoryBundleTracker shutdown hang
[controller.git] / opendaylight / config / config-manager / src / test / java / org / opendaylight / controller / config / manager / impl / osgi / ModuleFactoryBundleTrackerTest.java
index 9ac570e2eed166045ac7930425b77932b5229263..da585b7151365eec3529161530403371f0016283 100644 (file)
@@ -18,6 +18,7 @@ import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyZeroInteractions;
 import java.util.Collection;
@@ -134,7 +135,7 @@ public class ModuleFactoryBundleTrackerTest {
     public void testBundleAddAndRemove() throws Exception {
         final ModuleFactoryBundleTracker tracker = new ModuleFactoryBundleTracker(blankTxTracker);
         doReturn(getClass().getResource("/module-factories/module-factory-ok")).when(bundle).getEntry(anyString());
-        tracker.addingBundle(bundle, mock(BundleEvent.class));
+        tracker.addingBundle(bundle, null);
 
         Collection<Entry<ModuleFactory, BundleContext>> entries = tracker.getModuleFactoryEntries();
         assertNotNull(entries);
@@ -145,13 +146,23 @@ public class ModuleFactoryBundleTrackerTest {
 
         doNothing().when(blankTxTracker).blankTransaction();;
 
-        tracker.removedBundle(bundle, mock(BundleEvent.class), bundle);
+        BundleEvent mockEvent = mock(BundleEvent.class);
+        doReturn(BundleEvent.STOPPING).when(mockEvent).getType();
+
+        tracker.removedBundle(bundle, mockEvent, bundle);
 
         entries = tracker.getModuleFactoryEntries();
         assertNotNull(entries);
         assertEquals(0, entries.size());
 
-        verify(blankTxTracker).blankTransaction();;
+        verify(blankTxTracker).blankTransaction();
+
+        reset(mockEvent);
+        doReturn(BundleEvent.STOPPED).when(mockEvent).getType();
+
+        tracker.addingBundle(bundle, mockEvent);
+
+        assertEquals(0, tracker.getModuleFactoryEntries().size());
     }
 
     @Test