2 * Copyright (c) 2014 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.protocol.pcep.ietf;
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;
25 import org.opendaylight.controller.config.yang.pcep.stateful07.cfg.AbstractStateful07PCEPSessionProposalFactoryModuleFactory;
26 import org.opendaylight.controller.config.yang.pcep.stateful07.cfg.Stateful07PCEPSessionProposalFactoryModuleFactory;
27 import org.opendaylight.controller.config.yang.pcep.stateful07.cfg.Stateful07PCEPSessionProposalFactoryModuleMXBean;
29 public class Stateful07SessionProposalFactoryModuleTest extends AbstractConfigTest {
31 private final String instanceName = "pcep-proposal";
33 private Stateful07PCEPSessionProposalFactoryModuleFactory factory;
36 public void setUp() throws Exception {
37 this.factory = new Stateful07PCEPSessionProposalFactoryModuleFactory();
38 super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.factory));
42 public void testValidationExceptionDeadTimerValueNotSet() throws InstanceAlreadyExistsException {
44 final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
45 createInstance(transaction, this.factory.getImplementationName(), this.instanceName, null, 100, true, true, true);
46 transaction.validateConfig();
48 } catch (final ValidationException e) {
49 assertTrue(e.getMessage().contains("DeadTimerValue value is not set"));
54 public void testValidationExceptionKeepAliveTimerNotSet() throws InstanceAlreadyExistsException {
56 final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
57 createInstance(transaction, this.factory.getImplementationName(), this.instanceName, 400, null, true, true, true);
58 transaction.validateConfig();
60 } catch (final ValidationException e) {
61 assertTrue(e.getMessage().contains("KeepAliveTimerValue value is not set"));
66 public void testValidationExceptionStatefulNotSet() throws InstanceAlreadyExistsException {
68 final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
69 createInstance(transaction, this.factory.getImplementationName(), this.instanceName, 400, 100, null, false, false);
70 transaction.validateConfig();
72 } catch (final ValidationException e) {
73 assertTrue(e.getMessage().contains("Stateful value is not set"));
78 public void testValidationExceptionActiveNotSet() throws InstanceAlreadyExistsException {
80 final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
81 createInstance(transaction, this.factory.getImplementationName(), this.instanceName, 400, 100, true, null, true);
82 transaction.validateConfig();
84 } catch (final ValidationException e) {
85 assertTrue(e.getMessage().contains("Active value is not set"));
90 public void testValidationExceptionInstantiatedNotSet() throws InstanceAlreadyExistsException {
92 final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
93 createInstance(transaction, this.factory.getImplementationName(), this.instanceName, 400, 100, true, true, null);
94 transaction.validateConfig();
96 } catch (final ValidationException e) {
97 assertTrue(e.getMessage().contains("Initiated value is not set"));
102 public void testValidationExceptionKeepAliveTimerMinValue() throws InstanceAlreadyExistsException {
104 final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
105 createInstance(transaction, this.factory.getImplementationName(), this.instanceName, 400, -10, true, true, true);
106 transaction.validateConfig();
108 } catch (final ValidationException e) {
109 assertTrue(e.getMessage().contains("minimum value is 1."));
114 public void testStatefulAfterCommitted() throws InstanceAlreadyExistsException, InstanceNotFoundException, ValidationException, ConflictingVersionException {
115 ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
116 createInstance(transaction, this.factory.getImplementationName(), this.instanceName, 400, 100, false, true, true);
117 transaction.validateConfig();
118 transaction.commit();
119 transaction = this.configRegistryClient.createTransaction();
120 final Stateful07PCEPSessionProposalFactoryModuleMXBean mxBean = transaction.newMBeanProxy(
121 transaction.lookupConfigBean(AbstractStateful07PCEPSessionProposalFactoryModuleFactory.NAME, this.instanceName),
122 Stateful07PCEPSessionProposalFactoryModuleMXBean.class);
123 assertTrue(mxBean.getStateful());
127 public void testCreateBean() throws Exception {
128 final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
129 createInstance(transaction, this.factory.getImplementationName(), this.instanceName, 1, 0, true, true, true);
130 transaction.validateConfig();
131 final CommitStatus status = transaction.commit();
132 assertBeanCount(1, this.factory.getImplementationName());
133 assertStatus(status, 1, 0, 0);
137 public void testReusingOldInstance() throws InstanceAlreadyExistsException, ConflictingVersionException, ValidationException {
138 ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
139 createInstance(transaction, this.factory.getImplementationName(), this.instanceName, 400, 100, true, true, true);
140 transaction.commit();
141 transaction = this.configRegistryClient.createTransaction();
142 assertBeanCount(1, this.factory.getImplementationName());
143 final CommitStatus status = transaction.commit();
144 assertBeanCount(1, this.factory.getImplementationName());
145 assertStatus(status, 0, 0, 1);
149 public void testReconfigure() throws InstanceAlreadyExistsException, ConflictingVersionException, ValidationException,
150 InstanceNotFoundException {
151 ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
152 createInstance(transaction, this.factory.getImplementationName(), this.instanceName, 400, 100, true, true, true);
153 transaction.commit();
154 transaction = this.configRegistryClient.createTransaction();
155 assertBeanCount(1, this.factory.getImplementationName());
156 final Stateful07PCEPSessionProposalFactoryModuleMXBean mxBean = transaction.newMBeanProxy(
157 transaction.lookupConfigBean(AbstractStateful07PCEPSessionProposalFactoryModuleFactory.NAME, this.instanceName),
158 Stateful07PCEPSessionProposalFactoryModuleMXBean.class);
159 final CommitStatus status = transaction.commit();
160 assertBeanCount(1, this.factory.getImplementationName());
161 assertStatus(status, 0, 0, 1);
164 public static ObjectName createInstance(final ConfigTransactionJMXClient transaction, final String moduleName,
165 final String instanceName, final Integer deadTimer, final Integer keepAlive, final Boolean stateful, final Boolean active,
166 final Boolean instant) throws InstanceAlreadyExistsException {
167 final ObjectName nameCreated = transaction.createModule(moduleName, instanceName);
168 final Stateful07PCEPSessionProposalFactoryModuleMXBean mxBean = transaction.newMBeanProxy(nameCreated,
169 Stateful07PCEPSessionProposalFactoryModuleMXBean.class);
170 mxBean.setActive(active);
171 mxBean.setDeadTimerValue(deadTimer);
172 mxBean.setInitiated(instant);
173 mxBean.setKeepAliveTimerValue(keepAlive);
174 mxBean.setStateful(stateful);