Mercurial > hg > monetdb-java
annotate tests/TLSTester.java @ 925:4dfdb62e3e9d
Extend JDBC_API_Tester program with optional second startup argument '-skipMALoutput'.
This allows the JDBC_API_Tester program to be called to skip the comparing the MAL output of tests which return MAL output such as PLAN, EXPLAIN and TRACE statements.
It is intended for internal development use only.
author | Martin van Dinther <martin.van.dinther@monetdbsolutions.com> |
---|---|
date | Thu, 08 Aug 2024 15:26:28 +0200 (8 months ago) |
parents | c2164decf7f1 |
children | d416e9b6b3d0 |
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 * |
839d76eeb4ae
Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents:
851
diff
changeset
|
8 * Copyright 2024 MonetDB Foundation; |
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. |
875
06f532009fda
Add verbose mode to TLSTester
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
859
diff
changeset
|
302 endVerbose("succesful 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 } |