X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=netconf%2Fsal-netconf-connector%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Fsal%2Fconnect%2Fnetconf%2FNetconfStateSchemasTest.java;h=2398bc71c91e296c860ea016e845a9797c87ed2f;hb=2587d2f26d9795eb3568bb9585496de8b630d99f;hp=c8564975b681bfbc519a1ed3fbabbca03dd7c204;hpb=1e1e99672bf3450a165b3ee0be5d38e856586da4;p=netconf.git diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemasTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemasTest.java index c8564975b6..2398bc71c9 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemasTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemasTest.java @@ -33,7 +33,6 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.config.util.xml.XmlUtil; import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; import org.opendaylight.controller.md.sal.dom.api.DOMRpcImplementationNotAvailableException; @@ -46,26 +45,34 @@ import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransform import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.NetconfState; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.Schemas; +import org.opendaylight.yangtools.util.xml.UntrustedXML; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; -import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlUtils; +import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; +import org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream; import org.opendaylight.yangtools.yang.data.impl.schema.Builders; -import org.opendaylight.yangtools.yang.data.impl.schema.transform.ToNormalizedNodeParser; -import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser.DomToNormalizedNodeParserFactory; +import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter; +import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.w3c.dom.Document; -import org.w3c.dom.Element; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class NetconfStateSchemasTest { - private static final NetconfSessionPreferences CAPS = NetconfSessionPreferences.fromStrings(Collections.singleton("urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04")); + private static final Logger LOG = LoggerFactory.getLogger(NetconfStateSchemasTest.class); + + private static final NetconfSessionPreferences CAPS = NetconfSessionPreferences.fromStrings(Collections.singleton( + "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04")); private final RemoteDeviceId deviceId = new RemoteDeviceId("device", new InetSocketAddress(99)); + private final int numberOfSchemas = 73; + private final int numberOfLegalSchemas = numberOfSchemas - 3; private ContainerNode compositeNodeSchemas; + @Mock private DOMRpcService rpc; @@ -76,9 +83,14 @@ public class NetconfStateSchemasTest { final DataSchemaNode schemasNode = ((ContainerSchemaNode) schemaContext .getDataChildByName(NetconfState.QNAME)).getDataChildByName(Schemas.QNAME); - final Document schemasXml = XmlUtil.readXmlToDocument(getClass().getResourceAsStream("/netconf-state.schemas.payload.xml")); - final ToNormalizedNodeParser containerNodeParser = DomToNormalizedNodeParserFactory.getInstance(XmlUtils.DEFAULT_XML_CODEC_PROVIDER, schemaContext, false).getContainerNodeParser(); - compositeNodeSchemas = containerNodeParser.parse(Collections.singleton(schemasXml.getDocumentElement()), (ContainerSchemaNode) schemasNode); + + final NormalizedNodeResult resultHolder = new NormalizedNodeResult(); + final NormalizedNodeStreamWriter writer = ImmutableNormalizedNodeStreamWriter.from(resultHolder); + final XmlParserStream xmlParser = XmlParserStream.create(writer, schemaContext, schemasNode, false); + + xmlParser.parse(UntrustedXML.createXMLStreamReader(getClass().getResourceAsStream( + "/netconf-state.schemas.payload.xml"))); + compositeNodeSchemas = (ContainerNode) resultHolder.getResult(); } @@ -87,7 +99,7 @@ public class NetconfStateSchemasTest { final NetconfStateSchemas schemas = NetconfStateSchemas.create(deviceId, compositeNodeSchemas); final Set availableYangSchemasQNames = schemas.getAvailableYangSchemasQNames(); - assertEquals(73, availableYangSchemasQNames.size()); + assertEquals(numberOfLegalSchemas, availableYangSchemasQNames.size()); assertThat(availableYangSchemasQNames, hasItem(QName.create("urn:TBD:params:xml:ns:yang:network-topology", "2013-07-12", "network-topology"))); @@ -100,17 +112,20 @@ public class NetconfStateSchemasTest { .withChild(compositeNodeSchemas) .build(); final ContainerNode data = Builders.containerBuilder() - .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(NetconfMessageTransformUtil.NETCONF_DATA_QNAME)) + .withNodeIdentifier(new YangInstanceIdentifier + .NodeIdentifier(NetconfMessageTransformUtil.NETCONF_DATA_QNAME)) .withChild(netconfState) .build(); final ContainerNode rpcReply = Builders.containerBuilder() - .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(NetconfMessageTransformUtil.NETCONF_RPC_REPLY_QNAME)) + .withNodeIdentifier(new YangInstanceIdentifier + .NodeIdentifier(NetconfMessageTransformUtil.NETCONF_RPC_REPLY_QNAME)) .withChild(data) .build(); - when(rpc.invokeRpc(eq(toPath(NETCONF_GET_QNAME)), any())).thenReturn(Futures.immediateCheckedFuture(new DefaultDOMRpcResult(rpcReply))); + when(rpc.invokeRpc(eq(toPath(NETCONF_GET_QNAME)), any())) + .thenReturn(Futures.immediateCheckedFuture(new DefaultDOMRpcResult(rpcReply))); final NetconfStateSchemas stateSchemas = NetconfStateSchemas.create(rpc, CAPS, deviceId); final Set availableYangSchemasQNames = stateSchemas.getAvailableYangSchemasQNames(); - assertEquals(73, availableYangSchemasQNames.size()); + assertEquals(numberOfLegalSchemas, availableYangSchemasQNames.size()); assertThat(availableYangSchemasQNames, hasItem(QName.create("urn:TBD:params:xml:ns:yang:network-topology", "2013-07-12", "network-topology"))); @@ -137,12 +152,14 @@ public class NetconfStateSchemasTest { @Test public void testCreateRpcError() throws Exception { final RpcError rpcError = RpcResultBuilder.newError(RpcError.ErrorType.RPC, "fail", "fail"); - when(rpc.invokeRpc(eq(toPath(NETCONF_GET_QNAME)), any())).thenReturn(Futures.immediateCheckedFuture(new DefaultDOMRpcResult(rpcError))); + when(rpc.invokeRpc(eq(toPath(NETCONF_GET_QNAME)), any())) + .thenReturn(Futures.immediateCheckedFuture(new DefaultDOMRpcResult(rpcError))); final NetconfStateSchemas stateSchemas = NetconfStateSchemas.create(rpc, CAPS, deviceId); final Set availableYangSchemasQNames = stateSchemas.getAvailableYangSchemasQNames(); Assert.assertTrue(availableYangSchemasQNames.isEmpty()); } + @SuppressWarnings({ "checkstyle:IllegalThrows", "checkstyle:avoidHidingCauseException" }) @Test(expected = RuntimeException.class) public void testCreateInterrupted() throws Throwable { //NetconfStateSchemas.create calls Thread.currentThread().interrupt(), so it must run in its own thread @@ -154,7 +171,7 @@ public class NetconfStateSchemasTest { when(rpc.invokeRpc(eq(toPath(NETCONF_GET_QNAME)), any())).thenReturn(checkedFuture); NetconfStateSchemas.create(rpc, CAPS, deviceId); } catch (final InterruptedException | ExecutionException e) { - e.printStackTrace(); + LOG.info("Operation failed.", e); } }); @@ -167,9 +184,12 @@ public class NetconfStateSchemasTest { @Test public void testRemoteYangSchemaEquals() throws Exception { - final NetconfStateSchemas.RemoteYangSchema schema1 = new NetconfStateSchemas.RemoteYangSchema(NetconfState.QNAME); - final NetconfStateSchemas.RemoteYangSchema schema2 = new NetconfStateSchemas.RemoteYangSchema(NetconfState.QNAME); - final NetconfStateSchemas.RemoteYangSchema schema3 = new NetconfStateSchemas.RemoteYangSchema(Schemas.QNAME); + final NetconfStateSchemas.RemoteYangSchema schema1 = + new NetconfStateSchemas.RemoteYangSchema(NetconfState.QNAME); + final NetconfStateSchemas.RemoteYangSchema schema2 = + new NetconfStateSchemas.RemoteYangSchema(NetconfState.QNAME); + final NetconfStateSchemas.RemoteYangSchema schema3 = + new NetconfStateSchemas.RemoteYangSchema(Schemas.QNAME); Assert.assertEquals(schema1, schema2); Assert.assertEquals(schema2, schema1); Assert.assertNotEquals(schema1, schema3);