Skip to content

Commit ed7d29e

Browse files
committed
[grid] Saving Selenium logs in Dynamic Grid
Fixes SeleniumHQ/docker-selenium#1575
1 parent 8645caf commit ed7d29e

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

java/src/org/openqa/selenium/grid/node/docker/DockerSession.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,20 @@
2727
import org.openqa.selenium.remote.tracing.Tracer;
2828

2929
import java.net.URL;
30+
import java.nio.file.Files;
31+
import java.nio.file.Paths;
3032
import java.time.Duration;
3133
import java.time.Instant;
34+
import java.util.List;
35+
import java.util.logging.Level;
36+
import java.util.logging.Logger;
3237

3338
public class DockerSession extends ProtocolConvertingSession {
3439

40+
private static final Logger LOG = Logger.getLogger(DockerSession.class.getName());
3541
private final Container container;
3642
private final Container videoContainer;
43+
private final DockerAssetsPath assetsPath;
3744

3845
DockerSession(
3946
Container container,
@@ -46,17 +53,31 @@ public class DockerSession extends ProtocolConvertingSession {
4653
Capabilities capabilities,
4754
Dialect downstream,
4855
Dialect upstream,
49-
Instant startTime) {
56+
Instant startTime,
57+
DockerAssetsPath assetsPath) {
5058
super(tracer, client, id, url, downstream, upstream, stereotype, capabilities, startTime);
5159
this.container = Require.nonNull("Container", container);
5260
this.videoContainer = videoContainer;
61+
this.assetsPath = Require.nonNull("Assets path", assetsPath);
5362
}
5463

5564
@Override
5665
public void stop() {
5766
if (videoContainer != null) {
5867
videoContainer.stop(Duration.ofSeconds(10));
5968
}
69+
saveLogs();
6070
container.stop(Duration.ofMinutes(1));
6171
}
72+
73+
private void saveLogs() {
74+
String sessionAssetsPath = assetsPath.getContainerPath(getId());
75+
String seleniumServerLog = String.format("%s/selenium-server.log", sessionAssetsPath);
76+
try {
77+
List<String> logs = container.getLogs().getLogLines();
78+
Files.write(Paths.get(seleniumServerLog), logs);
79+
} catch (Exception e) {
80+
LOG.log(Level.WARNING, "Error saving logs", e);
81+
}
82+
}
6283
}

java/src/org/openqa/selenium/grid/node/docker/DockerSessionFactory.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,8 @@ public Either<WebDriverException, ActiveSession> apply(CreateSessionRequest sess
266266
mergedCapabilities,
267267
downstream,
268268
result.getDialect(),
269-
Instant.now()));
269+
Instant.now(),
270+
assetsPath));
270271
}
271272
}
272273

0 commit comments

Comments
 (0)