1 package org.opendaylight.controller.config.yang.bgp.rib.impl;
3 import static org.junit.Assert.assertTrue;
4 import static org.junit.Assert.fail;
6 import javax.management.InstanceAlreadyExistsException;
7 import javax.management.InstanceNotFoundException;
8 import javax.management.ObjectName;
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;
21 public class BGPSessionProposalImplModuleTest extends AbstractConfigTest {
23 private final String instanceName = "bgp-session-prop";
25 private BGPSessionProposalImplModuleFactory factory;
28 public void setUp() throws Exception {
29 this.factory = new BGPSessionProposalImplModuleFactory();
30 super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.factory));
34 public void testValidationExceptionAsNumberNotSet()
35 throws InstanceAlreadyExistsException {
37 ConfigTransactionJMXClient transaction = configRegistryClient
39 createInstance(transaction, this.factory.getImplementationName(), instanceName, null, (short)180, "192.168.1.1");
40 transaction.validateConfig();
42 } catch (ValidationException e) {
43 assertTrue(e.getMessage().contains("AsNumber value is not set."));
48 public void testValidationExceptionAsNumberMinValue()
49 throws InstanceAlreadyExistsException {
51 ConfigTransactionJMXClient transaction = configRegistryClient
53 createInstance(transaction, this.factory.getImplementationName(), instanceName, -1, (short)180, "192.168.1.1");
54 transaction.validateConfig();
56 } catch (ValidationException e) {
57 assertTrue(e.getMessage().contains("AsNumber value must be greather than 0"));
62 public void testValidationExceptionHoldtimerNotSet()
63 throws InstanceAlreadyExistsException {
65 ConfigTransactionJMXClient transaction = configRegistryClient
67 createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, null, "192.168.1.1");
68 transaction.validateConfig();
70 } catch (ValidationException e) {
71 assertTrue(e.getMessage().contains("Holdtimer value is not set."));
76 public void testValidationExceptionHoldtimerMinValue()
77 throws InstanceAlreadyExistsException {
79 ConfigTransactionJMXClient transaction = configRegistryClient
81 createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)2, "192.168.1.1");
82 transaction.validateConfig();
84 } catch (ValidationException e) {
85 assertTrue(e.getMessage().contains("Holdtimer value must be"));
90 public void testValidationExceptionBgpIdNotSet()
91 throws InstanceAlreadyExistsException {
93 ConfigTransactionJMXClient transaction = configRegistryClient
95 createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)180, null);
96 transaction.validateConfig();
98 } catch (ValidationException e) {
99 assertTrue(e.getMessage().contains("BgpId value is not set."));
104 public void testValidationExceptionBgpIdNotIpv4()
105 throws InstanceAlreadyExistsException {
107 ConfigTransactionJMXClient transaction = configRegistryClient
108 .createTransaction();
109 createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)180, "192.168.1.500");
110 transaction.validateConfig();
112 } catch (ValidationException e) {
113 assertTrue(e.getMessage().contains("is not valid IPv4 address"));
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);
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);
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);
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);