Remove reliance on BGPMessageFactory
[bgpcep.git] / bgp / rib-impl-config / src / test / java / org / opendaylight / controller / config / yang / bgp / rib / impl / BGPImplModuleTest.java
1 package org.opendaylight.controller.config.yang.bgp.rib.impl;
2
3 import static org.junit.Assert.assertTrue;
4 import static org.junit.Assert.fail;
5
6 import javax.management.InstanceAlreadyExistsException;
7 import javax.management.InstanceNotFoundException;
8 import javax.management.ObjectName;
9
10 import org.junit.Before;
11 import org.junit.Ignore;
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.netty.threadgroup.NettyThreadgroupModuleFactory;
20
21 @Ignore
22 public class BGPImplModuleTest extends AbstractConfigTest {
23
24         private final String instanceName = "bgp-impl1";
25
26         private BGPImplModuleFactory factory;
27
28         private BGPSessionProposalImplModuleFactory sessionFacotry;
29
30         private BGPDispatcherImplModuleFactory dispactherFactory;
31
32         private NettyThreadgroupModuleFactory threadgropFactory;
33
34         private RIBExtensionsImplModuleFactory messageFactory;
35
36         @Before
37         public void setUp() throws Exception {
38                 this.factory = new BGPImplModuleFactory();
39                 this.dispactherFactory = new BGPDispatcherImplModuleFactory();
40                 this.sessionFacotry = new BGPSessionProposalImplModuleFactory();
41                 this.threadgropFactory = new NettyThreadgroupModuleFactory();
42                 this.messageFactory = new RIBExtensionsImplModuleFactory();
43                 super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.factory, this.dispactherFactory, this.sessionFacotry, this.messageFactory, this.threadgropFactory));
44         }
45
46         @Test
47         public void testValidationExceptionPortNotSet()
48                         throws InstanceAlreadyExistsException {
49                 try {
50                         ConfigTransactionJMXClient transaction = configRegistryClient
51                                         .createTransaction();
52                         createInstance(transaction, this.factory.getImplementationName(), instanceName, "localhost", null, sessionFacotry.getImplementationName(), dispactherFactory.getImplementationName(), threadgropFactory.getImplementationName(), messageFactory.getImplementationName());
53                         transaction.validateConfig();
54                         fail();
55                 } catch (ValidationException e) {
56                         assertTrue(e.getMessage().contains("Port value is not set."));
57                 }
58         }
59
60         @Test
61         public void testValidationExceptionPortOutOfRange()
62                         throws InstanceAlreadyExistsException {
63                 try {
64                         ConfigTransactionJMXClient transaction = configRegistryClient
65                                         .createTransaction();
66                         createInstance(transaction, this.factory.getImplementationName(), instanceName, "localhost", -1, sessionFacotry.getImplementationName(), dispactherFactory.getImplementationName(), threadgropFactory.getImplementationName(), messageFactory.getImplementationName());
67                         transaction.validateConfig();
68                         fail();
69                 } catch (ValidationException e) {
70                         assertTrue(e.getMessage().contains("is out of range (0-65535)."));
71                 }
72         }
73
74         @Test
75         public void testValidationExceptionHostNotSet()
76                         throws InstanceAlreadyExistsException {
77                 try {
78                         ConfigTransactionJMXClient transaction = configRegistryClient
79                                         .createTransaction();
80                         createInstance(transaction, this.factory.getImplementationName(), instanceName, null, 1, sessionFacotry.getImplementationName(), dispactherFactory.getImplementationName(), threadgropFactory.getImplementationName(), messageFactory.getImplementationName());
81                         transaction.validateConfig();
82                         fail();
83                 } catch (ValidationException e) {
84                         assertTrue(e.getMessage().contains("Host value is not set."));
85                 }
86         }
87
88         @Test
89         public void testCreateBean() throws Exception {
90                 ConfigTransactionJMXClient transaction = configRegistryClient
91                                 .createTransaction();
92                 createInstance(transaction, this.factory.getImplementationName(), instanceName, "localhost", 1, sessionFacotry.getImplementationName(), dispactherFactory.getImplementationName(), threadgropFactory.getImplementationName(), messageFactory.getImplementationName());
93                 transaction.validateConfig();
94                 CommitStatus status = transaction.commit();
95                 assertBeanCount(1, factory.getImplementationName());
96                 assertStatus(status, 6, 0, 0);
97         }
98
99         @Test
100         public void testReusingOldInstance() throws InstanceAlreadyExistsException,
101         ConflictingVersionException, ValidationException {
102                 ConfigTransactionJMXClient transaction = configRegistryClient
103                                 .createTransaction();
104                 createInstance(transaction, this.factory.getImplementationName(), instanceName, "localhost", 1, sessionFacotry.getImplementationName(), dispactherFactory.getImplementationName(), threadgropFactory.getImplementationName(), messageFactory.getImplementationName());
105                 transaction.commit();
106                 transaction = configRegistryClient.createTransaction();
107                 assertBeanCount(1, factory.getImplementationName());
108                 CommitStatus status = transaction.commit();
109                 assertBeanCount(1, factory.getImplementationName());
110                 assertStatus(status, 0, 0, 6);
111         }
112
113         @Test
114         public void testReconfigure() throws InstanceAlreadyExistsException,
115         ConflictingVersionException, ValidationException,
116         InstanceNotFoundException {
117                 ConfigTransactionJMXClient transaction = configRegistryClient
118                                 .createTransaction();
119                 createInstance(transaction, this.factory.getImplementationName(), instanceName, "localhost", 1, sessionFacotry.getImplementationName(), dispactherFactory.getImplementationName(), threadgropFactory.getImplementationName(), messageFactory.getImplementationName());
120                 transaction.commit();
121                 transaction = configRegistryClient.createTransaction();
122                 assertBeanCount(1, factory.getImplementationName());
123                 BGPImplModuleMXBean mxBean = transaction
124                                 .newMBeanProxy(transaction.lookupConfigBean(
125                                                 factory.getImplementationName(),
126                                                 instanceName), BGPImplModuleMXBean.class);
127                 mxBean.setPort(10);
128                 CommitStatus status = transaction.commit();
129                 assertBeanCount(1, factory.getImplementationName());
130                 assertStatus(status, 0, 1, 5);
131         }
132
133         public static ObjectName createInstance(final ConfigTransactionJMXClient transaction, final String moduleName,
134                         final String instanceName, final String host, final Integer port, final String sessionModuleName, final String dispatcherModuleName, final String threadgroupModuleName, final String messageFactoryModuleName) throws InstanceAlreadyExistsException {
135                 ObjectName nameCreated = transaction.createModule(
136                                 moduleName, instanceName);
137                 BGPImplModuleMXBean mxBean = transaction.newMBeanProxy(
138                                 nameCreated, BGPImplModuleMXBean.class);
139                 mxBean.setHost(host);
140                 mxBean.setPort(port);
141                 mxBean.setBgpProposal(BGPSessionProposalImplModuleTest.createInstance(transaction, sessionModuleName, "bgp-session1", 1, (short)30, "128.0.0.1"));
142                 mxBean.setBgpDispatcher(BGPDispatcherImplModuleTest.createInstance(transaction, dispatcherModuleName, "bgp-dispatcher1", threadgroupModuleName, messageFactoryModuleName));
143                 return nameCreated;
144         }
145
146 }