11package io .vertx .tests .pgclient ;
22
33
4- import io .vertx .core .*;
4+ import io .vertx .core .CompositeFuture ;
5+ import io .vertx .core .Future ;
6+ import io .vertx .core .Vertx ;
57import io .vertx .ext .unit .junit .VertxUnitRunner ;
68import io .vertx .pgclient .PgConnectOptions ;
79import io .vertx .pgclient .PgConnection ;
810import io .vertx .sqlclient .Cursor ;
911import io .vertx .sqlclient .Tuple ;
12+ import org .apache .commons .compress .utils .IOUtils ;
1013import org .junit .After ;
1114import org .junit .Before ;
1215import org .junit .Test ;
1316import org .junit .runner .RunWith ;
1417import org .testcontainers .Testcontainers ;
1518import org .testcontainers .containers .FixedHostPortGenericContainer ;
1619import org .testcontainers .containers .GenericContainer ;
17- import org .testcontainers .utility .DockerImageName ;
18-
19- import java .util .*;
20+ import org .testcontainers .images .builder .ImageFromDockerfile ;
21+ import org .testcontainers .images .builder .Transferable ;
22+
23+ import java .io .IOException ;
24+ import java .io .InputStream ;
25+ import java .util .ArrayList ;
26+ import java .util .Arrays ;
27+ import java .util .List ;
2028import java .util .concurrent .TimeUnit ;
2129import java .util .stream .Collectors ;
2230
2331import static org .junit .Assert .assertEquals ;
32+ import static org .testcontainers .containers .BindMode .READ_ONLY ;
2433
2534@ RunWith (VertxUnitRunner .class )
2635public class PgBouncerTest {
@@ -41,21 +50,15 @@ public void setUp() {
4150 pgContainer .withNetworkAliases ("foo" );
4251 pgContainer .start ();
4352 Integer pgPort = pgContainer .getFirstMappedPort ();
44- String pgHost = pgContainer .getHost ();
4553
4654 Testcontainers .exposeHostPorts (pgPort );
4755
48-
49- pgBouncerContainer = new GenericContainer (DockerImageName .parse ("bitnamilegacy/pgbouncer:1.20.1-debian-11-r30" ));
50- pgBouncerContainer .withEnv ("POSTGRESQL_USERNAME" , "postgres" );
51- pgBouncerContainer .withEnv ("POSTGRESQL_PASSWORD" , "postgres" );
52- pgBouncerContainer .withEnv ("POSTGRESQL_DATABASE" , "postgres" );
53- pgBouncerContainer .withEnv ("POSTGRESQL_HOST" , "host.testcontainers.internal" );
54- pgBouncerContainer .withEnv ("POSTGRESQL_PORT" , "" + pgPort );
55- pgBouncerContainer .withEnv ("PGBOUNCER_IGNORE_STARTUP_PARAMETERS" , "extra_float_digits" );
56- pgBouncerContainer .withEnv ("PGBOUNCER_POOL_MODE" , "transaction" );
57- pgBouncerContainer .withEnv ("PGBOUNCER_MAX_DB_CONNECTIONS" , "2" );
58- pgBouncerContainer .withExposedPorts (6432 );
56+ pgBouncerContainer = new GenericContainer <>(
57+ new ImageFromDockerfile ()
58+ .withFileFromTransferable ("Dockerfile" , resourceTransferable ("pgBouncer/Dockerfile" )))
59+ .withClasspathResourceMapping ("pgBouncer/pgbouncer.ini" , "/etc/pgbouncer/pgbouncer.ini" , READ_ONLY )
60+ .withClasspathResourceMapping ("pgBouncer/userlist.txt" , "/etc/pgbouncer/userlist.txt" , READ_ONLY )
61+ .withExposedPorts (6432 );
5962 pgBouncerContainer .start ();
6063 Integer bouncerPort = pgBouncerContainer .getFirstMappedPort ();
6164 String bouncerHost = pgBouncerContainer .getHost ();
@@ -72,6 +75,15 @@ public void setUp() {
7275 vertx = Vertx .vertx ();
7376 }
7477
78+ private static Transferable resourceTransferable (String resourceName ) {
79+ try (InputStream stream = PgBouncerTest .class .getClassLoader ().getResourceAsStream (resourceName )) {
80+ assert stream != null ;
81+ return Transferable .of (IOUtils .toByteArray (stream ));
82+ } catch (IOException e ) {
83+ throw new RuntimeException (e );
84+ }
85+ }
86+
7587 @ After
7688 public void tearDown () throws Exception {
7789 Testcontainers .exposeHostPorts ();
0 commit comments