1
1
/*
2
- * Copyright 2022 the original author or authors.
2
+ * Copyright 2023 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
32
32
33
33
public class DowntimeIntegrationTests {
34
34
35
- // Simulate server downtime, where connections are accepted and then closed immediately
36
- static DisposableServer newServer () {
37
- return TcpServer .create ()
38
- .doOnConnection (DisposableChannel ::dispose )
39
- .bindNow ();
40
- }
41
-
42
- static PostgresqlConnectionFactory newConnectionFactory (DisposableServer server , SSLMode sslMode ) {
43
- return new PostgresqlConnectionFactory (
44
- PostgresqlConnectionConfiguration .builder ()
45
- .host (server .host ())
46
- .port (server .port ())
47
- .username ("test" )
48
- .sslMode (sslMode )
49
- .build ());
50
- }
51
-
52
- static void verifyError (SSLMode sslMode , Consumer <Throwable > assertions ) {
53
- DisposableServer server = newServer ();
54
- PostgresqlConnectionFactory connectionFactory = newConnectionFactory (server , sslMode );
55
- connectionFactory .create ().as (StepVerifier ::create ).verifyErrorSatisfies (assertions );
56
- server .disposeNow ();
57
- }
58
-
59
35
@ Test
60
36
void failSslHandshakeIfInboundClosed () {
61
37
verifyError (SSLMode .REQUIRE , error ->
@@ -72,11 +48,38 @@ void failSslTunnelIfInboundClosed() {
72
48
.cause ()
73
49
.isInstanceOf (ClosedChannelException .class );
74
50
75
- assertThat (error .getCause ().getSuppressed (). length ). isOne ( );
51
+ assertThat (error .getCause ().getSuppressed ()). hasSize ( 1 );
76
52
77
53
assertThat (error .getCause ().getSuppressed ()[0 ])
78
54
.hasMessage ("Connection closed while SSL/TLS handshake was in progress" );
79
55
});
80
56
}
81
57
58
+ // Simulate server downtime, where connections are accepted and then closed immediately
59
+ static DisposableServer newServer () {
60
+ return TcpServer .create ()
61
+ .doOnConnection (DisposableChannel ::dispose )
62
+ .bindNow ();
63
+ }
64
+
65
+ static PostgresqlConnectionFactory newConnectionFactory (DisposableServer server , SSLMode sslMode ) {
66
+ return new PostgresqlConnectionFactory (
67
+ PostgresqlConnectionConfiguration .builder ()
68
+ .host (server .host ())
69
+ .port (server .port ())
70
+ .username ("test" )
71
+ .sslMode (sslMode )
72
+ .build ());
73
+ }
74
+
75
+ static void verifyError (SSLMode sslMode , Consumer <Throwable > assertions ) {
76
+ DisposableServer server = newServer ();
77
+ PostgresqlConnectionFactory connectionFactory = newConnectionFactory (server , sslMode );
78
+ try {
79
+ connectionFactory .create ().as (StepVerifier ::create ).verifyErrorSatisfies (assertions );
80
+ } finally {
81
+ server .disposeNow ();
82
+ }
83
+ }
84
+
82
85
}
0 commit comments