Mercurial > hg > monetdb-java
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 |
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 | 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 } |