From bec5a75acd45528e0de0e3390aed64bb63328671 Mon Sep 17 00:00:00 2001 From: Viet Nguyen Duc Date: Tue, 4 Feb 2025 13:33:04 +0700 Subject: [PATCH 1/2] [grid] Add default sessionTimeout to NodeStatus to increase backward compatibility Signed-off-by: Viet Nguyen Duc --- java/src/org/openqa/selenium/grid/data/NodeStatus.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/src/org/openqa/selenium/grid/data/NodeStatus.java b/java/src/org/openqa/selenium/grid/data/NodeStatus.java index ec969ef4163e4..4b52a617203bd 100644 --- a/java/src/org/openqa/selenium/grid/data/NodeStatus.java +++ b/java/src/org/openqa/selenium/grid/data/NodeStatus.java @@ -76,7 +76,7 @@ public static NodeStatus fromJson(JsonInput input) { Set slots = null; Availability availability = null; Duration heartbeatPeriod = null; - Duration sessionTimeout = null; + Duration sessionTimeout = Duration.ofSeconds(300); String version = null; Map osInfo = null; From bd9c5f3e733ca151ea1e58a5e79a969763d1ede2 Mon Sep 17 00:00:00 2001 From: Viet Nguyen Duc Date: Tue, 4 Feb 2025 14:21:07 +0700 Subject: [PATCH 2/2] Add test sessionTimeout from NodeStatus JSON scheme Signed-off-by: Viet Nguyen Duc --- .../selenium/grid/data/NodeStatusTest.java | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/java/test/org/openqa/selenium/grid/data/NodeStatusTest.java b/java/test/org/openqa/selenium/grid/data/NodeStatusTest.java index 4926f08e02c9e..f03397cbffb89 100644 --- a/java/test/org/openqa/selenium/grid/data/NodeStatusTest.java +++ b/java/test/org/openqa/selenium/grid/data/NodeStatusTest.java @@ -72,4 +72,79 @@ void ensureRoundTripWorks() throws URISyntaxException { assertThat(seen).isEqualTo(status); } + + @Test + void withoutSessionTimeoutInJsonStatus() throws URISyntaxException { + String source = + "{\n" + + " \"availability\": \"UP\",\n" + + " \"externalUri\": \"http:\\u002f\\u002f192.168.1.101:5555\",\n" + + " \"heartbeatPeriod\": 60000,\n" + + " \"maxSessions\": 1,\n" + + " \"nodeId\": \"d136dd9b-6497-4049-9371-42f89b14ea2b\",\n" + + " \"osInfo\": {\n" + + " \"arch\": \"aarch64\",\n" + + " \"name\": \"Mac OS X\",\n" + + " \"version\": \"15.3\"\n" + + " },\n" + + " \"slots\": [\n" + + " {\n" + + " \"id\": {\n" + + " \"hostId\": \"d136dd9b-6497-4049-9371-42f89b14ea2b\",\n" + + " \"id\": \"965e8cb4-7b48-4638-8bc8-6889c6319682\"\n" + + " },\n" + + " \"lastStarted\": \"1970-01-01T00:00:00Z\",\n" + + " \"session\": null,\n" + + " \"stereotype\": {\n" + + " \"browserName\": \"chrome\",\n" + + " \"platformName\": \"mac\"\n" + + " }\n" + + " }\n" + + " ],\n" + + " \"version\": \"4.17.0 (revision unknown*)\"\n" + + " }"; + + Json json = new Json(); + NodeStatus nodeStatus = json.toType(source, NodeStatus.class); + + assertThat(nodeStatus.getSessionTimeout()).isEqualTo(Duration.ofSeconds(300)); + } + + @Test + void withSessionTimeoutInJsonStatus() throws URISyntaxException { + String source = + "{\n" + + " \"availability\": \"UP\",\n" + + " \"externalUri\": \"http:\\u002f\\u002f192.168.1.101:5555\",\n" + + " \"heartbeatPeriod\": 60000,\n" + + " \"maxSessions\": 1,\n" + + " \"sessionTimeout\": 600000,\n" + + " \"nodeId\": \"d136dd9b-6497-4049-9371-42f89b14ea2b\",\n" + + " \"osInfo\": {\n" + + " \"arch\": \"aarch64\",\n" + + " \"name\": \"Mac OS X\",\n" + + " \"version\": \"15.3\"\n" + + " },\n" + + " \"slots\": [\n" + + " {\n" + + " \"id\": {\n" + + " \"hostId\": \"d136dd9b-6497-4049-9371-42f89b14ea2b\",\n" + + " \"id\": \"965e8cb4-7b48-4638-8bc8-6889c6319682\"\n" + + " },\n" + + " \"lastStarted\": \"1970-01-01T00:00:00Z\",\n" + + " \"session\": null,\n" + + " \"stereotype\": {\n" + + " \"browserName\": \"chrome\",\n" + + " \"platformName\": \"mac\"\n" + + " }\n" + + " }\n" + + " ],\n" + + " \"version\": \"4.17.0 (revision unknown*)\"\n" + + " }"; + + Json json = new Json(); + NodeStatus nodeStatus = json.toType(source, NodeStatus.class); + + assertThat(nodeStatus.getSessionTimeout()).isEqualTo(Duration.ofSeconds(600)); + } }