Migrate AbstractConfigTest subclasses from CodecRegistry
[bgpcep.git] / bgp / rib-impl / src / test / java / org / opendaylight / controller / config / yang / bgp / rib / impl / BGPTableTypeImplModuleTest.java
1 package org.opendaylight.controller.config.yang.bgp.rib.impl;
2
3 import static org.junit.Assert.assertTrue;
4 import static org.junit.Assert.fail;
5 import static org.mockito.Mockito.doReturn;
6
7 import javax.management.InstanceAlreadyExistsException;
8 import javax.management.ObjectName;
9 import org.junit.Before;
10 import org.junit.Test;
11 import org.opendaylight.controller.config.api.ConflictingVersionException;
12 import org.opendaylight.controller.config.api.IdentityAttributeRef;
13 import org.opendaylight.controller.config.api.ValidationException;
14 import org.opendaylight.controller.config.api.jmx.CommitStatus;
15 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
16 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
17 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv6AddressFamily;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.MplsLabeledVpnSubsequentAddressFamily;
21 import org.opendaylight.yangtools.sal.binding.generator.util.BindingRuntimeContext;
22
23 public class BGPTableTypeImplModuleTest extends AbstractConfigTest {
24
25     private static final String INSTANCE_NAME = "bgp-table-type-impl";
26     private static final String FACTORY_NAME = BGPTableTypeImplModuleFactory.NAME;
27
28     private IdentityAttributeRef afiRef = new IdentityAttributeRef(Ipv4AddressFamily.QNAME.toString());
29     private IdentityAttributeRef safiRef = new IdentityAttributeRef(MplsLabeledVpnSubsequentAddressFamily.QNAME.toString());
30
31     @Before
32     public void setUp() throws Exception {
33         super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext, new BGPTableTypeImplModuleFactory()));
34     }
35
36     @Override
37     protected BindingRuntimeContext getBindingRuntimeContext() {
38         final BindingRuntimeContext ret = super.getBindingRuntimeContext();
39         doReturn(Ipv4AddressFamily.class).when(ret).getIdentityClass(Ipv4AddressFamily.QNAME);
40         doReturn(MplsLabeledVpnSubsequentAddressFamily.class).when(ret).getIdentityClass(MplsLabeledVpnSubsequentAddressFamily.QNAME);
41         doReturn(Ipv6AddressFamily.class).when(ret).getIdentityClass(Ipv6AddressFamily.QNAME);
42         return ret;
43     }
44
45     @Test
46     public void testValidationExceptionAfiNotSet() throws InstanceAlreadyExistsException, ConflictingVersionException {
47         try {
48             createInstance(null, safiRef);
49             fail();
50         } catch (ValidationException e) {
51             assertTrue(e.getMessage().contains("Afi value is not set."));
52         }
53     }
54
55     @Test
56     public void testValidationExceptionSafiNotSet() throws InstanceAlreadyExistsException, ConflictingVersionException {
57         try {
58             createInstance(afiRef, null);
59             fail();
60         } catch (ValidationException e) {
61             assertTrue(e.getMessage().contains("Safi value is not set."));
62         }
63     }
64
65     @Test
66     public void testCreateBean() throws Exception {
67         final CommitStatus status = createInstance();
68         assertBeanCount(1, FACTORY_NAME);
69         assertStatus(status, 1, 0, 0);
70     }
71
72     @Test
73     public void testReusingOldInstance() throws Exception {
74         createInstance();
75         final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
76         assertBeanCount(1, FACTORY_NAME);
77         final CommitStatus status = transaction.commit();
78         assertBeanCount(1, FACTORY_NAME);
79         assertStatus(status, 0, 0, 1);
80     }
81
82     @Test
83     public void testReconfigure() throws Exception {
84         createInstance();
85         final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
86         assertBeanCount(1, FACTORY_NAME);
87         final BGPTableTypeImplModuleMXBean mxBean = transaction.newMXBeanProxy(transaction.lookupConfigBean(FACTORY_NAME, INSTANCE_NAME),
88                 BGPTableTypeImplModuleMXBean.class);
89         mxBean.setAfi(new IdentityAttributeRef(Ipv6AddressFamily.QNAME.toString()));
90         final CommitStatus status = transaction.commit();
91         assertBeanCount(1, FACTORY_NAME);
92         assertStatus(status, 0, 1, 0);
93     }
94
95     private CommitStatus createInstance() throws Exception {
96         return createInstance(afiRef, safiRef);
97     }
98
99     private CommitStatus createInstance(final IdentityAttributeRef afiRef, final IdentityAttributeRef safiRef)
100             throws ConflictingVersionException, ValidationException, InstanceAlreadyExistsException {
101         ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
102         createTableInstance(transaction, afiRef, safiRef);
103         return transaction.commit();
104     }
105
106     public static ObjectName createTableInstance(final ConfigTransactionJMXClient transaction, final IdentityAttributeRef afiRef,
107             final IdentityAttributeRef safiRef) throws InstanceAlreadyExistsException {
108         final ObjectName nameCreated = transaction.createModule(FACTORY_NAME, INSTANCE_NAME);
109         BGPTableTypeImplModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, BGPTableTypeImplModuleMXBean.class);
110
111         mxBean.setAfi(afiRef);
112         mxBean.setSafi(safiRef);
113         return nameCreated;
114     }
115
116 }