Use xmlunit-core instead of xmlunit-legacy and modernize the code.
Change-Id: Ia9f9fba4e9458b9a6465c2f3fe2ab0d304e47bbc
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
</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>
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;
@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
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());
}
}
* 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