testcontainers / testcontainers/testcontainers-java

[Bug]: withStartupTimoutSeconds(int) not working

Aperta
#8,590 3 commenti 1 reazione 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

type/bug
Lingua principale
Java
Stelle
8.7k
Fork
1.9k
Merge medio
2g 17h
PR unite (30g)
9

Descrizione

Module

Oracle Free

Testcontainers version

1.19.7

Using the latest Testcontainers version?

Yes

Host OS

Windows

Host Arch

x86

Docker version
Client:
 Cloud integration: v1.0.35-desktop+001
 Version:           24.0.5
 API version:       1.43
 Go version:        go1.20.6
 Git commit:        ced0996
 Built:             Fri Jul 21 20:36:24 2023
 OS/Arch:           windows/amd64
 Context:           default

Server: Docker Desktop 4.22.0 (117440)
 Engine:
  Version:          24.0.5
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.6
  Git commit:       a61e2b4
  Built:            Fri Jul 21 20:35:45 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.21
  GitCommit:        3dce8eb055cbb6872793272b4f20ed16117344f8
 runc:
  Version:          1.1.7
  GitCommit:        v1.1.7-0-g860f061
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
What happened?

With OracleContainer (both oracle-free and oracle-xe) the default startup time is 60 seconds, which is not enough in some cases.

Configuring the container with withStartupTimeoutSeconds(180) still leads to an startup timeout after 60 seconds:

@Container
    private static final OracleContainer oracle = new OracleContainer("gvenzl/oracle-free:slim-faststart")
            .withDatabaseName("testDB")
            .withUsername("testUser")
            .withPassword("testPassword")
            .withStartupTimeoutSeconds(180);

Startup log:

2024-04-30 08:53:46.290  INFO   --- [           main] tc.gvenzl/oracle-free:slim-faststart     : Creating container for image: gvenzl/oracle-free:slim-faststart
2024-04-30 08:53:46.441  INFO   --- [           main] tc.gvenzl/oracle-free:slim-faststart     : Container gvenzl/oracle-free:slim-faststart is starting: a81f38a6d5ae6f76b5e54179f07a55f4d6982374b2b5a2bf1a9921501a26176f
2024-04-30 08:54:46.965 ERROR   --- [           main] tc.gvenzl/oracle-free:slim-faststart     : Could not start container

org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*DATABASE IS READY TO USE!.*\s'

However, if I use withStartupTimeout(Duration.ofSeconds(180)) the startup timeout is overwritten correctly:

@Container
    private static final OracleContainer oracle = new OracleContainer("gvenzl/oracle-free:slim-faststart")
            .withDatabaseName("testDB")
            .withUsername("testUser")
            .withPassword("testPassword")
            .withStartupTimeout(Duration.ofSeconds(180));
2024-04-30 08:56:04.757  INFO   --- [           main] tc.gvenzl/oracle-free:slim-faststart     : Creating container for image: gvenzl/oracle-free:slim-faststart
2024-04-30 08:56:04.865  INFO   --- [           main] tc.gvenzl/oracle-free:slim-faststart     : Container gvenzl/oracle-free:slim-faststart is starting: f508df5cff9fd39a341708d1e2738030ae5b6adf7c2aa75bdd1515dcdfc662f5
2024-04-30 08:58:22.055  INFO   --- [           main] tc.gvenzl/oracle-free:slim-faststart     : Container gvenzl/oracle-free:slim-faststart started in PT2M17.2976617S
2024-04-30 08:58:22.056  INFO   --- [           main] tc.gvenzl/oracle-free:slim-faststart     : Container is started (JDBC URL: jdbc:oracle:thin:@localhost:65218/testDB)
Relevant log output

No response

Additional Information

No response

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia da OracleContainer e confronta l’implementazione di withStartupTimeoutSeconds(int) con quella di withStartupTimeout(Duration), usando come riproduzione gli esempi segnalati di 180 secondi. Aggiungi un test di regressione che verifichi che l’overload con intero consenta un avvio oltre i 60 secondi e conferma che l’avvio del container Oracle venga completato senza il timeout prematuro.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
docker, java
Ambito
databases, testing
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Tranquilla
Chiarezza
Abbastanza chiara
Idoneità per principianti
52/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.