QPID-8241: Fix conversion tests
diff --git a/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/Client.java b/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/Client.java
index 91f849b..745c8db 100644
--- a/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/Client.java
+++ b/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/Client.java
@@ -150,6 +150,12 @@
             e.printStackTrace();
             e.printStackTrace(System.out);
         }
+        catch (Error e)
+        {
+            e.printStackTrace();
+            e.printStackTrace(System.out);
+            throw e;
+        }
     }
 
     private String stringifyStacktrace(final Throwable e)
diff --git a/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessageVerifier.java b/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessageVerifier.java
index 4f9183b..c35787c 100644
--- a/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessageVerifier.java
+++ b/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessageVerifier.java
@@ -40,8 +40,6 @@
 import javax.jms.StreamMessage;
 import javax.jms.TextMessage;
 
-import org.apache.qpid.server.util.StringUtil;
-
 public class MessageVerifier
 {
     public static void verifyMessage(final MessageDescription messageDescription, final Message message)
@@ -258,16 +256,6 @@
             {
                 final byte[] expectedValueAsBytes = (byte[]) expectedValue;
                 final byte[] actualValueAsBytes = (byte[]) actualValue;
-                String expectedValueAsString = StringUtil.toHex(expectedValueAsBytes);
-                if (expectedValueAsString.length() > 20)
-                {
-                    expectedValueAsString = expectedValueAsString.substring(0, 20) + "...";
-                }
-                String actualValueAsString = StringUtil.toHex(actualValueAsBytes);
-                if (actualValueAsString.length() > 20)
-                {
-                    actualValueAsString = actualValueAsString.substring(0, 20) + "...";
-                }
                 if (expectedValueAsBytes.length != actualValueAsBytes.length)
                 {
                     throw new VerificationException(String.format(
@@ -275,15 +263,15 @@
                             failureMessage,
                             expectedValueAsBytes.length,
                             actualValueAsBytes.length,
-                            expectedValueAsString,
-                            actualValueAsString));
+                            encode(expectedValueAsBytes),
+                            encode(actualValueAsBytes)));
                 }
                 if (!Arrays.equals(expectedValueAsBytes, actualValueAsBytes))
                 {
                     throw new VerificationException(String.format("%s: arrays do not match ('%s' vs '%s')",
                                                                   failureMessage,
-                                                                  expectedValueAsString,
-                                                                  actualValueAsString));
+                                                                  encode(expectedValueAsBytes),
+                                                                  encode(actualValueAsBytes)));
                 }
             }
             else if (expectedValue instanceof Map)
@@ -352,4 +340,26 @@
             }
         }
     }
+
+    private static String encode(final byte[] expectedValueAsBytes)
+    {
+        String expectedValueAsString = toHex(expectedValueAsBytes);
+        if (expectedValueAsString.length() > 20)
+        {
+            expectedValueAsString = expectedValueAsString.substring(0, 20) + "...";
+        }
+        return expectedValueAsString;
+    }
+
+    private static final char[] HEX = "0123456789ABCDEF".toCharArray();
+
+    private static String toHex(byte[] bin)
+    {
+        StringBuilder result = new StringBuilder(2 * bin.length);
+        for (byte b : bin) {
+            result.append(HEX[(b >> 4) & 0xF]);
+            result.append(HEX[(b & 0xF)]);
+        }
+        return result.toString();
+    }
 }