BUG-2383 : Application peer rework.
[bgpcep.git] / bgp / rib-impl / src / test / java / org / opendaylight / controller / config / yang / bgp / rib / impl / BGPApplicationPeerModuleTest.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.bgp.rib.impl;
10
11 import static org.junit.Assert.assertEquals;
12
13 import java.util.List;
14 import javax.management.InstanceNotFoundException;
15 import javax.management.ObjectName;
16 import org.junit.Test;
17 import org.opendaylight.controller.config.api.jmx.CommitStatus;
18 import org.opendaylight.controller.config.spi.ModuleFactory;
19 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.ApplicationRibId;
21
22 public class BGPApplicationPeerModuleTest extends AbstractRIBImplModuleTest {
23
24     private static final String INSTANCE_NAME = "application-peer-instance";
25     private static final String FACTORY_NAME = BGPApplicationPeerModuleFactory.NAME;
26     private static final ApplicationRibId APP_RIB_ID = new ApplicationRibId("application-peer-test");
27     private static final ApplicationRibId NEW_APP_RIB_ID = new ApplicationRibId("new-application-peer-name");
28
29     @Override
30     protected List<ModuleFactory> getModuleFactories() {
31         final List<ModuleFactory> moduleFactories = super.getModuleFactories();
32         moduleFactories.add(new BGPApplicationPeerModuleFactory());
33         return moduleFactories;
34     }
35
36     @Test
37     public void testCreateInstance() throws Exception {
38         final CommitStatus status = createApplicationPeerInstance();
39         assertBeanCount(1, FACTORY_NAME);
40         assertStatus(status, 14, 0, 0);
41     }
42
43     @Test
44     public void testReusingOldInstance() throws Exception {
45         createApplicationPeerInstance();
46         final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
47         assertBeanCount(1, FACTORY_NAME);
48         final CommitStatus status = transaction.commit();
49         assertBeanCount(1, FACTORY_NAME);
50         assertStatus(status, 0, 0, 14);
51     }
52
53     @Test
54     public void testReconfigure() throws Exception {
55         createApplicationPeerInstance();
56         final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
57         assertBeanCount(1, FACTORY_NAME);
58         final BGPApplicationPeerModuleMXBean mxBean = transaction.newMXBeanProxy(transaction.lookupConfigBean(FACTORY_NAME, INSTANCE_NAME),
59                 BGPApplicationPeerModuleMXBean.class);
60         mxBean.setApplicationRibId(new ApplicationRibId(NEW_APP_RIB_ID));
61         final CommitStatus status = transaction.commit();
62         assertBeanCount(1, FACTORY_NAME);
63         assertStatus(status, 0, 1, 13);
64         assertEquals(NEW_APP_RIB_ID, getApplicationRibId());
65     }
66
67     private CommitStatus createApplicationPeerInstance() throws Exception {
68         final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
69         final ObjectName objName = transaction.createModule(BGPApplicationPeerModuleFactory.NAME, INSTANCE_NAME);
70         final BGPApplicationPeerModuleMXBean mxBean = transaction.newMXBeanProxy(objName, BGPApplicationPeerModuleMXBean.class);
71         final ObjectName dataBrokerON = lookupDomAsyncDataBroker(transaction);
72         mxBean.setDataBroker(dataBrokerON);
73         mxBean.setBgpPeerId(BGP_ID);
74         mxBean.setApplicationRibId(APP_RIB_ID);
75         mxBean.setTargetRib(createRIBImplModuleInstance(transaction, createAsyncDataBrokerInstance(transaction)));
76         return transaction.commit();
77     }
78
79     private ApplicationRibId getApplicationRibId() throws InstanceNotFoundException {
80         final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
81         final BGPApplicationPeerModuleMXBean mxBean = transaction.newMXBeanProxy(transaction.lookupConfigBean(FACTORY_NAME, INSTANCE_NAME),
82                 BGPApplicationPeerModuleMXBean.class);
83         return mxBean.getApplicationRibId();
84     }
85
86 }