Merge "creating a default subnet"
[controller.git] / opendaylight / config / threadpool-config-impl / src / test / java / org / opendaylight / controller / config / threadpool / eventbus / SyncEventBusConfigBeanTest.java
1 package org.opendaylight.controller.config.threadpool.eventbus;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertThat;
5 import static org.junit.Assert.fail;
6 import static org.junit.matchers.JUnitMatchers.containsString;
7
8 import javax.management.InstanceAlreadyExistsException;
9 import javax.management.ObjectName;
10
11 import org.junit.Before;
12 import org.junit.Test;
13 import org.opendaylight.controller.config.api.ConflictingVersionException;
14 import org.opendaylight.controller.config.api.ValidationException;
15 import org.opendaylight.controller.config.api.jmx.CommitStatus;
16 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
17 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
18 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
19 import org.opendaylight.controller.config.yang.threadpool.impl.EventBusModuleFactory;
20
21 public class SyncEventBusConfigBeanTest extends AbstractConfigTest {
22
23     private EventBusModuleFactory factory;
24     private final String instanceName = "sync1";
25
26     @Before
27     public void setUp() {
28
29         factory = new EventBusModuleFactory();
30         super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(factory));
31     }
32
33     @Test
34     public void testCreateBean() throws InstanceAlreadyExistsException, ValidationException,
35             ConflictingVersionException {
36         ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
37
38         createSynced(transaction, instanceName);
39         transaction.validateConfig();
40         CommitStatus status = transaction.commit();
41
42         assertEquals(1, configRegistry.lookupConfigBeans(factory.getImplementationName()).size());
43         assertEquals(1, status.getNewInstances().size());
44         assertEquals(0, status.getRecreatedInstances().size());
45         assertEquals(0, status.getReusedInstances().size());
46         // TODO test dead event collector
47     }
48
49     @Test
50     public void testReusingOldInstance() throws InstanceAlreadyExistsException, ConflictingVersionException,
51             ValidationException {
52
53         ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
54         createSynced(transaction, instanceName);
55
56         transaction.commit();
57
58         assertEquals(1, configRegistry.lookupConfigBeans(factory.getImplementationName()).size());
59
60         transaction = configRegistryClient.createTransaction();
61         CommitStatus status = transaction.commit();
62
63         assertEquals(1, configRegistry.lookupConfigBeans(factory.getImplementationName()).size());
64         assertEquals(0, status.getNewInstances().size());
65         assertEquals(0, status.getRecreatedInstances().size());
66         assertEquals(1, status.getReusedInstances().size());
67
68     }
69
70     @Test
71     public void testInstanceAlreadyExistsException() throws ConflictingVersionException, ValidationException {
72         ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
73
74         try {
75             createSynced(transaction, instanceName);
76             transaction.commit();
77         } catch (InstanceAlreadyExistsException e1) {
78             fail();
79         }
80
81         transaction = configRegistryClient.createTransaction();
82         try {
83             createSynced(transaction, instanceName);
84             fail();
85         } catch (InstanceAlreadyExistsException e) {
86             assertThat(
87                     e.getMessage(),
88                     containsString("There is an instance registered with name ModuleIdentifier{factoryName='eventbus', instanceName='sync1'}"));
89         }
90     }
91
92     private ObjectName createSynced(ConfigTransactionJMXClient transaction, String instanceName)
93             throws InstanceAlreadyExistsException {
94         ObjectName nameCreated = transaction.createModule(factory.getImplementationName(), instanceName);
95         return nameCreated;
96     }
97 }