package org.opendaylight.controller.config.yang.test.impl;
+import com.google.common.collect.Lists;
+
+import java.util.List;
+
/**
*
*/
@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<NotStateBean> 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<String> getListOfStrings() {
+ return Lists.newArrayList("l1", "l2");
+ }
+
+ @Override
+ public List<RetValList> 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<String> leafListOutput() {
+ return Lists.newArrayList("1", "2");
+ }
+ });
+ }
+ }
+
+ return reg;
}
}
this.moduleNamesToConfigs = Collections.unmodifiableMap(moduleNamesToConfigs);
}
- private Map<String, Map<String, Collection<ObjectName>>> getMappedInstances(Set<ObjectName> instancesToMap,
- Services serviceTracker) {
+ public static Map<String, Map<String, Collection<ObjectName>>> getMappedInstances(Set<ObjectName> instancesToMap,
+ Services serviceTracker, Map<String, Map<String, ModuleConfig>> configs) {
Multimap<String, ObjectName> moduleToInstances = mapInstancesToModules(instancesToMap);
Map<String, Map<String, Collection<ObjectName>>> retVal = Maps.newLinkedHashMap();
- for (String namespace : moduleConfigs.keySet()) {
+ for (String namespace : configs.keySet()) {
Map<String, Collection<ObjectName>> innerRetVal = Maps.newHashMap();
- for (Entry<String, ModuleConfig> mbeEntry : moduleConfigs.get(namespace).entrySet()) {
+ for (Entry<String, ModuleConfig> mbeEntry : configs.get(namespace).entrySet()) {
String moduleName = mbeEntry.getKey();
Collection<ObjectName> 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;
return retVal;
}
- private void addServices(Services serviceTracker, Collection<ObjectName> instances,
+ private static void addServices(Services serviceTracker, Collection<ObjectName> instances,
Multimap<String, String> providedServices) {
for (ObjectName instanceOn : instances) {
for (Entry<String, String> serviceName : providedServices.entries()) {
Services serviceTracker = new Services();
Map<String, Map<String, Collection<ObjectName>>> moduleToInstances = getMappedInstances(instancesToMap,
- serviceTracker);
+ serviceTracker, moduleConfigs);
Element root = dataElement;
if (maybeNamespace.isPresent()) {
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;
throw new IllegalStateException("Root runtime bean not found among " + runtimeBeanOns);
}
- public Element toXml(String namespace, String instanceName, Collection<ObjectName> runtimeBeanOns, Document document) {
- Element moduleElement = document.createElement(XmlNetconfConstants.MODULE_KEY);
+ public Element toXml(String namespace, Collection<ObjectName> 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);
return moduleElement;
}
- private String getPrefix(String namespace) {
- return XmlNetconfConstants.PREFIX;
- }
-
}
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<String, Map<String, ModuleRuntime>> moduleRuntimes;
+ private final Map<String, Map<String, ModuleConfig>> moduleConfigs;
- public Runtime(Map<String, Map<String, ModuleRuntime>> moduleRuntimes) {
+ public Runtime(Map<String, Map<String, ModuleRuntime>> moduleRuntimes,
+ Map<String, Map<String, ModuleConfig>> moduleConfigs) {
this.moduleRuntimes = moduleRuntimes;
+ this.moduleConfigs = moduleConfigs;
}
private Map<String, Multimap<String, ObjectName>> mapInstancesToModules(Set<ObjectName> instancesToMap) {
Map<String, Multimap<String, ObjectName>> 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);
return retVal;
}
- public Element toXml(Set<ObjectName> instancesToMap, Document document) {
+ public Element toXml(Set<ObjectName> instancesToMap, Set<ObjectName> configBeans, Document document) {
+ Services serviceTracker = new Services();
+
Element root = document.createElement(XmlNetconfConstants.DATA_KEY);
Element modulesElement = document.createElement(XmlNetconfConstants.MODULES_KEY);
XmlNetconfConstants.URN_OPENDAYLIGHT_PARAMS_XML_NS_YANG_CONTROLLER_CONFIG);
root.appendChild(modulesElement);
- Map<String, Multimap<String, ObjectName>> moduleToInstances = mapInstancesToModules(instancesToMap);
+ Map<String, Multimap<String, ObjectName>> moduleToRuntimeInstance = mapInstancesToModules(instancesToMap);
+ Map<String, Map<String, Collection<ObjectName>>> moduleToConfigInstance = Config.getMappedInstances(
+ configBeans, serviceTracker, moduleConfigs);
+
+ for (String localNamespace : moduleConfigs.keySet()) {
+
+ Map<String, Collection<ObjectName>> instanceToMbe = moduleToConfigInstance.get(localNamespace);
- for (String localNamespace : moduleRuntimes.keySet()) {
- for (String moduleName : moduleRuntimes.get(localNamespace).keySet()) {
- Multimap<String, ObjectName> instanceToRbe = moduleToInstances.get(moduleName);
+ for (String moduleName : moduleConfigs.get(localNamespace).keySet()) {
+ Multimap<String, ObjectName> 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);
}
}
return root;
}
+ private ObjectName findInstance(Collection<ObjectName> 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);
+ }
+
}
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;
throw new NetconfDocumentedException(e.getMessage(), e, ErrorType.application,
ErrorTag.operation_not_supported, ErrorSeverity.error, errorInfo);
}
+
final Set<ObjectName> runtimeBeans = configRegistryClient.lookupRuntimeBeans();
- final Map<String, Map<String, ModuleRuntime>> moduleMappings = createModuleRuntimes(configRegistryClient,
+
+ //Transaction provider required only for candidate datastore
+ final Set<ObjectName> configBeans = Datastore.getInstanceQueryStrategy(Datastore.running, null)
+ .queryInstances(configRegistryClient);
+
+ final Map<String, Map<String, ModuleRuntime>> moduleRuntimes = createModuleRuntimes(configRegistryClient,
yangStoreSnapshot.getModuleMXBeanEntryMap());
- final Runtime runtime = new Runtime(moduleMappings);
+ final Map<String, Map<String, ModuleConfig>> 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);
}
// TODO refactor ... duplicate code
- private Map<String, Map<String, ModuleConfig>> transform(final ConfigRegistryClient configRegistryClient,
+ public static Map<String, Map<String, ModuleConfig>> transform(final ConfigRegistryClient configRegistryClient,
Map<String, Map<String, ModuleMXBeanEntry>> mBeanEntries) {
return Maps.transformEntries(mBeanEntries,
new Maps.EntryTransformer<String, Map<String, ModuleMXBeanEntry>, Map<String, ModuleConfig>>() {
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;
@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);
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<NotStateBean> 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<String> getListOfStrings() {
- return Lists.newArrayList("l1", "l2");
- }
-
- @Override
- public List<RetValList> 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<String> 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 {
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;
NetconfTestImplModuleMXBean proxy = configRegistryClient
.newMXBeanProxy(impl, NetconfTestImplModuleMXBean.class);
proxy.setTestingDep(dep);
- registerRuntimeBean();
+ proxy.setSimpleShort((short)0);
transaction.commit();
}
}
- 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 {
test-impl:impl-netconf
</type>
<name>test2</name>
+ <simple-short>4</simple-short>
+
<testing-dep>
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:test">prefix:testing</type>
<name>ref_dep</name>
<rpc message-id="a" a="64" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<no-arg xmlns="urn:opendaylight:params:xml:ns:yang:controller:test:impl">
- <context-instance>/modules/module[type='impl-netconf' and name='instance']</context-instance>
+ <context-instance>/modules/module[type='impl-netconf' and name='test1']</context-instance>
<arg1>
testarg1
</arg1>
<rpc message-id="a" a="64" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<noArgInner xmlns="urn:opendaylight:params:xml:ns:yang:controller:test:impl">
<context-instance>
- /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']
</context-instance>
</noArgInner>
</rpc>
<noArgInnerInner
xmlns="urn:opendaylight:params:xml:ns:yang:controller:test:impl">
<context-instance>
- /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']
</context-instance>
<arg1>
<leaf-list-output
xmlns="urn:opendaylight:params:xml:ns:yang:controller:test:impl">
<context-instance>
- /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']
</context-instance>
</leaf-list-output>
</rpc>