27
27
import org .openqa .selenium .remote .tracing .Tracer ;
28
28
29
29
import java .net .URL ;
30
+ import java .nio .file .Files ;
31
+ import java .nio .file .Paths ;
30
32
import java .time .Duration ;
31
33
import java .time .Instant ;
34
+ import java .util .List ;
35
+ import java .util .logging .Level ;
36
+ import java .util .logging .Logger ;
32
37
33
38
public class DockerSession extends ProtocolConvertingSession {
34
39
40
+ private static final Logger LOG = Logger .getLogger (DockerSession .class .getName ());
35
41
private final Container container ;
36
42
private final Container videoContainer ;
43
+ private final DockerAssetsPath assetsPath ;
37
44
38
45
DockerSession (
39
46
Container container ,
@@ -46,17 +53,31 @@ public class DockerSession extends ProtocolConvertingSession {
46
53
Capabilities capabilities ,
47
54
Dialect downstream ,
48
55
Dialect upstream ,
49
- Instant startTime ) {
56
+ Instant startTime ,
57
+ DockerAssetsPath assetsPath ) {
50
58
super (tracer , client , id , url , downstream , upstream , stereotype , capabilities , startTime );
51
59
this .container = Require .nonNull ("Container" , container );
52
60
this .videoContainer = videoContainer ;
61
+ this .assetsPath = Require .nonNull ("Assets path" , assetsPath );
53
62
}
54
63
55
64
@ Override
56
65
public void stop () {
57
66
if (videoContainer != null ) {
58
67
videoContainer .stop (Duration .ofSeconds (10 ));
59
68
}
69
+ saveLogs ();
60
70
container .stop (Duration .ofMinutes (1 ));
61
71
}
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
+ }
62
83
}
0 commit comments