2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.controller.config.yang.bgp.rib.impl;
10 import static org.junit.Assert.assertTrue;
11 import static org.junit.Assert.fail;
13 import javax.management.InstanceAlreadyExistsException;
14 import javax.management.InstanceNotFoundException;
15 import javax.management.ObjectName;
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;
26 public class BGPSessionProposalImplModuleTest extends AbstractConfigTest {
28 private final String instanceName = "bgp-session-prop";
30 private BGPSessionProposalImplModuleFactory factory;
33 public void setUp() throws Exception {
34 this.factory = new BGPSessionProposalImplModuleFactory();
35 super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.factory));
39 public void testValidationExceptionAsNumberNotSet()
40 throws InstanceAlreadyExistsException {
42 ConfigTransactionJMXClient transaction = configRegistryClient
44 createInstance(transaction, this.factory.getImplementationName(), instanceName, null, (short)180, "192.168.1.1");
45 transaction.validateConfig();
47 } catch (ValidationException e) {
48 assertTrue(e.getMessage().contains("AsNumber value is not set."));
53 public void testValidationExceptionAsNumberMinValue()
54 throws InstanceAlreadyExistsException {
56 ConfigTransactionJMXClient transaction = configRegistryClient
58 createInstance(transaction, this.factory.getImplementationName(), instanceName, -1, (short)180, "192.168.1.1");
59 transaction.validateConfig();
61 } catch (ValidationException e) {
62 assertTrue(e.getMessage().contains("AsNumber value must be greather than 0"));
67 public void testValidationExceptionHoldtimerNotSet()
68 throws InstanceAlreadyExistsException {
70 ConfigTransactionJMXClient transaction = configRegistryClient
72 createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, null, "192.168.1.1");
73 transaction.validateConfig();
75 } catch (ValidationException e) {
76 assertTrue(e.getMessage().contains("Holdtimer value is not set."));
81 public void testValidationExceptionHoldtimerMinValue()
82 throws InstanceAlreadyExistsException {
84 ConfigTransactionJMXClient transaction = configRegistryClient
86 createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)2, "192.168.1.1");
87 transaction.validateConfig();
89 } catch (ValidationException e) {
90 assertTrue(e.getMessage().contains("Holdtimer value must be"));
95 public void testValidationExceptionBgpIdNotSet()
96 throws InstanceAlreadyExistsException {
98 ConfigTransactionJMXClient transaction = configRegistryClient
100 createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)180, null);
101 transaction.validateConfig();
103 } catch (ValidationException e) {
104 assertTrue(e.getMessage().contains("BgpId value is not set."));
109 public void testValidationExceptionBgpIdNotIpv4()
110 throws InstanceAlreadyExistsException {
112 ConfigTransactionJMXClient transaction = configRegistryClient
113 .createTransaction();
114 createInstance(transaction, this.factory.getImplementationName(), instanceName, 1, (short)180, "192.168.1.500");
115 transaction.validateConfig();
117 } catch (ValidationException e) {
118 assertTrue(e.getMessage().contains("is not valid IPv4 address"));
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);
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);
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);
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);