CDS: Add stress test RPC to the cars model
[controller.git] / opendaylight / netconf / config-persister-impl / src / test / java / org / opendaylight / controller / netconf / persist / impl / osgi / ConfigPersisterTest.java
index 493ecd9250262959e78523c4ed1dc49c7d177474..b998b9eff0bee8d9e2224104a9bd0f09491f3701 100644 (file)
@@ -7,13 +7,20 @@
  */
 package org.opendaylight.controller.netconf.persist.impl.osgi;
 
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
 import com.google.common.collect.Sets;
+import java.io.IOException;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.controller.config.api.ConflictingVersionException;
+import org.opendaylight.controller.netconf.api.Capability;
 import org.opendaylight.controller.netconf.api.NetconfDocumentedException;
-import org.opendaylight.controller.netconf.mapping.api.Capability;
 import org.opendaylight.controller.netconf.mapping.api.HandlingPriority;
 import org.opendaylight.controller.netconf.mapping.api.NetconfOperation;
 import org.opendaylight.controller.netconf.mapping.api.NetconfOperationChainedExecution;
@@ -25,30 +32,22 @@ import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
 import org.xml.sax.SAXException;
 
-import javax.management.MBeanServer;
-import java.io.IOException;
-import java.lang.management.ManagementFactory;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-
 public class ConfigPersisterTest {
-    private static final Logger logger = LoggerFactory.getLogger(ConfigPersisterTest.class);
+    private static final Logger LOG = LoggerFactory.getLogger(ConfigPersisterTest.class);
 
     private MockedBundleContext ctx;
     private ConfigPersisterActivator configPersisterActivator;
-    private static final MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
     private TestingExceptionHandler handler;
 
-
-    private void setUpContextAndStartPersister(String requiredCapability) throws Exception {
+    private void setUpContext(String requiredCapability) throws Exception {
         DummyAdapterWithInitialSnapshot.expectedCapability = requiredCapability;
         ctx = new MockedBundleContext(1000, 1000);
         configPersisterActivator = new ConfigPersisterActivator();
+    }
+
+    private void setUpContextAndStartPersister(String requiredCapability, final NetconfOperationService conflictingService) throws Exception {
+        setUpContext(requiredCapability);
+        doReturn(conflictingService).when(ctx.serviceFactory).createService(anyString());
         configPersisterActivator.start(ctx.getBundleContext());
     }
 
@@ -66,31 +65,28 @@ public class ConfigPersisterTest {
 
     @Test
     public void testPersisterNotAllCapabilitiesProvided() throws Exception {
-        setUpContextAndStartPersister("required-cap");
+        setUpContextAndStartPersister("required-cap", getConflictingService());
         Thread.sleep(2000);
-        handler.assertException(IllegalStateException.class, "Max wait for capabilities reached.Not enough capabilities " +
-                "for <data><config-snapshot/></data>. Expected but not found: [required-cap]");
+        handler.assertException(IllegalStateException.class, "Required yang models that are missing: [required-cap]");
 
     }
 
     @Test
     public void testPersisterSuccessfulPush() throws Exception {
-        setUpContextAndStartPersister("cap1");
-        NetconfOperationService service = getWorkingService(getOKDocument());
-        doReturn(service).when(ctx.serviceFactory).createService(anyString());
+        setUpContextAndStartPersister("cap1", getWorkingService(getOKDocument()));
         Thread.sleep(2000);
         assertCannotRegisterAsJMXListener_pushWasSuccessful();
     }
 
     // this means pushing of config was successful
     public void assertCannotRegisterAsJMXListener_pushWasSuccessful() {
-        handler.assertException(RuntimeException.class, "Cannot register as JMX listener to netconf");
+        handler.assertException(IllegalStateException.class, "Cannot register as JMX listener to netconf");
     }
 
     public NetconfOperationService getWorkingService(Document document) throws SAXException, IOException, NetconfDocumentedException {
         NetconfOperationService service = mock(NetconfOperationService.class);
         Capability capability = mock(Capability.class);
-        doReturn(Sets.newHashSet(capability)).when(service).getCapabilities();
+//        doReturn(Sets.newHashSet(capability)).when(service).getCapabilities();
         doReturn("cap1").when(capability).getCapabilityUri();
 
 
@@ -113,9 +109,8 @@ public class ConfigPersisterTest {
 
     @Test
     public void testPersisterConflictingVersionException() throws Exception {
-        setUpContextAndStartPersister("cap1");
+        setUpContextAndStartPersister("cap1", getConflictingService());
 
-        doReturn(getConflictingService()).when(ctx.serviceFactory).createService(anyString());
         Thread.sleep(2000);
         handler.assertException(IllegalStateException.class, "Max wait for conflicting version stabilization timeout");
     }
@@ -135,12 +130,18 @@ public class ConfigPersisterTest {
 
     @Test
     public void testSuccessConflictingVersionException() throws Exception {
-        setUpContextAndStartPersister("cap1");
-        doReturn(getConflictingService()).when(ctx.serviceFactory).createService(anyString());
-        Thread.sleep(500);
-        // working service:
-        logger.info("Switching to working service **");
-        doReturn(getWorkingService(getOKDocument())).when(ctx.serviceFactory).createService(anyString());
+        LOG.info("testSuccessConflictingVersionException starting");
+
+        setUpContext("cap1");
+
+        NetconfOperationService conflictingService = getConflictingService();
+        NetconfOperationService workingService = getWorkingService(getOKDocument());
+
+        doReturn(conflictingService).doReturn(conflictingService).doReturn(conflictingService).
+            doReturn(workingService).when(ctx.serviceFactory).createService(anyString());
+
+        configPersisterActivator.start(ctx.getBundleContext());
+
         Thread.sleep(1000);
         assertCannotRegisterAsJMXListener_pushWasSuccessful();
     }