1 package org.opendaylight.controller.config.threadpool.async;
\r
3 import static org.junit.Assert.assertThat;
\r
4 import static org.junit.Assert.fail;
\r
5 import static org.junit.matchers.JUnitMatchers.containsString;
\r
7 import javax.management.InstanceAlreadyExistsException;
\r
8 import javax.management.ObjectName;
\r
10 import org.junit.Before;
\r
11 import org.junit.Test;
\r
12 import org.opendaylight.controller.config.api.ConflictingVersionException;
\r
13 import org.opendaylight.controller.config.api.ValidationException;
\r
14 import org.opendaylight.controller.config.api.jmx.CommitStatus;
\r
15 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
\r
16 import org.opendaylight.controller.config.manager.impl.ClassBasedModuleFactory;
\r
17 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
\r
18 import org.opendaylight.controller.config.threadpool.scheduled.TestingScheduledThreadPoolModule;
\r
19 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
\r
20 import org.opendaylight.controller.config.yang.threadpool.impl.AsyncEventBusModuleFactory;
\r
21 import org.opendaylight.controller.config.yang.threadpool.impl.AsyncEventBusModuleMXBean;
\r
23 public class AsyncEventBusConfigBeanTest extends AbstractConfigTest {
\r
25 private AsyncEventBusModuleFactory factory;
\r
26 private final String instanceName = "async1";
\r
27 private final String poolImplName = "fixed1";
\r
30 public void setUp() {
\r
32 ClassBasedModuleFactory scheduledThreadPoolConfigFactory = createClassBasedCBF(
\r
33 TestingScheduledThreadPoolModule.class, poolImplName);
\r
35 factory = new AsyncEventBusModuleFactory();
\r
36 super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(factory,
\r
37 scheduledThreadPoolConfigFactory));
\r
41 public void testCreateBean() throws InstanceAlreadyExistsException, ValidationException,
\r
42 ConflictingVersionException {
\r
43 ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
\r
45 createAsynced(transaction, instanceName, transaction.createModule(poolImplName, "pool-test"));
\r
46 transaction.validateConfig();
\r
47 CommitStatus status = transaction.commit();
\r
49 assertBeanCount(1, factory.getImplementationName());
\r
50 assertStatus(status, 2, 0, 0);
\r
54 public void testReusingOldInstance() throws InstanceAlreadyExistsException, ConflictingVersionException,
\r
55 ValidationException {
\r
57 ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
\r
58 createAsynced(transaction, instanceName, transaction.createModule(poolImplName, "pool-test"));
\r
60 transaction.commit();
\r
62 assertBeanCount(1, factory.getImplementationName());
\r
64 transaction = configRegistryClient.createTransaction();
\r
65 CommitStatus status = transaction.commit();
\r
67 assertBeanCount(1, factory.getImplementationName());
\r
68 assertStatus(status, 0, 0, 2);
\r
73 public void testInstanceAlreadyExistsException() throws ConflictingVersionException, ValidationException,
\r
74 InstanceAlreadyExistsException {
\r
75 ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
\r
77 ObjectName poolCB = transaction.createModule(poolImplName, "pool-test");
\r
78 createAsynced(transaction, instanceName, poolCB);
\r
79 transaction.commit();
\r
81 transaction = configRegistryClient.createTransaction();
\r
83 createAsynced(transaction, instanceName, poolCB);
\r
85 } catch (InstanceAlreadyExistsException e) {
\r
88 containsString("There is an instance registered with name ModuleIdentifier{factoryName='async-eventbus', instanceName='async1'}"));
\r
92 private ObjectName createAsynced(ConfigTransactionJMXClient transaction, String instanceName, ObjectName threadPool)
\r
93 throws InstanceAlreadyExistsException {
\r
94 ObjectName nameCreated = transaction.createModule(factory.getImplementationName(), instanceName);
\r
95 AsyncEventBusModuleMXBean mxBean = transaction.newMBeanProxy(nameCreated, AsyncEventBusModuleMXBean.class);
\r
96 mxBean.setThreadpool(threadPool);
\r