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
*/
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;
- }
+ }
}
*/
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.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;
+ }
}
*/
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;
+ }
}
*/
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;
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;
+ }
}
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;
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;
+ }
}
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;
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;
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();
+ }
}
--- /dev/null
+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;
+ }
+
+}
*/
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;
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;
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));
+ }
}