1 package org.opendaylight.controller.config.yang.bgp.rib.impl;
3 import javax.management.InstanceAlreadyExistsException;
4 import javax.management.ObjectName;
6 import org.junit.Before;
7 import org.junit.Ignore;
9 import org.opendaylight.controller.config.api.ConflictingVersionException;
10 import org.opendaylight.controller.config.api.ValidationException;
11 import org.opendaylight.controller.config.api.jmx.CommitStatus;
12 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
13 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
14 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
15 import org.opendaylight.controller.config.yang.netty.threadgroup.NettyThreadgroupModuleFactory;
16 import org.opendaylight.controller.config.yang.netty.threadgroup.NettyThreadgroupModuleMXBean;
19 public class BGPDispatcherImplModuleTest extends AbstractConfigTest {
21 private final String instanceName = "bgp-message-fct";
23 private BGPDispatcherImplModuleFactory factory;
25 private NettyThreadgroupModuleFactory threadgroupFactory;
27 private RIBExtensionsImplModuleFactory messageFactory;
30 public void setUp() throws Exception {
31 this.factory = new BGPDispatcherImplModuleFactory();
32 this.threadgroupFactory = new NettyThreadgroupModuleFactory();
33 this.messageFactory = new RIBExtensionsImplModuleFactory();
34 super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.factory, threadgroupFactory, messageFactory));
38 public void testCreateBean() throws Exception {
39 ConfigTransactionJMXClient transaction = configRegistryClient
41 createInstance(transaction, this.factory.getImplementationName(), instanceName, this.threadgroupFactory.getImplementationName(), this.messageFactory.getImplementationName());
42 transaction.validateConfig();
43 CommitStatus status = transaction.commit();
44 assertBeanCount(1, factory.getImplementationName());
45 assertStatus(status, 4, 0, 0);
49 public void testReusingOldInstance() throws InstanceAlreadyExistsException,
50 ConflictingVersionException, ValidationException {
51 ConfigTransactionJMXClient transaction = configRegistryClient
53 createInstance(transaction, this.factory.getImplementationName(), instanceName, this.threadgroupFactory.getImplementationName(), this.messageFactory.getImplementationName());
55 transaction = configRegistryClient.createTransaction();
56 assertBeanCount(1, factory.getImplementationName());
57 CommitStatus status = transaction.commit();
58 assertBeanCount(1, factory.getImplementationName());
59 assertStatus(status, 0, 0, 4);
62 public static ObjectName createInstance(final ConfigTransactionJMXClient transaction, final String moduleName,
63 final String instanceName, final String threadgropuModuleName, final String messageFactoryModuleName) throws InstanceAlreadyExistsException {
64 ObjectName nameCreated = transaction.createModule(
65 moduleName, instanceName);
66 BGPDispatcherImplModuleMXBean mxBean = transaction.newMBeanProxy(
67 nameCreated, BGPDispatcherImplModuleMXBean.class);
68 mxBean.setBossGroup(createThreadgroupInstance(transaction, threadgropuModuleName, "boss-threadgroup", 10));
69 mxBean.setWorkerGroup(createThreadgroupInstance(transaction, threadgropuModuleName, "worker-threadgroup", 10));
70 //mxBean.setMessageFactory(BGPMessageFactoryImplModuleTest.createInstance(transaction, messageFactoryModuleName, "bgp-msg-fct"));
74 public static ObjectName createThreadgroupInstance(
75 final ConfigTransactionJMXClient transaction,
76 final String moduleName, final String instanceName,
77 final Integer threadCount) throws InstanceAlreadyExistsException {
78 ObjectName nameCreated = transaction.createModule(moduleName,
80 NettyThreadgroupModuleMXBean mxBean = transaction.newMBeanProxy(
81 nameCreated, NettyThreadgroupModuleMXBean.class);
82 mxBean.setThreadCount(threadCount);