Merge "Fixed rib-impl-config modules tests."
[bgpcep.git] / bgp / rib-impl-config / src / test / java / org / opendaylight / controller / config / yang / bgp / rib / impl / BGPSessionProposalImplModuleTest.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.controller.config.yang.bgp.rib.impl;
9
10 import static org.junit.Assert.assertTrue;
11 import static org.junit.Assert.fail;
12
13 import javax.management.InstanceAlreadyExistsException;
14 import javax.management.InstanceNotFoundException;
15 import javax.management.ObjectName;
16
17 import org.junit.Before;
18 import org.junit.Test;
19 import org.opendaylight.controller.config.api.ConflictingVersionException;
20 import org.opendaylight.controller.config.api.ValidationException;
21 import org.opendaylight.controller.config.api.jmx.CommitStatus;
22 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
23 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
24 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
25
26 public class BGPSessionProposalImplModuleTest extends AbstractConfigTest {
27
28         private final String instanceName = "bgp-session-prop";
29
30         private BGPSessionProposalImplModuleFactory factory;
31         
32         @Before
33         public void setUp() throws Exception {
34                 this.factory = new BGPSessionProposalImplModuleFactory();
35                 super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.factory));
36         }
37         
38         @Test
39         public void testValidationExceptionAsNumberNotSet()
40                         throws InstanceAlreadyExistsException {
41                 try {
42                         ConfigTransactionJMXClient transaction = configRegistryClient
43                                         .createTransaction();
44                         createInstance(transaction, this.factory.getImplementationName(), instanceName, null, (short)180, "192.168.1.1");
45                         transaction.validateConfig();
46                         fail();
47                 } catch (ValidationException e) {
48                         assertTrue(e.getMessage().contains("AsNumber value is not set."));
49                 }
50         }
51         
52         @Test
53         public void testValidationExceptionAsNumberMinValue()
54                         throws InstanceAlreadyExistsException {
55                 try {
56                         ConfigTransactionJMXClient transaction = configRegistryClient
57                                         .createTransaction();
58                         createInstance(transaction, this.factory.getImplementationName(), instanceName, -1, (short)180, "192.168.1.1");
59                         transaction.validateConfig();
60                         fail();
61                 } catch (ValidationException e) {
62                         assertTrue(e.getMessage().contains("AsNumber value must be greather than 0"));
63                 }
64         }
65         
66         @Test
67         public void testValidationExceptionHoldtimerNotSet()
68                         throws InstanceAlreadyExistsException {
69                 try {
70                         ConfigTransactionJMXClient transaction = configRegistryClient
71                                         .createTransaction();
72                         createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, null, "192.168.1.1");
73                         transaction.validateConfig();
74                         fail();
75                 } catch (ValidationException e) {
76                         assertTrue(e.getMessage().contains("Holdtimer value is not set."));
77                 }
78         }
79         
80         @Test
81         public void testValidationExceptionHoldtimerMinValue()
82                         throws InstanceAlreadyExistsException {
83                 try {
84                         ConfigTransactionJMXClient transaction = configRegistryClient
85                                         .createTransaction();
86                         createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)2, "192.168.1.1");
87                         transaction.validateConfig();
88                         fail();
89                 } catch (ValidationException e) {
90                         assertTrue(e.getMessage().contains("Holdtimer value must be"));
91                 }
92         }
93         
94         @Test
95         public void testValidationExceptionBgpIdNotSet()
96                         throws InstanceAlreadyExistsException {
97                 try {
98                         ConfigTransactionJMXClient transaction = configRegistryClient
99                                         .createTransaction();
100                         createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)180, null);
101                         transaction.validateConfig();
102                         fail();
103                 } catch (ValidationException e) {
104                         assertTrue(e.getMessage().contains("BgpId value is not set."));
105                 }
106         }
107         
108         @Test
109         public void testValidationExceptionBgpIdNotIpv4()
110                         throws InstanceAlreadyExistsException {
111                 try {
112                         ConfigTransactionJMXClient transaction = configRegistryClient
113                                         .createTransaction();
114                         createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)180, "192.168.1.500");
115                         transaction.validateConfig();
116                         fail();
117                 } catch (ValidationException e) {
118                         assertTrue(e.getMessage().contains("is not valid IPv4 address"));
119                 }
120         }
121         
122         @Test
123         public void testCreateBean() throws Exception {
124                 ConfigTransactionJMXClient transaction = configRegistryClient
125                                 .createTransaction();
126                 createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)180, "192.168.1.1");
127                 transaction.validateConfig();
128                 CommitStatus status = transaction.commit();
129                 assertBeanCount(1, factory.getImplementationName());
130                 assertStatus(status, 1, 0, 0);
131         }
132         
133         @Test
134         public void testReusingOldInstance() throws InstanceAlreadyExistsException,
135                         ConflictingVersionException, ValidationException {
136                 ConfigTransactionJMXClient transaction = configRegistryClient
137                                 .createTransaction();
138                 createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)180, "192.168.1.1");
139                 transaction.commit();
140                 transaction = configRegistryClient.createTransaction();
141                 assertBeanCount(1, factory.getImplementationName());
142                 CommitStatus status = transaction.commit();
143                 assertBeanCount(1, factory.getImplementationName());
144                 assertStatus(status, 0, 0, 1);
145         }
146
147         @Test
148         public void testReconfigure() throws InstanceAlreadyExistsException,
149                         ConflictingVersionException, ValidationException,
150                         InstanceNotFoundException {
151                 ConfigTransactionJMXClient transaction = configRegistryClient
152                                 .createTransaction();
153                 createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)180, "192.168.1.1");
154                 transaction.commit();
155                 transaction = configRegistryClient.createTransaction();
156                 assertBeanCount(1, factory.getImplementationName());
157                 BGPSessionProposalImplModuleMXBean mxBean = transaction
158                                 .newMBeanProxy(transaction.lookupConfigBean(
159                                                 factory.getImplementationName(),
160                                                 instanceName), BGPSessionProposalImplModuleMXBean.class);
161                 mxBean.setBgpId("192.168.10.10");
162                 CommitStatus status = transaction.commit();
163                 assertBeanCount(1, factory.getImplementationName());
164                 assertStatus(status, 0, 1, 0);
165         }
166         
167         public static ObjectName createInstance(final ConfigTransactionJMXClient transaction, final String moduleName,
168                         final String instanceName, final Integer asNumber, final Short holdtimer, final String bgpId) throws InstanceAlreadyExistsException {
169                 ObjectName nameCreated = transaction.createModule(
170                                 moduleName, instanceName);
171                 BGPSessionProposalImplModuleMXBean mxBean = transaction.newMBeanProxy(
172                                 nameCreated, BGPSessionProposalImplModuleMXBean.class);
173                 mxBean.setAsNumber(asNumber);
174                 mxBean.setBgpId(bgpId);
175                 mxBean.setHoldtimer(holdtimer);
176                 return nameCreated;
177                 
178         }
179 }