annotate tests/TLSTester.java @ 970:f90d811e97eb default tip

Adjust getTableTypes() test for new table type: LOCAL TEMPORARY VIEW, added in 11.53.4 (Mar2025-SP1)
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Thu, 03 Apr 2025 15:01:33 +0200 (3 days ago)
parents ff075ed5ce81
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
855
839d76eeb4ae Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 851
diff changeset
1 /*
839d76eeb4ae Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 851
diff changeset
2 * SPDX-License-Identifier: MPL-2.0
839d76eeb4ae Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 851
diff changeset
3 *
839d76eeb4ae Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 851
diff changeset
4 * This Source Code Form is subject to the terms of the Mozilla Public
839d76eeb4ae Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 851
diff changeset
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
839d76eeb4ae Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 851
diff changeset
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
839d76eeb4ae Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 851
diff changeset
7 *
937
d416e9b6b3d0 Update Copyright year.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 917
diff changeset
8 * Copyright 2024, 2025 MonetDB Foundation;
855
839d76eeb4ae Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 851
diff changeset
9 * Copyright August 2008 - 2023 MonetDB B.V.;
839d76eeb4ae Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 851
diff changeset
10 * Copyright 1997 - July 2008 CWI.
839d76eeb4ae Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 851
diff changeset
11 */
839d76eeb4ae Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 851
diff changeset
12
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
13 import org.monetdb.mcl.net.Parameter;
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
14
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
15 import java.io.*;
875
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
16 import java.net.URISyntaxException;
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
17 import java.net.URL;
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
18 import java.net.URLConnection;
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
19 import java.nio.charset.StandardCharsets;
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
20 import java.nio.file.Files;
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
21 import java.sql.Connection;
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
22 import java.sql.DriverManager;
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
23 import java.sql.SQLException;
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
24 import java.util.HashMap;
805
2fee4b71baac Set ALPN protocol if the runtime supports it
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 804
diff changeset
25 import java.util.HashSet;
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
26 import java.util.Properties;
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
27
917
c2164decf7f1 Add final to classes
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 875
diff changeset
28 public final class TLSTester {
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
29 final HashMap<String, File> fileCache = new HashMap<>();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
30 int verbose = 0;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
31 String serverHost = null;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
32 String altHost = null;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
33 int serverPort = -1;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
34 boolean enableTrusted = false;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
35 File tempDir = null;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
36 private final HashSet<String> preparedButNotRun = new HashSet<>();
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
37
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
38 public TLSTester(String[] args) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
39 for (int i = 0; i < args.length; i++) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
40 String arg = args[i];
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
41 if (arg.equals("-v")) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
42 verbose = 1;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
43 } else if (arg.equals("-a")) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
44 altHost = args[++i];
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
45 } else if (arg.equals("-t")) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
46 enableTrusted = true;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
47 } else if (!arg.startsWith("-") && serverHost == null) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
48 int idx = arg.indexOf(':');
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
49 if (idx > 0) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
50 serverHost = arg.substring(0, idx);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
51 try {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
52 serverPort = Integer.parseInt(arg.substring(idx + 1));
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
53 if (serverPort > 0 && serverPort < 65536)
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
54 continue;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
55 } catch (NumberFormatException ignored) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
56 }
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
57 }
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
58 // if we get here it wasn't very valid
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
59 throw new IllegalArgumentException("Invalid argument: " + arg);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
60 } else {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
61 throw new IllegalArgumentException("Unexpected argument: " + arg);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
62 }
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
63 }
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
64 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
65
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
66 public static void main(String[] args) throws IOException, SQLException, ClassNotFoundException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
67 Class.forName("org.monetdb.jdbc.MonetDriver");
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
68 TLSTester main = new TLSTester(args);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
69 main.run();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
70 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
71
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
72 private HashMap<String, Integer> loadPortMap(String testName) throws IOException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
73 HashMap<String, Integer> portMap = new HashMap<>();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
74 InputStream in = fetchData("/?test=" + testName);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
75 BufferedReader br = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
76 for (String line = br.readLine(); line != null; line = br.readLine()) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
77 int idx = line.indexOf(':');
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
78 String service = line.substring(0, idx);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
79 int port;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
80 try {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
81 port = Integer.parseInt(line.substring(idx + 1));
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
82 } catch (NumberFormatException e) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
83 throw new RuntimeException("Invalid port map line: " + line);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
84 }
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
85 portMap.put(service, port);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
86 }
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
87 return portMap;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
88 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
89
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
90 private File resource(String resource) throws IOException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
91 if (!fileCache.containsKey(resource))
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
92 fetchResource(resource);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
93 return fileCache.get(resource);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
94 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
95
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
96 private void fetchResource(String resource) throws IOException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
97 if (!resource.startsWith("/")) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
98 throw new IllegalArgumentException("Resource must start with slash: " + resource);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
99 }
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
100 if (tempDir == null) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
101 tempDir = Files.createTempDirectory("tlstest").toFile();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
102 tempDir.deleteOnExit();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
103 }
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
104 File outPath = new File(tempDir, resource.substring(1));
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
105 try (InputStream in = fetchData(resource); FileOutputStream out = new FileOutputStream(outPath)) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
106 byte[] buffer = new byte[12];
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
107 while (true) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
108 int n = in.read(buffer);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
109 if (n <= 0)
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
110 break;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
111 out.write(buffer, 0, n);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
112 }
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
113 }
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
114 fileCache.put(resource, outPath);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
115 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
116
875
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
117 private InputStream fetchData(String resource) throws IOException {
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
118 String urlText = "http://" + serverHost + ":" + serverPort + resource;
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
119 if (verbose > 0) {
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
120 System.out.println("Fetching " + resource + " from " + urlText);
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
121 }
875
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
122 URL url = null;
859
68994abe3e03 Also catch java.net.URISyntaxException and java.net.MalformedURLException and convert them to an IOException.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 858
diff changeset
123 try {
875
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
124 url = new java.net.URI(urlText).toURL();
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
125 URLConnection conn = url.openConnection();
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
126 conn.connect();
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
127 return conn.getInputStream();
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
128 } catch (URISyntaxException | IOException e) {
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
129 throw new IOException("Cannot fetch resource " + resource + " from " + urlText + ": " + e, e);
859
68994abe3e03 Also catch java.net.URISyntaxException and java.net.MalformedURLException and convert them to an IOException.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 858
diff changeset
130 }
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
131 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
132
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
133 private void run() throws IOException, SQLException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
134 test_connect_plain();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
135 test_connect_tls();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
136 test_refuse_no_cert();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
137 test_refuse_wrong_cert();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
138 test_refuse_wrong_host();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
139 test_refuse_tlsv12();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
140 test_refuse_expired();
855
839d76eeb4ae Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 851
diff changeset
141 // test_connect_client_auth1();
839d76eeb4ae Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 851
diff changeset
142 // test_connect_client_auth2();
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
143 test_fail_tls_to_plain();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
144 test_fail_plain_to_tls();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
145 test_connect_server_name();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
146 test_connect_alpn_mapi9();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
147 test_connect_trusted();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
148 test_refuse_trusted_wrong_host();
805
2fee4b71baac Set ALPN protocol if the runtime supports it
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 804
diff changeset
149
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
150 // did we forget to call expectSucceed and expectFailure somewhere?
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
151 if (!preparedButNotRun.isEmpty()) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
152 String names = String.join(", ", preparedButNotRun);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
153 throw new RuntimeException("Not all tests called expectSuccess/expectFailure: " + names);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
154 }
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
155 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
156
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
157 private void test_connect_plain() throws IOException, SQLException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
158 attempt("connect_plain", "plain").with(Parameter.TLS, false).expectSuccess();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
159 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
160
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
161 private void test_connect_tls() throws IOException, SQLException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
162 Attempt attempt = attempt("connect_tls", "server1");
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
163 attempt.withFile(Parameter.CERT, "/ca1.crt").expectSuccess();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
164 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
165
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
166 private void test_refuse_no_cert() throws IOException, SQLException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
167 attempt("refuse_no_cert", "server1").expectFailure("PKIX path building failed");
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
168 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
169
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
170 private void test_refuse_wrong_cert() throws IOException, SQLException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
171 Attempt attempt = attempt("refuse_wrong_cert", "server1");
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
172 attempt.withFile(Parameter.CERT, "/ca2.crt").expectFailure("PKIX path building failed");
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
173 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
174
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
175 private void test_refuse_wrong_host() throws IOException, SQLException {
875
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
176 if (altHost == null)
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
177 return;
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
178 Attempt attempt = attempt("refuse_wrong_host", "server1").with(Parameter.HOST, altHost);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
179 attempt.withFile(Parameter.CERT, "/ca1.crt").expectFailure("No subject alternative DNS name");
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
180 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
181
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
182 private void test_refuse_tlsv12() throws IOException, SQLException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
183 Attempt attempt = attempt("refuse_tlsv12", "tls12");
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
184 attempt.withFile(Parameter.CERT, "/ca1.crt").expectFailure("protocol_version");
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
185 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
186
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
187 private void test_refuse_expired() throws IOException, SQLException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
188 Attempt attempt = attempt("refuse_expired", "expiredcert");
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
189 attempt.withFile(Parameter.CERT, "/ca1.crt").expectFailure("PKIX path validation failed");
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
190 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
191
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
192 private void test_connect_client_auth1() throws IOException, SQLException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
193 attempt("connect_client_auth1", "clientauth")
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
194 .withFile(Parameter.CERT, "/ca1.crt")
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
195 .withFile(Parameter.CLIENTKEY, "/client2.keycrt")
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
196 .expectSuccess();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
197 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
198
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
199 private void test_connect_client_auth2() throws IOException, SQLException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
200 attempt("connect_client_auth2", "clientauth")
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
201 .withFile(Parameter.CERT, "/ca1.crt")
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
202 .withFile(Parameter.CLIENTKEY, "/client2.key")
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
203 .withFile(Parameter.CLIENTCERT, "/client2.crt")
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
204 .expectSuccess();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
205 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
206
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
207 private void test_fail_tls_to_plain() throws IOException, SQLException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
208 Attempt attempt = attempt("fail_tls_to_plain", "plain");
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
209 attempt.withFile(Parameter.CERT, "/ca1.crt").expectFailure("");
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
210
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
211 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
212
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
213 private void test_fail_plain_to_tls() throws IOException, SQLException {
851
157dcb2d6516 relax wording of expected exception
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 834
diff changeset
214 attempt("fail_plain_to_tls", "server1").with(Parameter.TLS, false).expectFailure("Cannot connect", "Could not connect");
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
215 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
216
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
217 private void test_connect_server_name() throws IOException, SQLException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
218 Attempt attempt = attempt("connect_server_name", "sni");
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
219 attempt.withFile(Parameter.CERT, "/ca1.crt").expectSuccess();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
220 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
221
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
222 private void test_connect_alpn_mapi9() throws IOException, SQLException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
223 attempt("connect_alpn_mapi9", "alpn_mapi9").withFile(Parameter.CERT, "/ca1.crt").expectSuccess();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
224 }
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
225
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
226 private void test_connect_trusted() throws IOException, SQLException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
227 attempt("connect_trusted", null)
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
228 .with(Parameter.HOST, "monetdb.ergates.nl")
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
229 .with(Parameter.PORT, 50000)
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
230 .expectSuccess();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
231 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
232
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
233 private void test_refuse_trusted_wrong_host() throws IOException, SQLException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
234 attempt("test_refuse_trusted_wrong_host", null)
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
235 .with(Parameter.HOST, "monetdbxyz.ergates.nl")
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
236 .with(Parameter.PORT, 50000)
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
237 .expectFailure("No subject alternative DNS name");
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
238 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
239
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
240 private Attempt attempt(String testName, String portName) throws IOException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
241 preparedButNotRun.add(testName);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
242 return new Attempt(testName, portName);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
243 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
244
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
245 private class Attempt {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
246 private final String testName;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
247 private final Properties props = new Properties();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
248 boolean disabled = false;
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
249
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
250 public Attempt(String testName, String portName) throws IOException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
251 HashMap<String, Integer> portMap = loadPortMap(testName);
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
252
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
253 this.testName = testName;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
254 with(Parameter.TLS, true);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
255 with(Parameter.HOST, serverHost);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
256 with(Parameter.SO_TIMEOUT, 3000);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
257 if (portName != null) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
258 Integer port = portMap.get(portName);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
259 if (port != null) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
260 with(Parameter.PORT, port);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
261 } else {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
262 throw new RuntimeException("Unknown port name: " + portName);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
263 }
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
264 }
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
265 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
266
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
267 private Attempt with(Parameter parm, String value) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
268 props.setProperty(parm.name, value);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
269 return this;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
270 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
271
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
272 private Attempt with(Parameter parm, int value) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
273 props.setProperty(parm.name, Integer.toString(value));
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
274 return this;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
275 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
276
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
277 private Attempt with(Parameter parm, boolean value) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
278 props.setProperty(parm.name, value ? "true" : "false");
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
279 return this;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
280 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
281
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
282 private Attempt withFile(Parameter parm, String certResource) throws IOException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
283 File certFile = resource(certResource);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
284 String path = certFile.getPath();
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
285 with(parm, path);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
286 return this;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
287 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
288
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
289 public void expectSuccess() throws SQLException {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
290 preparedButNotRun.remove(testName);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
291 if (disabled)
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
292 return;
875
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
293 startVerbose();
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
294 try {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
295 Connection conn = DriverManager.getConnection("jdbc:monetdb:", props);
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
296 conn.close();
875
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
297 throw new RuntimeException("Test " + testName + " was supposed to throw an Exception saying 'Sorry, this is not a real MonetDB instance'");
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
298 } catch (SQLException e) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
299 if (e.getMessage().startsWith("Sorry, this is not a real MonetDB instance")) {
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
300 // it looks like a failure but this is actually our success scenario
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
301 // because this is what the TLS Tester does when the connection succeeds.
943
ff075ed5ce81 Spell check.
Sjoerd Mullender <sjoerd@acm.org>
parents: 937
diff changeset
302 endVerbose("successful MAPI handshake, as expected");
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
303 return;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
304 }
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
305 // other exceptions ARE errors and should be reported.
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
306 throw e;
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
307 }
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
308 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
309
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
310 public void expectFailure(String... expectedMessages) throws SQLException {
875
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
311 preparedButNotRun.remove(testName);
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
312 if (disabled)
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
313 return;
875
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
314 startVerbose();
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
315 try {
875
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
316 Connection conn = DriverManager.getConnection("jdbc:monetdb:", props);
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
317 conn.close();
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
318 throw new RuntimeException("Expected test " + testName + " to throw an exception but it didn't");
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
319 } catch (SQLException e) {
855
839d76eeb4ae Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 851
diff changeset
320 for (String expected : expectedMessages) {
875
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
321 if (e.getMessage().contains(expected)) {
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
322 endVerbose("connection failed as expected, message: " + e.getMessage());
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
323 return;
875
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
324 }
855
839d76eeb4ae Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents: 851
diff changeset
325 }
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
326 String message = "Test " + testName + " threw the wrong exception: " + e.getMessage() + '\n' + "Expected:\n <" + String.join(">\n <", expectedMessages) + ">";
851
157dcb2d6516 relax wording of expected exception
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 834
diff changeset
327 throw new RuntimeException(message, e);
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
328 }
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
329 }
875
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
330
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
331 private void startVerbose() {
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
332 if (verbose == 0)
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
333 return;
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
334
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
335 System.out.println("Test " + testName + ":");
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
336 for (String key: props.stringPropertyNames()) {
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
337 Object value = props.get(key);
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
338 if (value == null)
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
339 System.out.println(" " + key + " is null");
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
340 else
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
341 System.out.println(" " + key + " = " + value.toString());
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
342 }
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
343 }
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
344
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
345 private void endVerbose(String message) {
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
346 if (verbose > 0) {
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
347 System.out.println(" -> " + message);
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
348 System.out.println();
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
349 }
06f532009fda Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 859
diff changeset
350 }
834
5aa19bbed0d6 Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents: 805
diff changeset
351 }
802
5d04490bc58b Add tests using monetdb-tlstester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff changeset
352 }