1 package org.opendaylight.controller.config.yang.bgp.rib.impl;
3 import static org.junit.Assert.assertTrue;
4 import static org.junit.Assert.fail;
6 import javax.management.InstanceAlreadyExistsException;
7 import javax.management.InstanceNotFoundException;
8 import javax.management.ObjectName;
10 import org.junit.Before;
11 import org.junit.Ignore;
12 import org.junit.Test;
13 import org.opendaylight.controller.config.api.ConflictingVersionException;
14 import org.opendaylight.controller.config.api.ValidationException;
15 import org.opendaylight.controller.config.api.jmx.CommitStatus;
16 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
17 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
18 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
19 import org.opendaylight.controller.config.yang.netty.threadgroup.NettyThreadgroupModuleFactory;
22 public class BGPImplModuleTest extends AbstractConfigTest {
24 private final String instanceName = "bgp-impl1";
26 private BGPImplModuleFactory factory;
28 private BGPSessionProposalImplModuleFactory sessionFacotry;
30 private BGPDispatcherImplModuleFactory dispactherFactory;
32 private NettyThreadgroupModuleFactory threadgropFactory;
34 private RIBExtensionsImplModuleFactory messageFactory;
37 public void setUp() throws Exception {
38 this.factory = new BGPImplModuleFactory();
39 this.dispactherFactory = new BGPDispatcherImplModuleFactory();
40 this.sessionFacotry = new BGPSessionProposalImplModuleFactory();
41 this.threadgropFactory = new NettyThreadgroupModuleFactory();
42 this.messageFactory = new RIBExtensionsImplModuleFactory();
43 super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.factory, this.dispactherFactory, this.sessionFacotry, this.messageFactory, this.threadgropFactory));
47 public void testValidationExceptionPortNotSet()
48 throws InstanceAlreadyExistsException {
50 ConfigTransactionJMXClient transaction = configRegistryClient
52 createInstance(transaction, this.factory.getImplementationName(), instanceName, "localhost", null, sessionFacotry.getImplementationName(), dispactherFactory.getImplementationName(), threadgropFactory.getImplementationName(), messageFactory.getImplementationName());
53 transaction.validateConfig();
55 } catch (ValidationException e) {
56 assertTrue(e.getMessage().contains("Port value is not set."));
61 public void testValidationExceptionPortOutOfRange()
62 throws InstanceAlreadyExistsException {
64 ConfigTransactionJMXClient transaction = configRegistryClient
66 createInstance(transaction, this.factory.getImplementationName(), instanceName, "localhost", -1, sessionFacotry.getImplementationName(), dispactherFactory.getImplementationName(), threadgropFactory.getImplementationName(), messageFactory.getImplementationName());
67 transaction.validateConfig();
69 } catch (ValidationException e) {
70 assertTrue(e.getMessage().contains("is out of range (0-65535)."));
75 public void testValidationExceptionHostNotSet()
76 throws InstanceAlreadyExistsException {
78 ConfigTransactionJMXClient transaction = configRegistryClient
80 createInstance(transaction, this.factory.getImplementationName(), instanceName, null, 1, sessionFacotry.getImplementationName(), dispactherFactory.getImplementationName(), threadgropFactory.getImplementationName(), messageFactory.getImplementationName());
81 transaction.validateConfig();
83 } catch (ValidationException e) {
84 assertTrue(e.getMessage().contains("Host value is not set."));
89 public void testCreateBean() throws Exception {
90 ConfigTransactionJMXClient transaction = configRegistryClient
92 createInstance(transaction, this.factory.getImplementationName(), instanceName, "localhost", 1, sessionFacotry.getImplementationName(), dispactherFactory.getImplementationName(), threadgropFactory.getImplementationName(), messageFactory.getImplementationName());
93 transaction.validateConfig();
94 CommitStatus status = transaction.commit();
95 assertBeanCount(1, factory.getImplementationName());
96 assertStatus(status, 6, 0, 0);
100 public void testReusingOldInstance() throws InstanceAlreadyExistsException,
101 ConflictingVersionException, ValidationException {
102 ConfigTransactionJMXClient transaction = configRegistryClient
103 .createTransaction();
104 createInstance(transaction, this.factory.getImplementationName(), instanceName, "localhost", 1, sessionFacotry.getImplementationName(), dispactherFactory.getImplementationName(), threadgropFactory.getImplementationName(), messageFactory.getImplementationName());
105 transaction.commit();
106 transaction = configRegistryClient.createTransaction();
107 assertBeanCount(1, factory.getImplementationName());
108 CommitStatus status = transaction.commit();
109 assertBeanCount(1, factory.getImplementationName());
110 assertStatus(status, 0, 0, 6);
114 public void testReconfigure() throws InstanceAlreadyExistsException,
115 ConflictingVersionException, ValidationException,
116 InstanceNotFoundException {
117 ConfigTransactionJMXClient transaction = configRegistryClient
118 .createTransaction();
119 createInstance(transaction, this.factory.getImplementationName(), instanceName, "localhost", 1, sessionFacotry.getImplementationName(), dispactherFactory.getImplementationName(), threadgropFactory.getImplementationName(), messageFactory.getImplementationName());
120 transaction.commit();
121 transaction = configRegistryClient.createTransaction();
122 assertBeanCount(1, factory.getImplementationName());
123 BGPImplModuleMXBean mxBean = transaction
124 .newMBeanProxy(transaction.lookupConfigBean(
125 factory.getImplementationName(),
126 instanceName), BGPImplModuleMXBean.class);
128 CommitStatus status = transaction.commit();
129 assertBeanCount(1, factory.getImplementationName());
130 assertStatus(status, 0, 1, 5);
133 public static ObjectName createInstance(final ConfigTransactionJMXClient transaction, final String moduleName,
134 final String instanceName, final String host, final Integer port, final String sessionModuleName, final String dispatcherModuleName, final String threadgroupModuleName, final String messageFactoryModuleName) throws InstanceAlreadyExistsException {
135 ObjectName nameCreated = transaction.createModule(
136 moduleName, instanceName);
137 BGPImplModuleMXBean mxBean = transaction.newMBeanProxy(
138 nameCreated, BGPImplModuleMXBean.class);
139 mxBean.setHost(host);
140 mxBean.setPort(port);
141 mxBean.setBgpProposal(BGPSessionProposalImplModuleTest.createInstance(transaction, sessionModuleName, "bgp-session1", 1, (short)30, "128.0.0.1"));
142 mxBean.setBgpDispatcher(BGPDispatcherImplModuleTest.createInstance(transaction, dispatcherModuleName, "bgp-dispatcher1", threadgroupModuleName, messageFactoryModuleName));