X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fnetconf%2Fconfig-netconf-connector%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fconfignetconfconnector%2FNetconfMappingTest.java;h=35fa0428ec1cd60ed4a9e39415ce219c2a06ae9c;hb=eff404d4edd10fcde6d85c5821c80263339d9a4a;hp=c72cb7498b709c2a2da727e0b5959fd8fb0ac0c9;hpb=a92d9d6a21a0f6ca8d2153795721f500eaf29ee9;p=controller.git 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 c72cb7498b..35fa0428ec 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 @@ -12,22 +12,28 @@ import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import org.junit.Assert; import org.junit.Before; import org.junit.Ignore; 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.*; +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.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.NetconfTestImplModuleFactory; +import org.opendaylight.controller.config.yang.test.impl.NetconfTestImplModuleMXBean; +import org.opendaylight.controller.config.yang.test.impl.Peers; import org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry; import org.opendaylight.controller.netconf.api.NetconfDocumentedException; import org.opendaylight.controller.netconf.api.NetconfOperationRouter; @@ -59,10 +65,20 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.math.BigInteger; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.fail; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; -import static org.junit.Assert.*; -import static org.mockito.Mockito.*; public class NetconfMappingTest extends AbstractConfigTest { private static final Logger logger = LoggerFactory.getLogger(NetconfMappingTest.class); @@ -116,10 +132,14 @@ public class NetconfMappingTest extends AbstractConfigTest { // check after edit commit(); Element response = getConfigRunning(); - // System.out.println(Xml.toString(response)); + System.err.println(XmlUtil.toString(response)); checkBinaryLeafEdited(response); checkTypeConfigAttribute(response); + checkTypedefs(response); + checkTestingDeps(response); + checkEnum(response); + checkBigDecimal(response); edit("netconfMessages/editConfig_remove.xml"); @@ -286,8 +306,8 @@ public class NetconfMappingTest extends AbstractConfigTest { try { edit(file); } catch (NetconfDocumentedException e) { - Assert.assertThat(e.getMessage(), JUnitMatchers.containsString("Unrecognised elements")); - Assert.assertThat(e.getMessage(), JUnitMatchers.containsString("unknownAttribute")); + assertThat(e.getMessage(), JUnitMatchers.containsString("Unrecognised elements")); + assertThat(e.getMessage(), JUnitMatchers.containsString("unknownAttribute")); continue; } fail("Unrecognised test should throw exception " + file); @@ -312,8 +332,8 @@ public class NetconfMappingTest extends AbstractConfigTest { response = getConfigRunning(); final int afterReplace = response.getElementsByTagName("instance").getLength(); - Assert.assertEquals(4 + 4 /* Instances from services */, allInstances); - Assert.assertEquals(3 + 3, afterReplace); + assertEquals(4 + 4 /* Instances from services */, allInstances); + assertEquals(3 + 3, afterReplace); } @Test(expected = NetconfDocumentedException.class) @@ -341,9 +361,47 @@ public class NetconfMappingTest extends AbstractConfigTest { buf.append(XmlElement.fromDomElement(e).getTextContent()); } assertEquals("810", buf.toString()); + } + + private void checkTypedefs(final Element response) { + NodeList children = response.getElementsByTagName("extended"); + assertEquals(1, children.getLength()); + children = response.getElementsByTagName("extended-twice"); + assertEquals(1, children.getLength()); } + private void checkEnum(final Element response) { + XmlElement modulesElement = XmlElement.fromDomElement(response).getOnlyChildElement("data") + .getOnlyChildElement("modules"); + + String enumName = "extended-enum"; + String enumContent = "TWO"; + + for (XmlElement moduleElement : modulesElement.getChildElements("module")) { + String name = moduleElement.getOnlyChildElement("name").getTextContent(); + if(name.equals("test1")) { + XmlElement enumAttr = moduleElement.getOnlyChildElement(enumName); + assertEquals(enumContent, enumAttr.getTextContent()); + + return; + } + } + + fail("Enum attribute " + enumName + ":" + enumContent + " not present in " + XmlUtil.toString(response)); + } + + private void checkTestingDeps(Element response) { + int testingDepsSize = response.getElementsByTagName("testing-deps").getLength(); + assertEquals(2, testingDepsSize); + } + + private void checkBigDecimal(Element response) { + int size = response.getElementsByTagName("sleep-factor").getLength(); + assertEquals(1, size); + } + + private void checkTypeConfigAttribute(Element response) { XmlElement modulesElement = XmlElement.fromDomElement(response).getOnlyChildElement("data") @@ -373,48 +431,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); + edit("netconfMessages/editConfig.xml"); + checkBinaryLeafEdited(getConfigCandidate()); + + // check after edit + commit(); Element response = get(); - assertEquals(2, getElementsSize(response, "instance")); + 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(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); @@ -427,6 +465,10 @@ public class NetconfMappingTest extends AbstractConfigTest { response = executeOp(netconf, "netconfMessages/rpcInnerInner.xml"); assertThat(XmlUtil.toString(response), JUnitMatchers.containsString("true")); + + response = executeOp(netconf, "netconfMessages/rpcInnerInner_complex_output.xml"); + assertThat(XmlUtil.toString(response), JUnitMatchers.containsString("1")); + assertThat(XmlUtil.toString(response), JUnitMatchers.containsString("2")); } private Element get() throws NetconfDocumentedException, ParserConfigurationException, SAXException, IOException { @@ -438,133 +480,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 Boolean noArgInnerInner(Integer integer, Boolean aBoolean) { - return aBoolean; - } - - } - - 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 { @@ -582,7 +497,7 @@ public class NetconfMappingTest extends AbstractConfigTest { private List getYangs() throws FileNotFoundException { List paths = Arrays.asList("/META-INF/yang/config.yang", "/META-INF/yang/rpc-context.yang", - "/META-INF/yang/config-test.yang", "/META-INF/yang/config-test-impl.yang", + "/META-INF/yang/config-test.yang", "/META-INF/yang/config-test-impl.yang", "/META-INF/yang/test-types.yang", "/META-INF/yang/ietf-inet-types.yang"); final Collection yangDependencies = new ArrayList<>(); for (String path : paths) {