From e318883084717bcb89b2a5f4df8f7b971c558061 Mon Sep 17 00:00:00 2001 From: Mike Reiche Date: Fri, 12 Nov 2021 13:35:39 +0100 Subject: [PATCH] Improved SessionContext related logging --- .../testng/worker/finish/MethodEndWorker.java | 4 ++-- .../logging/ContextIdsPatternConverter.java | 7 +++---- .../report/model/context/AbstractContext.java | 6 +----- .../report/model/context/SessionContext.java | 14 +++----------- .../report/utils/ExecutionContextController.java | 8 ++++++-- .../webdrivermanager/WebDriverFactory.java | 7 ++++--- .../webdrivermanager/WebDriverSessionsManager.java | 6 +++--- 7 files changed, 22 insertions(+), 30 deletions(-) diff --git a/core/src/main/java/eu/tsystems/mms/tic/testframework/execution/testng/worker/finish/MethodEndWorker.java b/core/src/main/java/eu/tsystems/mms/tic/testframework/execution/testng/worker/finish/MethodEndWorker.java index 5f36338aa..bdf6c7dc0 100644 --- a/core/src/main/java/eu/tsystems/mms/tic/testframework/execution/testng/worker/finish/MethodEndWorker.java +++ b/core/src/main/java/eu/tsystems/mms/tic/testframework/execution/testng/worker/finish/MethodEndWorker.java @@ -43,8 +43,6 @@ public class MethodEndWorker implements MethodEndEvent.Listener, Loggable { @Subscribe @Override public void onMethodEnd(MethodEndEvent event) { - ExecutionContextController.clearCurrentTestResult(); - ITestResult testResult = event.getTestResult(); ITestNGMethod testMethod = event.getTestMethod(); MethodContext methodContext = event.getMethodContext(); @@ -70,5 +68,7 @@ public void onMethodEnd(MethodEndEvent event) { if (methodContext.getStatus() != Status.FAILED) { TesterraListener.getEventBus().post(new TestStatusUpdateEvent(methodContext)); } + + ExecutionContextController.clearCurrentTestResult(); } } diff --git a/core/src/main/java/eu/tsystems/mms/tic/testframework/logging/ContextIdsPatternConverter.java b/core/src/main/java/eu/tsystems/mms/tic/testframework/logging/ContextIdsPatternConverter.java index 5f59135c8..1d2ae5758 100644 --- a/core/src/main/java/eu/tsystems/mms/tic/testframework/logging/ContextIdsPatternConverter.java +++ b/core/src/main/java/eu/tsystems/mms/tic/testframework/logging/ContextIdsPatternConverter.java @@ -50,10 +50,9 @@ public void format(LogEvent event, StringBuilder toAppendTo ) { } // enhance with method context id - SessionContext currentSessionContext = ExecutionContextController.getCurrentSessionContext(); - if (currentSessionContext != null) { - toAppendTo.append("[SCID:").append(currentSessionContext.getId()).append("]"); - } + ExecutionContextController.getCurrentSessionContext().flatMap(SessionContext::getRemoteSessionId).ifPresent(s -> { + toAppendTo.append("[SCID:").append(s).append("]"); + }); } public static ContextIdsPatternConverter newInstance(String[] options) { diff --git a/core/src/main/java/eu/tsystems/mms/tic/testframework/report/model/context/AbstractContext.java b/core/src/main/java/eu/tsystems/mms/tic/testframework/report/model/context/AbstractContext.java index 1413fd54d..3d785a00b 100644 --- a/core/src/main/java/eu/tsystems/mms/tic/testframework/report/model/context/AbstractContext.java +++ b/core/src/main/java/eu/tsystems/mms/tic/testframework/report/model/context/AbstractContext.java @@ -38,7 +38,7 @@ public abstract class AbstractContext implements Loggable { private String name; - private String id; + private final String id = IDUtils.getB64encXID(); private AbstractContext parentContext; private final Date startTime = new Date(); private Date endTime; @@ -75,10 +75,6 @@ protected void setName(String name) { this.name = name; } - protected void setId(String id) { - this.id = id; - } - protected void setParentContext(AbstractContext context) { this.parentContext = context; } diff --git a/core/src/main/java/eu/tsystems/mms/tic/testframework/report/model/context/SessionContext.java b/core/src/main/java/eu/tsystems/mms/tic/testframework/report/model/context/SessionContext.java index 80e16b509..fc38dc64b 100644 --- a/core/src/main/java/eu/tsystems/mms/tic/testframework/report/model/context/SessionContext.java +++ b/core/src/main/java/eu/tsystems/mms/tic/testframework/report/model/context/SessionContext.java @@ -38,6 +38,7 @@ public class SessionContext extends AbstractContext { private Map capabilities; private final WebDriverRequest webDriverRequest; private final Queue methodContexts = new ConcurrentLinkedQueue<>(); + private String remoteSessionId; public SessionContext(WebDriverRequest webDriverRequest) { try { @@ -46,15 +47,6 @@ public SessionContext(WebDriverRequest webDriverRequest) { throw new RuntimeException(e); } this.setName(webDriverRequest.getSessionKey()); - -// this.provider = provider; -// -// final MethodContext currentMethodContext = ExecutionContextController.getCurrentMethodContext(); -// if (currentMethodContext != null) { -// this.name = currentMethodContext.getName() + "_"; -// } else { -// this.name = ""; -// } } public WebDriverRequest getWebDriverRequest() { @@ -71,11 +63,11 @@ public SessionContext setSessionKey(String sessionKey) { } public Optional getRemoteSessionId() { - return Optional.of(getId()); + return Optional.ofNullable(this.remoteSessionId); } public SessionContext setRemoteSessionId(String sessionId) { - setId(sessionId); + this.remoteSessionId = sessionId; return this; } diff --git a/core/src/main/java/eu/tsystems/mms/tic/testframework/report/utils/ExecutionContextController.java b/core/src/main/java/eu/tsystems/mms/tic/testframework/report/utils/ExecutionContextController.java index 654a9606d..100378897 100644 --- a/core/src/main/java/eu/tsystems/mms/tic/testframework/report/utils/ExecutionContextController.java +++ b/core/src/main/java/eu/tsystems/mms/tic/testframework/report/utils/ExecutionContextController.java @@ -146,8 +146,12 @@ public static void setCurrentSessionContext(final SessionContext sessionContext) CURRENT_SESSION_CONTEXT.set(sessionContext); } - public static SessionContext getCurrentSessionContext() { - return CURRENT_SESSION_CONTEXT.get(); + public static Optional getCurrentSessionContext() { + return Optional.ofNullable(CURRENT_SESSION_CONTEXT.get()); + } + + public static void clearCurrentSessionContext() { + CURRENT_SESSION_CONTEXT.remove(); } /** diff --git a/driver-ui/src/main/java/eu/tsystems/mms/tic/testframework/webdrivermanager/WebDriverFactory.java b/driver-ui/src/main/java/eu/tsystems/mms/tic/testframework/webdrivermanager/WebDriverFactory.java index 8ca377929..46e750ff0 100644 --- a/driver-ui/src/main/java/eu/tsystems/mms/tic/testframework/webdrivermanager/WebDriverFactory.java +++ b/driver-ui/src/main/java/eu/tsystems/mms/tic/testframework/webdrivermanager/WebDriverFactory.java @@ -81,18 +81,19 @@ build the final request (filled with all requested values) if (rawDriver instanceof RemoteWebDriver) { SessionId sessionId = ((RemoteWebDriver) rawDriver).getSessionId(); sessionContext.setRemoteSessionId(sessionId.toString()); + } else { + sessionContext.setRemoteSessionId(sessionContext.getId()); } sessionContext.setActualBrowserName(browserInformation.getBrowserName()); sessionContext.setActualBrowserVersion(browserInformation.getBrowserVersion()); log().info(String.format( - "Started %s (sessionKey=%s, sessionId=%s, node=%s, userAgent=%s) in %s", + "Started %s (sessionKey=%s, node=%s, userAgent=%s) in %s", rawDriver.getClass().getSimpleName(), sessionContext.getSessionKey(), - sessionContext.getRemoteSessionId().orElse("(local)"), sessionContext.getNodeInfo().map(Object::toString).orElse("(unknown)"), browserInformation.getBrowserName() + ":" + browserInformation.getBrowserVersion(), - sw.toString() + sw )); /* diff --git a/driver-ui/src/main/java/eu/tsystems/mms/tic/testframework/webdrivermanager/WebDriverSessionsManager.java b/driver-ui/src/main/java/eu/tsystems/mms/tic/testframework/webdrivermanager/WebDriverSessionsManager.java index 7fb4cfccf..ae453f3fd 100644 --- a/driver-ui/src/main/java/eu/tsystems/mms/tic/testframework/webdrivermanager/WebDriverSessionsManager.java +++ b/driver-ui/src/main/java/eu/tsystems/mms/tic/testframework/webdrivermanager/WebDriverSessionsManager.java @@ -32,13 +32,10 @@ import eu.tsystems.mms.tic.testframework.report.model.context.SessionContext; import eu.tsystems.mms.tic.testframework.report.utils.ExecutionContextController; import eu.tsystems.mms.tic.testframework.report.utils.ExecutionContextUtils; -import eu.tsystems.mms.tic.testframework.utils.StringUtils; import eu.tsystems.mms.tic.testframework.utils.WebDriverUtils; import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Queue; @@ -47,6 +44,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; import java.util.function.Consumer; import java.util.stream.Stream; +import org.apache.commons.lang3.StringUtils; import org.openqa.selenium.WebDriver; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.support.events.EventFiringWebDriver; @@ -118,6 +116,8 @@ private static void unlinkFromThread(String sessionKey, WebDriver eventFiringWeb final long threadId = Thread.currentThread().getId(); WEBDRIVER_THREAD_ID_MAP.remove(eventFiringWebDriver, threadId); + ExecutionContextController.clearCurrentSessionContext(); + /* storing driver into driver storage, for whatever reason */