Skip to content

Commit 95c6ba0

Browse files
author
Andrei Kamarouski
committed
add StartSessionInterceptor -> setSessionRegisterConsumer
1 parent ee4762e commit 95c6ba0

File tree

1 file changed

+34
-4
lines changed

1 file changed

+34
-4
lines changed

src/main/java/com/zebrunner/agent/core/webdriver/StartSessionInterceptor.java

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
import com.zebrunner.agent.core.config.ConfigurationHolder;
44
import com.zebrunner.agent.core.registrar.TestSessionRegistrar;
55
import com.zebrunner.agent.core.registrar.descriptor.SessionStartDescriptor;
6+
import lombok.Data;
7+
import lombok.NoArgsConstructor;
8+
import lombok.RequiredArgsConstructor;
69
import lombok.extern.slf4j.Slf4j;
710
import net.bytebuddy.implementation.bind.annotation.Argument;
811
import net.bytebuddy.implementation.bind.annotation.RuntimeType;
@@ -21,12 +24,19 @@
2124
import java.net.URISyntaxException;
2225
import java.net.URL;
2326
import java.util.Arrays;
27+
import java.util.Objects;
28+
import java.util.function.Consumer;
2429

2530
@Slf4j
2631
public class StartSessionInterceptor {
2732

2833
private static final TestSessionRegistrar REGISTRAR = TestSessionRegistrar.getInstance();
2934
private static final CapabilitiesCustomizerChain CAPABILITIES_CUSTOMIZER_CHAIN = CapabilitiesCustomizerChain.getInstance();
35+
private static final ThreadLocal<Consumer<SessionRegisterDescriptor>> SESSION_REGISTER_DESCRIPTOR_CONSUMER = new ThreadLocal<>();
36+
37+
public static void setSessionRegisterConsumer(Consumer<SessionRegisterDescriptor> consumer) {
38+
SESSION_REGISTER_DESCRIPTOR_CONSUMER.set(consumer);
39+
}
3040

3141
@RuntimeType
3242
public static void onSessionStart(@This RemoteWebDriver driver,
@@ -37,7 +47,9 @@ public static void onSessionStart(@This RemoteWebDriver driver,
3747
capabilities = customizeCapabilities(methodInvocationProxy, capabilities);
3848
}
3949

40-
SessionStartDescriptor startDescriptor = SessionStartDescriptor.initiatedWith(capabilities.asMap());
50+
SessionRegisterDescriptor sessionRegisterDescriptor = new SessionRegisterDescriptor();
51+
sessionRegisterDescriptor.setSessionStartDescriptor(SessionStartDescriptor.initiatedWith(capabilities.asMap()));
52+
4153
try {
4254
methodInvocationProxy.run();
4355

@@ -61,14 +73,24 @@ public static void onSessionStart(@This RemoteWebDriver driver,
6173
driverCapabilities = (Capabilities) capabilitiesField.get(driver);
6274
}
6375

64-
startDescriptor.successfullyStartedWith(sessionId, driverCapabilities.asMap());
76+
sessionRegisterDescriptor.getSessionStartDescriptor()
77+
.successfullyStartedWith(sessionId, driverCapabilities.asMap());
6578
} catch (Exception e) {
79+
sessionRegisterDescriptor.setException(e);
6680
StringWriter errorMessageStringWriter = new StringWriter();
6781
e.printStackTrace(new PrintWriter(errorMessageStringWriter));
68-
startDescriptor.failedToStart(errorMessageStringWriter.toString());
82+
sessionRegisterDescriptor.getSessionStartDescriptor()
83+
.failedToStart(errorMessageStringWriter.toString());
6984
throw e;
7085
} finally {
71-
REGISTRAR.registerStart(startDescriptor);
86+
if (SESSION_REGISTER_DESCRIPTOR_CONSUMER.get() == null) {
87+
REGISTRAR.registerStart(sessionRegisterDescriptor.getSessionStartDescriptor());
88+
} else {
89+
Consumer<SessionRegisterDescriptor> consumer = SESSION_REGISTER_DESCRIPTOR_CONSUMER.get();
90+
SESSION_REGISTER_DESCRIPTOR_CONSUMER.remove();
91+
sessionRegisterDescriptor.setTestSessionRegistrar(REGISTRAR);
92+
consumer.accept(sessionRegisterDescriptor);
93+
}
7294
}
7395
}
7496

@@ -157,4 +179,12 @@ private static Capabilities customizeCapabilities(Runnable methodInvocationProxy
157179
return capabilities;
158180
}
159181

182+
@Data
183+
@NoArgsConstructor
184+
@RequiredArgsConstructor
185+
public static class SessionRegisterDescriptor {
186+
private TestSessionRegistrar testSessionRegistrar;
187+
private SessionStartDescriptor sessionStartDescriptor;
188+
private Exception exception;
189+
}
160190
}

0 commit comments

Comments
 (0)