testcontainers / testcontainers/testcontainers-java

NullPointerException in execInContainer for long running commands

Offen
#4,453 9 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Java
Sterne
8.7k
Forks
1.9k
Ø Merge
2 T. 17 Std.
Gemergte PRs (30 T.)
9

Beschreibung

Test case:

    @Test
    public void testExecInContainer() throws InterruptedException, IOException {
        try (GenericContainer<?> c = new GenericContainer<>(DockerImageName.parse("redis:3.0.2"))) {
            c.start();
            Container.ExecResult r = c.execInContainer("/bin/bash", "-c", "sleep 600");
        }
    }

After 3 minutes, I've got this exception (tested with testcontainers 1.16.0):

java.lang.NullPointerException
	at org.testcontainers.containers.ExecInContainerPattern.execInContainer(ExecInContainerPattern.java:85)
	at org.testcontainers.containers.ContainerState.execInContainer(ContainerState.java:235)
	at org.testcontainers.containers.ContainerState.execInContainer(ContainerState.java:226)

Note: I'm using DOCKER_HOST to execute on a Linux machine.

My real problem is: how do I execute a command which runs a long time? there seems to be an underlying socket timeout in docker-java, is it possible to increase this timeout?

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit dem fehlschlagenden Testfall im Issue und untersuche ExecInContainerPattern.java:85. Folge dann den Aufrufen durch ContainerState.java:226 und :235. Reproduziere den lang laufenden /bin/bash sleep-Befehl mit dem DOCKER_HOST-Setup und ermittle, warum er nach drei Minuten zu einer NullPointerException wird. Erledigt ist die Aufgabe, wenn lang laufende Exec-Befehle das Timeout ohne diese Exception behandeln.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
docker, java
Bereich
devops, testing-qa
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.