BUG-444: Refactored BGP-RIB configuration modules tests. 00/5600/1
authorMilos Fabian <milfabia@cisco.com>
Tue, 11 Mar 2014 13:57:14 +0000 (14:57 +0100)
committerMilos Fabian <milfabia@cisco.com>
Tue, 11 Mar 2014 14:04:05 +0000 (15:04 +0100)
-Added tests for BGPTableTypeImplModule
-Fixed validations in RIBImplModule

Change-Id: Iaaba1f6ceb52858d6b54c0b52774dab3b39596ad
Signed-off-by: Milos Fabian <milfabia@cisco.com>
bgp/rib-impl-config/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/RIBImplModule.java
bgp/rib-impl-config/src/test/java/org/opendaylight/controller/config/yang/bgp/reconnectstrategy/GlobalEventExecutorUtil.java
bgp/rib-impl-config/src/test/java/org/opendaylight/controller/config/yang/bgp/reconnectstrategy/NeverReconnectStrategyModuleTest.java
bgp/rib-impl-config/src/test/java/org/opendaylight/controller/config/yang/bgp/reconnectstrategy/ReconnectImmediatelyStrategyModuleTest.java
bgp/rib-impl-config/src/test/java/org/opendaylight/controller/config/yang/bgp/reconnectstrategy/TimedReconnectStrategyModuleTest.java
bgp/rib-impl-config/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPDispatcherImplModuleTest.java
bgp/rib-impl-config/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerModuleTest.java
bgp/rib-impl-config/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPTableTypeImplModuleTest.java [new file with mode: 0644]
bgp/rib-impl-config/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/RIBImplModuleTest.java

index 865505d959b66883a2730a8f0dc36fed28bfefd3..73a67b937a827eee458dfc7f88d36c90773c598f 100644 (file)
@@ -43,10 +43,10 @@ public final class RIBImplModule extends org.opendaylight.controller.config.yang
                JmxAttributeValidationException.checkNotNull(getExtensions(), "is not set.", this.extensionsJmxAttribute);
                JmxAttributeValidationException.checkNotNull(getRibId(), "is not set.", this.ribIdJmxAttribute);
                JmxAttributeValidationException.checkNotNull(getLocalAs(), "is not set.", this.localAsJmxAttribute);
-               JmxAttributeValidationException.checkNotNull(getBgpId(), "is not set.", this.localAsJmxAttribute);
+               JmxAttributeValidationException.checkNotNull(getBgpId(), "is not set.", this.bgpIdJmxAttribute);
                JmxAttributeValidationException.checkNotNull(getTcpReconnectStrategy(), "is not set.", this.tcpReconnectStrategyJmxAttribute);
                JmxAttributeValidationException.checkNotNull(getSessionReconnectStrategy(), "is not set.", this.sessionReconnectStrategyJmxAttribute);
-               JmxAttributeValidationException.checkNotNull(getLocalTable(), "is not set.", this.sessionReconnectStrategyJmxAttribute);
+               JmxAttributeValidationException.checkNotNull(getLocalTable(), "is not set.", this.localTableJmxAttribute);
        }
 
        @Override
index 58df8bf9d67d800cf57b8f8f59b20db6f41e7a10..d5cb95656f2d2d0fb589d8eff417a97438db4df0 100644 (file)
@@ -7,25 +7,27 @@
  */
 package org.opendaylight.controller.config.yang.bgp.reconnectstrategy;
 
-import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
-import org.opendaylight.controller.config.yang.netty.eventexecutor.GlobalEventExecutorModuleFactory;
-
 import javax.management.InstanceAlreadyExistsException;
 import javax.management.InstanceNotFoundException;
 import javax.management.ObjectName;
 
+import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
+import org.opendaylight.controller.config.yang.netty.eventexecutor.GlobalEventExecutorModuleFactory;
+
 public class GlobalEventExecutorUtil {
 
-       public static ObjectName createOrGetInstance(
-            final ConfigTransactionJMXClient transaction)
-                       throws InstanceAlreadyExistsException {
-        ObjectName on;
+    public static ObjectName create(final ConfigTransactionJMXClient transaction) throws InstanceAlreadyExistsException {
         try {
-            on =  transaction.lookupConfigBean(GlobalEventExecutorModuleFactory.NAME, GlobalEventExecutorModuleFactory.SINGLETON_NAME);
+            return transaction.lookupConfigBean(GlobalEventExecutorModuleFactory.NAME,
+                    GlobalEventExecutorModuleFactory.SINGLETON_NAME);
         } catch (InstanceNotFoundException e) {
-            on = transaction.createModule(GlobalEventExecutorModuleFactory.NAME, GlobalEventExecutorModuleFactory.SINGLETON_NAME);
+            try {
+                return transaction.createModule(GlobalEventExecutorModuleFactory.NAME,
+                        GlobalEventExecutorModuleFactory.SINGLETON_NAME);
+            } catch (InstanceAlreadyExistsException e1) {
+                throw new IllegalStateException(e1);
+            }
         }
-               return on;
-       }
+    }
 
 }
index ce7abea9c6de88414863a5bfc02d80408386f91d..586a931b0b5b872b021d8f0b34b925073ffe7111 100644 (file)
@@ -7,6 +7,12 @@
  */
 package org.opendaylight.controller.config.yang.bgp.reconnectstrategy;
 
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import javax.management.InstanceAlreadyExistsException;
+import javax.management.ObjectName;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.controller.config.api.ConflictingVersionException;
@@ -16,116 +22,89 @@ import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
 import org.opendaylight.controller.config.yang.netty.eventexecutor.GlobalEventExecutorModuleFactory;
-import org.opendaylight.controller.config.yang.reconnectstrategy.AbstractNeverReconnectStrategyModuleFactory;
 import org.opendaylight.controller.config.yang.reconnectstrategy.NeverReconnectStrategyModuleFactory;
 import org.opendaylight.controller.config.yang.reconnectstrategy.NeverReconnectStrategyModuleMXBean;
 
-import javax.management.InstanceAlreadyExistsException;
-import javax.management.InstanceNotFoundException;
-import javax.management.ObjectName;
-
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
 public class NeverReconnectStrategyModuleTest extends AbstractConfigTest {
 
-       private final String instanceName = GlobalEventExecutorModuleFactory.SINGLETON_NAME;
+    private static final String INSTANCE_NAME = "never-recconect-strategy-impl";
+    private static final String FACTORY_NAME = NeverReconnectStrategyModuleFactory.NAME;
+
+    @Before
+    public void setUp() throws Exception {
+        super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(
+                new NeverReconnectStrategyModuleFactory(), new GlobalEventExecutorModuleFactory()));
+    }
 
-       private NeverReconnectStrategyModuleFactory factory;
-       
-       private GlobalEventExecutorModuleFactory executorFactory;
+    @Test
+    public void testValidationExceptionTimeoutNotSet() throws Exception {
+        try {
+            createInstance(null);
+            fail();
+        } catch (ValidationException e) {
+            assertTrue(e.getMessage().contains("Timeout value is not set."));
+        }
+    }
 
-       @Before
-       public void setUp() throws Exception {
-               this.factory = new NeverReconnectStrategyModuleFactory();
-               this.executorFactory = new GlobalEventExecutorModuleFactory();
-               super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(
-                               factory, executorFactory));
-       }
+    @Test
+    public void testValidationExceptionTimeoutMinValue() throws Exception {
+        try {
+            createInstance(-1);
+            fail();
+        } catch (ValidationException e) {
+            assertTrue(e.getMessage().contains("is less than 0"));
+        }
+    }
 
-       @Test
-       public void testValidationExceptionTimeoutNotSet()
-                       throws InstanceAlreadyExistsException {
-               try {
-                       ConfigTransactionJMXClient transaction = configRegistryClient
-                                       .createTransaction();
-                       createInstance(transaction, this.factory.getImplementationName(), instanceName, null);
-                       transaction.validateConfig();
-                       fail();
-               } catch (ValidationException e) {
-                       assertTrue(e.getMessage().contains("Timeout value is not set."));
-               }
-       }
+    @Test
+    public void testCreateBean() throws Exception {
+        final CommitStatus status = createInstance();
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 2, 0, 0);
+    }
 
-       @Test
-       public void testValidationExceptionTimeoutMinValue()
-                       throws InstanceAlreadyExistsException {
-               try {
-                       ConfigTransactionJMXClient transaction = configRegistryClient
-                                       .createTransaction();
-                       createInstance(transaction, this.factory.getImplementationName(), instanceName, -1);
-                       transaction.validateConfig();
-                       fail();
-               } catch (ValidationException e) {
-                       assertTrue(e.getMessage().contains("is less than 0"));
-               }
-       }
+    @Test
+    public void testReusingOldInstance() throws Exception {
+        createInstance();
+        final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        assertBeanCount(1, FACTORY_NAME);
+        final CommitStatus status = transaction.commit();
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 0, 0, 2);
+    }
 
-       @Test
-       public void testCreateBean() throws Exception {
-               ConfigTransactionJMXClient transaction = configRegistryClient
-                               .createTransaction();
-               createInstance(transaction, this.factory.getImplementationName(), instanceName, 500);
-               transaction.validateConfig();
-               CommitStatus status = transaction.commit();
-               assertBeanCount(1, factory.getImplementationName());
-               assertStatus(status, 2, 0, 0);
-       }
+    @Test
+    public void testReconfigure() throws Exception {
+        createInstance();
+        final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        assertBeanCount(1, FACTORY_NAME);
+        final NeverReconnectStrategyModuleMXBean mxBean = transaction.newMBeanProxy(
+                transaction.lookupConfigBean(FACTORY_NAME, INSTANCE_NAME), NeverReconnectStrategyModuleMXBean.class);
+        mxBean.setTimeout(200);
+        final CommitStatus status = transaction.commit();
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 0, 1, 1);
+    }
 
-       @Test
-       public void testReusingOldInstance() throws InstanceAlreadyExistsException,
-                       ConflictingVersionException, ValidationException {
-               ConfigTransactionJMXClient transaction = configRegistryClient
-                               .createTransaction();
-               createInstance(transaction, this.factory.getImplementationName(), instanceName, 500);
-               transaction.commit();
-               transaction = configRegistryClient.createTransaction();
-               assertBeanCount(1, factory.getImplementationName());
-               CommitStatus status = transaction.commit();
-               assertBeanCount(1, factory.getImplementationName());
-               assertStatus(status, 0, 0, 2);
-       }
+    private CommitStatus createInstance() throws Exception {
+        return createInstance(500);
+    }
 
-       @Test
-       public void testReconfigure() throws InstanceAlreadyExistsException,
-                       ConflictingVersionException, ValidationException,
-                       InstanceNotFoundException {
-               ConfigTransactionJMXClient transaction = configRegistryClient
-                               .createTransaction();
-               createInstance(transaction, this.factory.getImplementationName(), instanceName, 500);
-               transaction.commit();
-               transaction = configRegistryClient.createTransaction();
-               assertBeanCount(1, factory.getImplementationName());
-               NeverReconnectStrategyModuleMXBean mxBean = transaction
-                               .newMBeanProxy(transaction.lookupConfigBean(
-                                               AbstractNeverReconnectStrategyModuleFactory.NAME,
-                                               instanceName), NeverReconnectStrategyModuleMXBean.class);
-               mxBean.setTimeout(200);
-               CommitStatus status = transaction.commit();
-               assertBeanCount(1, factory.getImplementationName());
-               assertStatus(status, 0, 1, 1);
-       }
+    private CommitStatus createInstance(final Integer timeout) throws InstanceAlreadyExistsException,
+            ConflictingVersionException, ValidationException {
+        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
+        createInstance(transaction, timeout);
+        return transaction.commit();
+    }
 
-       public static ObjectName createInstance(
-                       final ConfigTransactionJMXClient transaction, final String moduleName,
-                       final String instanceName, final Integer timeout) throws InstanceAlreadyExistsException {
-               ObjectName nameCreated = transaction.createModule(
-                               moduleName, instanceName);
-               NeverReconnectStrategyModuleMXBean mxBean = transaction.newMBeanProxy(
-                               nameCreated, NeverReconnectStrategyModuleMXBean.class);
-               mxBean.setTimeout(timeout);
-               mxBean.setExecutor(GlobalEventExecutorUtil.createOrGetInstance(transaction));
-               return nameCreated;
-       }
+    private static ObjectName createInstance(final ConfigTransactionJMXClient transaction, final Integer timeout)
+            throws InstanceAlreadyExistsException {
+        final ObjectName nameCreated = transaction.createModule(FACTORY_NAME, INSTANCE_NAME);
+        final NeverReconnectStrategyModuleMXBean mxBean = transaction.newMBeanProxy(nameCreated,
+                NeverReconnectStrategyModuleMXBean.class);
+        mxBean.setTimeout(timeout);
+        mxBean.setExecutor(GlobalEventExecutorUtil.create(transaction));
+        return nameCreated;
+    }
 
 }
index e392e4b2c4129e6daae96e5ef26c77009f8cfad1..2084fe6096edf5b9cd50176a8a17fc20bec85289 100644 (file)
  */
 package org.opendaylight.controller.config.yang.bgp.reconnectstrategy;
 
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import javax.management.InstanceAlreadyExistsException;
+import javax.management.ObjectName;
+
 import org.junit.Before;
 import org.junit.Test;
-import org.opendaylight.controller.config.api.ConflictingVersionException;
 import org.opendaylight.controller.config.api.ValidationException;
 import org.opendaylight.controller.config.api.jmx.CommitStatus;
 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
 import org.opendaylight.controller.config.yang.netty.eventexecutor.GlobalEventExecutorModuleFactory;
-import org.opendaylight.controller.config.yang.reconnectstrategy.AbstractReconnectImmediatelyStrategyModuleFactory;
 import org.opendaylight.controller.config.yang.reconnectstrategy.ReconnectImmediatelyStrategyModuleFactory;
 import org.opendaylight.controller.config.yang.reconnectstrategy.ReconnectImmediatelyStrategyModuleMXBean;
 
-import javax.management.InstanceAlreadyExistsException;
-import javax.management.InstanceNotFoundException;
-import javax.management.ObjectName;
-
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
 public class ReconnectImmediatelyStrategyModuleTest extends AbstractConfigTest {
 
-       private final String instanceName = GlobalEventExecutorModuleFactory.SINGLETON_NAME;
+    private static final String INSTANCE_NAME = "reconnect-immediately-strategy-impl";
+    private static final String FACTORY_NAME = ReconnectImmediatelyStrategyModuleFactory.NAME;
 
-       private ReconnectImmediatelyStrategyModuleFactory factory;
+    @Before
+    public void setUp() throws Exception {
+        super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(
+                new ReconnectImmediatelyStrategyModuleFactory(), new GlobalEventExecutorModuleFactory()));
+    }
 
-       private GlobalEventExecutorModuleFactory executorFactory;
+    @Test
+    public void testValidationExceptionTimeoutNotSet() throws Exception {
+        try {
+            createInstance(null);
+            fail();
+        } catch (ValidationException e) {
+            assertTrue(e.getMessage().contains("Timeout value is not set."));
+        }
+    }
 
-       @Before
-       public void setUp() throws Exception {
-               this.factory = new ReconnectImmediatelyStrategyModuleFactory();
-               this.executorFactory = new GlobalEventExecutorModuleFactory();
-               super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(
-                               factory, executorFactory));
-       }
+    @Test
+    public void testValidationExceptionTimeoutMinValue() throws Exception {
+        try {
+            createInstance(-1);
+            fail();
+        } catch (ValidationException e) {
+            assertTrue(e.getMessage().contains("is less than 0"));
+        }
+    }
 
-       @Test
-       public void testValidationExceptionTimeoutNotSet()
-                       throws InstanceAlreadyExistsException {
-               try {
-                       ConfigTransactionJMXClient transaction = configRegistryClient
-                                       .createTransaction();
-                       createInstance(transaction, this.factory.getImplementationName(), instanceName, null);
-                       transaction.validateConfig();
-                       fail();
-               } catch (ValidationException e) {
-                       assertTrue(e.getMessage().contains("Timeout value is not set."));
-               }
-       }
+    @Test
+    public void testCreateBean() throws Exception {
+        final CommitStatus status = createInstance();
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 2, 0, 0);
+    }
 
-       @Test
-       public void testValidationExceptionTimeoutMinValue()
-                       throws InstanceAlreadyExistsException {
-               try {
-                       ConfigTransactionJMXClient transaction = configRegistryClient
-                                       .createTransaction();
-                       createInstance(transaction, this.factory.getImplementationName(), instanceName, -1);
-                       transaction.validateConfig();
-                       fail();
-               } catch (ValidationException e) {
-                       assertTrue(e.getMessage().contains("is less than 0"));
-               }
-       }
+    @Test
+    public void testReusingOldInstance() throws Exception {
+        createInstance();
+        final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        assertBeanCount(1, FACTORY_NAME);
+        final CommitStatus status = transaction.commit();
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 0, 0, 2);
+    }
 
-       @Test
-       public void testCreateBean() throws Exception {
-               ConfigTransactionJMXClient transaction = configRegistryClient
-                               .createTransaction();
-               createInstance(transaction, this.factory.getImplementationName(), instanceName, 500);
-               transaction.validateConfig();
-               CommitStatus status = transaction.commit();
-               assertBeanCount(1, factory.getImplementationName());
-               assertStatus(status, 2, 0, 0);
-       }
+    @Test
+    public void testReconfigure() throws Exception {
+        createInstance();
+        final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        assertBeanCount(1, FACTORY_NAME);
+        final ReconnectImmediatelyStrategyModuleMXBean mxBean = transaction.newMBeanProxy(
+                transaction.lookupConfigBean(FACTORY_NAME, INSTANCE_NAME),
+                ReconnectImmediatelyStrategyModuleMXBean.class);
+        mxBean.setTimeout(200);
+        final CommitStatus status = transaction.commit();
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 0, 1, 1);
+    }
 
-       @Test
-       public void testReusingOldInstance() throws InstanceAlreadyExistsException,
-                       ConflictingVersionException, ValidationException {
-               ConfigTransactionJMXClient transaction = configRegistryClient
-                               .createTransaction();
-               createInstance(transaction, this.factory.getImplementationName(), instanceName, 100);
-               transaction.commit();
-               transaction = configRegistryClient.createTransaction();
-               assertBeanCount(1, factory.getImplementationName());
-               CommitStatus status = transaction.commit();
-               assertBeanCount(1, factory.getImplementationName());
-               assertStatus(status, 0, 0, 2);
-       }
+    private CommitStatus createInstance() throws Exception {
+        return createInstance(500);
+    }
 
-       @Test
-       public void testReconfigure() throws InstanceAlreadyExistsException,
-                       ConflictingVersionException, ValidationException,
-                       InstanceNotFoundException {
-               ConfigTransactionJMXClient transaction = configRegistryClient
-                               .createTransaction();
-               createInstance(transaction, this.factory.getImplementationName(), instanceName, 500);
-               transaction.commit();
-               transaction = configRegistryClient.createTransaction();
-               assertBeanCount(1, factory.getImplementationName());
-               ReconnectImmediatelyStrategyModuleMXBean mxBean = transaction
-                               .newMBeanProxy(transaction.lookupConfigBean(
-                                               AbstractReconnectImmediatelyStrategyModuleFactory.NAME,
-                                               instanceName),
-                                               ReconnectImmediatelyStrategyModuleMXBean.class);
-               mxBean.setTimeout(200);
-               CommitStatus status = transaction.commit();
-               assertBeanCount(1, factory.getImplementationName());
-               assertStatus(status, 0, 1, 1);
-       }
+    private CommitStatus createInstance(final Integer timeout) throws Exception {
+        final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        createInstance(transaction, timeout);
+        return transaction.commit();
+    }
 
-       public static ObjectName createInstance(
-                       final ConfigTransactionJMXClient transaction,
-                       final String moduleName,
-                       final String instanceName, final Integer timeout) throws InstanceAlreadyExistsException {
-               ObjectName nameCreated = transaction.createModule(
-                               moduleName, instanceName);
-               ReconnectImmediatelyStrategyModuleMXBean mxBean = transaction
-                               .newMBeanProxy(nameCreated,
-                                               ReconnectImmediatelyStrategyModuleMXBean.class);
-               mxBean.setTimeout(timeout);
-               mxBean.setExecutor(GlobalEventExecutorUtil.createOrGetInstance(transaction));
-               return nameCreated;
-       }
+    private static ObjectName createInstance(final ConfigTransactionJMXClient transaction, final Integer timeout)
+            throws InstanceAlreadyExistsException {
+        final ObjectName nameCreated = transaction.createModule(FACTORY_NAME, INSTANCE_NAME);
+        final ReconnectImmediatelyStrategyModuleMXBean mxBean = transaction.newMBeanProxy(nameCreated,
+                ReconnectImmediatelyStrategyModuleMXBean.class);
+        mxBean.setTimeout(timeout);
+        mxBean.setExecutor(GlobalEventExecutorUtil.create(transaction));
+        return nameCreated;
+    }
 
 }
index 0377155fe428425a2a6ef6168592f7674cfae53b..8ca8338e64bf28551e710542f3dfb066ca473fc7 100644 (file)
@@ -7,6 +7,15 @@
  */
 package org.opendaylight.controller.config.yang.bgp.reconnectstrategy;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.math.BigDecimal;
+
+import javax.management.InstanceAlreadyExistsException;
+import javax.management.ObjectName;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.controller.config.api.ConflictingVersionException;
@@ -16,196 +25,143 @@ import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
 import org.opendaylight.controller.config.yang.netty.eventexecutor.GlobalEventExecutorModuleFactory;
-import org.opendaylight.controller.config.yang.reconnectstrategy.AbstractTimedReconnectStrategyModuleFactory;
 import org.opendaylight.controller.config.yang.reconnectstrategy.TimedReconnectStrategyModuleFactory;
 import org.opendaylight.controller.config.yang.reconnectstrategy.TimedReconnectStrategyModuleMXBean;
 
-import javax.management.InstanceAlreadyExistsException;
-import javax.management.InstanceNotFoundException;
-import javax.management.ObjectName;
-import java.math.BigDecimal;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
 public class TimedReconnectStrategyModuleTest extends AbstractConfigTest {
 
-       private final String instanceName = "timed";
-
-       private TimedReconnectStrategyModuleFactory factory;
-
-       private GlobalEventExecutorModuleFactory executorFactory;
-
-       @Before
-       public void setUp() throws Exception {
-               this.factory = new TimedReconnectStrategyModuleFactory();
-               this.executorFactory = new GlobalEventExecutorModuleFactory();
-               super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(
-                               factory, executorFactory));
-       }
-
-       @Test
-       public void testValidationExceptionSleepFactorNotSet()
-                       throws InstanceAlreadyExistsException {
-               try {
-                       ConfigTransactionJMXClient transaction = configRegistryClient
-                                       .createTransaction();
-                       createInstance(transaction, this.factory.getImplementationName(), instanceName, 500, 100L, null, 500L,
-                                       10L, 10000L);
-                       transaction.validateConfig();
-                       fail();
-               } catch (ValidationException e) {
-                       assertTrue(e.getMessage().contains("SleepFactor value is not set."));
-               }
-       }
-
-       @Test
-       public void testValidationExceptionSleepFactorMinValue()
-                       throws InstanceAlreadyExistsException {
-               try {
-                       ConfigTransactionJMXClient transaction = configRegistryClient
-                                       .createTransaction();
-                       createInstance(transaction, this.factory.getImplementationName(), instanceName, 500, 100L,
-                                       new BigDecimal(0.5), 500L, 10L, 10000L);
-                       transaction.validateConfig();
-                       fail();
-               } catch (ValidationException e) {
-                       assertTrue(e.getMessage().contains("is less than 1"));
-               }
-       }
-
-       @Test
-       public void testValidationExceptionConnectTimeNotSet()
-                       throws InstanceAlreadyExistsException {
-               try {
-                       ConfigTransactionJMXClient transaction = configRegistryClient
-                                       .createTransaction();
-                       createInstance(transaction, this.factory.getImplementationName(), instanceName, null, 100L,
-                                       new BigDecimal(1.0), 500L, 10L, 10000L);
-                       transaction.validateConfig();
-                       fail();
-               } catch (ValidationException e) {
-                       assertTrue(e.getMessage().contains("ConnectTime value is not set."));
-               }
-       }
-
-       @Test
-       public void testValidationExceptionConnectTimeMinValue()
-                       throws InstanceAlreadyExistsException {
-               try {
-                       ConfigTransactionJMXClient transaction = configRegistryClient
-                                       .createTransaction();
-                       createInstance(transaction, this.factory.getImplementationName(), instanceName, -1, 100L, new BigDecimal(
-                                       1.0), 500L, 10L, 10000L);
-                       transaction.validateConfig();
-                       fail();
-               } catch (ValidationException e) {
-                       assertTrue(e.getMessage().contains("is less than 0"));
-               }
-       }
-
-       @Test
-       public void testValidationExceptionMinSleepNotSet()
-                       throws InstanceAlreadyExistsException {
-               try {
-                       ConfigTransactionJMXClient transaction = configRegistryClient
-                                       .createTransaction();
-                       createInstance(transaction, this.factory.getImplementationName(), instanceName, 100, null,
-                                       new BigDecimal(1.0), 100L, 10L, 10000L);
-                       transaction.validateConfig();
-                       fail();
-               } catch (ValidationException e) {
-                       assertTrue(e.getMessage().contains("MinSleep value is not set."));
-               }
-       }
-
-       @Test
-       public void testValidationExceptionMaxSleep()
-                       throws InstanceAlreadyExistsException {
-               try {
-                       ConfigTransactionJMXClient transaction = configRegistryClient
-                                       .createTransaction();
-                       createInstance(transaction, this.factory.getImplementationName(), instanceName, 100, 300L,
-                                       new BigDecimal(1.0), 100L, 10L, 10000L);
-                       transaction.validateConfig();
-                       fail();
-               } catch (ValidationException e) {
-                       assertTrue(e.getMessage().contains(
-                                       "is greter than MaxSleep"));
-               }
-       }
-
-       @Test
-       public void testCreateBean() throws Exception {
-               ConfigTransactionJMXClient transaction = configRegistryClient
-                               .createTransaction();
-               createInstance(transaction, this.factory.getImplementationName(), instanceName, 500, 100L,
-                               new BigDecimal(1.0), 500L, 10L, 10000L);
-               transaction.validateConfig();
-               CommitStatus status = transaction.commit();
-               assertBeanCount(1, factory.getImplementationName());
-               assertStatus(status, 2, 0, 0);
-       }
-
-       @Test
-       public void testReusingOldInstance() throws InstanceAlreadyExistsException,
-                       ConflictingVersionException, ValidationException {
-               ConfigTransactionJMXClient transaction = configRegistryClient
-                               .createTransaction();
-               createInstance(transaction, this.factory.getImplementationName(), instanceName, 500, 100L,
-                               new BigDecimal(1.0), 500L, 10L, 10000L);
-               transaction.commit();
-               transaction = configRegistryClient.createTransaction();
-               assertBeanCount(1, factory.getImplementationName());
-               CommitStatus status = transaction.commit();
-               assertBeanCount(1, factory.getImplementationName());
-               assertStatus(status, 0, 0, 2);
-       }
-
-       @Test
-       public void testReconfigure() throws InstanceAlreadyExistsException,
-                       ConflictingVersionException, ValidationException,
-                       InstanceNotFoundException {
-               ConfigTransactionJMXClient transaction = configRegistryClient
-                               .createTransaction();
-               createInstance(transaction, this.factory.getImplementationName(), instanceName, 500, 100L,
-                               new BigDecimal(1.0), new Long(500), new Long(10), new Long(
-                                               10000));
-               transaction.commit();
-               transaction = configRegistryClient.createTransaction();
-               assertBeanCount(1, factory.getImplementationName());
-               TimedReconnectStrategyModuleMXBean mxBean = transaction
-                               .newMBeanProxy(transaction.lookupConfigBean(
-                                               AbstractTimedReconnectStrategyModuleFactory.NAME,
-                                               instanceName), TimedReconnectStrategyModuleMXBean.class);
-               assertEquals(mxBean.getMinSleep(), new Long(100));
-               mxBean.setMinSleep(200L);
-               assertEquals(mxBean.getMinSleep(), new Long(200));
-               CommitStatus status = transaction.commit();
-               assertBeanCount(1, factory.getImplementationName());
-               assertStatus(status, 0, 1, 1);
-
-       }
-
-       public static ObjectName createInstance(
-                       final ConfigTransactionJMXClient transaction,
-                       final String moduleName,
-                       final String instanceName, final Integer connectTime,
-                       final Long minSleep, final BigDecimal sleepFactor,
-                       final Long maxSleep, final Long maxAttempts, final Long deadline) throws InstanceAlreadyExistsException {
-               ObjectName nameCreated = transaction.createModule(
-                               moduleName, instanceName);
-               TimedReconnectStrategyModuleMXBean mxBean = transaction.newMBeanProxy(
-                               nameCreated, TimedReconnectStrategyModuleMXBean.class);
-               mxBean.setConnectTime(connectTime);
-               mxBean.setDeadline(deadline);
-               mxBean.setMaxAttempts(maxAttempts);
-               mxBean.setMaxSleep(maxSleep);
-               mxBean.setMinSleep(minSleep);
-               mxBean.setSleepFactor(sleepFactor);
-               mxBean.setExecutor(GlobalEventExecutorUtil.createOrGetInstance(transaction));
-               return nameCreated;
-       }
+    private static final String INSTANCE_NAME = "timed-recconect-stategy-impl";
+    private static final String FACTORY_NAME = TimedReconnectStrategyModuleFactory.NAME;
+
+    @Before
+    public void setUp() throws Exception {
+        super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(
+                new TimedReconnectStrategyModuleFactory(), new GlobalEventExecutorModuleFactory()));
+    }
+
+    @Test
+    public void testValidationExceptionSleepFactorNotSet() throws Exception {
+        try {
+            createInstance(500, 100L, null, 500L, 10L, 10000L);
+            fail();
+        } catch (ValidationException e) {
+            assertTrue(e.getMessage().contains("SleepFactor value is not set."));
+        }
+    }
+
+    @Test
+    public void testValidationExceptionSleepFactorMinValue() throws Exception {
+        try {
+            createInstance(500, 100L, new BigDecimal(0.5), 500L, 10L, 10000L);
+            fail();
+        } catch (ValidationException e) {
+            assertTrue(e.getMessage().contains("is less than 1"));
+        }
+    }
+
+    @Test
+    public void testValidationExceptionConnectTimeNotSet() throws Exception {
+        try {
+            createInstance(null, 100L, new BigDecimal(1.0), 500L, 10L, 10000L);
+            fail();
+        } catch (ValidationException e) {
+            assertTrue(e.getMessage().contains("ConnectTime value is not set."));
+        }
+    }
+
+    @Test
+    public void testValidationExceptionConnectTimeMinValue() throws Exception {
+        try {
+            createInstance(-1, 100L, new BigDecimal(1.0), 500L, 10L, 10000L);
+            fail();
+        } catch (ValidationException e) {
+            assertTrue(e.getMessage().contains("is less than 0"));
+        }
+    }
+
+    @Test
+    public void testValidationExceptionMinSleepNotSet() throws Exception {
+        try {
+            createInstance(100, null, new BigDecimal(1.0), 100L, 10L, 10000L);
+            fail();
+        } catch (ValidationException e) {
+            assertTrue(e.getMessage().contains("MinSleep value is not set."));
+        }
+    }
+
+    @Test
+    public void testValidationExceptionMaxSleep() throws Exception {
+        try {
+            createInstance(100, 300L, new BigDecimal(1.0), 100L, 10L, 10000L);
+            fail();
+        } catch (ValidationException e) {
+            assertTrue(e.getMessage().contains("is greter than MaxSleep"));
+        }
+    }
+
+    @Test
+    public void testCreateBean() throws Exception {
+        final CommitStatus status = createInstance();
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 2, 0, 0);
+    }
+
+    @Test
+    public void testReusingOldInstance() throws Exception {
+        createInstance();
+        final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        assertBeanCount(1, FACTORY_NAME);
+        final CommitStatus status = transaction.commit();
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 0, 0, 2);
+    }
+
+    @Test
+    public void testReconfigure() throws Exception {
+        createInstance();
+        final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        assertBeanCount(1, FACTORY_NAME);
+        final TimedReconnectStrategyModuleMXBean mxBean = transaction.newMBeanProxy(
+                transaction.lookupConfigBean(FACTORY_NAME, INSTANCE_NAME), TimedReconnectStrategyModuleMXBean.class);
+        assertEquals(mxBean.getMinSleep(), new Long(100));
+        mxBean.setMinSleep(200L);
+        assertEquals(mxBean.getMinSleep(), new Long(200));
+        final CommitStatus status = transaction.commit();
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 0, 1, 1);
+
+    }
+
+    private CommitStatus createInstance() throws Exception {
+        return createInstance(500, 100L, new BigDecimal(1.0), 500L, 10L, 10000L);
+    }
+
+    private CommitStatus createInstance(final Integer connectTime, final Long minSleep, final BigDecimal sleepFactor,
+            final Long maxSleep, final Long maxAttempts, final Long deadline) throws ConflictingVersionException,
+            ValidationException, InstanceAlreadyExistsException {
+        ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        createInstance(transaction, INSTANCE_NAME, connectTime, minSleep, sleepFactor, maxSleep, maxAttempts, deadline);
+        return transaction.commit();
+    }
+    
+    public static ObjectName createInstance(final ConfigTransactionJMXClient transaction, final String InstanceName) throws Exception {
+        return createInstance(transaction, InstanceName, 500, 100L, new BigDecimal(1.0), 500L, 10L, 10000L);
+    }
+
+    private static ObjectName createInstance(final ConfigTransactionJMXClient transaction, final String instanceName,
+            final Integer connectTime, final Long minSleep, final BigDecimal sleepFactor, final Long maxSleep,
+            final Long maxAttempts, final Long deadline) throws InstanceAlreadyExistsException {
+        final ObjectName nameCreated = transaction.createModule(FACTORY_NAME, instanceName);
+        final TimedReconnectStrategyModuleMXBean mxBean = transaction.newMBeanProxy(nameCreated,
+                TimedReconnectStrategyModuleMXBean.class);
+        mxBean.setConnectTime(connectTime);
+        mxBean.setDeadline(deadline);
+        mxBean.setMaxAttempts(maxAttempts);
+        mxBean.setMaxSleep(maxSleep);
+        mxBean.setMinSleep(minSleep);
+        mxBean.setSleepFactor(sleepFactor);
+        mxBean.setExecutor(GlobalEventExecutorUtil.create(transaction));
+        return nameCreated;
+    }
 
 }
index dd820ea967f526d6ee9fabd1b660d0c1386d19b2..e0ca9128e749c4eb3e6377ef8faa84e7065eb9ad 100644 (file)
@@ -12,8 +12,6 @@ import javax.management.ObjectName;
 
 import org.junit.Before;
 import org.junit.Test;
-import org.opendaylight.controller.config.api.ConflictingVersionException;
-import org.opendaylight.controller.config.api.ValidationException;
 import org.opendaylight.controller.config.api.jmx.CommitStatus;
 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
@@ -28,97 +26,79 @@ import org.opendaylight.controller.config.yang.netty.timer.HashedWheelTimerModul
 
 public class BGPDispatcherImplModuleTest extends AbstractConfigTest {
 
-       private final String instanceName = "bgp-message-fct";
-
-       private BGPDispatcherImplModuleFactory factory;
-
-       private NettyThreadgroupModuleFactory threadgroupFactory;
-
-       private RIBExtensionsImplModuleFactory messageFactory;
-
-       private SimpleBGPExtensionProviderContextModuleFactory extensionFactory;
-
-       private HashedWheelTimerModuleFactory hwtFactory;
-
-       @Before
-       public void setUp() throws Exception {
-               this.factory = new BGPDispatcherImplModuleFactory();
-               this.threadgroupFactory = new NettyThreadgroupModuleFactory();
-               this.messageFactory = new RIBExtensionsImplModuleFactory();
-               this.extensionFactory = new SimpleBGPExtensionProviderContextModuleFactory();
-               this.hwtFactory = new HashedWheelTimerModuleFactory();
-               super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(
-                               this.factory, threadgroupFactory, messageFactory, extensionFactory, hwtFactory));
-       }
-
-       @Test
-       public void testCreateBean() throws Exception {
-               ConfigTransactionJMXClient transaction = configRegistryClient
-                               .createTransaction();
-               createInstance(transaction, this.factory.getImplementationName(), instanceName);
-               transaction.validateConfig();
-               CommitStatus status = transaction.commit();
-               assertBeanCount(1, factory.getImplementationName());
-               assertStatus(status, 5, 0, 0);
-       }
-
-       @Test
-       public void testReusingOldInstance() throws InstanceAlreadyExistsException,
-       ConflictingVersionException, ValidationException {
-               ConfigTransactionJMXClient transaction = configRegistryClient
-                               .createTransaction();
-               createInstance(transaction, this.factory.getImplementationName(), instanceName);
-               transaction.commit();
-               transaction = configRegistryClient.createTransaction();
-               assertBeanCount(1, factory.getImplementationName());
-               CommitStatus status = transaction.commit();
-               assertBeanCount(1, factory.getImplementationName());
-               assertStatus(status, 0, 0, 5);
-       }
-
-       public static ObjectName createInstance(final ConfigTransactionJMXClient transaction, final String moduleName,
-                       final String instanceName) throws InstanceAlreadyExistsException {
-               ObjectName nameCreated = transaction.createModule(
-                               moduleName, instanceName);
-               BGPDispatcherImplModuleMXBean mxBean = transaction.newMBeanProxy(
-                               nameCreated, BGPDispatcherImplModuleMXBean.class);
-               mxBean.setBossGroup(createThreadgroupInstance(transaction, "boss-threadgroup", 10));
-               mxBean.setWorkerGroup(createThreadgroupInstance(transaction, "worker-threadgroup", 10));
-               mxBean.setBgpExtensions(createBgpExtensionsInstance(transaction, "bgp-extensions"));
-               mxBean.setTimer(createTimerInstance(transaction, ""));
-               return nameCreated;
-       }
-
-       public static ObjectName createThreadgroupInstance(
-                       final ConfigTransactionJMXClient transaction,
-                       final String instanceName,
-                       final Integer threadCount) throws InstanceAlreadyExistsException {
-               ObjectName nameCreated = transaction.createModule(NettyThreadgroupModuleFactory.NAME,
-                               instanceName);
-               NettyThreadgroupModuleMXBean mxBean = transaction.newMBeanProxy(
-                               nameCreated, NettyThreadgroupModuleMXBean.class);
-               mxBean.setThreadCount(threadCount);
-               return nameCreated;
-       }
-
-       public static ObjectName createTimerInstance(final ConfigTransactionJMXClient transaction, final String instanceName)
-                       throws InstanceAlreadyExistsException {
-               ObjectName nameCreated = transaction.createModule(HashedWheelTimerModuleFactory.NAME,
-                               instanceName);
-               HashedWheelTimerModuleMXBean mxBean = transaction.newMBeanProxy(
-                               nameCreated, HashedWheelTimerModuleMXBean.class);
-               return nameCreated;
-
-       }
-
-       public static ObjectName createBgpExtensionsInstance(
-                       final ConfigTransactionJMXClient transaction,
-                       final String instanceName)
-                                       throws InstanceAlreadyExistsException {
-               ObjectName nameCreated = transaction.createModule(SimpleBGPExtensionProviderContextModuleFactory.NAME,
-                               instanceName);
-               transaction.newMBeanProxy(nameCreated,
-                               SimpleBGPExtensionProviderContextModuleMXBean.class);
-               return nameCreated;
-       }
+    private static final String INSTANCE_NAME = "bgp-message-fct";
+    private static final String FACTORY_NAME = BGPDispatcherImplModuleFactory.NAME;
+
+    private static final String TIMER_INSTANCE_NAME = "timer-impl";
+    private static final String BGP_EXTENSION_INSTANCE_NAME = "bgp-extension-impl";
+    private static final String BOSS_TG_INSTANCE_NAME = "boss-threadgroup-impl";
+    private static final String WORKER_TG_INSTANCE_NAME = "worker-threadgroup-impl";
+
+    @Before
+    public void setUp() throws Exception {
+        super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(
+                new BGPDispatcherImplModuleFactory(), new NettyThreadgroupModuleFactory(),
+                new RIBExtensionsImplModuleFactory(), new SimpleBGPExtensionProviderContextModuleFactory(),
+                new HashedWheelTimerModuleFactory()));
+    }
+
+    @Test
+    public void testCreateBean() throws Exception {
+        CommitStatus status = createInstance();
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 5, 0, 0);
+    }
+
+    @Test
+    public void testReusingOldInstance() throws Exception {
+        createInstance();
+        ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        assertBeanCount(1, FACTORY_NAME);
+        CommitStatus status = transaction.commit();
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 0, 0, 5);
+    }
+
+    private CommitStatus createInstance() throws Exception {
+        ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        createInstance(transaction);
+        return transaction.commit();
+    }
+
+    public static ObjectName createInstance(final ConfigTransactionJMXClient transaction)
+            throws InstanceAlreadyExistsException {
+        ObjectName nameCreated = transaction.createModule(FACTORY_NAME, INSTANCE_NAME);
+        BGPDispatcherImplModuleMXBean mxBean = transaction.newMBeanProxy(nameCreated,
+                BGPDispatcherImplModuleMXBean.class);
+        mxBean.setBossGroup(createThreadgroupInstance(transaction, BOSS_TG_INSTANCE_NAME, 10));
+        mxBean.setWorkerGroup(createThreadgroupInstance(transaction, WORKER_TG_INSTANCE_NAME, 10));
+        mxBean.setBgpExtensions(createBgpExtensionsInstance(transaction));
+        mxBean.setTimer(createTimerInstance(transaction));
+        return nameCreated;
+    }
+
+    private static ObjectName createThreadgroupInstance(final ConfigTransactionJMXClient transaction,
+            final String instanceName, final Integer threadCount) throws InstanceAlreadyExistsException {
+        ObjectName nameCreated = transaction.createModule(NettyThreadgroupModuleFactory.NAME, instanceName);
+        NettyThreadgroupModuleMXBean mxBean = transaction
+                .newMBeanProxy(nameCreated, NettyThreadgroupModuleMXBean.class);
+        mxBean.setThreadCount(threadCount);
+        return nameCreated;
+    }
+
+    private static ObjectName createTimerInstance(final ConfigTransactionJMXClient transaction)
+            throws InstanceAlreadyExistsException {
+        ObjectName nameCreated = transaction.createModule(HashedWheelTimerModuleFactory.NAME, TIMER_INSTANCE_NAME);
+        transaction.newMBeanProxy(nameCreated, HashedWheelTimerModuleMXBean.class);
+        return nameCreated;
+
+    }
+
+    private static ObjectName createBgpExtensionsInstance(final ConfigTransactionJMXClient transaction)
+            throws InstanceAlreadyExistsException {
+        ObjectName nameCreated = transaction.createModule(SimpleBGPExtensionProviderContextModuleFactory.NAME,
+                BGP_EXTENSION_INSTANCE_NAME);
+        transaction.newMBeanProxy(nameCreated, SimpleBGPExtensionProviderContextModuleMXBean.class);
+        return nameCreated;
+    }
 }
index 6570b0c9bf83e6b31ba49921a59651a8ea4b31b4..b8c350dd0656c9be3edae927899d34de2814b957 100644 (file)
@@ -12,9 +12,9 @@ import static org.junit.Assert.fail;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 
+import java.util.Collections;
 import java.util.List;
 
-import javax.management.InstanceAlreadyExistsException;
 import javax.management.ObjectName;
 
 import org.junit.Test;
@@ -23,12 +23,6 @@ import org.opendaylight.controller.config.api.ValidationException;
 import org.opendaylight.controller.config.api.jmx.CommitStatus;
 import org.opendaylight.controller.config.spi.ModuleFactory;
 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
-import org.opendaylight.controller.config.yang.bgp.rib.spi.RIBExtensionsImplModuleFactory;
-import org.opendaylight.controller.config.yang.md.sal.binding.impl.DataBrokerImplModuleFactory;
-import org.opendaylight.controller.config.yang.md.sal.dom.impl.DomBrokerImplModuleFactory;
-import org.opendaylight.controller.config.yang.md.sal.dom.impl.HashMapDataStoreModuleFactory;
-import org.opendaylight.controller.config.yang.netty.eventexecutor.GlobalEventExecutorModuleFactory;
-import org.opendaylight.controller.config.yang.reconnectstrategy.TimedReconnectStrategyModuleFactory;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily;
@@ -40,119 +34,107 @@ import com.google.common.collect.Lists;
 
 public class BGPPeerModuleTest extends RIBImplModuleTest {
 
-       private final String instanceName = "bgp-impl1";
-
-       public static ObjectName createBgpPeerInstance(final ConfigTransactionJMXClient transaction,
-                       final String instanceName, final String host, final Integer port) throws Exception {
-               final ObjectName nameCreated = transaction.createModule(BGPPeerModuleFactory.NAME, instanceName);
-               final BGPPeerModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, BGPPeerModuleMXBean.class);
-
-               // FIXME JMX crashes if union was not created via artificial constructor
-               // annotated for JMX as value
-               // IpAddress host1 = new IpAddress(new Ipv4Address(host));
-               mxBean.setHost(host == null ? null : new IpAddress(host.toCharArray()));
-               mxBean.setPort(port==null ? null : new PortNumber(port));
-               mxBean.setAdvertizedTable(Lists.newArrayList(createAdvertisedTable(transaction, BGPTableTypeImplModuleFactory.NAME)));
-               mxBean.setRib(createInstance(transaction, RIBImplModuleFactory.NAME, "ribImpl",
-                               DataBrokerImplModuleFactory.NAME, TimedReconnectStrategyModuleFactory.NAME,
-                               GlobalEventExecutorModuleFactory.NAME, BGPDispatcherImplModuleFactory.NAME,
-                               RIBExtensionsImplModuleFactory.NAME, DomBrokerImplModuleFactory.NAME,
-                               HashMapDataStoreModuleFactory.NAME));
-               return nameCreated;
-       }
-
-       private static ObjectName createAdvertisedTable(final ConfigTransactionJMXClient transaction, final String tableTypeModuleName) throws InstanceAlreadyExistsException {
-               String instanceName = "table-type";
-               final ObjectName nameCreated = transaction.createModule(tableTypeModuleName, instanceName);
-               BGPTableTypeImplModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, BGPTableTypeImplModuleMXBean.class);
-
-               mxBean.setAfi(new IdentityAttributeRef(Ipv4AddressFamily.QNAME.toString()));
-               mxBean.setSafi(new IdentityAttributeRef(MplsLabeledVpnSubsequentAddressFamily.QNAME.toString()));
-               return nameCreated;
-       }
-
-       @Override
-       protected List<ModuleFactory> getModuleFactories() {
-               List<ModuleFactory> moduleFactories = super.getModuleFactories();
-               moduleFactories.add(new BGPPeerModuleFactory());
-               moduleFactories.add(new BGPTableTypeImplModuleFactory());
-               return moduleFactories;
-       }
-
-       @Test
-       public void testValidationExceptionPortNotSet() throws Exception {
-               final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
-               try {
-                       createBgpPeerInstance(transaction, this.instanceName, "127.0.0.1", null);
-                       transaction.validateConfig();
-                       fail();
-               } catch (final ValidationException e) {
-                       transaction.abortConfig();
-                       assertTrue(e.getMessage().contains("Port value is not set."));
-               }
-       }
-
-       @Test
-       public void testValidationExceptionHostNotSet() throws Exception {
-               final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
-               try {
-                       createBgpPeerInstance(transaction, this.instanceName, null, null);
-                       transaction.validateConfig();
-                       fail();
-               } catch (final ValidationException e) {
-                       transaction.abortConfig();
-                       assertTrue(e.getMessage().contains("Host value is not set."));
-               }
-       }
-
-       @Override
-       @Test
-       public void testCreateBean() throws Exception {
-               final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
-               createBgpPeerInstance(transaction, this.instanceName, "127.0.0.1", 1);
-               transaction.validateConfig();
-               final CommitStatus status = transaction.commit();
-               assertBeanCount(1, BGPPeerModuleFactory.NAME);
-               assertStatus(status, 16, 0, 0);
-       }
-
-       @Override
-       protected CodecRegistry getCodecRegistry() {
-               IdentityCodec<?> idCodec = mock(IdentityCodec.class);
-               doReturn(Ipv4AddressFamily.class).when(idCodec).deserialize(Ipv4AddressFamily.QNAME);
-               doReturn(MplsLabeledVpnSubsequentAddressFamily.class).when(idCodec).deserialize(MplsLabeledVpnSubsequentAddressFamily.QNAME);
-
-               CodecRegistry codecReg = super.getCodecRegistry();
-               doReturn(idCodec).when(codecReg).getIdentityCodec();
-               return codecReg;
-       }
-
-       @Test
-       public void testReusingOldInstance() throws Exception {
-               ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
-               createBgpPeerInstance(transaction, this.instanceName, "127.0.0.1", 1);
-               transaction.validateConfig();
-               CommitStatus status = transaction.commit();
-               transaction = this.configRegistryClient.createTransaction();
-               assertBeanCount(1, BGPPeerModuleFactory.NAME);
-               status = transaction.commit();
-               assertBeanCount(1, BGPPeerModuleFactory.NAME);
-               assertStatus(status, 0, 0, 16);
-       }
-
-       @Test
-       public void testReconfigure() throws Exception {
-               ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
-               createBgpPeerInstance(transaction, this.instanceName, "127.0.0.1", 1);
-               transaction.validateConfig();
-               CommitStatus status = transaction.commit();
-               transaction = this.configRegistryClient.createTransaction();
-               assertBeanCount(1, BGPPeerModuleFactory.NAME);
-               final BGPPeerModuleMXBean mxBean = transaction.newMXBeanProxy(
-                               transaction.lookupConfigBean(BGPPeerModuleFactory.NAME, this.instanceName), BGPPeerModuleMXBean.class);
-               mxBean.setPort(new PortNumber(10));
-               status = transaction.commit();
-               assertBeanCount(1, BGPPeerModuleFactory.NAME);
-               assertStatus(status, 0, 1, 15);
-       }
+    private static final String INSTANCE_NAME = "bgp-peer-module-impl";
+    private static final String FACTORY_NAME = BGPPeerModuleFactory.NAME;
+
+    private static final String HOST = "127.0.0.1";
+
+    @Override
+    protected CodecRegistry getCodecRegistry() {
+        IdentityCodec<?> idCodec = mock(IdentityCodec.class);
+        doReturn(Ipv4AddressFamily.class).when(idCodec).deserialize(Ipv4AddressFamily.QNAME);
+        doReturn(MplsLabeledVpnSubsequentAddressFamily.class).when(idCodec).deserialize(
+                MplsLabeledVpnSubsequentAddressFamily.QNAME);
+
+        CodecRegistry codecReg = super.getCodecRegistry();
+        doReturn(idCodec).when(codecReg).getIdentityCodec();
+        return codecReg;
+    }
+
+    @Override
+    protected List<ModuleFactory> getModuleFactories() {
+        List<ModuleFactory> moduleFactories = super.getModuleFactories();
+        moduleFactories.add(new BGPPeerModuleFactory());
+        moduleFactories.add(new BGPTableTypeImplModuleFactory());
+        return moduleFactories;
+    }
+
+    @Test
+    public void testValidationExceptionPortNotSet() throws Exception {
+        try {
+            createBgpPeerInstance(HOST, null);
+            fail();
+        } catch (final ValidationException e) {
+            assertTrue(e.getMessage().contains("Port value is not set."));
+        }
+    }
+
+    @Test
+    public void testValidationExceptionHostNotSet() throws Exception {
+        try {
+            createBgpPeerInstance(null, 1);
+            fail();
+        } catch (final ValidationException e) {
+            assertTrue(e.getMessage().contains("Host value is not set."));
+        }
+    }
+
+    @Override
+    @Test
+    public void testCreateBean() throws Exception {
+        final CommitStatus status = createBgpPeerInstance();
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 16, 0, 0);
+    }
+
+    @Test
+    public void testReusingOldInstance() throws Exception {
+        CommitStatus status = createBgpPeerInstance();
+        ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
+        assertBeanCount(1, FACTORY_NAME);
+        status = transaction.commit();
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 0, 0, 16);
+    }
+
+    @Test
+    public void testReconfigure() throws Exception {
+        CommitStatus status = createBgpPeerInstance();
+        ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
+        assertBeanCount(1, FACTORY_NAME);
+        final BGPPeerModuleMXBean mxBean = transaction.newMXBeanProxy(
+                transaction.lookupConfigBean(FACTORY_NAME, INSTANCE_NAME), BGPPeerModuleMXBean.class);
+        mxBean.setPort(new PortNumber(10));
+        status = transaction.commit();
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 0, 1, 15);
+    }
+
+    private static ObjectName createBgpPeerInstance(final ConfigTransactionJMXClient transaction, final String host,
+            final Integer port) throws Exception {
+        final ObjectName nameCreated = transaction.createModule(FACTORY_NAME, INSTANCE_NAME);
+        final BGPPeerModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, BGPPeerModuleMXBean.class);
+
+        // FIXME JMX crashes if union was not created via artificial constructor
+        // annotated for JMX as value
+        // IpAddress host1 = new IpAddress(new Ipv4Address(host));
+        mxBean.setHost(host == null ? null : new IpAddress(host.toCharArray()));
+        mxBean.setPort(port == null ? null : new PortNumber(port));
+        mxBean.setAdvertizedTable(Collections.<ObjectName> emptyList());
+        mxBean.setRib(createInstance(transaction));
+        mxBean.setAdvertizedTable(Lists.newArrayList(BGPTableTypeImplModuleTest.createTableInstance(transaction,
+                new IdentityAttributeRef(Ipv4AddressFamily.QNAME.toString()), new IdentityAttributeRef(
+                        MplsLabeledVpnSubsequentAddressFamily.QNAME.toString()))));
+        return nameCreated;
+    }
+
+    private CommitStatus createBgpPeerInstance() throws Exception {
+        return createBgpPeerInstance(HOST, 1);
+    }
+
+    private CommitStatus createBgpPeerInstance(final String host, final Integer port) throws Exception {
+        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
+        createBgpPeerInstance(transaction, host, port);
+        return transaction.commit();
+    }
 }
diff --git a/bgp/rib-impl-config/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPTableTypeImplModuleTest.java b/bgp/rib-impl-config/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPTableTypeImplModuleTest.java
new file mode 100644 (file)
index 0000000..4bebb4e
--- /dev/null
@@ -0,0 +1,126 @@
+package org.opendaylight.controller.config.yang.bgp.rib.impl;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+
+import javax.management.InstanceAlreadyExistsException;
+import javax.management.ObjectName;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.opendaylight.controller.config.api.ConflictingVersionException;
+import org.opendaylight.controller.config.api.IdentityAttributeRef;
+import org.opendaylight.controller.config.api.ValidationException;
+import org.opendaylight.controller.config.api.jmx.CommitStatus;
+import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
+import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
+import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv6AddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.MplsLabeledVpnSubsequentAddressFamily;
+import org.opendaylight.yangtools.yang.data.impl.codec.CodecRegistry;
+import org.opendaylight.yangtools.yang.data.impl.codec.IdentityCodec;
+
+public class BGPTableTypeImplModuleTest extends AbstractConfigTest {
+
+    private static final String INSTANCE_NAME = "bgp-table-type-impl";
+    private static final String FACTORY_NAME = BGPTableTypeImplModuleFactory.NAME;
+
+    private IdentityAttributeRef afiRef = new IdentityAttributeRef(Ipv4AddressFamily.QNAME.toString());
+    private IdentityAttributeRef safiRef = new IdentityAttributeRef(
+            MplsLabeledVpnSubsequentAddressFamily.QNAME.toString());
+
+    @Before
+    public void setUp() throws Exception {
+        super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(new BGPTableTypeImplModuleFactory()));
+    }
+
+    @Override
+    protected CodecRegistry getCodecRegistry() {
+        IdentityCodec<?> idCodec = mock(IdentityCodec.class);
+        doReturn(Ipv4AddressFamily.class).when(idCodec).deserialize(Ipv4AddressFamily.QNAME);
+        doReturn(MplsLabeledVpnSubsequentAddressFamily.class).when(idCodec).deserialize(
+                MplsLabeledVpnSubsequentAddressFamily.QNAME);
+        doReturn(Ipv6AddressFamily.class).when(idCodec).deserialize(Ipv6AddressFamily.QNAME);
+
+        CodecRegistry codecReg = super.getCodecRegistry();
+        doReturn(idCodec).when(codecReg).getIdentityCodec();
+        return codecReg;
+    }
+
+    @Test
+    public void testValidationExceptionAfiNotSet() throws InstanceAlreadyExistsException, ConflictingVersionException {
+        try {
+            createInstance(null, safiRef);
+            fail();
+        } catch (ValidationException e) {
+            assertTrue(e.getMessage().contains("Afi value is not set."));
+        }
+    }
+
+    @Test
+    public void testValidationExceptionSafiNotSet() throws InstanceAlreadyExistsException, ConflictingVersionException {
+        try {
+            createInstance(afiRef, null);
+            fail();
+        } catch (ValidationException e) {
+            assertTrue(e.getMessage().contains("Safi value is not set."));
+        }
+    }
+
+    @Test
+    public void testCreateBean() throws Exception {
+        final CommitStatus status = createInstance();
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 1, 0, 0);
+    }
+
+    @Test
+    public void testReusingOldInstance() throws Exception {
+        createInstance();
+        final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        assertBeanCount(1, FACTORY_NAME);
+        final CommitStatus status = transaction.commit();
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 0, 0, 1);
+    }
+
+    @Test
+    public void testReconfigure() throws Exception {
+        createInstance();
+        final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        assertBeanCount(1, FACTORY_NAME);
+        final BGPTableTypeImplModuleMXBean mxBean = transaction.newMXBeanProxy(
+                transaction.lookupConfigBean(FACTORY_NAME, INSTANCE_NAME), BGPTableTypeImplModuleMXBean.class);
+        mxBean.setAfi(new IdentityAttributeRef(Ipv6AddressFamily.QNAME.toString()));
+        final CommitStatus status = transaction.commit();
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 0, 1, 0);
+    }
+
+    private CommitStatus createInstance() throws Exception {
+        return createInstance(afiRef, safiRef);
+    }
+
+    private CommitStatus createInstance(final IdentityAttributeRef afiRef, final IdentityAttributeRef safiRef)
+            throws ConflictingVersionException, ValidationException, InstanceAlreadyExistsException {
+        ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        createTableInstance(transaction, afiRef, safiRef);
+        return transaction.commit();
+    }
+
+    public static ObjectName createTableInstance(final ConfigTransactionJMXClient transaction,
+            final IdentityAttributeRef afiRef, final IdentityAttributeRef safiRef)
+            throws InstanceAlreadyExistsException {
+        final ObjectName nameCreated = transaction.createModule(FACTORY_NAME, INSTANCE_NAME);
+        BGPTableTypeImplModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated,
+                BGPTableTypeImplModuleMXBean.class);
+
+        mxBean.setAfi(afiRef);
+        mxBean.setSafi(safiRef);
+        return nameCreated;
+    }
+
+}
index d6896e9d1b893d3ad18768a5140eb57177f1c2db..2de77398154b758cff0767fbe42be38be62f94b5 100644 (file)
@@ -7,10 +7,11 @@
  */
 package org.opendaylight.controller.config.yang.bgp.rib.impl;
 
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.mock;
 
-import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
@@ -27,6 +28,7 @@ import org.mockito.Matchers;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
+import org.opendaylight.controller.config.api.ValidationException;
 import org.opendaylight.controller.config.api.jmx.CommitStatus;
 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
@@ -69,239 +71,283 @@ import org.osgi.framework.ServiceReference;
 import com.google.common.collect.Lists;
 
 public class RIBImplModuleTest extends AbstractConfigTest {
-       private static final String INSTANCE_NAME = GlobalEventExecutorModuleFactory.SINGLETON_NAME;
-       private static final String TRANSACTION_NAME = "testTransaction";
+    private static final String INSTANCE_NAME = "rib-impl";
+    private static final String FACTORY_NAME = RIBImplModuleFactory.NAME;
+    private static final String TRANSACTION_NAME = "testTransaction";
 
-       private RIBImplModuleFactory factory;
-       private DataBrokerImplModuleFactory dataBrokerFactory;
-       private TimedReconnectStrategyModuleFactory reconnectFactory;
-       private BGPDispatcherImplModuleFactory dispactherFactory;
-       private NettyThreadgroupModuleFactory threadgroupFactory;
-       private GlobalEventExecutorModuleFactory executorFactory;
-       private SimpleBGPExtensionProviderContextModuleFactory extensionFactory;
-       private RIBExtensionsImplModuleFactory ribExtensionsFactory;
-       private DomBrokerImplModuleFactory domBrokerFactory;
-       private RuntimeMappingModuleFactory runtimeMappingFactory;
-       private HashMapDataStoreModuleFactory dataStroreFactory;
-       private HashedWheelTimerModuleFactory hwtFactory;
+    private static final String RIB_ID = "test";
+    private static final String BGP_ID = "192.168.1.1";
 
-       @Mock
-       private DataModificationTransaction mockedTransaction;
+    private static final String SESSION_RS_INSTANCE_NAME = "session-reconnect-strategy-impl";
+    private static final String TCP_RS_INSTANCE_NAME = "tcp-reconnect-strategy";
+    private static final String DATA_BROKER_INSTANCE_NAME = "data-broker-impl";
+    private static final String DOM_BROKER_INSTANCE_NAME = "data-broker-impl";
+    private static final String DATA_STORE_INSTANCE_NAME = "data-store-impl";
+    private static final String RIB_EXTENSIONS_INSTANCE_NAME = "rib-extensions-impl";
 
-       @Mock
-       private DataProviderService mockedDataProvider;
+    @Mock
+    private DataModificationTransaction mockedTransaction;
 
-       @Mock
-       private Future<RpcResult<TransactionStatus>> mockedFuture;
+    @Mock
+    private DataProviderService mockedDataProvider;
 
-       @Mock
-       private RpcResult<TransactionStatus> mockedResult;
+    @Mock
+    private Future<RpcResult<TransactionStatus>> mockedFuture;
 
-       @SuppressWarnings("unchecked")
-       @Before
-       public void setUp() throws Exception {
-               MockitoAnnotations.initMocks(this);
+    @Mock
+    private RpcResult<TransactionStatus> mockedResult;
 
-               this.factory = new RIBImplModuleFactory();
-               this.dataBrokerFactory = new DataBrokerImplModuleFactory();
-               this.executorFactory = new GlobalEventExecutorModuleFactory();
-               this.dispactherFactory = new BGPDispatcherImplModuleFactory();
-               this.threadgroupFactory = new NettyThreadgroupModuleFactory();
-               this.reconnectFactory = new TimedReconnectStrategyModuleFactory();
-               this.extensionFactory = new SimpleBGPExtensionProviderContextModuleFactory();
-               this.ribExtensionsFactory = new RIBExtensionsImplModuleFactory();
-               this.domBrokerFactory = new DomBrokerImplModuleFactory();
-               this.runtimeMappingFactory = new RuntimeMappingModuleFactory();
-               this.dataStroreFactory = new HashMapDataStoreModuleFactory();
-               this.hwtFactory = new HashedWheelTimerModuleFactory();
+    @SuppressWarnings("unchecked")
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
 
-               List<ModuleFactory> moduleFactories = getModuleFactories();
-               super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext, moduleFactories
-                               .toArray(new ModuleFactory[moduleFactories.size()])));
+        List<ModuleFactory> moduleFactories = getModuleFactories();
+        super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext, moduleFactories
+                .toArray(new ModuleFactory[moduleFactories.size()])));
 
-               Filter mockedFilter = mock(Filter.class);
-               Mockito.doReturn(mockedFilter).when(mockedContext).createFilter(Mockito.anyString());
-
-               Mockito.doNothing().when(mockedContext).addServiceListener(any(ServiceListener.class), Mockito.anyString());
+        Filter mockedFilter = mock(Filter.class);
+        Mockito.doReturn(mockedFilter).when(mockedContext).createFilter(Mockito.anyString());
 
-               Mockito.doNothing().when(mockedContext).addBundleListener(any(BundleListener.class));
-
-               Mockito.doReturn(new Bundle[]{}).when(mockedContext).getBundles();
-
-               Mockito.doReturn(new ServiceReference[]{}).when(mockedContext).getServiceReferences(Matchers.anyString(), Matchers.anyString());
-
-               ServiceReference<?> emptyServiceReference = mock(ServiceReference.class, "Empty");
-
-               ServiceReference<?> dataProviderServiceReference = mock(ServiceReference.class, "Data Provider");
-
-
-               Mockito.doReturn(mockedFilter).when(mockedContext).createFilter(Mockito.anyString());
-
-               Mockito.doNothing().when(mockedContext).addServiceListener(any(ServiceListener.class), Mockito.anyString());
-
-               Mockito.doNothing().when(mockedContext).addBundleListener(any(BundleListener.class));
-
-               Mockito.doReturn(new Bundle[]{}).when(mockedContext).getBundles();
-
-               Mockito.doReturn(new ServiceReference[]{}).when(mockedContext).getServiceReferences(Matchers.anyString(), Matchers.anyString());
-
-               //mockedDataProvider = mock(DataProviderService.class);
-
-
-               Mockito.doReturn("Empty reference").when(emptyServiceReference).toString();
-               Mockito.doReturn("Data Provider Service Reference").when(dataProviderServiceReference).toString();
-               //
-               Mockito.doReturn(emptyServiceReference).when(mockedContext).getServiceReference(any(Class.class));
-               Mockito.doReturn(dataProviderServiceReference).when(mockedContext).getServiceReference(DataProviderService.class);
-
-               Mockito.doReturn(mockedDataProvider).when(mockedContext).getService(dataProviderServiceReference);
-
-               //Mockito.doReturn(null).when(mockedContext).getService(dataProviderServiceReference);
-               Mockito.doReturn(null).when(mockedContext).getService(emptyServiceReference);
-
-
-               Registration<DataCommitHandler<InstanceIdentifier, CompositeNode>> registration = mock(Registration.class);
-               Mockito.doReturn(registration).when(mockedDataProvider).registerCommitHandler(any(InstanceIdentifier.class),
-                               any(DataCommitHandler.class));
-               Mockito.doReturn(registration).when(mockedDataProvider).registerCommitHandler(any(InstanceIdentifier.class),
-                               any(DataCommitHandler.class));
-
-               Mockito.doReturn(null).when(mockedDataProvider).readOperationalData(any(InstanceIdentifier.class));
-               Mockito.doReturn(mockedTransaction).when(mockedDataProvider).beginTransaction();
-
-               Mockito.doNothing().when(mockedTransaction).putOperationalData(any(InstanceIdentifier.class), any(CompositeNode.class));
-               Mockito.doNothing().when(mockedTransaction).removeOperationalData(any(InstanceIdentifier.class));
-
-               Mockito.doReturn(mockedFuture).when(mockedTransaction).commit();
-               Mockito.doReturn(TRANSACTION_NAME).when(mockedTransaction).getIdentifier();
-
-               Mockito.doReturn(mockedResult).when(mockedFuture).get();
-               Mockito.doReturn(true).when(mockedResult).isSuccessful();
-               Mockito.doReturn(Collections.emptySet()).when(mockedResult).getErrors();
-       }
-
-       protected List<ModuleFactory> getModuleFactories() {
-               return Lists.newArrayList(this.factory,
-                               this.dispactherFactory, this.threadgroupFactory,
-                               this.reconnectFactory, this.dataBrokerFactory, this.executorFactory, this.extensionFactory,
-                               this.ribExtensionsFactory, this.domBrokerFactory, this.runtimeMappingFactory,
-                               this.dataStroreFactory, this.hwtFactory);
-       }
-
-       @Override
-       protected BundleContextServiceRegistrationHandler getBundleContextServiceRegistrationHandler(final Class<?> serviceType) {
-               if (serviceType.equals(SchemaServiceListener.class)) {
-                       return new BundleContextServiceRegistrationHandler() {
-                               @Override
-                               public void handleServiceRegistration(final Object o) {
-                                       SchemaServiceListener listener = (SchemaServiceListener) o;
-                                       listener.onGlobalContextUpdated(getMockedSchemaContext());
-                               }
-                       };
-               }
-
-               return super.getBundleContextServiceRegistrationHandler(serviceType);
-       }
-
-       @Test
-       public void testCreateBean() throws Exception {
-               ConfigTransactionJMXClient transaction = configRegistryClient
-                               .createTransaction();
-               createInstance(transaction, this.factory.getImplementationName(), INSTANCE_NAME,
-                               this.dataBrokerFactory.getImplementationName(), this.reconnectFactory.getImplementationName(),
-                               this.executorFactory.getImplementationName(), this.dispactherFactory.getImplementationName(),
-                               this.ribExtensionsFactory.getImplementationName(), this.domBrokerFactory.getImplementationName(),
-                               this.dataStroreFactory.getImplementationName());
-               transaction.validateConfig();
-               CommitStatus status = transaction.commit();
-               Thread.sleep(2000);
-               assertBeanCount(1, factory.getImplementationName());
-               assertStatus(status, 14, 0, 0);
-       }
-
-       @After
-       public void closeAllModules() throws Exception {
-               super.destroyAllConfigBeans();
-       }
-
-       public static ObjectName createInstance(final ConfigTransactionJMXClient transaction, final String moduleName,
-                       final String instanceName, final String bindingDataModuleName, final String reconnectModueName,
-                       final String executorModuleName, final String dispatcherModuleName, final String ribExtensionsModuleName,
-                       final String domBrokerModuleName, final String dataStroreModuleName)
-                                       throws Exception {
-               ObjectName nameCreated = transaction.createModule(
-                               moduleName, instanceName);
-               RIBImplModuleMXBean mxBean = transaction.newMXBeanProxy(
-                               nameCreated, RIBImplModuleMXBean.class);
-               ObjectName reconnectObjectName = TimedReconnectStrategyModuleTest.createInstance(transaction, reconnectModueName, "session-reconnect-strategy", 100, 1000L, new BigDecimal(1.0), 5000L, 2000L, null);
-               mxBean.setSessionReconnectStrategy(reconnectObjectName);
-               mxBean.setDataProvider(createDataBrokerInstance(transaction, bindingDataModuleName, "data-broker-impl", domBrokerModuleName, dataStroreModuleName));
-               ObjectName reconnectStrategyON = TimedReconnectStrategyModuleTest.createInstance(transaction, reconnectModueName, "tcp-reconnect-strategy", 100, 1000L, new BigDecimal(1.0), 5000L, 2000L, null);
-               mxBean.setTcpReconnectStrategy(reconnectStrategyON);
-               mxBean.setBgpDispatcher(BGPDispatcherImplModuleTest.createInstance(transaction, dispatcherModuleName, "bgp-dispatcher"));
-               mxBean.setExtensions(createRibExtensionsInstance(transaction, ribExtensionsModuleName, "rib-extensions-privider1"));
-               mxBean.setRibId(new RibId("test"));
-               mxBean.setLocalAs(5000L);
-               mxBean.setBgpId(new Ipv4Address("192.168.1.1"));
-               return nameCreated;
-       }
-
-       public static ObjectName createDataBrokerInstance(final ConfigTransactionJMXClient transaction, final String moduleName,
-                       final String instanceName, final String domBrokerModuleName, final String dataStroreModuleName) throws
-                       InstanceAlreadyExistsException, InstanceNotFoundException {
-               ObjectName nameCreated = transaction.createModule(
-                               moduleName, instanceName);
-               DataBrokerImplModuleMXBean mxBean = transaction.newMBeanProxy(
-                               nameCreated, DataBrokerImplModuleMXBean.class);
-               mxBean.setDomBroker(createDomBrokerInstance(transaction, domBrokerModuleName, "dom-broker1", dataStroreModuleName));
-               mxBean.setMappingService(lookupMappingServiceInstance(transaction));
-               return nameCreated;
-       }
-
-       public static ObjectName createDomBrokerInstance(final ConfigTransactionJMXClient transaction, final String moduleName,
-                       final String instanceName, final String dataStroreModuleName) throws InstanceAlreadyExistsException {
-               ObjectName nameCreated = transaction.createModule(
-                               moduleName, instanceName);
-               DomBrokerImplModuleMXBean mxBean = transaction.newMBeanProxy(
-                               nameCreated, DomBrokerImplModuleMXBean.class);
-               mxBean.setDataStore(createDataStoreInstance(transaction, dataStroreModuleName, "has-map-data-strore-instance"));
-               return nameCreated;
-       }
-
-       public static ObjectName createDataStoreInstance(final ConfigTransactionJMXClient transaction, final String moduleName,
-                       final String instanceName) throws InstanceAlreadyExistsException {
-               ObjectName nameCreated = transaction.createModule(
-                               moduleName, instanceName);
-               transaction.newMBeanProxy(
-                               nameCreated, HashMapDataStoreModuleMXBean.class);
-               return nameCreated;
-       }
-
-       public static ObjectName lookupMappingServiceInstance(final ConfigTransactionJMXClient transaction) {
-
-               try {
-                       return transaction.lookupConfigBean(RuntimeMappingModuleFactory.NAME, RuntimeMappingModuleFactory.SINGLETON_NAME);
-               } catch (InstanceNotFoundException e) {
-                       try {
-                               return transaction.createModule(RuntimeMappingModuleFactory.NAME, RuntimeMappingModuleFactory.SINGLETON_NAME);
-                       } catch (InstanceAlreadyExistsException e1) {
-                               throw new IllegalStateException(e1);
-                       }
-               }
-       }
-
-       public static ObjectName createRibExtensionsInstance(final ConfigTransactionJMXClient transaction, final String moduleName,
-                       final String instanceName) throws InstanceAlreadyExistsException {
-               ObjectName nameCreated = transaction.createModule(
-                               moduleName, instanceName);
-               transaction.newMBeanProxy(
-                               nameCreated, RIBExtensionsImplModuleMXBean.class);
-               return nameCreated;
-       }
-
-       public SchemaContext getMockedSchemaContext() {
-               List<String> paths = Arrays.asList("/META-INF/yang/bgp-rib.yang", "/META-INF/yang/ietf-inet-types.yang",
-                               "/META-INF/yang/bgp-message.yang", "/META-INF/yang/bgp-multiprotocol.yang", "/META-INF/yang/bgp-types.yang");
-               return YangParserWrapper.parseYangFiles(getFilesAsInputStreams(paths));
-       }
+        Mockito.doNothing().when(mockedContext).addServiceListener(any(ServiceListener.class), Mockito.anyString());
+
+        Mockito.doNothing().when(mockedContext).addBundleListener(any(BundleListener.class));
+
+        Mockito.doReturn(new Bundle[] {}).when(mockedContext).getBundles();
+
+        Mockito.doReturn(new ServiceReference[] {}).when(mockedContext)
+                .getServiceReferences(Matchers.anyString(), Matchers.anyString());
+
+        ServiceReference<?> emptyServiceReference = mock(ServiceReference.class, "Empty");
+
+        ServiceReference<?> dataProviderServiceReference = mock(ServiceReference.class, "Data Provider");
+
+        Mockito.doReturn(mockedFilter).when(mockedContext).createFilter(Mockito.anyString());
+
+        Mockito.doNothing().when(mockedContext).addServiceListener(any(ServiceListener.class), Mockito.anyString());
+
+        Mockito.doNothing().when(mockedContext).addBundleListener(any(BundleListener.class));
+
+        Mockito.doReturn(new Bundle[] {}).when(mockedContext).getBundles();
+
+        Mockito.doReturn(new ServiceReference[] {}).when(mockedContext)
+                .getServiceReferences(Matchers.anyString(), Matchers.anyString());
+
+        // mockedDataProvider = mock(DataProviderService.class);
+
+        Mockito.doReturn("Empty reference").when(emptyServiceReference).toString();
+        Mockito.doReturn("Data Provider Service Reference").when(dataProviderServiceReference).toString();
+        //
+        Mockito.doReturn(emptyServiceReference).when(mockedContext).getServiceReference(any(Class.class));
+        Mockito.doReturn(dataProviderServiceReference).when(mockedContext)
+                .getServiceReference(DataProviderService.class);
+
+        Mockito.doReturn(mockedDataProvider).when(mockedContext).getService(dataProviderServiceReference);
+
+        // Mockito.doReturn(null).when(mockedContext).getService(dataProviderServiceReference);
+        Mockito.doReturn(null).when(mockedContext).getService(emptyServiceReference);
+
+        Registration<DataCommitHandler<InstanceIdentifier, CompositeNode>> registration = mock(Registration.class);
+        Mockito.doReturn(registration).when(mockedDataProvider)
+                .registerCommitHandler(any(InstanceIdentifier.class), any(DataCommitHandler.class));
+        Mockito.doReturn(registration).when(mockedDataProvider)
+                .registerCommitHandler(any(InstanceIdentifier.class), any(DataCommitHandler.class));
+
+        Mockito.doReturn(null).when(mockedDataProvider).readOperationalData(any(InstanceIdentifier.class));
+        Mockito.doReturn(mockedTransaction).when(mockedDataProvider).beginTransaction();
+
+        Mockito.doNothing().when(mockedTransaction)
+                .putOperationalData(any(InstanceIdentifier.class), any(CompositeNode.class));
+        Mockito.doNothing().when(mockedTransaction).removeOperationalData(any(InstanceIdentifier.class));
+
+        Mockito.doReturn(mockedFuture).when(mockedTransaction).commit();
+        Mockito.doReturn(TRANSACTION_NAME).when(mockedTransaction).getIdentifier();
+
+        Mockito.doReturn(mockedResult).when(mockedFuture).get();
+        Mockito.doReturn(true).when(mockedResult).isSuccessful();
+        Mockito.doReturn(Collections.emptySet()).when(mockedResult).getErrors();
+    }
+
+    protected List<ModuleFactory> getModuleFactories() {
+        return Lists.newArrayList(new RIBImplModuleFactory(), new DataBrokerImplModuleFactory(),
+                new GlobalEventExecutorModuleFactory(), new BGPDispatcherImplModuleFactory(),
+                new NettyThreadgroupModuleFactory(), new TimedReconnectStrategyModuleFactory(),
+                new SimpleBGPExtensionProviderContextModuleFactory(), new RIBExtensionsImplModuleFactory(),
+                new DomBrokerImplModuleFactory(), new RuntimeMappingModuleFactory(),
+                new HashMapDataStoreModuleFactory(), new HashedWheelTimerModuleFactory());
+    }
+
+    @Override
+    protected BundleContextServiceRegistrationHandler getBundleContextServiceRegistrationHandler(
+            final Class<?> serviceType) {
+        if (serviceType.equals(SchemaServiceListener.class)) {
+            return new BundleContextServiceRegistrationHandler() {
+                @Override
+                public void handleServiceRegistration(final Object o) {
+                    SchemaServiceListener listener = (SchemaServiceListener) o;
+                    listener.onGlobalContextUpdated(getMockedSchemaContext());
+                }
+            };
+        }
+
+        return super.getBundleContextServiceRegistrationHandler(serviceType);
+    }
+
+    @Test
+    public void testValidationExceptionRibIdNotSet() throws Exception {
+        try {
+            createInstance(null, 500L, new Ipv4Address(BGP_ID));
+            fail();
+        } catch (ValidationException e) {
+            assertTrue(e.getMessage().contains("RibId is not set."));
+        }
+    }
+
+    @Test
+    public void testValidationExceptionLocalAsNotSet() throws Exception {
+        try {
+            createInstance(new RibId(RIB_ID), null, new Ipv4Address(BGP_ID));
+            fail();
+        } catch (ValidationException e) {
+            assertTrue(e.getMessage().contains("LocalAs is not set."));
+        }
+    }
+
+    @Test
+    public void testValidationExceptionBgpIdNotSet() throws Exception {
+        try {
+            createInstance(new RibId(RIB_ID), 500L, null);
+            fail();
+        } catch (ValidationException e) {
+            assertTrue(e.getMessage().contains("BgpId is not set."));
+        }
+    }
+
+    @Test
+    public void testCreateBean() throws Exception {
+        CommitStatus status = createInstance();
+        Thread.sleep(2000);
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 14, 0, 0);
+    }
+
+    @Test
+    public void testReusingOldInstance() throws Exception {
+        createInstance();
+        Thread.sleep(2000);
+        ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        assertBeanCount(1, FACTORY_NAME);
+        CommitStatus status = transaction.commit();
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 0, 0, 14);
+    }
+
+    @Test
+    public void testReconfigure() throws Exception {
+        createInstance();
+        Thread.sleep(2000);
+        final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        assertBeanCount(1, FACTORY_NAME);
+        final RIBImplModuleMXBean mxBean = transaction.newMBeanProxy(
+                transaction.lookupConfigBean(FACTORY_NAME, INSTANCE_NAME), RIBImplModuleMXBean.class);
+        mxBean.setLocalAs(100L);
+        final CommitStatus status = transaction.commit();
+        assertBeanCount(1, FACTORY_NAME);
+        assertStatus(status, 0, 1, 13);
+    }
+
+    @After
+    public void closeAllModules() throws Exception {
+        super.destroyAllConfigBeans();
+    }
+
+    private CommitStatus createInstance() throws Exception {
+        ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        createInstance(transaction);
+        return transaction.commit();
+    }
+
+    private CommitStatus createInstance(final RibId ribId, final Long localAs, final Ipv4Address bgpId)
+            throws Exception {
+        ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+        createInstance(transaction, ribId, localAs, bgpId);
+        return transaction.commit();
+    }
+
+    private static ObjectName createInstance(final ConfigTransactionJMXClient transaction, final RibId ribId,
+            final Long localAs, final Ipv4Address bgpId) throws Exception {
+        ObjectName nameCreated = transaction.createModule(RIBImplModuleFactory.NAME, INSTANCE_NAME);
+        RIBImplModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, RIBImplModuleMXBean.class);
+        ObjectName reconnectObjectName = TimedReconnectStrategyModuleTest.createInstance(transaction,
+                SESSION_RS_INSTANCE_NAME);
+        mxBean.setSessionReconnectStrategy(reconnectObjectName);
+        mxBean.setDataProvider(createDataBrokerInstance(transaction));
+        ObjectName reconnectStrategyON = TimedReconnectStrategyModuleTest.createInstance(transaction,
+                TCP_RS_INSTANCE_NAME);
+        mxBean.setTcpReconnectStrategy(reconnectStrategyON);
+        mxBean.setBgpDispatcher(BGPDispatcherImplModuleTest.createInstance(transaction));
+        mxBean.setExtensions(createRibExtensionsInstance(transaction));
+        mxBean.setRibId(ribId);
+        mxBean.setLocalAs(localAs);
+        mxBean.setBgpId(bgpId);
+        return nameCreated;
+    }
+
+    public static ObjectName createInstance(final ConfigTransactionJMXClient transaction) throws Exception {
+        return createInstance(transaction, new RibId(RIB_ID), 5000L, new Ipv4Address(BGP_ID));
+    }
+
+    private static ObjectName createDataBrokerInstance(final ConfigTransactionJMXClient transaction)
+            throws InstanceAlreadyExistsException, InstanceNotFoundException {
+        ObjectName nameCreated = transaction.createModule(DataBrokerImplModuleFactory.NAME, DATA_BROKER_INSTANCE_NAME);
+        DataBrokerImplModuleMXBean mxBean = transaction.newMBeanProxy(nameCreated, DataBrokerImplModuleMXBean.class);
+        mxBean.setDomBroker(createDomBrokerInstance(transaction));
+        mxBean.setMappingService(lookupMappingServiceInstance(transaction));
+        return nameCreated;
+    }
+
+    private static ObjectName createDomBrokerInstance(final ConfigTransactionJMXClient transaction)
+            throws InstanceAlreadyExistsException {
+        ObjectName nameCreated = transaction.createModule(DomBrokerImplModuleFactory.NAME, DOM_BROKER_INSTANCE_NAME);
+        DomBrokerImplModuleMXBean mxBean = transaction.newMBeanProxy(nameCreated, DomBrokerImplModuleMXBean.class);
+        mxBean.setDataStore(createDataStoreInstance(transaction));
+        return nameCreated;
+    }
+
+    private static ObjectName createDataStoreInstance(final ConfigTransactionJMXClient transaction)
+            throws InstanceAlreadyExistsException {
+        ObjectName nameCreated = transaction.createModule(HashMapDataStoreModuleFactory.NAME, DATA_STORE_INSTANCE_NAME);
+        transaction.newMBeanProxy(nameCreated, HashMapDataStoreModuleMXBean.class);
+        return nameCreated;
+    }
+
+    private static ObjectName lookupMappingServiceInstance(final ConfigTransactionJMXClient transaction) {
+
+        try {
+            return transaction.lookupConfigBean(RuntimeMappingModuleFactory.NAME,
+                    RuntimeMappingModuleFactory.SINGLETON_NAME);
+        } catch (InstanceNotFoundException e) {
+            try {
+                return transaction.createModule(RuntimeMappingModuleFactory.NAME,
+                        RuntimeMappingModuleFactory.SINGLETON_NAME);
+            } catch (InstanceAlreadyExistsException e1) {
+                throw new IllegalStateException(e1);
+            }
+        }
+    }
+
+    private static ObjectName createRibExtensionsInstance(final ConfigTransactionJMXClient transaction)
+            throws InstanceAlreadyExistsException {
+        ObjectName nameCreated = transaction.createModule(RIBExtensionsImplModuleFactory.NAME,
+                RIB_EXTENSIONS_INSTANCE_NAME);
+        transaction.newMBeanProxy(nameCreated, RIBExtensionsImplModuleMXBean.class);
+        return nameCreated;
+    }
+
+    public SchemaContext getMockedSchemaContext() {
+        List<String> paths = Arrays.asList("/META-INF/yang/bgp-rib.yang", "/META-INF/yang/ietf-inet-types.yang",
+                "/META-INF/yang/bgp-message.yang", "/META-INF/yang/bgp-multiprotocol.yang",
+                "/META-INF/yang/bgp-types.yang");
+        return YangParserWrapper.parseYangFiles(getFilesAsInputStreams(paths));
+    }
 }