Skip to content
This repository has been archived by the owner on Apr 10, 2024. It is now read-only.

Commit

Permalink
fix: close client (#93)
Browse files Browse the repository at this point in the history
  • Loading branch information
csviri committed Apr 19, 2023
1 parent d82e972 commit 58da34c
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,6 @@ boolean isTargetFieldAvailable(ExtensionContext extensionContext,

void inject(ExtensionContext extensionContext,
boolean staticField, KubeAPIServer kubeApiServer);

default void cleanup(ExtensionContext extensionContext) {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,10 @@ private void startApiServer(EnableKubeAPIServer annotation) {
private void stopIfAnnotationPresent(ExtensionContext extensionContext) {
extensionContext.getElement().ifPresent(ae -> {
var annotation = getExtensionAnnotationInstance(ae);
annotation.ifPresent(a -> kubeApiServer.stop());
annotation.ifPresent(a -> {
clientInjectionHandlers.forEach(ih -> ih.cleanup(extensionContext));
kubeApiServer.stop();
});
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,14 @@

public class Fabric8ClientInjectionHandler implements ClientInjectionHandler {

private KubernetesClient client;

public boolean isTargetFieldAvailable(ExtensionContext extensionContext,
boolean staticField) {
return getFieldForKubeConfigInjection(extensionContext, staticField).isPresent();
}

@Override
public void inject(ExtensionContext extensionContext,
boolean staticField, KubeAPIServer kubeApiServer) {
var field = getFieldForKubeConfigInjection(extensionContext, staticField).orElseThrow();
Expand All @@ -31,15 +34,20 @@ private void setKubernetesClientToField(ExtensionContext extensionContext,
try {
var target = extensionContext.getTestInstance()
.orElseGet(() -> extensionContext.getTestClass().orElseThrow());
client = new KubernetesClientBuilder()
.withConfig(Config.fromKubeconfig(kubeApiServer.getKubeConfigYaml())).build();
kubeConfigField.setAccessible(true);
kubeConfigField.set(target, new KubernetesClientBuilder()
.withConfig(Config.fromKubeconfig(kubeApiServer.getKubeConfigYaml()))
.build());
kubeConfigField.set(target, client);
} catch (IllegalAccessException e) {
throw new JenvtestException(e);
}
}

@Override
public void cleanup(ExtensionContext extensionContext) {
client.close();
}

@SuppressWarnings("rawtypes")
public static Optional<Field> getFieldForKubeConfigInjection(ExtensionContext extensionContext,
boolean staticField) {
Expand Down

0 comments on commit 58da34c

Please sign in to comment.