Migrate netconf-netty-util to xmlunit-core 76/108076/2
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 29 Sep 2023 21:35:29 +0000 (23:35 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 29 Sep 2023 21:52:10 +0000 (23:52 +0200)
Use xmlunit-core instead of xmlunit-legacy and modernize the code.

Change-Id: Ia9f9fba4e9458b9a6465c2f3fe2ab0d304e47bbc
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
netconf/netconf-netty-util/pom.xml
netconf/netconf-netty-util/src/test/java/org/opendaylight/netconf/nettyutil/handler/NetconfEXIHandlersTest.java
netconf/netconf-netty-util/src/test/java/org/opendaylight/netconf/nettyutil/handler/exi/NetconfStartExiMessageTest.java

index 2d80ff4bceec741496d10fa95680977c27a852d0..bba3b3f70c995ba4ce525daec7119526bddfc82a 100644 (file)
     </dependency>
 
     <!-- test dependencies -->
-    <dependency>
-      <groupId>org.xmlunit</groupId>
-      <artifactId>xmlunit-legacy</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.opendaylight.yangtools</groupId>
       <artifactId>mockito-configuration</artifactId>
     </dependency>
     <dependency>
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.opendaylight.netconf</groupId>
       <artifactId>netconf-test-util</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.xmlunit</groupId>
+      <artifactId>xmlunit-core</artifactId>
+    </dependency>
   </dependencies>
 </project>
index aaa30bb6c0a31e9ec50a9b71d7a8591ff039414c..2bdca15596c5da64ebcd7ede52f01bd024add39e 100644 (file)
@@ -9,29 +9,24 @@ package org.opendaylight.netconf.nettyutil.handler;
 
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 
-import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 import java.io.ByteArrayOutputStream;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.List;
-import javax.xml.transform.TransformerException;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.sax.SAXResult;
-import org.custommonkey.xmlunit.XMLUnit;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.netconf.api.messages.NetconfMessage;
 import org.opendaylight.netconf.api.xml.XmlUtil;
 import org.opendaylight.netconf.nettyutil.handler.exi.EXIParameters;
-import org.opendaylight.netconf.shaded.exificient.core.exceptions.EXIException;
-import org.opendaylight.netconf.shaded.exificient.main.api.sax.SAXEncoder;
+import org.xmlunit.builder.DiffBuilder;
 
 public class NetconfEXIHandlersTest {
-
     private final String msgAsString = "<netconf-message/>";
+
     private NetconfMessageToEXIEncoder netconfMessageToEXIEncoder;
     private NetconfEXIToMessageDecoder netconfEXIToMessageDecoder;
     private NetconfMessage msg;
@@ -39,27 +34,26 @@ public class NetconfEXIHandlersTest {
 
     @Before
     public void setUp() throws Exception {
-        final NetconfEXICodec codec = NetconfEXICodec.forParameters(EXIParameters.empty());
+        final var codec = NetconfEXICodec.forParameters(EXIParameters.empty());
         netconfMessageToEXIEncoder = NetconfMessageToEXIEncoder.create(codec);
         netconfEXIToMessageDecoder = NetconfEXIToMessageDecoder.create(codec);
 
         msg = new NetconfMessage(XmlUtil.readXmlToDocument(msgAsString));
-        this.msgAsExi = msgToExi(msg, codec);
+        msgAsExi = msgToExi(msg, codec);
     }
 
-    private static byte[] msgToExi(final NetconfMessage msg, final NetconfEXICodec codec)
-            throws IOException, EXIException, TransformerException {
-        final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-        final SAXEncoder encoder = codec.getWriter();
-        encoder.setOutputStream(byteArrayOutputStream);
+    private static byte[] msgToExi(final NetconfMessage msg, final NetconfEXICodec codec) throws Exception {
+        final var bos = new ByteArrayOutputStream();
+        final var encoder = codec.getWriter();
+        encoder.setOutputStream(bos);
         ThreadLocalTransformers.getDefaultTransformer().transform(new DOMSource(msg.getDocument()),
-                new SAXResult(encoder));
-        return byteArrayOutputStream.toByteArray();
+            new SAXResult(encoder));
+        return bos.toByteArray();
     }
 
     @Test
     public void testEncodeDecode() throws Exception {
-        final ByteBuf buffer = Unpooled.buffer();
+        final var buffer = Unpooled.buffer();
         netconfMessageToEXIEncoder.encode(null, msg, buffer);
         final int exiLength = msgAsExi.length;
         // array from buffer is cca 256 n length, compare only subarray
@@ -70,9 +64,13 @@ public class NetconfEXIHandlersTest {
             assertEquals((byte)0, buffer.array()[i]);
         }
 
-        final List<Object> out = new ArrayList<>();
+        final var out = new ArrayList<>();
         netconfEXIToMessageDecoder.decode(null, buffer, out);
 
-        XMLUnit.compareXML(msg.getDocument(), ((NetconfMessage) out.get(0)).getDocument());
+        final var diff = DiffBuilder.compare(msg.getDocument())
+            .withTest(((NetconfMessage) out.get(0)).getDocument())
+            .checkForIdentical()
+            .build();
+        assertFalse(diff.toString(), diff.hasDifferences());
     }
 }
index c3c6e73cdcf32cdb81167116478751190e5033fa..68ae7947c564826818ed08334edddfcd3d8e9735 100644 (file)
@@ -5,74 +5,59 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.netconf.nettyutil.handler.exi;
 
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
 
-import java.util.Arrays;
-import org.custommonkey.xmlunit.Diff;
-import org.custommonkey.xmlunit.XMLUnit;
 import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.opendaylight.netconf.api.messages.RpcMessage;
 import org.opendaylight.netconf.shaded.exificient.core.CodingMode;
 import org.opendaylight.netconf.shaded.exificient.core.FidelityOptions;
+import org.xmlunit.builder.DiffBuilder;
 
-@RunWith(Parameterized.class)
 public class NetconfStartExiMessageTest {
+    @Test
+    public void testCreateEmpty() {
+        assertCreate("""
+              <rpc message-id="id" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+              <start-exi xmlns="urn:ietf:params:xml:ns:netconf:exi:1.0">
+                <alignment>bit-packed</alignment>
+              </start-exi>
+            </rpc>""", EXIParameters.empty());
+    }
 
-    @Parameterized.Parameters
-    public static Iterable<Object[]> data() throws Exception {
-        final String noChangeXml = "<rpc message-id=\"id\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">\n"
-                + "<start-exi xmlns=\"urn:ietf:params:xml:ns:netconf:exi:1.0\">\n"
-                + "<alignment>bit-packed</alignment>\n"
-                + "</start-exi>\n"
-                + "</rpc>";
-
-
-        final String fullOptionsXml = "<rpc message-id=\"id\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">\n"
-                + "<start-exi xmlns=\"urn:ietf:params:xml:ns:netconf:exi:1.0\">\n"
-                + "<alignment>byte-aligned</alignment>\n"
-                + "<fidelity>\n"
-                + "<comments/>\n"
-                + "<dtd/>\n"
-                + "<lexical-values/>\n"
-                + "<pis/>\n"
-                + "<prefixes/>\n"
-                + "</fidelity>\n"
-                + "</start-exi>\n"
-                + "</rpc>";
-
-        final FidelityOptions fullOptions = FidelityOptions.createDefault();
+    @Test
+    public void testCreateFull() throws Exception {
+        final var fullOptions = FidelityOptions.createDefault();
         fullOptions.setFidelity(FidelityOptions.FEATURE_LEXICAL_VALUE, true);
         fullOptions.setFidelity(FidelityOptions.FEATURE_DTD, true);
         fullOptions.setFidelity(FidelityOptions.FEATURE_COMMENT, true);
         fullOptions.setFidelity(FidelityOptions.FEATURE_PREFIX, true);
         fullOptions.setFidelity(FidelityOptions.FEATURE_PI, true);
 
-        return Arrays.asList(new Object[][]{
-            {noChangeXml, EXIParameters.empty()},
-            {fullOptionsXml, new EXIParameters(CodingMode.BYTE_PACKED, fullOptions)},
-        });
+        assertCreate("""
+              <rpc message-id="id" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+                <start-exi xmlns="urn:ietf:params:xml:ns:netconf:exi:1.0">
+                  <alignment>byte-aligned</alignment>
+                  <fidelity>
+                    <comments/>
+                    <dtd/>
+                    <lexical-values/>
+                    <pis/>
+                    <prefixes/>
+                  </fidelity>
+                </start-exi>
+              </rpc>""", new EXIParameters(CodingMode.BYTE_PACKED, fullOptions));
     }
 
-    private final String controlXml;
-    private final EXIParameters exiOptions;
+    private static void assertCreate(final String control, final EXIParameters exiOptions) {
+        final var startExiMessage = NetconfStartExiMessageProvider.create(exiOptions, "id");
 
-    public NetconfStartExiMessageTest(final String controlXml, final EXIParameters exiOptions) {
-        this.controlXml = controlXml;
-        this.exiOptions = exiOptions;
+        final var diff = DiffBuilder.compare(control)
+            .withTest(startExiMessage.getDocument())
+            .ignoreWhitespace()
+            .checkForIdentical()
+            .build();
+        assertFalse(diff.toString(), diff.hasDifferences());
     }
 
-    @Test
-    public void testCreate() throws Exception {
-        final RpcMessage startExiMessage = NetconfStartExiMessageProvider.create(exiOptions, "id");
-
-        XMLUnit.setIgnoreWhitespace(true);
-        XMLUnit.setIgnoreAttributeOrder(true);
-        final Diff diff = XMLUnit.compareXML(XMLUnit.buildControlDocument(controlXml), startExiMessage.getDocument());
-        assertTrue(diff.toString(), diff.similar());
-    }
 }
\ No newline at end of file