Changeset: 06f532009fda for monetdb-java URL: https://dev.monetdb.org/hg/monetdb-java/rev/06f532009fda Modified Files: tests/TLSTester.java Branch: default Log Message:
Add verbose mode to TLSTester diffs (129 lines): diff --git a/tests/TLSTester.java b/tests/TLSTester.java --- a/tests/TLSTester.java +++ b/tests/TLSTester.java @@ -13,6 +13,7 @@ import org.monetdb.mcl.net.Parameter; import java.io.*; +import java.net.URISyntaxException; import java.net.URL; import java.net.URLConnection; import java.nio.charset.StandardCharsets; @@ -113,32 +114,20 @@ public class TLSTester { fileCache.put(resource, outPath); } - private byte[] fetchBytes(String resource) throws IOException { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - try (InputStream in = fetchData(resource)) { - byte[] buffer = new byte[22]; - while (true) { - int nread = in.read(buffer); - if (nread <= 0) - break; - out.write(buffer, 0, nread); - } - return out.toByteArray(); + private InputStream fetchData(String resource) throws IOException { + String urlText = "http://" + serverHost + ":" + serverPort + resource; + if (verbose > 0) { + System.out.println("Fetching " + resource + " from " + urlText); } - } - - private InputStream fetchData(String resource) throws IOException { - URL url; + URL url = null; try { - // Note: as of Java version 20 java.net.URL(String) constructor is deprecated. - // https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/net/URL.html#%3Cinit%3E(java.lang.String) - url = new java.net.URI("http://" + serverHost + ":" + serverPort + resource).toURL(); - } catch (java.net.URISyntaxException | java.net.MalformedURLException e) { - throw new IOException(e.getMessage()); + url = new java.net.URI(urlText).toURL(); + URLConnection conn = url.openConnection(); + conn.connect(); + return conn.getInputStream(); + } catch (URISyntaxException | IOException e) { + throw new IOException("Cannot fetch resource " + resource + " from " + urlText + ": " + e, e); } - URLConnection conn = url.openConnection(); - conn.connect(); - return conn.getInputStream(); } private void run() throws IOException, SQLException { @@ -184,6 +173,8 @@ public class TLSTester { } private void test_refuse_wrong_host() throws IOException, SQLException { + if (altHost == null) + return; Attempt attempt = attempt("refuse_wrong_host", "server1").with(Parameter.HOST, altHost); attempt.withFile(Parameter.CERT, "/ca1.crt").expectFailure("No subject alternative DNS name"); } @@ -299,13 +290,16 @@ public class TLSTester { preparedButNotRun.remove(testName); if (disabled) return; + startVerbose(); try { Connection conn = DriverManager.getConnection("jdbc:monetdb:", props); conn.close(); + throw new RuntimeException("Test " + testName + " was supposed to throw an Exception saying 'Sorry, this is not a real MonetDB instance'"); } catch (SQLException e) { if (e.getMessage().startsWith("Sorry, this is not a real MonetDB instance")) { // it looks like a failure but this is actually our success scenario // because this is what the TLS Tester does when the connection succeeds. + endVerbose("succesful MAPI handshake, as expected"); return; } // other exceptions ARE errors and should be reported. @@ -314,19 +308,45 @@ public class TLSTester { } public void expectFailure(String... expectedMessages) throws SQLException { + preparedButNotRun.remove(testName); if (disabled) return; + startVerbose(); try { - expectSuccess(); + Connection conn = DriverManager.getConnection("jdbc:monetdb:", props); + conn.close(); throw new RuntimeException("Expected test " + testName + " to throw an exception but it didn't"); } catch (SQLException e) { for (String expected : expectedMessages) { - if (e.getMessage().contains(expected)) + if (e.getMessage().contains(expected)) { + endVerbose("connection failed as expected, message: " + e.getMessage()); return; + } } String message = "Test " + testName + " threw the wrong exception: " + e.getMessage() + '\n' + "Expected:\n <" + String.join(">\n <", expectedMessages) + ">"; throw new RuntimeException(message, e); } } + + private void startVerbose() { + if (verbose == 0) + return; + + System.out.println("Test " + testName + ":"); + for (String key: props.stringPropertyNames()) { + Object value = props.get(key); + if (value == null) + System.out.println(" " + key + " is null"); + else + System.out.println(" " + key + " = " + value.toString()); + } + } + + private void endVerbose(String message) { + if (verbose > 0) { + System.out.println(" -> " + message); + System.out.println(); + } + } } } _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org