1 package org.opendaylight.controller.config.yang.pcep.impl;
3 import static org.junit.Assert.assertTrue;
4 import static org.junit.Assert.fail;
6 import javax.management.InstanceAlreadyExistsException;
7 import javax.management.InstanceNotFoundException;
8 import javax.management.ObjectName;
10 import org.junit.Before;
11 import org.junit.Test;
12 import org.opendaylight.controller.config.api.ConflictingVersionException;
13 import org.opendaylight.controller.config.api.ValidationException;
14 import org.opendaylight.controller.config.api.jmx.CommitStatus;
15 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
16 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
17 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
18 import org.opendaylight.controller.config.yang.netty.threadgroup.NettyThreadgroupModuleFactory;
19 import org.opendaylight.controller.config.yang.netty.threadgroup.NettyThreadgroupModuleMXBean;
20 import org.opendaylight.controller.config.yang.pcep.spi.SimplePCEPExtensionProviderContextModuleFactory;
21 import org.opendaylight.controller.config.yang.pcep.spi.SimplePCEPExtensionProviderContextModuleMXBean;
23 public class PCEPDispatcherImplModuleTest extends AbstractConfigTest {
25 private final String instanceName = "pcep-dispatcher";
27 private PCEPDispatcherImplModuleFactory factory;
29 private PCEPSessionProposalFactoryImplModuleFactory sessionFactory;
31 private NettyThreadgroupModuleFactory threadgroupFactory;
33 private SimplePCEPExtensionProviderContextModuleFactory extensionsFactory;
36 public void setUp() throws Exception {
37 this.factory = new PCEPDispatcherImplModuleFactory();
38 this.sessionFactory = new PCEPSessionProposalFactoryImplModuleFactory();
39 this.threadgroupFactory = new NettyThreadgroupModuleFactory();
40 this.extensionsFactory = new SimplePCEPExtensionProviderContextModuleFactory();
41 super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(
42 factory, sessionFactory, threadgroupFactory, extensionsFactory));
46 public void testValidationExceptionMaxUnknownMessagesNotSet()
47 throws InstanceAlreadyExistsException {
49 ConfigTransactionJMXClient transaction = configRegistryClient
51 createInstance(transaction, this.factory.getImplementationName(),
53 this.sessionFactory.getImplementationName(),
54 this.threadgroupFactory.getImplementationName(),
55 this.extensionsFactory.getImplementationName());
56 transaction.validateConfig();
58 } catch (ValidationException e) {
59 assertTrue(e.getMessage().contains("MaxUnknownMessages value is not set"));
64 public void testValidationExceptionMaxUnknownMessagesMinValue()
65 throws InstanceAlreadyExistsException {
67 ConfigTransactionJMXClient transaction = configRegistryClient
69 createInstance(transaction, this.factory.getImplementationName(),
71 this.sessionFactory.getImplementationName(),
72 this.threadgroupFactory.getImplementationName(),
73 this.extensionsFactory.getImplementationName());
74 transaction.validateConfig();
76 } catch (ValidationException e) {
77 assertTrue(e.getMessage().contains("must be greater than 0"));
82 public void testCreateBean() throws Exception {
83 ConfigTransactionJMXClient transaction = configRegistryClient
85 createInstance(transaction, this.factory.getImplementationName(),
86 instanceName, 5, this.sessionFactory.getImplementationName(),
87 this.threadgroupFactory.getImplementationName(),
88 this.extensionsFactory.getImplementationName());
89 transaction.validateConfig();
90 CommitStatus status = transaction.commit();
91 assertBeanCount(1, factory.getImplementationName());
92 assertStatus(status, 5, 0, 0);
96 public void testReusingOldInstance() throws InstanceAlreadyExistsException,
97 ConflictingVersionException, ValidationException {
98 ConfigTransactionJMXClient transaction = configRegistryClient
100 createInstance(transaction, this.factory.getImplementationName(),
101 instanceName, 5, this.sessionFactory.getImplementationName(),
102 this.threadgroupFactory.getImplementationName(), this.extensionsFactory.getImplementationName());
103 transaction.commit();
104 transaction = configRegistryClient.createTransaction();
105 assertBeanCount(1, factory.getImplementationName());
106 CommitStatus status = transaction.commit();
107 assertBeanCount(1, factory.getImplementationName());
108 assertStatus(status, 0, 0, 5);
112 public void testReconfigure() throws InstanceAlreadyExistsException,
113 ConflictingVersionException, ValidationException,
114 InstanceNotFoundException {
115 ConfigTransactionJMXClient transaction = configRegistryClient
116 .createTransaction();
117 createInstance(transaction, this.factory.getImplementationName(),
118 instanceName, 5, this.sessionFactory.getImplementationName(),
119 this.threadgroupFactory.getImplementationName(),
120 this.extensionsFactory.getImplementationName());
121 transaction.commit();
122 transaction = configRegistryClient.createTransaction();
123 assertBeanCount(1, factory.getImplementationName());
124 PCEPDispatcherImplModuleMXBean mxBean = transaction.newMBeanProxy(
125 transaction.lookupConfigBean(
126 this.factory.getImplementationName(), instanceName),
127 PCEPDispatcherImplModuleMXBean.class);
128 mxBean.setMaxUnknownMessages(10);
129 CommitStatus status = transaction.commit();
130 assertBeanCount(1, factory.getImplementationName());
131 assertStatus(status, 0, 1, 4);
134 public static ObjectName createInstance(
135 final ConfigTransactionJMXClient transaction,
136 final String moduleName, final String instanceName,
137 final Integer maxUnknownMessages,
138 final String sessionFactoryImplName,
139 final String threadGroupFactoryImplName,
140 final String extensionsImplName)
141 throws InstanceAlreadyExistsException {
142 ObjectName nameCreated = transaction.createModule(moduleName,
144 PCEPDispatcherImplModuleMXBean mxBean = transaction.newMBeanProxy(
145 nameCreated, PCEPDispatcherImplModuleMXBean.class);
146 mxBean.setPcepSessionProposalFactory(PCEPSessionProposalFactoryImplModuleTest
147 .createInstance(transaction, sessionFactoryImplName,
148 "pcep-proposal", 0, 0, true, true, true, true, 1000));
149 mxBean.setMaxUnknownMessages(maxUnknownMessages);
150 mxBean.setBossGroup(createThreadGroupInstance(transaction,
151 threadGroupFactoryImplName, "boss-group", 10));
152 mxBean.setWorkerGroup(createThreadGroupInstance(transaction,
153 threadGroupFactoryImplName, "worker-group", 10));
154 mxBean.setExtensions(createExtensionsInstance(transaction,
155 extensionsImplName, "extensions"));
159 public static ObjectName createExtensionsInstance(
160 final ConfigTransactionJMXClient transaction,
161 final String moduleName, final String instanceName) throws InstanceAlreadyExistsException {
162 ObjectName nameCreated = transaction.createModule(moduleName,
164 SimplePCEPExtensionProviderContextModuleMXBean mxBean = transaction.newMBeanProxy(
165 nameCreated, SimplePCEPExtensionProviderContextModuleMXBean.class);
170 public static ObjectName createThreadGroupInstance(
171 final ConfigTransactionJMXClient transaction,
172 final String moduleName, final String instanceName,
173 final Integer threadCount) throws InstanceAlreadyExistsException {
174 ObjectName nameCreated = transaction.createModule(moduleName,
176 NettyThreadgroupModuleMXBean mxBean = transaction.newMBeanProxy(
177 nameCreated, NettyThreadgroupModuleMXBean.class);
178 mxBean.setThreadCount(threadCount);