0b5867e7281ce8a56b5bca876274622e68008675
[bgpcep.git] / pcep / segment-routing / src / test / java / org / opendaylight / controller / config / yang / pcep / sr / cfg / SrPCEPSessionProposalFactoryModuleTest.java
1 /*
2  * Copyright (c) 2014 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
9 package org.opendaylight.controller.config.yang.pcep.sr.cfg;
10
11 import static org.junit.Assert.assertTrue;
12 import static org.junit.Assert.fail;
13
14 import javax.management.InstanceAlreadyExistsException;
15 import javax.management.ObjectName;
16 import org.junit.Before;
17 import org.junit.Test;
18 import org.opendaylight.controller.config.api.ValidationException;
19 import org.opendaylight.controller.config.api.jmx.CommitStatus;
20 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
21 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
22 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
23 import org.opendaylight.controller.config.yang.pcep.stateful07.cfg.Stateful07PCEPSessionProposalFactoryModuleMXBean;
24
25 public class SrPCEPSessionProposalFactoryModuleTest extends AbstractConfigTest {
26
27     private static final String INSTANCE_NAME = "sr02-session-proposal";
28     private static final String FACTORY_NAME = SrPCEPSessionProposalFactoryModuleFactory.NAME;
29
30     @Before
31     public void setUp() throws Exception {
32         super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext, new SrPCEPSessionProposalFactoryModuleFactory()));
33     }
34
35     @Test
36     public void testValidationExceptionDeadTimerValueNotSet() throws Exception {
37         try {
38             createInstance(null, (short) 100, true, true, true, true);
39             fail();
40         } catch (final ValidationException e) {
41             assertTrue(e.getMessage().contains("DeadTimerValue value is not set"));
42         }
43     }
44
45     @Test
46     public void testValidationExceptionKeepAliveTimerNotSet() throws Exception {
47         try {
48             createInstance((short) 200, null, true, true, true, true);
49             fail();
50         } catch (final ValidationException e) {
51             assertTrue(e.getMessage().contains("KeepAliveTimerValue value is not set"));
52         }
53     }
54
55     @Test
56     public void testValidationExceptionStatefulNotSet() throws Exception {
57         try {
58             createInstance((short) 200, (short) 100, null, false, false, true);
59             fail();
60         } catch (final ValidationException e) {
61             assertTrue(e.getMessage().contains("Stateful value is not set"));
62         }
63     }
64
65     @Test
66     public void testValidationExceptionActiveNotSet() throws Exception {
67         try {
68             createInstance((short) 200, (short) 100, true, null, true, true);
69             fail();
70         } catch (final ValidationException e) {
71             assertTrue(e.getMessage().contains("Active value is not set"));
72         }
73     }
74
75     @Test
76     public void testValidationExceptionInstantiatedNotSet() throws Exception {
77         try {
78             createInstance((short) 200, (short) 100, true, true, null, true);
79             fail();
80         } catch (final ValidationException e) {
81             assertTrue(e.getMessage().contains("Initiated value is not set"));
82         }
83     }
84
85     @Test
86     public void testValidationExceptionKeepAliveTimerMinValue() throws Exception {
87         try {
88             createInstance((short) 200, (short) -10, true, true, true, true);
89             fail();
90         } catch (final ValidationException e) {
91             assertTrue(e.getMessage().contains("minimum value is 1."));
92         }
93     }
94
95     @Test
96     public void testStatefulAfterCommitted() throws Exception {
97         createInstance((short) 200, (short) 100, false, true, true, true);
98         final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
99         final Stateful07PCEPSessionProposalFactoryModuleMXBean mxBean = transaction.newMXBeanProxy(transaction.lookupConfigBean(
100                 FACTORY_NAME, INSTANCE_NAME), Stateful07PCEPSessionProposalFactoryModuleMXBean.class);
101         assertTrue(mxBean.getStateful());
102     }
103
104     @Test
105     public void testValidationExceptionSrCapableValueNotSet() throws Exception {
106         try {
107             createInstance((short) 200, (short) 100, true, true, true, null);
108             fail();
109         } catch (final ValidationException e) {
110             assertTrue(e.getMessage().contains("SrCapable value is not set"));
111         }
112     }
113
114     @Test
115     public void testCreateBean() throws Exception {
116         final CommitStatus status = createInstance();
117         assertBeanCount(1, FACTORY_NAME);
118         assertStatus(status, 1, 0, 0);
119     }
120
121     @Test
122     public void testReusingOldInstance() throws Exception {
123         createInstance();
124         final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
125         assertBeanCount(1, FACTORY_NAME);
126         final CommitStatus status = transaction.commit();
127         assertBeanCount(1, FACTORY_NAME);
128         assertStatus(status, 0, 0, 1);
129     }
130
131     @Test
132     public void testReconfigure() throws Exception {
133         createInstance();
134         final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
135         assertBeanCount(1, FACTORY_NAME);
136         transaction.newMXBeanProxy(transaction.lookupConfigBean(FACTORY_NAME, INSTANCE_NAME),
137                 Stateful07PCEPSessionProposalFactoryModuleMXBean.class);
138         final CommitStatus status = transaction.commit();
139         assertBeanCount(1, FACTORY_NAME);
140         assertStatus(status, 0, 0, 1);
141     }
142
143     private CommitStatus createInstance() throws Exception {
144         return createInstance((short) 200, (short) 100, true, true, true, true);
145     }
146
147     private CommitStatus createInstance(final Short deadTimer, final Short keepAlive,
148             final Boolean stateful, final Boolean active, final Boolean instant, final Boolean srCapable) throws Exception {
149         final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
150         createInstance(transaction, deadTimer, keepAlive, stateful, active, instant, srCapable);
151         return transaction.commit();
152     }
153
154     private ObjectName createInstance(final ConfigTransactionJMXClient transaction, final Short deadTimer, final Short keepAlive,
155             final Boolean stateful, final Boolean active, final Boolean instant, final Boolean srCapable) throws InstanceAlreadyExistsException {
156         final ObjectName nameCreated = transaction.createModule(FACTORY_NAME, INSTANCE_NAME);
157         final SrPCEPSessionProposalFactoryModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated,
158                 SrPCEPSessionProposalFactoryModuleMXBean.class);
159         mxBean.setActive(active);
160         mxBean.setDeadTimerValue(deadTimer);
161         mxBean.setInitiated(instant);
162         mxBean.setKeepAliveTimerValue(keepAlive);
163         mxBean.setStateful(stateful);
164         mxBean.setSrCapable(srCapable);
165         return nameCreated;
166     }
167 }