Skip to content

Commit

Permalink
add StartSessionInterceptor -> setSessionRegisterConsumer
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrei Kamarouski committed Oct 26, 2023
1 parent ee4762e commit 95c6ba0
Showing 1 changed file with 34 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
import com.zebrunner.agent.core.config.ConfigurationHolder;
import com.zebrunner.agent.core.registrar.TestSessionRegistrar;
import com.zebrunner.agent.core.registrar.descriptor.SessionStartDescriptor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.implementation.bind.annotation.Argument;
import net.bytebuddy.implementation.bind.annotation.RuntimeType;
Expand All @@ -21,12 +24,19 @@
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Arrays;
import java.util.Objects;
import java.util.function.Consumer;

@Slf4j
public class StartSessionInterceptor {

private static final TestSessionRegistrar REGISTRAR = TestSessionRegistrar.getInstance();
private static final CapabilitiesCustomizerChain CAPABILITIES_CUSTOMIZER_CHAIN = CapabilitiesCustomizerChain.getInstance();
private static final ThreadLocal<Consumer<SessionRegisterDescriptor>> SESSION_REGISTER_DESCRIPTOR_CONSUMER = new ThreadLocal<>();

public static void setSessionRegisterConsumer(Consumer<SessionRegisterDescriptor> consumer) {
SESSION_REGISTER_DESCRIPTOR_CONSUMER.set(consumer);
}

@RuntimeType
public static void onSessionStart(@This RemoteWebDriver driver,
Expand All @@ -37,7 +47,9 @@ public static void onSessionStart(@This RemoteWebDriver driver,
capabilities = customizeCapabilities(methodInvocationProxy, capabilities);
}

SessionStartDescriptor startDescriptor = SessionStartDescriptor.initiatedWith(capabilities.asMap());
SessionRegisterDescriptor sessionRegisterDescriptor = new SessionRegisterDescriptor();
sessionRegisterDescriptor.setSessionStartDescriptor(SessionStartDescriptor.initiatedWith(capabilities.asMap()));

try {
methodInvocationProxy.run();

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

startDescriptor.successfullyStartedWith(sessionId, driverCapabilities.asMap());
sessionRegisterDescriptor.getSessionStartDescriptor()
.successfullyStartedWith(sessionId, driverCapabilities.asMap());
} catch (Exception e) {
sessionRegisterDescriptor.setException(e);
StringWriter errorMessageStringWriter = new StringWriter();
e.printStackTrace(new PrintWriter(errorMessageStringWriter));
startDescriptor.failedToStart(errorMessageStringWriter.toString());
sessionRegisterDescriptor.getSessionStartDescriptor()
.failedToStart(errorMessageStringWriter.toString());
throw e;
} finally {
REGISTRAR.registerStart(startDescriptor);
if (SESSION_REGISTER_DESCRIPTOR_CONSUMER.get() == null) {
REGISTRAR.registerStart(sessionRegisterDescriptor.getSessionStartDescriptor());
} else {
Consumer<SessionRegisterDescriptor> consumer = SESSION_REGISTER_DESCRIPTOR_CONSUMER.get();
SESSION_REGISTER_DESCRIPTOR_CONSUMER.remove();
sessionRegisterDescriptor.setTestSessionRegistrar(REGISTRAR);
consumer.accept(sessionRegisterDescriptor);
}
}
}

Expand Down Expand Up @@ -157,4 +179,12 @@ private static Capabilities customizeCapabilities(Runnable methodInvocationProxy
return capabilities;
}

@Data
@NoArgsConstructor
@RequiredArgsConstructor
public static class SessionRegisterDescriptor {
private TestSessionRegistrar testSessionRegistrar;
private SessionStartDescriptor sessionStartDescriptor;
private Exception exception;
}
}

0 comments on commit 95c6ba0

Please sign in to comment.