1 package org.opendaylight.controller.config.threadpool.fixed;
\r
3 import org.junit.Before;
\r
4 import org.junit.Test;
\r
5 import org.opendaylight.controller.config.api.ConflictingVersionException;
\r
6 import org.opendaylight.controller.config.api.ValidationException;
\r
7 import org.opendaylight.controller.config.api.jmx.CommitStatus;
\r
8 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
\r
9 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
\r
10 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
\r
11 import org.opendaylight.controller.config.yang.threadpool.impl.NamingThreadFactoryModuleFactory;
\r
12 import org.opendaylight.controller.config.yang.threadpool.impl.NamingThreadFactoryModuleMXBean;
\r
13 import org.opendaylight.controller.config.yang.threadpool.impl.fixed.FixedThreadPoolModuleFactory;
\r
14 import org.opendaylight.controller.config.yang.threadpool.impl.fixed.FixedThreadPoolModuleMXBean;
\r
16 import javax.management.InstanceAlreadyExistsException;
\r
17 import javax.management.InstanceNotFoundException;
\r
18 import javax.management.ObjectName;
\r
20 import static org.junit.Assert.assertThat;
\r
21 import static org.junit.Assert.fail;
\r
22 import static org.junit.matchers.JUnitMatchers.containsString;
\r
24 public class FixedThreadPoolConfigBeanTest extends AbstractConfigTest {
\r
26 private FixedThreadPoolModuleFactory factory;
\r
27 private final String nameInstance = "fixedInstance";
\r
30 public void setUp() {
\r
31 factory = new FixedThreadPoolModuleFactory();
\r
32 super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(factory,
\r
33 new NamingThreadFactoryModuleFactory()));
\r
37 public void testCreateBean() throws InstanceAlreadyExistsException, ValidationException,
\r
38 ConflictingVersionException {
\r
39 ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
\r
40 createFixed(transaction, nameInstance, 2);
\r
42 transaction.validateConfig();
\r
43 CommitStatus status = transaction.commit();
\r
45 assertBeanCount(1, factory.getImplementationName());
\r
46 assertStatus(status, 2, 0, 0);
\r
50 public void testReusingOldInstance() throws InstanceAlreadyExistsException, ConflictingVersionException,
\r
51 ValidationException {
\r
52 ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
\r
53 createFixed(transaction, nameInstance, 4);
\r
55 transaction.validateConfig();
\r
56 transaction.commit();
\r
58 assertBeanCount(1, factory.getImplementationName());
\r
60 transaction = configRegistryClient.createTransaction();
\r
61 CommitStatus status = transaction.commit();
\r
63 assertBeanCount(1, factory.getImplementationName());
\r
64 assertStatus(status, 0, 0, 2);
\r
68 public void testNegative() throws ConflictingVersionException, ValidationException, InstanceAlreadyExistsException {
\r
69 ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
\r
71 createFixed(transaction, nameInstance, 5);
\r
72 transaction.commit();
\r
74 transaction = configRegistryClient.createTransaction();
\r
76 createFixed(transaction, nameInstance, 0);
\r
78 } catch (InstanceAlreadyExistsException e) {
\r
81 containsString("There is an instance registered with name ModuleIdentifier{factoryName='threadpool-fixed', instanceName='fixedInstance'}"));
\r
86 public void testDestroy() throws InstanceAlreadyExistsException, ValidationException, ConflictingVersionException,
\r
87 InstanceNotFoundException {
\r
88 ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
\r
89 createFixed(transaction, nameInstance, 1);
\r
91 transaction.commit();
\r
93 transaction = configRegistryClient.createTransaction();
\r
94 transaction.destroyConfigBean(factory.getImplementationName(), nameInstance);
\r
95 CommitStatus status = transaction.commit();
\r
97 assertBeanCount(0, factory.getImplementationName());
\r
98 assertStatus(status, 0, 0, 1);
\r
102 public void testValidationException() throws InstanceAlreadyExistsException {
\r
103 ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
\r
104 createFixed(transaction, nameInstance, -1);
\r
106 transaction.validateConfig();
\r
108 } catch (ValidationException e) {
\r
109 assertThat(e.getMessage(), containsString("MaxThreadCount must be greater than zero"));
\r
113 private ObjectName createFixed(ConfigTransactionJMXClient transaction, String name, int numberOfThreads)
\r
114 throws InstanceAlreadyExistsException {
\r
115 ObjectName nameCreated = transaction.createModule(factory.getImplementationName(), name);
\r
116 FixedThreadPoolModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, FixedThreadPoolModuleMXBean.class);
\r
117 mxBean.setMaxThreadCount(numberOfThreads);
\r
119 ObjectName threadFactoryON = transaction.createModule(NamingThreadFactoryModuleFactory.NAME, "naming");
\r
120 NamingThreadFactoryModuleMXBean namingThreadFactoryModuleMXBean = transaction.newMXBeanProxy(threadFactoryON,
\r
121 NamingThreadFactoryModuleMXBean.class);
\r
122 namingThreadFactoryModuleMXBean.setNamePrefix("prefix");
\r
124 mxBean.setThreadFactory(threadFactoryON);
\r
126 return nameCreated;
\r