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

Commit 58da34c

Browse files
authored
fix: close client (#93)
1 parent d82e972 commit 58da34c

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

core/src/main/java/io/javaoperatorsdk/jenvtest/junit/ClientInjectionHandler.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,6 @@ boolean isTargetFieldAvailable(ExtensionContext extensionContext,
1111

1212
void inject(ExtensionContext extensionContext,
1313
boolean staticField, KubeAPIServer kubeApiServer);
14+
15+
default void cleanup(ExtensionContext extensionContext) {}
1416
}

core/src/main/java/io/javaoperatorsdk/jenvtest/junit/KubeAPIServerExtension.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,10 @@ private void startApiServer(EnableKubeAPIServer annotation) {
8989
private void stopIfAnnotationPresent(ExtensionContext extensionContext) {
9090
extensionContext.getElement().ifPresent(ae -> {
9191
var annotation = getExtensionAnnotationInstance(ae);
92-
annotation.ifPresent(a -> kubeApiServer.stop());
92+
annotation.ifPresent(a -> {
93+
clientInjectionHandlers.forEach(ih -> ih.cleanup(extensionContext));
94+
kubeApiServer.stop();
95+
});
9396
});
9497
}
9598

fabric8/src/main/java/io/javaoperatorsdk/jenvtest/junit/Fabric8ClientInjectionHandler.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,14 @@
1515

1616
public class Fabric8ClientInjectionHandler implements ClientInjectionHandler {
1717

18+
private KubernetesClient client;
19+
1820
public boolean isTargetFieldAvailable(ExtensionContext extensionContext,
1921
boolean staticField) {
2022
return getFieldForKubeConfigInjection(extensionContext, staticField).isPresent();
2123
}
2224

25+
@Override
2326
public void inject(ExtensionContext extensionContext,
2427
boolean staticField, KubeAPIServer kubeApiServer) {
2528
var field = getFieldForKubeConfigInjection(extensionContext, staticField).orElseThrow();
@@ -31,15 +34,20 @@ private void setKubernetesClientToField(ExtensionContext extensionContext,
3134
try {
3235
var target = extensionContext.getTestInstance()
3336
.orElseGet(() -> extensionContext.getTestClass().orElseThrow());
37+
client = new KubernetesClientBuilder()
38+
.withConfig(Config.fromKubeconfig(kubeApiServer.getKubeConfigYaml())).build();
3439
kubeConfigField.setAccessible(true);
35-
kubeConfigField.set(target, new KubernetesClientBuilder()
36-
.withConfig(Config.fromKubeconfig(kubeApiServer.getKubeConfigYaml()))
37-
.build());
40+
kubeConfigField.set(target, client);
3841
} catch (IllegalAccessException e) {
3942
throw new JenvtestException(e);
4043
}
4144
}
4245

46+
@Override
47+
public void cleanup(ExtensionContext extensionContext) {
48+
client.close();
49+
}
50+
4351
@SuppressWarnings("rawtypes")
4452
public static Optional<Field> getFieldForKubeConfigInjection(ExtensionContext extensionContext,
4553
boolean staticField) {

0 commit comments

Comments
 (0)