K8s discovery tests clean up (#1321)

This commit is contained in:
erabii
2023-04-25 15:07:06 +03:00
committed by GitHub
parent ad3196b375
commit f404629a4f
3 changed files with 31 additions and 44 deletions

View File

@@ -24,10 +24,9 @@ import io.kubernetes.client.openapi.models.V1EndpointsListBuilder;
import io.kubernetes.client.openapi.models.V1ListMetaBuilder;
import io.kubernetes.client.openapi.models.V1ServiceListBuilder;
import io.kubernetes.client.util.ClientBuilder;
import org.junit.Test;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -36,7 +35,6 @@ import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.cloud.client.discovery.composite.CompositeDiscoveryClient;
import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.test.context.junit4.SpringRunner;
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
import static com.github.tomakehurst.wiremock.client.WireMock.get;
@@ -46,30 +44,29 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
properties = { "spring.main.cloud-platform=KUBERNETES",
"spring.cloud.kubernetes.discovery.cacheLoadingTimeoutSeconds=5", "spring.cloud.config.enabled=false",
"spring.cloud.kubernetes.discovery.waitCacheReady=false" })
public class KubernetesDiscoveryClientAutoConfigurationTests {
class KubernetesDiscoveryClientAutoConfigurationTests {
@Autowired(required = false)
@Autowired
private DiscoveryClient discoveryClient;
public static WireMockServer wireMockServer;
private static WireMockServer wireMockServer;
@AfterAll
public static void after() {
static void after() {
wireMockServer.stop();
}
@AfterEach
public void afterEach() {
void afterEach() {
WireMock.reset();
}
@Test
public void kubernetesDiscoveryClientCreated() {
void kubernetesDiscoveryClientCreated() {
assertThat(this.discoveryClient).isNotNull().isInstanceOf(CompositeDiscoveryClient.class);
CompositeDiscoveryClient composite = (CompositeDiscoveryClient) this.discoveryClient;
@@ -81,14 +78,14 @@ public class KubernetesDiscoveryClientAutoConfigurationTests {
protected static class TestConfig {
@Bean
public KubernetesNamespaceProvider kubernetesNamespaceProvider() {
KubernetesNamespaceProvider kubernetesNamespaceProvider() {
KubernetesNamespaceProvider provider = mock(KubernetesNamespaceProvider.class);
when(provider.getNamespace()).thenReturn("test");
return provider;
}
@Bean
public ApiClient apiClient() {
ApiClient apiClient() {
wireMockServer = new WireMockServer(options().dynamicPort());
wireMockServer.start();
WireMock.configureFor(wireMockServer.port());
@@ -98,8 +95,7 @@ public class KubernetesDiscoveryClientAutoConfigurationTests {
stubFor(get("/api/v1/namespaces/test/services?resourceVersion=0&watch=false")
.willReturn(aResponse().withStatus(200).withBody(new JSON().serialize(new V1ServiceListBuilder()
.withMetadata(new V1ListMetaBuilder().withResourceVersion("0").build()).build()))));
ApiClient apiClient = new ClientBuilder().setBasePath(wireMockServer.baseUrl()).build();
return apiClient;
return new ClientBuilder().setBasePath(wireMockServer.baseUrl()).build();
}
}

View File

@@ -21,10 +21,10 @@ import java.util.Collections;
import io.kubernetes.client.openapi.ApiClient;
import io.kubernetes.client.openapi.JSON;
import okhttp3.OkHttpClient;
import org.junit.After;
import org.junit.Test;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
import org.springframework.boot.test.util.TestPropertyValues;
import org.springframework.cloud.client.DefaultServiceInstance;
@@ -39,24 +39,19 @@ import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import static junit.framework.TestCase.assertEquals;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty("spring.cloud.config.discovery.enabled")
@Import({ KubernetesClientAutoConfiguration.class, KubernetesInformerDiscoveryClientAutoConfiguration.class })
public class KubernetesDiscoveryClientConfigClientBootstrapConfigurationTests {
private AnnotationConfigApplicationContext context;
@After
public void close() {
@AfterEach
void close() {
if (this.context != null) {
if (this.context.getParent() != null) {
((AnnotationConfigApplicationContext) this.context.getParent()).close();
@@ -66,16 +61,16 @@ public class KubernetesDiscoveryClientConfigClientBootstrapConfigurationTests {
}
@Test
public void onWhenRequested() throws Exception {
void onWhenRequested() {
setup("server.port=7000", "spring.cloud.config.discovery.enabled=true",
"spring.cloud.kubernetes.discovery.enabled:true", "spring.application.name:test",
"spring.cloud.config.discovery.service-id:configserver");
assertEquals(1, this.context.getParent().getBeanNamesForType(DiscoveryClient.class).length);
Assertions.assertEquals(1, this.context.getParent().getBeanNamesForType(DiscoveryClient.class).length);
DiscoveryClient client = this.context.getParent().getBean(DiscoveryClient.class);
verify(client, atLeast(2)).getInstances("configserver");
ConfigClientProperties locator = this.context.getBean(ConfigClientProperties.class);
assertEquals("http://fake:8888/", locator.getUri()[0]);
Assertions.assertEquals("http://fake:8888/", locator.getUri()[0]);
}
private void setup(String... env) {
@@ -97,7 +92,7 @@ public class KubernetesDiscoveryClientConfigClientBootstrapConfigurationTests {
protected static class EnvironmentKnobbler {
@Bean
public ApiClient apiClient() {
ApiClient apiClient() {
ApiClient apiClient = mock(ApiClient.class);
when(apiClient.getJSON()).thenReturn(new JSON());
when(apiClient.getHttpClient()).thenReturn(new OkHttpClient.Builder().build());
@@ -105,14 +100,14 @@ public class KubernetesDiscoveryClientConfigClientBootstrapConfigurationTests {
}
@Bean
public KubernetesNamespaceProvider kubernetesNamespaceProvider() {
KubernetesNamespaceProvider kubernetesNamespaceProvider() {
KubernetesNamespaceProvider provider = mock(KubernetesNamespaceProvider.class);
when(provider.getNamespace()).thenReturn("test");
return provider;
}
@Bean
public KubernetesInformerDiscoveryClient kubernetesInformerDiscoveryClient() {
KubernetesInformerDiscoveryClient kubernetesInformerDiscoveryClient() {
KubernetesInformerDiscoveryClient client = mock(KubernetesInformerDiscoveryClient.class);
ServiceInstance instance = new DefaultServiceInstance("configserver1", "configserver", "fake", 8888, false);
given(client.getInstances("configserver")).willReturn(Collections.singletonList(instance));

View File

@@ -24,10 +24,9 @@ import io.kubernetes.client.openapi.models.V1EndpointsListBuilder;
import io.kubernetes.client.openapi.models.V1ListMetaBuilder;
import io.kubernetes.client.openapi.models.V1ServiceListBuilder;
import io.kubernetes.client.util.ClientBuilder;
import org.junit.Test;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -36,7 +35,6 @@ import org.springframework.cloud.client.discovery.ReactiveDiscoveryClient;
import org.springframework.cloud.client.discovery.composite.reactive.ReactiveCompositeDiscoveryClient;
import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.test.context.junit4.SpringRunner;
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
import static com.github.tomakehurst.wiremock.client.WireMock.get;
@@ -49,30 +47,29 @@ import static org.mockito.Mockito.when;
/**
* @author Ryan Baxter
*/
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
properties = { "spring.main.cloud-platform=KUBERNETES",
"spring.cloud.kubernetes.discovery.cacheLoadingTimeoutSeconds=5", "spring.cloud.config.enabled=false",
"spring.cloud.kubernetes.discovery.waitCacheReady=false", "spring.main.web-application-type=reactive" })
public class KubernetesInformerReactiveDiscoveryClientAutoConfigurationTests {
class KubernetesInformerReactiveDiscoveryClientAutoConfigurationTests {
@Autowired(required = false)
@Autowired
private ReactiveDiscoveryClient discoveryClient;
public static WireMockServer wireMockServer;
private static WireMockServer wireMockServer;
@AfterAll
public static void after() {
static void after() {
wireMockServer.stop();
}
@AfterEach
public void afterEach() {
void afterEach() {
WireMock.reset();
}
@Test
public void kubernetesDiscoveryClientCreated() {
void kubernetesDiscoveryClientCreated() {
assertThat(this.discoveryClient).isNotNull().isInstanceOf(ReactiveCompositeDiscoveryClient.class);
ReactiveCompositeDiscoveryClient composite = (ReactiveCompositeDiscoveryClient) this.discoveryClient;
@@ -84,7 +81,7 @@ public class KubernetesInformerReactiveDiscoveryClientAutoConfigurationTests {
protected static class TestConfig {
@Bean
public ApiClient apiClient() {
ApiClient apiClient() {
wireMockServer = new WireMockServer(options().dynamicPort());
wireMockServer.start();
WireMock.configureFor(wireMockServer.port());
@@ -94,12 +91,11 @@ public class KubernetesInformerReactiveDiscoveryClientAutoConfigurationTests {
stubFor(get("/api/v1/namespaces/test/services?resourceVersion=0&watch=false")
.willReturn(aResponse().withStatus(200).withBody(new JSON().serialize(new V1ServiceListBuilder()
.withMetadata(new V1ListMetaBuilder().withResourceVersion("0").build()).build()))));
ApiClient apiClient = new ClientBuilder().setBasePath(wireMockServer.baseUrl()).build();
return apiClient;
return new ClientBuilder().setBasePath(wireMockServer.baseUrl()).build();
}
@Bean
public KubernetesNamespaceProvider kubernetesNamespaceProvider() {
KubernetesNamespaceProvider kubernetesNamespaceProvider() {
KubernetesNamespaceProvider provider = mock(KubernetesNamespaceProvider.class);
when(provider.getNamespace()).thenReturn("test");
return provider;