<version>${controller.config.version}</version>
<scope>test</scope>
</dependency>
-
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>netty-threadgroup-config</artifactId>
+ <version>${controller.config.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>sal-binding-broker-impl</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
@Override
public void validate() {
super.validate();
- // Add custom validation for module attributes here.
}
@Override
JmxAttributeValidationException.checkNotNull(getAsNumber(),
"value is not set.", asNumberJmxAttribute);
+ JmxAttributeValidationException.checkCondition(getAsNumber() >= 0,
+ "value must be greather than 0", asNumberJmxAttribute);
+
+ JmxAttributeValidationException.checkNotNull(getHoldtimer(),
+ "value is not set.", holdtimerJmxAttribute);
+ JmxAttributeValidationException.checkCondition((getHoldtimer() == 0) || (getHoldtimer() >= 3),
+ "value must be 0 or 3 and more", holdtimerJmxAttribute);
}
@Override
*/
package org.opendaylight.controller.config.yang.bgp.rib.impl;
-import io.netty.util.concurrent.GlobalEventExecutor;
-
import org.opendaylight.controller.config.api.JmxAttributeValidationException;
+import org.opendaylight.controller.sal.binding.api.data.DataProviderService;
import org.opendaylight.protocol.bgp.parser.BGPSessionListener;
import org.opendaylight.protocol.bgp.rib.impl.BGP;
import org.opendaylight.protocol.bgp.rib.impl.BGPPeer;
import org.opendaylight.protocol.bgp.rib.impl.RIBImpl;
+import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext;
import org.opendaylight.protocol.concepts.ListenerRegistration;
import org.opendaylight.protocol.framework.ReconnectStrategy;
import org.opendaylight.protocol.framework.ReconnectStrategyFactory;
-import org.opendaylight.protocol.framework.TimedReconnectStrategy;
/**
*
@Override
public void validate() {
super.validate();
- JmxAttributeValidationException.checkNotNull(getRibName(),
- "value is not set.", ribNameJmxAttribute);
- JmxAttributeValidationException.checkCondition(!getRibName().isEmpty(),
- "should not be empty string.", ribNameJmxAttribute);
JmxAttributeValidationException.checkNotNull(getExtensions(),
"is not set.", extensionsJmxAttribute);
}
@Override
public java.lang.AutoCloseable createInstance() {
- RIBImpl rib = new RIBImpl(getExtensionsDependency(), getDataProviderDependency());
+ RibImplCloseable rib = new RibImplCloseable(getExtensionsDependency(), getDataProviderDependency());
BGP bgp = getBgpDependency();
final BGPPeer peer = new BGPPeer(rib, "peer-" + bgp.toString());
- final long reconnects = getReconnectAttempts();
ListenerRegistration<BGPSessionListener> reg = bgp
.registerUpdateListener(peer,
new ReconnectStrategyFactory() {
@Override
public ReconnectStrategy createReconnectStrategy() {
- return new TimedReconnectStrategy(
- GlobalEventExecutor.INSTANCE,
- getConnectionTimeout(), 5000, 1.0, null,
- reconnects, null);
+ return getTcpReconnectStrategyDependency();
}
- }, new TimedReconnectStrategy(
- GlobalEventExecutor.INSTANCE,
- getConnectionTimeout(), 5000, 1.0, null,
- reconnects, null));
- return new RibImplCloseable(reg, rib);
+ }, getSessionReconnectStrategyDependency());
+ rib.setListenerRegistration(reg);
+ return rib;
}
- private static final class RibImplCloseable implements AutoCloseable {
- private final ListenerRegistration<BGPSessionListener> reg;
- private final RIBImpl innerRib;
+ private static final class RibImplCloseable extends RIBImpl implements AutoCloseable {
+ private ListenerRegistration<BGPSessionListener> reg;
- private RibImplCloseable(final ListenerRegistration<BGPSessionListener> reg,
- final RIBImpl innerRib) {
- this.reg = reg;
- this.innerRib = innerRib;
+ private RibImplCloseable(final RIBExtensionConsumerContext extensions, final DataProviderService dps) {
+ super(extensions, dps);
}
@Override
public void close() throws Exception {
reg.close();
}
+
+ public void setListenerRegistration(ListenerRegistration<BGPSessionListener> reg) {
+ this.reg = reg;
+ }
}
}
*/
package org.opendaylight.controller.config.yang.bgp.rib.impl;
+
/**
*
*/
public class RIBImplModuleFactory
extends
org.opendaylight.controller.config.yang.bgp.rib.impl.AbstractRIBImplModuleFactory {
-
+
}
"value " + getConnectTime() + " is less than 0",
connectTimeJmxAttribute);
- JmxAttributeValidationException.checkNotNull(getMaxSleep(),
+ JmxAttributeValidationException.checkNotNull(getMinSleep(),
"value is not set.", minSleepJmxAttribute);
JmxAttributeValidationException.checkCondition(
getMaxSleep() == null || getMinSleep() <= getMaxSleep(),
import config-bgp-rib-spi { prefix ribspi; revision-date 2013-11-15; }
import opendaylight-md-sal-binding {prefix mdsb; revision-date 2013-10-28; }
import threadpool { prefix th; revision-date 2013-04-09; }
+ import reconnect-strategy { prefix rs; revision-date 2013-11-09; }
import config { prefix config; revision-date 2013-04-05; }
organization "Cisco Systems, Inc.";
}
}
}
-
- leaf rib-name {
- mandatory true;
- type string;
- }
-
- leaf connection-timeout {
- mandatory true;
- type int32;
- }
-
- leaf reconnect-attempts {
- mandatory true;
- type int64;
+
+ container session-reconnect-strategy {
+ uses config:service-ref {
+ refine type {
+ mandatory true;
+ config:required-identity rs:reconnect-strategy;
+ }
+ }
+ }
+
+ container tcp-reconnect-strategy {
+ uses config:service-ref {
+ refine type {
+ mandatory true;
+ config:required-identity rs:reconnect-strategy;
+ }
+ }
}
container data-provider {
import javax.management.InstanceAlreadyExistsException;
import javax.management.ObjectName;
-import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
-import org.opendaylight.controller.config.util.ConfigRegistryJMXClient;
import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
-import org.opendaylight.controller.config.yang.netty.eventexecutor.GlobalEventExecutorModuleFactory;
import org.opendaylight.controller.config.yang.netty.eventexecutor.GlobalEventExecutorModuleMXBean;
-public class GlobalEventExecutorUtil extends AbstractConfigTest {
+public class GlobalEventExecutorUtil {
- private final String instanceName = "global-executor";
-
- private ObjectName createInstance(
+ public static ObjectName createInstance(
final ConfigTransactionJMXClient transaction,
- final String instanceName, GlobalEventExecutorModuleFactory factory)
+ final String moduleName,
+ final String instanceName)
throws InstanceAlreadyExistsException {
ObjectName nameCreated = transaction.createModule(
- factory.getImplementationName(), instanceName);
+ moduleName, instanceName);
transaction.newMBeanProxy(nameCreated,
GlobalEventExecutorModuleMXBean.class);
return nameCreated;
}
- private ObjectName createBean(GlobalEventExecutorModuleFactory factory,
- ConfigRegistryJMXClient configRegistryClient)
- throws InstanceAlreadyExistsException {
- ConfigTransactionJMXClient transaction = configRegistryClient
- .createTransaction();
- ObjectName objectName = createInstance(transaction, instanceName,
- factory);
- transaction.validateConfig();
- transaction.commit();
- return objectName;
- }
-
- public static ObjectName createGlobalEventExecutorBean(
- GlobalEventExecutorModuleFactory factory,
- ConfigRegistryJMXClient configRegistryClient)
- throws InstanceAlreadyExistsException {
- GlobalEventExecutorUtil util = new GlobalEventExecutorUtil();
- return util.createBean(factory, configRegistryClient);
- }
-
}
private final String instanceName = "never";
private NeverReconnectStrategyModuleFactory factory;
-
- private ObjectName executor;
+
+ private GlobalEventExecutorModuleFactory executorFactory;
@Before
public void setUp() throws Exception {
this.factory = new NeverReconnectStrategyModuleFactory();
- GlobalEventExecutorModuleFactory executorFactory = new GlobalEventExecutorModuleFactory();
+ this.executorFactory = new GlobalEventExecutorModuleFactory();
super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(
factory, executorFactory));
- this.executor = GlobalEventExecutorUtil.createGlobalEventExecutorBean(
- executorFactory, configRegistryClient);
}
@Test
- public void testValidationException1()
+ public void testValidationExceptionTimeoutNotSet()
throws InstanceAlreadyExistsException {
try {
ConfigTransactionJMXClient transaction = configRegistryClient
.createTransaction();
- createInstance(transaction, instanceName, null, this.executor);
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, null, this.executorFactory.getImplementationName());
transaction.validateConfig();
fail();
} catch (ValidationException e) {
- assertTrue(e.getMessage().contains("value is not set."));
+ assertTrue(e.getMessage().contains("Timeout value is not set."));
}
}
@Test
- public void testValidationException2()
+ public void testValidationExceptionTimeoutMinValue()
throws InstanceAlreadyExistsException {
try {
ConfigTransactionJMXClient transaction = configRegistryClient
.createTransaction();
- createInstance(transaction, instanceName, -1, this.executor);
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, -1, this.executorFactory.getImplementationName());
transaction.validateConfig();
fail();
} catch (ValidationException e) {
}
}
- @Test
- public void testValidationException3()
- throws InstanceAlreadyExistsException {
- try {
- ConfigTransactionJMXClient transaction = configRegistryClient
- .createTransaction();
- createInstance(transaction, instanceName, 100, null);
- transaction.validateConfig();
- fail();
- } catch (ValidationException e) {
- assertTrue(e.getMessage().contains(
- "expected dependency implementing interface"));
- }
- }
-
@Test
public void testCreateBean() throws Exception {
ConfigTransactionJMXClient transaction = configRegistryClient
.createTransaction();
- createInstance(transaction, instanceName, 500, this.executor);
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 500, this.executorFactory.getImplementationName());
transaction.validateConfig();
CommitStatus status = transaction.commit();
assertBeanCount(1, factory.getImplementationName());
- assertStatus(status, 1, 0, 1);
+ assertStatus(status, 2, 0, 0);
}
@Test
ConflictingVersionException, ValidationException {
ConfigTransactionJMXClient transaction = configRegistryClient
.createTransaction();
- createInstance(transaction, instanceName, 100, this.executor);
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 500, this.executorFactory.getImplementationName());
transaction.commit();
transaction = configRegistryClient.createTransaction();
assertBeanCount(1, factory.getImplementationName());
InstanceNotFoundException {
ConfigTransactionJMXClient transaction = configRegistryClient
.createTransaction();
- createInstance(transaction, instanceName, 500, this.executor);
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 500, this.executorFactory.getImplementationName());
transaction.commit();
transaction = configRegistryClient.createTransaction();
assertBeanCount(1, factory.getImplementationName());
assertStatus(status, 0, 1, 1);
}
- private ObjectName createInstance(
- final ConfigTransactionJMXClient transaction,
+ public static ObjectName createInstance(
+ final ConfigTransactionJMXClient transaction, final String moduleName,
final String instanceName, final Integer timeout,
- final ObjectName executor) throws InstanceAlreadyExistsException {
+ final String eventexecutorModuleName) throws InstanceAlreadyExistsException {
ObjectName nameCreated = transaction.createModule(
- factory.getImplementationName(), instanceName);
+ moduleName, instanceName);
NeverReconnectStrategyModuleMXBean mxBean = transaction.newMBeanProxy(
nameCreated, NeverReconnectStrategyModuleMXBean.class);
mxBean.setTimeout(timeout);
- mxBean.setExecutor(executor);
+ mxBean.setExecutor(GlobalEventExecutorUtil.createInstance(transaction, eventexecutorModuleName, "global-event-executor1"));
return nameCreated;
}
private ReconnectImmediatelyStrategyModuleFactory factory;
- private ObjectName executor;
+ private GlobalEventExecutorModuleFactory executorFactory;
@Before
public void setUp() throws Exception {
this.factory = new ReconnectImmediatelyStrategyModuleFactory();
- GlobalEventExecutorModuleFactory executorFactory = new GlobalEventExecutorModuleFactory();
+ this.executorFactory = new GlobalEventExecutorModuleFactory();
super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(
factory, executorFactory));
- this.executor = GlobalEventExecutorUtil.createGlobalEventExecutorBean(
- executorFactory, configRegistryClient);
}
@Test
- public void testValidationException1()
+ public void testValidationExceptionTimeoutNotSet()
throws InstanceAlreadyExistsException {
try {
ConfigTransactionJMXClient transaction = configRegistryClient
.createTransaction();
- createInstance(transaction, instanceName, null, this.executor);
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, null, this.executorFactory.getImplementationName());
transaction.validateConfig();
fail();
} catch (ValidationException e) {
- assertTrue(e.getMessage().contains("value is not set."));
+ assertTrue(e.getMessage().contains("Timeout value is not set."));
}
}
@Test
- public void testValidationException2()
+ public void testValidationExceptionTimeoutMinValue()
throws InstanceAlreadyExistsException {
try {
ConfigTransactionJMXClient transaction = configRegistryClient
.createTransaction();
- createInstance(transaction, instanceName, -1, this.executor);
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, -1, this.executorFactory.getImplementationName());
transaction.validateConfig();
fail();
} catch (ValidationException e) {
}
}
- @Test
- public void testValidationException3()
- throws InstanceAlreadyExistsException {
- try {
- ConfigTransactionJMXClient transaction = configRegistryClient
- .createTransaction();
- createInstance(transaction, instanceName, 100, null);
- transaction.validateConfig();
- fail();
- } catch (ValidationException e) {
- assertTrue(e.getMessage().contains(
- "expected dependency implementing interface"));
- }
- }
-
@Test
public void testCreateBean() throws Exception {
ConfigTransactionJMXClient transaction = configRegistryClient
.createTransaction();
- createInstance(transaction, instanceName, 500, this.executor);
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 500, this.executorFactory.getImplementationName());
transaction.validateConfig();
CommitStatus status = transaction.commit();
assertBeanCount(1, factory.getImplementationName());
- assertStatus(status, 1, 0, 1);
+ assertStatus(status, 2, 0, 0);
}
@Test
ConflictingVersionException, ValidationException {
ConfigTransactionJMXClient transaction = configRegistryClient
.createTransaction();
- createInstance(transaction, instanceName, 100, this.executor);
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 100, this.executorFactory.getImplementationName());
transaction.commit();
transaction = configRegistryClient.createTransaction();
assertBeanCount(1, factory.getImplementationName());
InstanceNotFoundException {
ConfigTransactionJMXClient transaction = configRegistryClient
.createTransaction();
- createInstance(transaction, instanceName, 500, this.executor);
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 500, this.executorFactory.getImplementationName());
transaction.commit();
transaction = configRegistryClient.createTransaction();
assertBeanCount(1, factory.getImplementationName());
assertStatus(status, 0, 1, 1);
}
- private ObjectName createInstance(
+ public static ObjectName createInstance(
final ConfigTransactionJMXClient transaction,
+ final String moduleName,
final String instanceName, final Integer timeout,
- final ObjectName executor) throws InstanceAlreadyExistsException {
+ final String executorModuleName) throws InstanceAlreadyExistsException {
ObjectName nameCreated = transaction.createModule(
- factory.getImplementationName(), instanceName);
+ moduleName, instanceName);
ReconnectImmediatelyStrategyModuleMXBean mxBean = transaction
.newMBeanProxy(nameCreated,
ReconnectImmediatelyStrategyModuleMXBean.class);
mxBean.setTimeout(timeout);
- mxBean.setExecutor(executor);
+ mxBean.setExecutor(GlobalEventExecutorUtil.createInstance(transaction, executorModuleName, "global-event-executor"));
return nameCreated;
}
private TimedReconnectStrategyModuleFactory factory;
- private ObjectName executor;
+ private GlobalEventExecutorModuleFactory executorFactory;
@Before
public void setUp() throws Exception {
this.factory = new TimedReconnectStrategyModuleFactory();
- GlobalEventExecutorModuleFactory executorFactory = new GlobalEventExecutorModuleFactory();
+ this.executorFactory = new GlobalEventExecutorModuleFactory();
super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(
factory, executorFactory));
- this.executor = GlobalEventExecutorUtil.createGlobalEventExecutorBean(
- executorFactory, configRegistryClient);
}
@Test
- public void testValidationException1()
+ public void testValidationExceptionSleepFactorNotSet()
throws InstanceAlreadyExistsException {
try {
ConfigTransactionJMXClient transaction = configRegistryClient
.createTransaction();
- createInstance(transaction, instanceName, 500, 100L, null, 500L,
- 10L, 10000L, this.executor);
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 500, 100L, null, 500L,
+ 10L, 10000L, this.executorFactory.getImplementationName());
transaction.validateConfig();
fail();
} catch (ValidationException e) {
}
@Test
- public void testValidationException2()
+ public void testValidationExceptionSleepFactorMinValue()
throws InstanceAlreadyExistsException {
try {
ConfigTransactionJMXClient transaction = configRegistryClient
.createTransaction();
- createInstance(transaction, instanceName, 500, 100L,
- new BigDecimal(0.5), 500L, 10L, 10000L, this.executor);
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 500, 100L,
+ new BigDecimal(0.5), 500L, 10L, 10000L, this.executorFactory.getImplementationName());
transaction.validateConfig();
fail();
} catch (ValidationException e) {
- assertTrue(e.getMessage().contains("value 0.5 is less than 1"));
+ assertTrue(e.getMessage().contains("is less than 1"));
}
}
@Test
- public void testValidationException3()
+ public void testValidationExceptionConnectTimeNotSet()
throws InstanceAlreadyExistsException {
try {
ConfigTransactionJMXClient transaction = configRegistryClient
.createTransaction();
- createInstance(transaction, instanceName, null, 100L,
- new BigDecimal(1.0), 500L, 10L, 10000L, this.executor);
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, null, 100L,
+ new BigDecimal(1.0), 500L, 10L, 10000L, this.executorFactory.getImplementationName());
transaction.validateConfig();
fail();
} catch (ValidationException e) {
}
@Test
- public void testValidationException4()
+ public void testValidationExceptionConnectTimeMinValue()
throws InstanceAlreadyExistsException {
try {
ConfigTransactionJMXClient transaction = configRegistryClient
.createTransaction();
- createInstance(transaction, instanceName, -1, 100L, new BigDecimal(
- 1.0), 500L, 10L, 10000L, this.executor);
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, -1, 100L, new BigDecimal(
+ 1.0), 500L, 10L, 10000L, this.executorFactory.getImplementationName());
transaction.validateConfig();
fail();
} catch (ValidationException e) {
- assertTrue(e.getMessage().contains("value -1 is less than 0"));
+ assertTrue(e.getMessage().contains("is less than 0"));
}
}
@Test
- public void testValidationException5()
+ public void testValidationExceptionMinSleepNotSet()
throws InstanceAlreadyExistsException {
try {
ConfigTransactionJMXClient transaction = configRegistryClient
.createTransaction();
- createInstance(transaction, instanceName, 100, null,
- new BigDecimal(1.0), null, 10L, 10000L, this.executor);
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 100, null,
+ new BigDecimal(1.0), 100L, 10L, 10000L, this.executorFactory.getImplementationName());
transaction.validateConfig();
fail();
} catch (ValidationException e) {
}
@Test
- public void testValidationException6()
+ public void testValidationExceptionMaxSleep()
throws InstanceAlreadyExistsException {
try {
ConfigTransactionJMXClient transaction = configRegistryClient
.createTransaction();
- createInstance(transaction, instanceName, 100, 300L,
- new BigDecimal(1.0), 100L, 10L, 10000L, this.executor);
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 100, 300L,
+ new BigDecimal(1.0), 100L, 10L, 10000L, this.executorFactory.getImplementationName());
transaction.validateConfig();
fail();
} catch (ValidationException e) {
assertTrue(e.getMessage().contains(
- "value 300 is greter than MaxSleep 100"));
- }
- }
-
- @Test
- public void testValidationException7()
- throws InstanceAlreadyExistsException {
- try {
- ConfigTransactionJMXClient transaction = configRegistryClient
- .createTransaction();
- createInstance(transaction, instanceName, 100, 100L,
- new BigDecimal(1.0), 300L, 10L, 10000L, null);
- transaction.validateConfig();
- fail();
- } catch (ValidationException e) {
- assertTrue(e.getMessage().contains(
- "expected dependency implementing interface"));
+ "is greter than MaxSleep"));
}
}
public void testCreateBean() throws Exception {
ConfigTransactionJMXClient transaction = configRegistryClient
.createTransaction();
- createInstance(transaction, instanceName, 500, 100L,
- new BigDecimal(1.0), 500L, 10L, 10000L, this.executor);
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 500, 100L,
+ new BigDecimal(1.0), 500L, 10L, 10000L, this.executorFactory.getImplementationName());
transaction.validateConfig();
CommitStatus status = transaction.commit();
assertBeanCount(1, factory.getImplementationName());
- assertStatus(status, 1, 0, 1);
+ assertStatus(status, 2, 0, 0);
}
@Test
ConflictingVersionException, ValidationException {
ConfigTransactionJMXClient transaction = configRegistryClient
.createTransaction();
- createInstance(transaction, instanceName, 500, 100L,
- new BigDecimal(1.0), 500L, 10L, 10000L, this.executor);
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 500, 100L,
+ new BigDecimal(1.0), 500L, 10L, 10000L, this.executorFactory.getImplementationName());
transaction.commit();
transaction = configRegistryClient.createTransaction();
assertBeanCount(1, factory.getImplementationName());
InstanceNotFoundException {
ConfigTransactionJMXClient transaction = configRegistryClient
.createTransaction();
- createInstance(transaction, instanceName, 500, 100L,
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 500, 100L,
new BigDecimal(1.0), new Long(500), new Long(10), new Long(
- 10000), this.executor);
+ 10000), this.executorFactory.getImplementationName());
transaction.commit();
transaction = configRegistryClient.createTransaction();
assertBeanCount(1, factory.getImplementationName());
}
- private ObjectName createInstance(
+ 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,
- final ObjectName executor) throws InstanceAlreadyExistsException {
+ final String executorModuleName) throws InstanceAlreadyExistsException {
ObjectName nameCreated = transaction.createModule(
- factory.getImplementationName(), instanceName);
+ moduleName, instanceName);
TimedReconnectStrategyModuleMXBean mxBean = transaction.newMBeanProxy(
nameCreated, TimedReconnectStrategyModuleMXBean.class);
mxBean.setConnectTime(connectTime);
mxBean.setMaxSleep(maxSleep);
mxBean.setMinSleep(minSleep);
mxBean.setSleepFactor(sleepFactor);
- mxBean.setExecutor(executor);
+ mxBean.setExecutor(GlobalEventExecutorUtil.createInstance(transaction, executorModuleName, "global-event-executor"));
return nameCreated;
}
--- /dev/null
+package org.opendaylight.controller.config.yang.bgp.rib.impl;
+
+import javax.management.InstanceAlreadyExistsException;
+import javax.management.ObjectName;
+
+import org.junit.Before;
+import org.junit.Ignore;
+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.threadgroup.NettyThreadgroupModuleFactory;
+import org.opendaylight.controller.config.yang.netty.threadgroup.NettyThreadgroupModuleMXBean;
+
+@Ignore
+public class BGPDispatcherImplModuleTest extends AbstractConfigTest {
+
+ private final String instanceName = "bgp-message-fct";
+
+ private BGPDispatcherImplModuleFactory factory;
+
+ private NettyThreadgroupModuleFactory threadgroupFactory;
+
+ private BGPMessageFactoryImplModuleFactory messageFactory;
+
+ @Before
+ public void setUp() throws Exception {
+ this.factory = new BGPDispatcherImplModuleFactory();
+ this.threadgroupFactory = new NettyThreadgroupModuleFactory();
+ this.messageFactory = new BGPMessageFactoryImplModuleFactory();
+ super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.factory, threadgroupFactory, messageFactory));
+ }
+
+ @Test
+ public void testCreateBean() throws Exception {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, this.threadgroupFactory.getImplementationName(), this.messageFactory.getImplementationName());
+ transaction.validateConfig();
+ CommitStatus status = transaction.commit();
+ assertBeanCount(1, factory.getImplementationName());
+ assertStatus(status, 4, 0, 0);
+ }
+
+ @Test
+ public void testReusingOldInstance() throws InstanceAlreadyExistsException,
+ ConflictingVersionException, ValidationException {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, this.threadgroupFactory.getImplementationName(), this.messageFactory.getImplementationName());
+ transaction.commit();
+ transaction = configRegistryClient.createTransaction();
+ assertBeanCount(1, factory.getImplementationName());
+ CommitStatus status = transaction.commit();
+ assertBeanCount(1, factory.getImplementationName());
+ assertStatus(status, 0, 0, 4);
+ }
+
+ public static ObjectName createInstance(final ConfigTransactionJMXClient transaction, final String moduleName,
+ final String instanceName, final String threadgropuModuleName, final String messageFactoryModuleName) throws InstanceAlreadyExistsException {
+ ObjectName nameCreated = transaction.createModule(
+ moduleName, instanceName);
+ BGPDispatcherImplModuleMXBean mxBean = transaction.newMBeanProxy(
+ nameCreated, BGPDispatcherImplModuleMXBean.class);
+ mxBean.setBossGroup(createThreadgroupInstance(transaction, threadgropuModuleName, "boss-threadgroup", 10));
+ mxBean.setWorkerGroup(createThreadgroupInstance(transaction, threadgropuModuleName, "worker-threadgroup", 10));
+ //mxBean.setMessageFactory(BGPMessageFactoryImplModuleTest.createInstance(transaction, messageFactoryModuleName, "bgp-msg-fct"));
+ return nameCreated;
+ }
+
+ public static ObjectName createThreadgroupInstance(
+ final ConfigTransactionJMXClient transaction,
+ final String moduleName, final String instanceName,
+ final Integer threadCount) throws InstanceAlreadyExistsException {
+ ObjectName nameCreated = transaction.createModule(moduleName,
+ instanceName);
+ NettyThreadgroupModuleMXBean mxBean = transaction.newMBeanProxy(
+ nameCreated, NettyThreadgroupModuleMXBean.class);
+ mxBean.setThreadCount(threadCount);
+ return nameCreated;
+ }
+}
--- /dev/null
+package org.opendaylight.controller.config.yang.bgp.rib.impl;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import javax.management.InstanceAlreadyExistsException;
+import javax.management.InstanceNotFoundException;
+import javax.management.ObjectName;
+
+import org.junit.Before;
+import org.junit.Ignore;
+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.threadgroup.NettyThreadgroupModuleFactory;
+
+@Ignore
+public class BGPImplModuleTest extends AbstractConfigTest {
+
+ private final String instanceName = "bgp-impl1";
+
+ private BGPImplModuleFactory factory;
+
+ private BGPSessionProposalImplModuleFactory sessionFacotry;
+
+ private BGPDispatcherImplModuleFactory dispactherFactory;
+
+ private NettyThreadgroupModuleFactory threadgropFactory;
+
+ private BGPMessageFactoryImplModuleFactory messageFactory;
+
+ @Before
+ public void setUp() throws Exception {
+ this.factory = new BGPImplModuleFactory();
+ this.dispactherFactory = new BGPDispatcherImplModuleFactory();
+ this.sessionFacotry = new BGPSessionProposalImplModuleFactory();
+ this.threadgropFactory = new NettyThreadgroupModuleFactory();
+ this.messageFactory = new BGPMessageFactoryImplModuleFactory();
+ super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.factory, this.dispactherFactory, this.sessionFacotry, this.messageFactory, this.threadgropFactory));
+ }
+
+ @Test
+ public void testValidationExceptionPortNotSet()
+ throws InstanceAlreadyExistsException {
+ try {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, "localhost", null, sessionFacotry.getImplementationName(), dispactherFactory.getImplementationName(), threadgropFactory.getImplementationName(), messageFactory.getImplementationName());
+ transaction.validateConfig();
+ fail();
+ } catch (ValidationException e) {
+ assertTrue(e.getMessage().contains("Port value is not set."));
+ }
+ }
+
+ @Test
+ public void testValidationExceptionPortOutOfRange()
+ throws InstanceAlreadyExistsException {
+ try {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, "localhost", -1, sessionFacotry.getImplementationName(), dispactherFactory.getImplementationName(), threadgropFactory.getImplementationName(), messageFactory.getImplementationName());
+ transaction.validateConfig();
+ fail();
+ } catch (ValidationException e) {
+ assertTrue(e.getMessage().contains("is out of range (0-65535)."));
+ }
+ }
+
+ @Test
+ public void testValidationExceptionHostNotSet()
+ throws InstanceAlreadyExistsException {
+ try {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, null, 1, sessionFacotry.getImplementationName(), dispactherFactory.getImplementationName(), threadgropFactory.getImplementationName(), messageFactory.getImplementationName());
+ transaction.validateConfig();
+ fail();
+ } catch (ValidationException e) {
+ assertTrue(e.getMessage().contains("Host value is not set."));
+ }
+ }
+
+ @Test
+ public void testCreateBean() throws Exception {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, "localhost", 1, sessionFacotry.getImplementationName(), dispactherFactory.getImplementationName(), threadgropFactory.getImplementationName(), messageFactory.getImplementationName());
+ transaction.validateConfig();
+ CommitStatus status = transaction.commit();
+ assertBeanCount(1, factory.getImplementationName());
+ assertStatus(status, 6, 0, 0);
+ }
+
+ @Test
+ public void testReusingOldInstance() throws InstanceAlreadyExistsException,
+ ConflictingVersionException, ValidationException {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, "localhost", 1, sessionFacotry.getImplementationName(), dispactherFactory.getImplementationName(), threadgropFactory.getImplementationName(), messageFactory.getImplementationName());
+ transaction.commit();
+ transaction = configRegistryClient.createTransaction();
+ assertBeanCount(1, factory.getImplementationName());
+ CommitStatus status = transaction.commit();
+ assertBeanCount(1, factory.getImplementationName());
+ assertStatus(status, 0, 0, 6);
+ }
+
+ @Test
+ public void testReconfigure() throws InstanceAlreadyExistsException,
+ ConflictingVersionException, ValidationException,
+ InstanceNotFoundException {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, "localhost", 1, sessionFacotry.getImplementationName(), dispactherFactory.getImplementationName(), threadgropFactory.getImplementationName(), messageFactory.getImplementationName());
+ transaction.commit();
+ transaction = configRegistryClient.createTransaction();
+ assertBeanCount(1, factory.getImplementationName());
+ BGPImplModuleMXBean mxBean = transaction
+ .newMBeanProxy(transaction.lookupConfigBean(
+ factory.getImplementationName(),
+ instanceName), BGPImplModuleMXBean.class);
+ mxBean.setPort(10);
+ CommitStatus status = transaction.commit();
+ assertBeanCount(1, factory.getImplementationName());
+ assertStatus(status, 0, 1, 5);
+ }
+
+ public static ObjectName createInstance(final ConfigTransactionJMXClient transaction, final String moduleName,
+ final String instanceName, final String host, final Integer port, final String sessionModuleName, final String dispatcherModuleName, final String threadgroupModuleName, final String messageFactoryModuleName) throws InstanceAlreadyExistsException {
+ ObjectName nameCreated = transaction.createModule(
+ moduleName, instanceName);
+ BGPImplModuleMXBean mxBean = transaction.newMBeanProxy(
+ nameCreated, BGPImplModuleMXBean.class);
+ mxBean.setHost(host);
+ mxBean.setPort(port);
+ mxBean.setBgpProposal(BGPSessionProposalImplModuleTest.createInstance(transaction, sessionModuleName, "bgp-session1", 1, (short)30, "128.0.0.1"));
+ mxBean.setBgpDispatcher(BGPDispatcherImplModuleTest.createInstance(transaction, dispatcherModuleName, "bgp-dispatcher1", threadgroupModuleName, messageFactoryModuleName));
+ return nameCreated;
+ }
+
+}
--- /dev/null
+package org.opendaylight.controller.config.yang.bgp.rib.impl;
+
+import javax.management.InstanceAlreadyExistsException;
+import javax.management.ObjectName;
+
+import org.junit.Before;
+import org.junit.Ignore;
+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.bgp.parser.spi.SimpleBGPExtensionProviderContextModuleFactory;
+import org.opendaylight.controller.config.yang.bgp.parser.spi.SimpleBGPExtensionProviderContextModuleMXBean;
+
+@Ignore
+public class BGPMessageFactoryImplModuleTest extends AbstractConfigTest {
+
+ private final String instanceName = "bgp-message-fct";
+
+ private BGPMessageFactoryImplModuleFactory factory;
+
+ private SimpleBGPExtensionProviderContextModuleFactory bgpEPCFactory;
+
+ @Before
+ public void setUp() throws Exception {
+ this.factory = new BGPMessageFactoryImplModuleFactory();
+ this.bgpEPCFactory = new SimpleBGPExtensionProviderContextModuleFactory();
+ super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.factory, this.bgpEPCFactory));
+ }
+
+ @Test
+ public void testCreateBean() throws Exception {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, this.bgpEPCFactory.getImplementationName());
+ transaction.validateConfig();
+ CommitStatus status = transaction.commit();
+ assertBeanCount(1, factory.getImplementationName());
+ assertStatus(status, 1, 0, 0);
+ }
+
+ @Test
+ public void testReusingOldInstance() throws InstanceAlreadyExistsException,
+ ConflictingVersionException, ValidationException {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, this.bgpEPCFactory.getImplementationName());
+ transaction.commit();
+ transaction = configRegistryClient.createTransaction();
+ assertBeanCount(1, factory.getImplementationName());
+ CommitStatus status = transaction.commit();
+ assertBeanCount(1, factory.getImplementationName());
+ assertStatus(status, 0, 0, 1);
+ }
+
+ public static ObjectName createInstance(final ConfigTransactionJMXClient transaction, final String moduleName,
+ final String instanceName, final String extensionsModuleName) throws InstanceAlreadyExistsException {
+ ObjectName nameCreated = transaction.createModule(
+ moduleName, instanceName);
+ BGPMessageFactoryImplModuleMXBean mxBean = transaction.newMBeanProxy(
+ nameCreated, BGPMessageFactoryImplModuleMXBean.class);
+ //mxBean.setBgpExtensions(createBgpExtensionsInstance(transaction, extensionsModuleName, "bgp-extension"));
+ return nameCreated;
+ }
+
+ public static ObjectName createBgpExtensionsInstance(final ConfigTransactionJMXClient transaction, final String moduleName,
+ final String instanceName) throws InstanceAlreadyExistsException {
+ ObjectName nameCreated = transaction.createModule(
+ moduleName, instanceName);
+ transaction.newMBeanProxy(
+ nameCreated, SimpleBGPExtensionProviderContextModuleMXBean.class);
+ return nameCreated;
+ }
+
+}
--- /dev/null
+package org.opendaylight.controller.config.yang.bgp.rib.impl;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import javax.management.InstanceAlreadyExistsException;
+import javax.management.InstanceNotFoundException;
+import javax.management.ObjectName;
+
+import org.junit.Before;
+import org.junit.Ignore;
+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;
+
+@Ignore
+public class BGPSessionProposalImplModuleTest extends AbstractConfigTest {
+
+ private final String instanceName = "bgp-session-prop";
+
+ private BGPSessionProposalImplModuleFactory factory;
+
+ @Before
+ public void setUp() throws Exception {
+ this.factory = new BGPSessionProposalImplModuleFactory();
+ super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.factory));
+ }
+
+ @Test
+ public void testValidationExceptionAsNumberNotSet()
+ throws InstanceAlreadyExistsException {
+ try {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, null, (short)180, "192.168.1.1");
+ transaction.validateConfig();
+ fail();
+ } catch (ValidationException e) {
+ assertTrue(e.getMessage().contains("AsNumber value is not set."));
+ }
+ }
+
+ @Test
+ public void testValidationExceptionAsNumberMinValue()
+ throws InstanceAlreadyExistsException {
+ try {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, -1, (short)180, "192.168.1.1");
+ transaction.validateConfig();
+ fail();
+ } catch (ValidationException e) {
+ assertTrue(e.getMessage().contains("AsNumber value must be greather than 0"));
+ }
+ }
+
+ @Test
+ public void testValidationExceptionHoldtimerNotSet()
+ throws InstanceAlreadyExistsException {
+ try {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, null, "192.168.1.1");
+ transaction.validateConfig();
+ fail();
+ } catch (ValidationException e) {
+ assertTrue(e.getMessage().contains("Holdtimer value is not set."));
+ }
+ }
+
+ @Test
+ public void testValidationExceptionHoldtimerMinValue()
+ throws InstanceAlreadyExistsException {
+ try {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)2, "192.168.1.1");
+ transaction.validateConfig();
+ fail();
+ } catch (ValidationException e) {
+ assertTrue(e.getMessage().contains("Holdtimer value must be"));
+ }
+ }
+
+ @Test
+ public void testValidationExceptionBgpIdNotSet()
+ throws InstanceAlreadyExistsException {
+ try {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)180, null);
+ transaction.validateConfig();
+ fail();
+ } catch (ValidationException e) {
+ assertTrue(e.getMessage().contains("BgpId value is not set."));
+ }
+ }
+
+ @Test
+ public void testValidationExceptionBgpIdNotIpv4()
+ throws InstanceAlreadyExistsException {
+ try {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)180, "192.168.1.500");
+ transaction.validateConfig();
+ fail();
+ } catch (ValidationException e) {
+ assertTrue(e.getMessage().contains("is not valid IPv4 address"));
+ }
+ }
+
+ @Test
+ public void testCreateBean() throws Exception {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)180, "192.168.1.1");
+ transaction.validateConfig();
+ CommitStatus status = transaction.commit();
+ assertBeanCount(1, factory.getImplementationName());
+ assertStatus(status, 1, 0, 0);
+ }
+
+ @Test
+ public void testReusingOldInstance() throws InstanceAlreadyExistsException,
+ ConflictingVersionException, ValidationException {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)180, "192.168.1.1");
+ transaction.commit();
+ transaction = configRegistryClient.createTransaction();
+ assertBeanCount(1, factory.getImplementationName());
+ CommitStatus status = transaction.commit();
+ assertBeanCount(1, factory.getImplementationName());
+ assertStatus(status, 0, 0, 1);
+ }
+
+ @Test
+ public void testReconfigure() throws InstanceAlreadyExistsException,
+ ConflictingVersionException, ValidationException,
+ InstanceNotFoundException {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)180, "192.168.1.1");
+ transaction.commit();
+ transaction = configRegistryClient.createTransaction();
+ assertBeanCount(1, factory.getImplementationName());
+ BGPSessionProposalImplModuleMXBean mxBean = transaction
+ .newMBeanProxy(transaction.lookupConfigBean(
+ factory.getImplementationName(),
+ instanceName), BGPSessionProposalImplModuleMXBean.class);
+ mxBean.setBgpId("192.168.10.10");
+ CommitStatus status = transaction.commit();
+ assertBeanCount(1, factory.getImplementationName());
+ assertStatus(status, 0, 1, 0);
+ }
+
+ public static ObjectName createInstance(final ConfigTransactionJMXClient transaction, final String moduleName,
+ final String instanceName, final Integer asNumber, final Short holdtimer, final String bgpId) throws InstanceAlreadyExistsException {
+ ObjectName nameCreated = transaction.createModule(
+ moduleName, instanceName);
+ BGPSessionProposalImplModuleMXBean mxBean = transaction.newMBeanProxy(
+ nameCreated, BGPSessionProposalImplModuleMXBean.class);
+ mxBean.setAsNumber(asNumber);
+ mxBean.setBgpId(bgpId);
+ mxBean.setHoldtimer(holdtimer);
+ return nameCreated;
+
+ }
+}
--- /dev/null
+package org.opendaylight.controller.config.yang.bgp.rib.impl;
+
+import java.io.Closeable;
+import java.math.BigDecimal;
+import java.util.Dictionary;
+
+import javax.management.InstanceAlreadyExistsException;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.mockito.Matchers;
+import org.mockito.Mockito;
+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.bgp.reconnectstrategy.TimedReconnectStrategyModuleTest;
+import org.opendaylight.controller.config.yang.md.sal.binding.impl.BindingBrokerImplSingletonModuleFactory;
+import org.opendaylight.controller.config.yang.md.sal.binding.impl.BindingBrokerImplSingletonModuleMXBean;
+import org.opendaylight.controller.config.yang.netty.eventexecutor.GlobalEventExecutorModuleFactory;
+import org.opendaylight.controller.config.yang.netty.threadgroup.NettyThreadgroupModuleFactory;
+import org.opendaylight.controller.config.yang.reconnectstrategy.TimedReconnectStrategyModuleFactory;
+import org.opendaylight.controller.sal.binding.api.data.DataProviderService;
+import org.osgi.framework.Filter;
+import org.osgi.framework.ServiceListener;
+import org.osgi.framework.ServiceReference;
+
+@Ignore
+public class RIBImplModuleTest extends AbstractConfigTest {
+
+ private final String instanceName = "bgp-rib-impl";
+
+ private RIBImplModuleFactory factory;
+
+ private BindingBrokerImplSingletonModuleFactory brokerFactory;
+
+ private TimedReconnectStrategyModuleFactory reconnectFactory;
+
+ private BGPImplModuleFactory bgpFactory;
+
+ private BGPSessionProposalImplModuleFactory sessionFacotry;
+
+ private BGPDispatcherImplModuleFactory dispactherFactory;
+
+ private NettyThreadgroupModuleFactory threadgropFactory;
+
+ private BGPMessageFactoryImplModuleFactory messageFactory;
+
+ private GlobalEventExecutorModuleFactory executorFactory;
+
+ @Before
+ public void setUp() throws Exception {
+ this.factory = new RIBImplModuleFactory();
+ this.brokerFactory = new BindingBrokerImplSingletonModuleFactory();
+ this.bgpFactory = new BGPImplModuleFactory();
+ this.executorFactory = new GlobalEventExecutorModuleFactory();
+ this.dispactherFactory = new BGPDispatcherImplModuleFactory();
+ this.sessionFacotry = new BGPSessionProposalImplModuleFactory();
+ this.threadgropFactory = new NettyThreadgroupModuleFactory();
+ this.messageFactory = new BGPMessageFactoryImplModuleFactory();
+ this.reconnectFactory = new TimedReconnectStrategyModuleFactory();
+ super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.factory,
+ this.dispactherFactory, this.sessionFacotry, this.messageFactory,
+ this.threadgropFactory, this.bgpFactory, this.reconnectFactory, this.brokerFactory, this.executorFactory));
+ Mockito.doReturn(mockedServiceRegistration).when(mockedContext).registerService(
+ Matchers.any(String.class), Mockito.any(Closeable.class),
+ Mockito.any(Dictionary.class));
+ Mockito.doReturn(mockedServiceRegistration).when(mockedContext).registerService(
+ Matchers.any(Class.class), Mockito.any(Closeable.class),
+ Mockito.any(Dictionary.class));
+ Filter mockedFilter = Mockito.mock(Filter.class);
+ Mockito.doReturn(mockedFilter).when(mockedContext).createFilter(Mockito.anyString());
+
+ Mockito.doNothing().when(mockedContext).addServiceListener(Mockito.any(ServiceListener.class), Mockito.anyString());
+
+ Mockito.doReturn(new ServiceReference[]{}).when(mockedContext).getServiceReferences(Matchers.anyString(), Matchers.anyString());
+
+ ServiceReference<?> mockedserviceReference = Mockito.mock(ServiceReference.class);
+ Mockito.doReturn(new String()).when(mockedserviceReference).toString();
+ Mockito.doReturn(mockedserviceReference).when(mockedContext).getServiceReference(Matchers.any(Class.class));
+
+ DataProviderService mockedService = Mockito.mock(DataProviderService.class);
+ Mockito.doReturn(mockedService).when(mockedContext).getService(Matchers.any(ServiceReference.class));
+ }
+
+ @Test
+ public void testCreateBean() throws Exception {
+ ConfigTransactionJMXClient transaction = configRegistryClient
+ .createTransaction();
+ createInstance(transaction, this.factory.getImplementationName(), instanceName, new ObjectName("org.opendaylight.controller:instanceName=binding-broker-singleton,moduleFactoryName=binding-broker-impl-singleton,type=Module"),
+ this.reconnectFactory.getImplementationName(), this.executorFactory.getImplementationName(), this.bgpFactory.getImplementationName(), this.sessionFacotry.getImplementationName(),
+ this.dispactherFactory.getImplementationName(), this.threadgropFactory.getImplementationName(), this.messageFactory.getImplementationName());
+ transaction.validateConfig();
+ CommitStatus status = transaction.commit();
+ assertBeanCount(1, factory.getImplementationName());
+ assertStatus(status, 6, 0, 0);
+ }
+
+ public static ObjectName createInstance(final ConfigTransactionJMXClient transaction, final String moduleName,
+ final String instanceName, final ObjectName bindingDataModule, final String reconnectModueName, final String executorModuleName, final String bgpModuleName,
+ final String sessionModuleName, final String dispatcherModuleName, final String threadgroupModuleName, final String messageFactoryModuleName) throws InstanceAlreadyExistsException, MalformedObjectNameException {
+ ObjectName nameCreated = transaction.createModule(
+ moduleName, instanceName);
+ RIBImplModuleMXBean mxBean = transaction.newMBeanProxy(
+ nameCreated, RIBImplModuleMXBean.class);
+ ObjectName reconnectObjectName = TimedReconnectStrategyModuleTest.createInstance(transaction, reconnectModueName, "session-reconnect-strategy", 0, 2000L, new BigDecimal(1.0), 5000L, 2000L, null, executorModuleName);
+ mxBean.setSessionReconnectStrategy(reconnectObjectName);
+ mxBean.setDataProvider(bindingDataModule);
+ mxBean.setTcpReconnectStrategy(reconnectObjectName);
+ mxBean.setBgp(BGPImplModuleTest.createInstance(transaction, bgpModuleName, "bgp-impl1", "localhost", 1, sessionModuleName, dispatcherModuleName, threadgroupModuleName, messageFactoryModuleName));
+ return nameCreated;
+ }
+
+ public static ObjectName createBindingBrokerInstance(final ConfigTransactionJMXClient transaction, final String moduleName,
+ final String instanceName) throws InstanceAlreadyExistsException {
+ ObjectName nameCreated = transaction.createModule(
+ moduleName, instanceName);
+ transaction.newMBeanProxy(
+ nameCreated, BindingBrokerImplSingletonModuleMXBean.class);
+ return nameCreated;
+ }
+}