1 package org.opendaylight.controller.config.yang.test.impl;
3 import com.google.common.collect.Lists;
4 import junit.framework.Assert;
5 import org.junit.Before;
7 import org.opendaylight.controller.config.api.ConflictingVersionException;
8 import org.opendaylight.controller.config.api.ValidationException;
9 import org.opendaylight.controller.config.api.jmx.CommitStatus;
10 import org.opendaylight.controller.config.api.jmx.ObjectNameUtil;
11 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
12 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
13 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
15 import javax.management.InstanceAlreadyExistsException;
16 import javax.management.ObjectName;
17 import java.util.ArrayList;
18 import java.util.List;
20 public class NetconfTestImplModuleTest extends AbstractConfigTest {
22 public static final String TESTING_DEP_PREFIX = "testing-dep";
23 private NetconfTestImplModuleFactory factory;
24 private final String instanceName = "n1";
29 factory = new NetconfTestImplModuleFactory();
30 super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(factory,
31 new DepTestImplModuleFactory()));
35 public void testDependencyList() throws InstanceAlreadyExistsException, ValidationException,
36 ConflictingVersionException {
37 ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
39 ObjectName on = createInstance(transaction, instanceName, 4);
40 transaction.validateConfig();
41 CommitStatus status = transaction.commit();
43 assertBeanCount(1, factory.getImplementationName());
44 assertBeanCount(4 + 1, DepTestImplModuleFactory.NAME);
45 assertStatus(status, 1 + 4 + 1, 0, 0);
47 transaction = configRegistryClient.createTransaction();
49 NetconfTestImplModuleMXBean proxy = transaction.newMXBeanProxy(ObjectNameUtil.withoutTransactionName(on),
50 NetconfTestImplModuleMXBean.class);
51 proxy.getComplexList();
52 List<ObjectName> testingDeps = proxy.getTestingDeps();
53 ObjectName testingDep = proxy.getTestingDep();
55 Assert.assertEquals(TESTING_DEP_PREFIX, ObjectNameUtil.getInstanceName(testingDep));
56 assertTestingDeps(testingDeps, 4);
58 transaction.abortConfig();
61 private void assertTestingDeps(List<ObjectName> testingDeps, int i) {
62 Assert.assertEquals(i, testingDeps.size());
65 for (ObjectName testingDep : testingDeps) {
66 Assert.assertEquals(TESTING_DEP_PREFIX + Integer.toString(c++), ObjectNameUtil.getInstanceName(testingDep));
71 private ObjectName createInstance(ConfigTransactionJMXClient transaction, String instanceName, int depsCount)
72 throws InstanceAlreadyExistsException {
73 ObjectName nameCreated = transaction.createModule(factory.getImplementationName(), instanceName);
74 NetconfTestImplModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, NetconfTestImplModuleMXBean.class);
76 ObjectName dep = transaction.createModule(DepTestImplModuleFactory.NAME, TESTING_DEP_PREFIX);
77 mxBean.setTestingDep(dep);
79 ArrayList<ObjectName> testingDeps = Lists.newArrayList();
80 for (int i = 0; i < depsCount; i++) {
81 dep = transaction.createModule(DepTestImplModuleFactory.NAME, TESTING_DEP_PREFIX + Integer.toString(i + 1));
84 mxBean.setTestingDeps(testingDeps);