Introduce ServiceLoader consumer context
[bgpcep.git] / bgp / rib-impl-config / src / test / java / org / opendaylight / controller / config / yang / bgp / rib / impl / BGPSessionProposalImplModuleTest.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
20 @Ignore
21 public class BGPSessionProposalImplModuleTest extends AbstractConfigTest {
22
23         private final String instanceName = "bgp-session-prop";
24
25         private BGPSessionProposalImplModuleFactory factory;
26         
27         @Before
28         public void setUp() throws Exception {
29                 this.factory = new BGPSessionProposalImplModuleFactory();
30                 super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.factory));
31         }
32         
33         @Test
34         public void testValidationExceptionAsNumberNotSet()
35                         throws InstanceAlreadyExistsException {
36                 try {
37                         ConfigTransactionJMXClient transaction = configRegistryClient
38                                         .createTransaction();
39                         createInstance(transaction, this.factory.getImplementationName(), instanceName, null, (short)180, "192.168.1.1");
40                         transaction.validateConfig();
41                         fail();
42                 } catch (ValidationException e) {
43                         assertTrue(e.getMessage().contains("AsNumber value is not set."));
44                 }
45         }
46         
47         @Test
48         public void testValidationExceptionAsNumberMinValue()
49                         throws InstanceAlreadyExistsException {
50                 try {
51                         ConfigTransactionJMXClient transaction = configRegistryClient
52                                         .createTransaction();
53                         createInstance(transaction, this.factory.getImplementationName(), instanceName, -1, (short)180, "192.168.1.1");
54                         transaction.validateConfig();
55                         fail();
56                 } catch (ValidationException e) {
57                         assertTrue(e.getMessage().contains("AsNumber value must be greather than 0"));
58                 }
59         }
60         
61         @Test
62         public void testValidationExceptionHoldtimerNotSet()
63                         throws InstanceAlreadyExistsException {
64                 try {
65                         ConfigTransactionJMXClient transaction = configRegistryClient
66                                         .createTransaction();
67                         createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, null, "192.168.1.1");
68                         transaction.validateConfig();
69                         fail();
70                 } catch (ValidationException e) {
71                         assertTrue(e.getMessage().contains("Holdtimer value is not set."));
72                 }
73         }
74         
75         @Test
76         public void testValidationExceptionHoldtimerMinValue()
77                         throws InstanceAlreadyExistsException {
78                 try {
79                         ConfigTransactionJMXClient transaction = configRegistryClient
80                                         .createTransaction();
81                         createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)2, "192.168.1.1");
82                         transaction.validateConfig();
83                         fail();
84                 } catch (ValidationException e) {
85                         assertTrue(e.getMessage().contains("Holdtimer value must be"));
86                 }
87         }
88         
89         @Test
90         public void testValidationExceptionBgpIdNotSet()
91                         throws InstanceAlreadyExistsException {
92                 try {
93                         ConfigTransactionJMXClient transaction = configRegistryClient
94                                         .createTransaction();
95                         createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)180, null);
96                         transaction.validateConfig();
97                         fail();
98                 } catch (ValidationException e) {
99                         assertTrue(e.getMessage().contains("BgpId value is not set."));
100                 }
101         }
102         
103         @Test
104         public void testValidationExceptionBgpIdNotIpv4()
105                         throws InstanceAlreadyExistsException {
106                 try {
107                         ConfigTransactionJMXClient transaction = configRegistryClient
108                                         .createTransaction();
109                         createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)180, "192.168.1.500");
110                         transaction.validateConfig();
111                         fail();
112                 } catch (ValidationException e) {
113                         assertTrue(e.getMessage().contains("is not valid IPv4 address"));
114                 }
115         }
116         
117         @Test
118         public void testCreateBean() throws Exception {
119                 ConfigTransactionJMXClient transaction = configRegistryClient
120                                 .createTransaction();
121                 createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)180, "192.168.1.1");
122                 transaction.validateConfig();
123                 CommitStatus status = transaction.commit();
124                 assertBeanCount(1, factory.getImplementationName());
125                 assertStatus(status, 1, 0, 0);
126         }
127         
128         @Test
129         public void testReusingOldInstance() throws InstanceAlreadyExistsException,
130                         ConflictingVersionException, ValidationException {
131                 ConfigTransactionJMXClient transaction = configRegistryClient
132                                 .createTransaction();
133                 createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)180, "192.168.1.1");
134                 transaction.commit();
135                 transaction = configRegistryClient.createTransaction();
136                 assertBeanCount(1, factory.getImplementationName());
137                 CommitStatus status = transaction.commit();
138                 assertBeanCount(1, factory.getImplementationName());
139                 assertStatus(status, 0, 0, 1);
140         }
141
142         @Test
143         public void testReconfigure() throws InstanceAlreadyExistsException,
144                         ConflictingVersionException, ValidationException,
145                         InstanceNotFoundException {
146                 ConfigTransactionJMXClient transaction = configRegistryClient
147                                 .createTransaction();
148                 createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)180, "192.168.1.1");
149                 transaction.commit();
150                 transaction = configRegistryClient.createTransaction();
151                 assertBeanCount(1, factory.getImplementationName());
152                 BGPSessionProposalImplModuleMXBean mxBean = transaction
153                                 .newMBeanProxy(transaction.lookupConfigBean(
154                                                 factory.getImplementationName(),
155                                                 instanceName), BGPSessionProposalImplModuleMXBean.class);
156                 mxBean.setBgpId("192.168.10.10");
157                 CommitStatus status = transaction.commit();
158                 assertBeanCount(1, factory.getImplementationName());
159                 assertStatus(status, 0, 1, 0);
160         }
161         
162         public static ObjectName createInstance(final ConfigTransactionJMXClient transaction, final String moduleName,
163                         final String instanceName, final Integer asNumber, final Short holdtimer, final String bgpId) throws InstanceAlreadyExistsException {
164                 ObjectName nameCreated = transaction.createModule(
165                                 moduleName, instanceName);
166                 BGPSessionProposalImplModuleMXBean mxBean = transaction.newMBeanProxy(
167                                 nameCreated, BGPSessionProposalImplModuleMXBean.class);
168                 mxBean.setAsNumber(asNumber);
169                 mxBean.setBgpId(bgpId);
170                 mxBean.setHoldtimer(holdtimer);
171                 return nameCreated;
172                 
173         }
174 }