testcontainers / testcontainers/testcontainers-java
Add ability to increase default timeout for BrowserWebDriverContainer when checking if it's started
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
Hi, seems that on some slow agents we might be hitting the 30s hardcoded timeout. While we can extend BrowserWebDriverContainer to override containerIsStarted() (it's not perfect though since we cannot just copy paste the default content as it uses some private variables), it would be even nicer if the timeout could be configurable.
I'm referring to:
protected void containerIsStarted(InspectContainerResponse containerInfo) {
this.driver = (RemoteWebDriver)Unreliables.retryUntilSuccess(30, TimeUnit.SECONDS, (Callable)Timeouts.getWithTimeout(10, TimeUnit.SECONDS, () -> {
return () -> {
return new RemoteWebDriver(this.getSeleniumAddress(), this.capabilities);
};
}));
if (this.vncRecordingContainer != null) {
LOGGER.debug("Starting VNC recording");
this.vncRecordingContainer.start();
}
}
What I did FTR:
public class XWikiBrowserWebDriverContainer<T extends BrowserWebDriverContainer<T>> extends BrowserWebDriverContainer<T>
{
private Capabilities capabilities;
@Override
protected void containerIsStarted(InspectContainerResponse containerInfo)
{
Unreliables.retryUntilSuccess(60, TimeUnit.SECONDS,
Timeouts.getWithTimeout(20, TimeUnit.SECONDS,
() -> () -> new RemoteWebDriver(this.getSeleniumAddress(), this.capabilities)));
super.containerIsStarted(containerInfo);
}
@Override
public T withCapabilities(Capabilities capabilities)
{
this.capabilities = capabilities;
return super.withCapabilities(capabilities);
}
}
Thanks!
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit BrowserWebDriverContainer.containerIsStarted sowie dem im Issue gezeigten Retry- und Treiber-Erstellungspfad. Verfolge, wie withCapabilities und der private Zustand verwendet werden, und finde dann die vorhandenen Tests für den Container-Start, bevor du das Timeout konfigurierbar machst. Fertig ist die Aufgabe, wenn langsame Agents die Wartezeit für den Start überschreiben können, ohne private Implementierungsdetails zu kopieren.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- docker, java
- Bereich
- testing
- Issue-Typ
- Feature
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100