Skip to content

Commit b994835

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

File tree

1 file changed

+33
-4
lines changed

1 file changed

+33
-4
lines changed

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

+33-4
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,18 @@
2124
import java.net.URISyntaxException;
2225
import java.net.URL;
2326
import java.util.Arrays;
27+
import java.util.function.Consumer;
2428

2529
@Slf4j
2630
public class StartSessionInterceptor {
2731

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

3140
@RuntimeType
3241
public static void onSessionStart(@This RemoteWebDriver driver,
@@ -37,7 +46,9 @@ public static void onSessionStart(@This RemoteWebDriver driver,
3746
capabilities = customizeCapabilities(methodInvocationProxy, capabilities);
3847
}
3948

40-
SessionStartDescriptor startDescriptor = SessionStartDescriptor.initiatedWith(capabilities.asMap());
49+
SessionRegisterDescriptor sessionRegisterDescriptor = new SessionRegisterDescriptor();
50+
sessionRegisterDescriptor.setSessionStartDescriptor(SessionStartDescriptor.initiatedWith(capabilities.asMap()));
51+
4152
try {
4253
methodInvocationProxy.run();
4354

@@ -61,14 +72,24 @@ public static void onSessionStart(@This RemoteWebDriver driver,
6172
driverCapabilities = (Capabilities) capabilitiesField.get(driver);
6273
}
6374

64-
startDescriptor.successfullyStartedWith(sessionId, driverCapabilities.asMap());
75+
sessionRegisterDescriptor.getSessionStartDescriptor()
76+
.successfullyStartedWith(sessionId, driverCapabilities.asMap());
6577
} catch (Exception e) {
78+
sessionRegisterDescriptor.setException(e);
6679
StringWriter errorMessageStringWriter = new StringWriter();
6780
e.printStackTrace(new PrintWriter(errorMessageStringWriter));
68-
startDescriptor.failedToStart(errorMessageStringWriter.toString());
81+
sessionRegisterDescriptor.getSessionStartDescriptor()
82+
.failedToStart(errorMessageStringWriter.toString());
6983
throw e;
7084
} finally {
71-
REGISTRAR.registerStart(startDescriptor);
85+
if (SESSION_REGISTER_DESCRIPTOR_CONSUMER.get() == null) {
86+
REGISTRAR.registerStart(sessionRegisterDescriptor.getSessionStartDescriptor());
87+
} else {
88+
Consumer<SessionRegisterDescriptor> consumer = SESSION_REGISTER_DESCRIPTOR_CONSUMER.get();
89+
SESSION_REGISTER_DESCRIPTOR_CONSUMER.remove();
90+
sessionRegisterDescriptor.setTestSessionRegistrar(REGISTRAR);
91+
consumer.accept(sessionRegisterDescriptor);
92+
}
7293
}
7394
}
7495

@@ -157,4 +178,12 @@ private static Capabilities customizeCapabilities(Runnable methodInvocationProxy
157178
return capabilities;
158179
}
159180

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

0 commit comments

Comments
 (0)