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
9 package org.opendaylight.controller.config.yang.bgp.rib.impl;
11 import static org.junit.Assert.assertEquals;
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 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.BgpId;
23 public class BGPApplicationPeerModuleTest extends AbstractRIBImplModuleTest {
25 private static final int EXP_INSTANCES = 8;
26 private static final String INSTANCE_NAME = "application-peer-instance";
27 private static final String FACTORY_NAME = BGPApplicationPeerModuleFactory.NAME;
28 private static final ApplicationRibId APP_RIB_ID = new ApplicationRibId("application-peer-test");
29 private static final ApplicationRibId NEW_APP_RIB_ID = new ApplicationRibId("new-application-peer-name");
31 private ObjectName dataBroker = null;
32 private ObjectName ribModule = null;
35 protected List<ModuleFactory> getModuleFactories() {
36 final List<ModuleFactory> moduleFactories = super.getModuleFactories();
37 moduleFactories.add(new BGPApplicationPeerModuleFactory());
38 return moduleFactories;
42 public void testCreateInstance() throws Exception {
43 final CommitStatus status = createApplicationPeerInstance();
44 assertBeanCount(1, FACTORY_NAME);
45 assertStatus(status, EXP_INSTANCES, 0, 0);
49 public void testReusingOldInstance() throws Exception {
50 createApplicationPeerInstance();
51 final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
52 assertBeanCount(1, FACTORY_NAME);
53 final CommitStatus status = transaction.commit();
54 assertBeanCount(1, FACTORY_NAME);
55 assertStatus(status, 0, 0, EXP_INSTANCES);
59 public void testReconfigure() throws Exception {
60 createApplicationPeerInstance();
61 final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
62 assertBeanCount(1, FACTORY_NAME);
63 final BGPApplicationPeerModuleMXBean mxBean = transaction.newMXBeanProxy(transaction.lookupConfigBean(FACTORY_NAME, INSTANCE_NAME),
64 BGPApplicationPeerModuleMXBean.class);
65 mxBean.setApplicationRibId(new ApplicationRibId(NEW_APP_RIB_ID));
66 final CommitStatus status = transaction.commit();
67 assertBeanCount(1, FACTORY_NAME);
68 assertStatus(status, 0, 1, EXP_INSTANCES - 1);
69 assertEquals(NEW_APP_RIB_ID, getApplicationRibId());
72 private CommitStatus createApplicationPeerInstance() throws Exception {
73 return createApplicationPeerInstance(INSTANCE_NAME);
76 private CommitStatus createApplicationPeerInstance(final String instanceName) throws Exception {
77 final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
78 final ObjectName objName = transaction.createModule(BGPApplicationPeerModuleFactory.NAME, instanceName);
79 final BGPApplicationPeerModuleMXBean mxBean = transaction.newMXBeanProxy(objName, BGPApplicationPeerModuleMXBean.class);
80 final ObjectName dataBrokerON = lookupDomAsyncDataBroker(transaction);
81 mxBean.setDataBroker(dataBrokerON);
82 mxBean.setBgpPeerId(new BgpId(BGP_ID));
83 mxBean.setApplicationRibId(APP_RIB_ID);
84 if (this.dataBroker == null) {
85 this.dataBroker = createAsyncDataBrokerInstance(transaction);
87 if (this.ribModule == null) {
88 this.ribModule = createRIBImplModuleInstance(transaction, this.dataBroker);
90 mxBean.setTargetRib(this.ribModule);
91 return transaction.commit();
94 private ApplicationRibId getApplicationRibId() throws InstanceNotFoundException {
95 final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
96 final BGPApplicationPeerModuleMXBean mxBean = transaction.newMXBeanProxy(transaction.lookupConfigBean(FACTORY_NAME, INSTANCE_NAME),
97 BGPApplicationPeerModuleMXBean.class);
98 return mxBean.getApplicationRibId();