Skip to content

Commit

Permalink
Close LauncherInterceptor after reporting session as closed
Browse files Browse the repository at this point in the history
  • Loading branch information
marcphilipp committed Jan 10, 2023
1 parent 27b738f commit 95f3925
Show file tree
Hide file tree
Showing 7 changed files with 29 additions and 94 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,23 @@
*/
class DefaultLauncherSession implements LauncherSession {

private final LauncherInterceptor interceptor;
private final LauncherSessionListener listener;
private final DelegatingCloseableLauncher<CloseableLauncher> launcher;

DefaultLauncherSession(List<LauncherInterceptor> interceptors, Supplier<Launcher> launcherSupplier,
Supplier<LauncherSessionListener> listenerSupplier) {
LauncherInterceptor interceptor = LauncherInterceptor.composite(interceptors);
this.listener = interceptor.intercept(listenerSupplier::get);
Launcher launcher = interceptor.intercept(launcherSupplier::get);
CloseableLauncher closeableLauncher = new InterceptingClosableLauncher(launcher, interceptor);
this.launcher = new DelegatingCloseableLauncher<>(closeableLauncher, delegate -> {
delegate.close();
return ClosedLauncher.INSTANCE;
});
private final DelegatingLauncher launcher;

DefaultLauncherSession(List<LauncherInterceptor> interceptors, Supplier<LauncherSessionListener> listenerSupplier,
Supplier<Launcher> launcherSupplier) {
interceptor = LauncherInterceptor.composite(interceptors);
Launcher launcher;
if (interceptor == LauncherInterceptor.NOOP) {
this.listener = listenerSupplier.get();
launcher = launcherSupplier.get();
}
else {
this.listener = interceptor.intercept(listenerSupplier::get);
launcher = new InterceptingLauncher(interceptor.intercept(launcherSupplier::get), interceptor);
}
this.launcher = new DelegatingLauncher(launcher);
listener.launcherSessionOpened(this);
}

Expand All @@ -55,13 +59,14 @@ LauncherSessionListener getListener() {

@Override
public void close() {
if (!launcher.isClosed()) {
launcher.close();
if (launcher.delegate != ClosedLauncher.INSTANCE) {
launcher.delegate = ClosedLauncher.INSTANCE;
listener.launcherSessionClosed(this);
interceptor.close();
}
}

private static class ClosedLauncher implements CloseableLauncher {
private static class ClosedLauncher implements Launcher {

static final ClosedLauncher INSTANCE = new ClosedLauncher();

Expand Down Expand Up @@ -92,10 +97,5 @@ public void execute(LauncherDiscoveryRequest launcherDiscoveryRequest, TestExecu
public void execute(TestPlan testPlan, TestExecutionListener... listeners) {
throw new PreconditionViolationException("Launcher session has already been closed");
}

@Override
public void close() {
// do nothing
}
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@
/**
* @since 1.10
*/
class DelegatingLauncher<T extends Launcher> implements Launcher {
class DelegatingLauncher implements Launcher {

protected T delegate;
protected Launcher delegate;

DelegatingLauncher(T delegate) {
DelegatingLauncher(Launcher delegate) {
this.delegate = delegate;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,12 @@
/**
* @since 1.10
*/
class InterceptingClosableLauncher extends DelegatingCloseableLauncher<Launcher> {
class InterceptingLauncher extends DelegatingLauncher {

private final LauncherInterceptor interceptor;

InterceptingClosableLauncher(Launcher delegate, LauncherInterceptor interceptor) {
super(delegate, it -> {
interceptor.close();
return it;
});
InterceptingLauncher(Launcher delegate, LauncherInterceptor interceptor) {
super(delegate);
this.interceptor = interceptor;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ public static LauncherSession openSession(LauncherConfig config) throws Precondi
Preconditions.notNull(config, "LauncherConfig must not be null");
LauncherConfigurationParameters configurationParameters = LauncherConfigurationParameters.builder().build();
return new DefaultLauncherSession(collectLauncherInterceptors(configurationParameters),
() -> createDefaultLauncher(config, configurationParameters), () -> createLauncherSessionListener(config));
() -> createLauncherSessionListener(config), () -> createDefaultLauncher(config, configurationParameters));
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ public void execute(TestPlan testPlan, TestExecutionListener... listeners) {
}

private LauncherSession createSession() {
LauncherSession session = new DefaultLauncherSession(interceptorFactory.get(), launcherSupplier,
sessionListenerSupplier);
LauncherSession session = new DefaultLauncherSession(interceptorFactory.get(), sessionListenerSupplier,
launcherSupplier);
Launcher launcher = session.getLauncher();
listenerRegistry.launcherDiscoveryListeners.getListeners().forEach(
launcher::registerLauncherDiscoveryListeners);
Expand Down

0 comments on commit 95f3925

Please sign in to comment.