From d431c454a362865e1b504ecc87f199836403b0e8 Mon Sep 17 00:00:00 2001 From: Maros Marsalek Date: Thu, 28 Nov 2013 10:09:24 +0100 Subject: [PATCH] Add running configuration data to get netconf operation response Change-Id: Ia268965a9ef64944138c3b6eb7313fd1ca606da4 Signed-off-by: Maros Marsalek --- .../yang/test/impl/NetconfTestImplModule.java | 117 ++++++++- .../mapping/config/Config.java | 15 +- .../mapping/runtime/ModuleRuntime.java | 21 +- .../mapping/runtime/Runtime.java | 58 ++++- .../operations/get/Get.java | 18 +- .../operations/getconfig/GetConfig.java | 2 +- .../NetconfMappingTest.java | 224 ++---------------- .../controller/netconf/it/NetconfITTest.java | 31 +-- .../resources/netconfMessages/editConfig.xml | 2 + .../test/resources/netconfMessages/rpc.xml | 2 +- .../resources/netconfMessages/rpcInner.xml | 2 +- .../netconfMessages/rpcInnerInner.xml | 2 +- .../rpcInnerInner_complex_output.xml | 2 +- 13 files changed, 215 insertions(+), 281 deletions(-) diff --git a/opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/NetconfTestImplModule.java b/opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/NetconfTestImplModule.java index 43f6200ac4..ae86d42d8e 100644 --- a/opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/NetconfTestImplModule.java +++ b/opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/NetconfTestImplModule.java @@ -10,6 +10,10 @@ package org.opendaylight.controller.config.yang.test.impl; +import com.google.common.collect.Lists; + +import java.util.List; + /** * */ @@ -38,11 +42,118 @@ public final class NetconfTestImplModule @Override public java.lang.AutoCloseable createInstance() { - return new AutoCloseable() { + return registerRuntimeBeans(); + } + + private NetconfTestImplRuntimeRegistration registerRuntimeBeans() { + NetconfTestImplRuntimeRegistration reg = getRootRuntimeBeanRegistratorWrapper().register(new NetconfTestImplRuntimeMXBean() { + + @Override + public Long getCreatedSessions() { + return getSimpleLong(); + } + @Override - public void close() throws Exception { + public Asdf getAsdf() { + final Asdf asdf = new Asdf(); + asdf.setSimpleString("asdf"); + return asdf; } - }; + + @Override + public String noArg(final String arg1) { + return arg1.toUpperCase(); + } + + }); + + for (int i = 0; i < getSimpleShort(); i++) { + final int finalI = i; + + reg.register(new InnerRunningDataAdditionalRuntimeMXBean() { + @Override + public Integer getSimpleInt3() { + return getSimpleTest(); + } + + @Override + public Deep4 getDeep4() { + final Deep4 d = new Deep4(); + d.setBoool(false); + return d; + } + + @Override + public String getSimpleString() { + return Integer.toString(finalI); + } + + @Override + public void noArgInner() { + } + }); + + InnerRunningDataRuntimeRegistration innerReg = reg.register(new InnerRunningDataRuntimeMXBean() { + @Override + public Integer getSimpleInt3() { + return finalI; + } + + @Override + public Deep2 getDeep2() { + return new Deep2(); + } + }); + + for (int j = 0; j < getSimpleShort(); j++) { + final int finalJ = j; + innerReg.register(new InnerInnerRunningDataRuntimeMXBean() { + @Override + public List getNotStateBean() { + NotStateBean b1 = new NotStateBean(); + b1.setElement("not state"); + return Lists.newArrayList(b1); + } + + @Override + public Integer getSimpleInt3() { + return finalJ; + } + + @Override + public Deep3 getDeep3() { + return new Deep3(); + } + + @Override + public List getListOfStrings() { + return Lists.newArrayList("l1", "l2"); + } + + @Override + public List listOutput() { + return Lists.newArrayList(new RetValList()); + } + + @Override + public Boolean noArgInnerInner(Integer integer, Boolean aBoolean) { + return aBoolean; + } + + @Override + public RetValContainer containerOutput() { + return new RetValContainer(); + } + + @Override + public List leafListOutput() { + return Lists.newArrayList("1", "2"); + } + }); + } + } + + return reg; } } diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/config/Config.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/config/Config.java index f96b3acf20..f33a32271f 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/config/Config.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/config/Config.java @@ -52,21 +52,24 @@ public class Config { this.moduleNamesToConfigs = Collections.unmodifiableMap(moduleNamesToConfigs); } - private Map>> getMappedInstances(Set instancesToMap, - Services serviceTracker) { + public static Map>> getMappedInstances(Set instancesToMap, + Services serviceTracker, Map> configs) { Multimap moduleToInstances = mapInstancesToModules(instancesToMap); Map>> retVal = Maps.newLinkedHashMap(); - for (String namespace : moduleConfigs.keySet()) { + for (String namespace : configs.keySet()) { Map> innerRetVal = Maps.newHashMap(); - for (Entry mbeEntry : moduleConfigs.get(namespace).entrySet()) { + for (Entry mbeEntry : configs.get(namespace).entrySet()) { String moduleName = mbeEntry.getKey(); Collection instances = moduleToInstances.get(moduleName); + // TODO, this code does not support same module names from different namespaces + // Namespace should be present in ObjectName + if (instances == null) continue; @@ -86,7 +89,7 @@ public class Config { return retVal; } - private void addServices(Services serviceTracker, Collection instances, + private static void addServices(Services serviceTracker, Collection instances, Multimap providedServices) { for (ObjectName instanceOn : instances) { for (Entry serviceName : providedServices.entries()) { @@ -115,7 +118,7 @@ public class Config { Services serviceTracker = new Services(); Map>> moduleToInstances = getMappedInstances(instancesToMap, - serviceTracker); + serviceTracker, moduleConfigs); Element root = dataElement; if (maybeNamespace.isPresent()) { diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/runtime/ModuleRuntime.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/runtime/ModuleRuntime.java index 4dbfba119f..11e97ebdbb 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/runtime/ModuleRuntime.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/runtime/ModuleRuntime.java @@ -9,8 +9,8 @@ package org.opendaylight.controller.netconf.confignetconfconnector.mapping.runtime; import com.google.common.collect.Sets; -import org.opendaylight.controller.netconf.util.xml.XmlNetconfConstants; -import org.opendaylight.controller.netconf.util.xml.XmlUtil; +import org.opendaylight.controller.netconf.confignetconfconnector.mapping.config.ModuleConfig; +import org.opendaylight.controller.netconf.confignetconfconnector.mapping.config.Services; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -40,17 +40,10 @@ public class ModuleRuntime { throw new IllegalStateException("Root runtime bean not found among " + runtimeBeanOns); } - public Element toXml(String namespace, String instanceName, Collection runtimeBeanOns, Document document) { - Element moduleElement = document.createElement(XmlNetconfConstants.MODULE_KEY); + public Element toXml(String namespace, Collection runtimeBeanOns, + Document document, ModuleConfig moduleConfig, ObjectName configBeanON, Services serviceTracker) { - final String prefix = getPrefix(namespace); - Element typeElement = XmlUtil.createPrefixedTextElement(document, XmlNetconfConstants.TYPE_KEY, prefix, - moduleName); - XmlUtil.addPrefixedNamespaceAttr(typeElement, prefix, namespace); - moduleElement.appendChild(typeElement); - - Element nameElement = XmlUtil.createTextElement(document, XmlNetconfConstants.NAME_KEY, instanceName); - moduleElement.appendChild(nameElement); + Element moduleElement = moduleConfig.toXml(configBeanON, serviceTracker, document, namespace); ObjectName rootName = findRoot(runtimeBeanOns); @@ -62,8 +55,4 @@ public class ModuleRuntime { return moduleElement; } - private String getPrefix(String namespace) { - return XmlNetconfConstants.PREFIX; - } - } diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/runtime/Runtime.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/runtime/Runtime.java index 8af1e0ee90..64f295a4d8 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/runtime/Runtime.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/runtime/Runtime.java @@ -12,26 +12,37 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.Maps; import com.google.common.collect.Multimap; import org.opendaylight.controller.config.api.jmx.ObjectNameUtil; +import org.opendaylight.controller.netconf.confignetconfconnector.mapping.config.Config; +import org.opendaylight.controller.netconf.confignetconfconnector.mapping.config.ModuleConfig; +import org.opendaylight.controller.netconf.confignetconfconnector.mapping.config.Services; import org.opendaylight.controller.netconf.util.xml.XmlNetconfConstants; import org.opendaylight.controller.netconf.util.xml.XmlUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; import javax.management.ObjectName; +import java.util.Collection; import java.util.Map; import java.util.Set; public class Runtime { private final Map> moduleRuntimes; + private final Map> moduleConfigs; - public Runtime(Map> moduleRuntimes) { + public Runtime(Map> moduleRuntimes, + Map> moduleConfigs) { this.moduleRuntimes = moduleRuntimes; + this.moduleConfigs = moduleConfigs; } private Map> mapInstancesToModules(Set instancesToMap) { Map> retVal = Maps.newHashMap(); + // TODO map to namepsace, prevent module name conflicts + // this code does not support same module names from different namespaces + // Namespace should be present in ObjectName + for (ObjectName objectName : instancesToMap) { String moduleName = ObjectNameUtil.getFactoryName(objectName); @@ -49,7 +60,9 @@ public class Runtime { return retVal; } - public Element toXml(Set instancesToMap, Document document) { + public Element toXml(Set instancesToMap, Set configBeans, Document document) { + Services serviceTracker = new Services(); + Element root = document.createElement(XmlNetconfConstants.DATA_KEY); Element modulesElement = document.createElement(XmlNetconfConstants.MODULES_KEY); @@ -57,19 +70,30 @@ public class Runtime { XmlNetconfConstants.URN_OPENDAYLIGHT_PARAMS_XML_NS_YANG_CONTROLLER_CONFIG); root.appendChild(modulesElement); - Map> moduleToInstances = mapInstancesToModules(instancesToMap); + Map> moduleToRuntimeInstance = mapInstancesToModules(instancesToMap); + Map>> moduleToConfigInstance = Config.getMappedInstances( + configBeans, serviceTracker, moduleConfigs); + + for (String localNamespace : moduleConfigs.keySet()) { + + Map> instanceToMbe = moduleToConfigInstance.get(localNamespace); - for (String localNamespace : moduleRuntimes.keySet()) { - for (String moduleName : moduleRuntimes.get(localNamespace).keySet()) { - Multimap instanceToRbe = moduleToInstances.get(moduleName); + for (String moduleName : moduleConfigs.get(localNamespace).keySet()) { + Multimap instanceToRbe = moduleToRuntimeInstance.get(moduleName); - if (instanceToRbe == null) - continue; + for (ObjectName instanceON : instanceToMbe.get(moduleName)) { + String instanceName = ObjectNameUtil.getInstanceName(instanceON); - for (String instanceName : instanceToRbe.keySet()) { - ModuleRuntime moduleRuntime = moduleRuntimes.get(localNamespace).get(moduleName); - Element innerXml = moduleRuntime.toXml(localNamespace, instanceName, instanceToRbe.get(instanceName), document); - modulesElement.appendChild(innerXml); + Element runtimeXml; + ModuleConfig moduleConfig = moduleConfigs.get(localNamespace).get(moduleName); + if(instanceToRbe==null || instanceToRbe.containsKey(instanceName) == false) { + runtimeXml = moduleConfig.toXml(instanceON, serviceTracker, document, localNamespace); + } else { + ModuleRuntime moduleRuntime = moduleRuntimes.get(localNamespace).get(moduleName); + runtimeXml = moduleRuntime.toXml(localNamespace, instanceToRbe.get(instanceName), document, + moduleConfig, instanceON, serviceTracker); + } + modulesElement.appendChild(runtimeXml); } } @@ -78,4 +102,14 @@ public class Runtime { return root; } + private ObjectName findInstance(Collection objectNames, String instanceName) { + for (ObjectName objectName : objectNames) { + String name = ObjectNameUtil.getInstanceName(objectName); + if(name.equals(instanceName)) + return objectName; + } + + throw new UnsupportedOperationException("Unable to find config bean instance under name " + instanceName + " among " + objectNames); + } + } diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/get/Get.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/get/Get.java index b93843d28e..84a9f39520 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/get/Get.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/get/Get.java @@ -18,10 +18,13 @@ import org.opendaylight.controller.netconf.api.NetconfDocumentedException.ErrorS import org.opendaylight.controller.netconf.api.NetconfDocumentedException.ErrorTag; import org.opendaylight.controller.netconf.api.NetconfDocumentedException.ErrorType; import org.opendaylight.controller.netconf.confignetconfconnector.mapping.config.InstanceConfig; +import org.opendaylight.controller.netconf.confignetconfconnector.mapping.config.ModuleConfig; import org.opendaylight.controller.netconf.confignetconfconnector.mapping.runtime.InstanceRuntime; import org.opendaylight.controller.netconf.confignetconfconnector.mapping.runtime.ModuleRuntime; import org.opendaylight.controller.netconf.confignetconfconnector.mapping.runtime.Runtime; import org.opendaylight.controller.netconf.confignetconfconnector.operations.AbstractConfigNetconfOperation; +import org.opendaylight.controller.netconf.confignetconfconnector.operations.Datastore; +import org.opendaylight.controller.netconf.confignetconfconnector.operations.getconfig.GetConfig; import org.opendaylight.controller.netconf.util.xml.XmlElement; import org.opendaylight.controller.netconf.util.xml.XmlNetconfConstants; import org.slf4j.Logger; @@ -129,12 +132,21 @@ public class Get extends AbstractConfigNetconfOperation { throw new NetconfDocumentedException(e.getMessage(), e, ErrorType.application, ErrorTag.operation_not_supported, ErrorSeverity.error, errorInfo); } + final Set runtimeBeans = configRegistryClient.lookupRuntimeBeans(); - final Map> moduleMappings = createModuleRuntimes(configRegistryClient, + + //Transaction provider required only for candidate datastore + final Set configBeans = Datastore.getInstanceQueryStrategy(Datastore.running, null) + .queryInstances(configRegistryClient); + + final Map> moduleRuntimes = createModuleRuntimes(configRegistryClient, yangStoreSnapshot.getModuleMXBeanEntryMap()); - final Runtime runtime = new Runtime(moduleMappings); + final Map> moduleConfigs = GetConfig.transform(configRegistryClient, + yangStoreSnapshot.getModuleMXBeanEntryMap()); + + final Runtime runtime = new Runtime(moduleRuntimes, moduleConfigs); - final Element element = runtime.toXml(runtimeBeans, document); + final Element element = runtime.toXml(runtimeBeans, configBeans, document); logger.info("{} operation successful", GET); diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/getconfig/GetConfig.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/getconfig/GetConfig.java index 79b3e26aec..f2dfc7079c 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/getconfig/GetConfig.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/getconfig/GetConfig.java @@ -91,7 +91,7 @@ public class GetConfig extends AbstractConfigNetconfOperation { } // TODO refactor ... duplicate code - private Map> transform(final ConfigRegistryClient configRegistryClient, + public static Map> transform(final ConfigRegistryClient configRegistryClient, Map> mBeanEntries) { return Maps.transformEntries(mBeanEntries, new Maps.EntryTransformer, Map>() { diff --git a/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/NetconfMappingTest.java b/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/NetconfMappingTest.java index eabc2b9394..80b903b219 100644 --- a/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/NetconfMappingTest.java +++ b/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/NetconfMappingTest.java @@ -18,40 +18,22 @@ import org.junit.Test; import org.junit.matchers.JUnitMatchers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.config.api.ModuleIdentifier; -import org.opendaylight.controller.config.api.runtime.RootRuntimeBeanRegistrator; import org.opendaylight.controller.config.manager.impl.AbstractConfigTest; import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver; -import org.opendaylight.controller.config.manager.impl.jmx.RootRuntimeBeanRegistratorImpl; import org.opendaylight.controller.config.util.ConfigTransactionJMXClient; import org.opendaylight.controller.config.yang.store.api.YangStoreSnapshot; import org.opendaylight.controller.config.yang.store.impl.MbeParser; -import org.opendaylight.controller.config.yang.test.impl.Asdf; import org.opendaylight.controller.config.yang.test.impl.ComplexDtoBInner; import org.opendaylight.controller.config.yang.test.impl.ComplexList; import org.opendaylight.controller.config.yang.test.impl.Deep; -import org.opendaylight.controller.config.yang.test.impl.Deep2; -import org.opendaylight.controller.config.yang.test.impl.Deep3; -import org.opendaylight.controller.config.yang.test.impl.Deep4; import org.opendaylight.controller.config.yang.test.impl.DepTestImplModuleFactory; import org.opendaylight.controller.config.yang.test.impl.DtoAInner; import org.opendaylight.controller.config.yang.test.impl.DtoAInnerInner; import org.opendaylight.controller.config.yang.test.impl.DtoC; import org.opendaylight.controller.config.yang.test.impl.DtoD; -import org.opendaylight.controller.config.yang.test.impl.InnerInnerRunningDataRuntimeMXBean; -import org.opendaylight.controller.config.yang.test.impl.InnerRunningDataAdditionalRuntimeMXBean; -import org.opendaylight.controller.config.yang.test.impl.InnerRunningDataRuntimeMXBean; -import org.opendaylight.controller.config.yang.test.impl.InnerRunningDataRuntimeRegistration; import org.opendaylight.controller.config.yang.test.impl.NetconfTestImplModuleFactory; import org.opendaylight.controller.config.yang.test.impl.NetconfTestImplModuleMXBean; -import org.opendaylight.controller.config.yang.test.impl.NetconfTestImplRuntimeMXBean; -import org.opendaylight.controller.config.yang.test.impl.NetconfTestImplRuntimeRegistration; -import org.opendaylight.controller.config.yang.test.impl.NetconfTestImplRuntimeRegistrator; -import org.opendaylight.controller.config.yang.test.impl.NotStateBean; -import org.opendaylight.controller.config.yang.test.impl.NotStateBeanInternal; import org.opendaylight.controller.config.yang.test.impl.Peers; -import org.opendaylight.controller.config.yang.test.impl.RetValContainer; -import org.opendaylight.controller.config.yang.test.impl.RetValList; import org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry; import org.opendaylight.controller.netconf.api.NetconfDocumentedException; import org.opendaylight.controller.netconf.api.NetconfOperationRouter; @@ -414,51 +396,28 @@ public class NetconfMappingTest extends AbstractConfigTest { @Test public void testConfigNetconfRuntime() throws Exception { - ModuleIdentifier id = new ModuleIdentifier(NetconfTestImplModuleFactory.NAME, "instance"); - RootRuntimeBeanRegistrator rootReg = new RootRuntimeBeanRegistratorImpl(internalJmxRegistrator, id); - NetconfTestImplRuntimeRegistrator registrator = new NetconfTestImplRuntimeRegistrator(rootReg); - - NetconfTestImplRuntimeRegistration a = registerRoot(registrator); - InnerRunningDataRuntimeRegistration reg = registerInner(a); - registerInner2(reg); - - id = new ModuleIdentifier(NetconfTestImplModuleFactory.NAME, "instance2"); - rootReg = new RootRuntimeBeanRegistratorImpl(internalJmxRegistrator, id); - registrator = new NetconfTestImplRuntimeRegistrator(rootReg); - - a = registerRoot(registrator); - registerAdditional(a); - registerAdditional(a); - registerAdditional(a); - registerAdditional(a); - reg = registerInner(a); - registerInner2(reg); - reg = registerInner(a); - registerInner2(reg); - registerInner2(reg); - reg = registerInner(a); - registerInner2(reg); - registerInner2(reg); - registerInner2(reg); - reg = registerInner(a); - registerInner2(reg); - registerInner2(reg); - registerInner2(reg); - registerInner2(reg); + createModule(INSTANCE_NAME); - Element response = get(); + edit("netconfMessages/editConfig.xml"); + checkBinaryLeafEdited(getConfigCandidate()); - System.err.println(XmlUtil.toString(response)); + // check after edit + commit(); + Element response = get(); - assertEquals(2, getElementsSize(response, "module")); + assertEquals(2/*With runtime beans*/ + 2 /*Without runtime beans*/, getElementsSize(response, "module")); + // data from state assertEquals(2, getElementsSize(response, "asdf")); - assertEquals(5, getElementsSize(response, "inner-running-data")); - assertEquals(5, getElementsSize(response, "deep2")); - assertEquals(11, getElementsSize(response, "inner-inner-running-data")); - assertEquals(11, getElementsSize(response, "deep3")); - assertEquals(11 * 2, getElementsSize(response, "list-of-strings")); - assertEquals(4, getElementsSize(response, "inner-running-data-additional")); - assertEquals(4, getElementsSize(response, "deep4")); + // data from running config + assertEquals(2, getElementsSize(response, "simple-short")); + + assertEquals(8, getElementsSize(response, "inner-running-data")); + assertEquals(8, getElementsSize(response, "deep2")); + assertEquals(8 * 4, getElementsSize(response, "inner-inner-running-data")); + assertEquals(8 * 4, getElementsSize(response, "deep3")); + assertEquals(8 * 4 * 2, getElementsSize(response, "list-of-strings")); + assertEquals(8, getElementsSize(response, "inner-running-data-additional")); + assertEquals(8, getElementsSize(response, "deep4")); // TODO assert keys RuntimeRpc netconf = new RuntimeRpc(yangStoreSnapshot, configRegistryClient, NETCONF_SESSION_ID); @@ -486,153 +445,6 @@ public class NetconfMappingTest extends AbstractConfigTest { return response.getElementsByTagName(elementName).getLength(); } - private Object registerAdditional(final NetconfTestImplRuntimeRegistration a) { - class InnerRunningDataAdditionalRuntimeMXBeanTest implements InnerRunningDataAdditionalRuntimeMXBean { - - private final int simpleInt; - private final String simpleString; - - public InnerRunningDataAdditionalRuntimeMXBeanTest(final int simpleInt, final String simpleString) { - this.simpleInt = simpleInt; - this.simpleString = simpleString; - } - - @Override - public Integer getSimpleInt3() { - return this.simpleInt; - } - - @Override - public Deep4 getDeep4() { - final Deep4 d = new Deep4(); - d.setBoool(false); - return d; - } - - @Override - public String getSimpleString() { - return this.simpleString; - } - - @Override - public void noArgInner() { - } - - } - - final int simpleInt = counter++; - return a.register(new InnerRunningDataAdditionalRuntimeMXBeanTest(simpleInt, "randomString_" + simpleInt)); - } - - private void registerInner2(final InnerRunningDataRuntimeRegistration reg) { - class InnerInnerRunningDataRuntimeMXBeanTest implements InnerInnerRunningDataRuntimeMXBean { - - private final int simpleInt; - - public InnerInnerRunningDataRuntimeMXBeanTest(final int simpleInt) { - this.simpleInt = simpleInt; - } - - @Override - public List getNotStateBean() { - final NotStateBean notStateBean = new NotStateBean(); - final NotStateBeanInternal notStateBeanInternal = new NotStateBeanInternal(); - notStateBean.setNotStateBeanInternal(Lists.newArrayList(notStateBeanInternal)); - return Lists.newArrayList(notStateBean); - } - - @Override - public Integer getSimpleInt3() { - return this.simpleInt; - } - - @Override - public Deep3 getDeep3() { - return new Deep3(); - } - - @Override - public List getListOfStrings() { - return Lists.newArrayList("l1", "l2"); - } - - @Override - public List listOutput() { - return Lists.newArrayList(new RetValList()); - } - - @Override - public Boolean noArgInnerInner(Integer integer, Boolean aBoolean) { - return aBoolean; - } - - @Override - public RetValContainer containerOutput() { - return new RetValContainer(); - } - - @Override - public List leafListOutput() { - return Lists.newArrayList("1", "2"); - } - - } - - reg.register(new InnerInnerRunningDataRuntimeMXBeanTest(counter++)); - - } - - private static int counter = 1000; - - private InnerRunningDataRuntimeRegistration registerInner(final NetconfTestImplRuntimeRegistration a) { - - class InnerRunningDataRuntimeMXBeanTest implements InnerRunningDataRuntimeMXBean { - - private final int simpleInt; - - public InnerRunningDataRuntimeMXBeanTest(final int simpleInt) { - this.simpleInt = simpleInt; - } - - @Override - public Integer getSimpleInt3() { - return this.simpleInt; - } - - @Override - public Deep2 getDeep2() { - return new Deep2(); - } - - } - return a.register(new InnerRunningDataRuntimeMXBeanTest(counter++)); - } - - private NetconfTestImplRuntimeRegistration registerRoot(final NetconfTestImplRuntimeRegistrator registrator) { - final NetconfTestImplRuntimeRegistration a = registrator.register(new NetconfTestImplRuntimeMXBean() { - - @Override - public Long getCreatedSessions() { - return 11L; - } - - @Override - public Asdf getAsdf() { - final Asdf asdf = new Asdf(); - asdf.setSimpleInt(55); - asdf.setSimpleString("asdf"); - return asdf; - } - - @Override - public String noArg(final String arg1) { - return arg1.toUpperCase(); - } - - }); - return a; - } - private Element executeOp(final NetconfOperation op, final String filename) throws ParserConfigurationException, SAXException, IOException, NetconfDocumentedException { diff --git a/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfITTest.java b/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfITTest.java index 4c95d14b22..1037bf6922 100644 --- a/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfITTest.java +++ b/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfITTest.java @@ -35,22 +35,16 @@ import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; -import org.opendaylight.controller.config.api.ModuleIdentifier; import org.opendaylight.controller.config.manager.impl.AbstractConfigTest; import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver; -import org.opendaylight.controller.config.manager.impl.jmx.BaseJMXRegistrator; -import org.opendaylight.controller.config.manager.impl.jmx.RootRuntimeBeanRegistratorImpl; import org.opendaylight.controller.config.persist.api.Persister; import org.opendaylight.controller.config.spi.ModuleFactory; import org.opendaylight.controller.config.util.ConfigTransactionJMXClient; import org.opendaylight.controller.config.yang.store.api.YangStoreException; import org.opendaylight.controller.config.yang.store.impl.HardcodedYangStoreService; -import org.opendaylight.controller.config.yang.test.impl.Asdf; import org.opendaylight.controller.config.yang.test.impl.DepTestImplModuleFactory; import org.opendaylight.controller.config.yang.test.impl.NetconfTestImplModuleFactory; import org.opendaylight.controller.config.yang.test.impl.NetconfTestImplModuleMXBean; -import org.opendaylight.controller.config.yang.test.impl.NetconfTestImplRuntimeMXBean; -import org.opendaylight.controller.config.yang.test.impl.NetconfTestImplRuntimeRegistrator; import org.opendaylight.controller.config.yang.test.impl.TestImplModuleFactory; import org.opendaylight.controller.netconf.api.NetconfMessage; import org.opendaylight.controller.netconf.client.NetconfClient; @@ -278,7 +272,7 @@ public class NetconfITTest extends AbstractConfigTest { NetconfTestImplModuleMXBean proxy = configRegistryClient .newMXBeanProxy(impl, NetconfTestImplModuleMXBean.class); proxy.setTestingDep(dep); - registerRuntimeBean(); + proxy.setSimpleShort((short)0); transaction.commit(); @@ -303,29 +297,6 @@ public class NetconfITTest extends AbstractConfigTest { } } - private void registerRuntimeBean() { - BaseJMXRegistrator baseJMXRegistrator = new BaseJMXRegistrator(ManagementFactory.getPlatformMBeanServer()); - RootRuntimeBeanRegistratorImpl runtimeBeanRegistrator = baseJMXRegistrator - .createRuntimeBeanRegistrator(new ModuleIdentifier(NetconfTestImplModuleFactory.NAME, "instance")); - NetconfTestImplRuntimeRegistrator reg = new NetconfTestImplRuntimeRegistrator(runtimeBeanRegistrator); - reg.register(new NetconfTestImplRuntimeMXBean() { - @Override - public Asdf getAsdf() { - return null; - } - - @Override - public Long getCreatedSessions() { - return null; - } - - @Override - public String noArg(String arg1) { - return "from no arg"; - } - }); - } - @Test // @Ignore public void testStartExi() throws Exception { diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig.xml index ce52e49365..d44652bf13 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig.xml @@ -93,6 +93,8 @@ test-impl:impl-netconf test2 + 4 + prefix:testing ref_dep diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/rpc.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/rpc.xml index 413b78c5d3..46b833cf68 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/rpc.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/rpc.xml @@ -1,6 +1,6 @@ - /modules/module[type='impl-netconf' and name='instance'] + /modules/module[type='impl-netconf' and name='test1'] testarg1 diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/rpcInner.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/rpcInner.xml index cf15000b1a..3d5117e3bd 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/rpcInner.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/rpcInner.xml @@ -1,7 +1,7 @@ - /modules/module[name='instance2'][type='impl-netconf']/inner-running-data-additional[key='randomString_1003'] + /modules/module[name='test1'][type='impl-netconf']/inner-running-data-additional[key='1'] diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/rpcInnerInner.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/rpcInnerInner.xml index 31f417e879..c492ee748a 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/rpcInnerInner.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/rpcInnerInner.xml @@ -2,7 +2,7 @@ - /modules/module[type='impl-netconf'][name='instance2']/inner-running-data[key='1015']/inner-inner-running-data[key='1017'] + /modules/module[type='impl-netconf'][name='test2']/inner-running-data[key='2']/inner-inner-running-data[key='3'] diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/rpcInnerInner_complex_output.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/rpcInnerInner_complex_output.xml index af0835b5df..4ba0349f9b 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/rpcInnerInner_complex_output.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/rpcInnerInner_complex_output.xml @@ -2,7 +2,7 @@ - /modules/module[type='impl-netconf'][name='instance2']/inner-running-data[key='1015']/inner-inner-running-data[key='1017'] + /modules/module[type='impl-netconf'][name='test1']/inner-running-data[key='0']/inner-inner-running-data[key='1'] -- 2.36.6