Changes for Java 16 build (#797)
This commit is contained in:
@@ -16,7 +16,6 @@
|
||||
|
||||
package org.springframework.cloud.kubernetes.commons;
|
||||
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
@@ -39,22 +38,16 @@ public class KubernetesNamespaceProviderTests {
|
||||
|
||||
private static final String PATH = "/some/path";
|
||||
|
||||
private static final String FOUNT_IT = "foundIt";
|
||||
|
||||
private MockedStatic<Paths> paths;
|
||||
|
||||
private MockedStatic<Files> files;
|
||||
|
||||
@BeforeEach
|
||||
public void before() {
|
||||
paths = Mockito.mockStatic(Paths.class);
|
||||
files = Mockito.mockStatic(Files.class);
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
public void after() {
|
||||
paths.close();
|
||||
files.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -76,15 +69,7 @@ public class KubernetesNamespaceProviderTests {
|
||||
private Path serviceAccountFileResolved(boolean present, String actualPath) {
|
||||
Path path = Mockito.mock(Path.class);
|
||||
paths.when(() -> Paths.get(actualPath)).thenReturn(path);
|
||||
files.when(() -> Files.isRegularFile(path)).thenReturn(present);
|
||||
return path;
|
||||
}
|
||||
|
||||
/*
|
||||
* returns "foundIt" for service account namespace
|
||||
*/
|
||||
private void mockServiceAccountNamespace(Path path) {
|
||||
files.when(() -> Files.readAllBytes(path)).thenReturn(FOUNT_IT.getBytes());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
<arquillian.version>1.6.0.Final</arquillian.version>
|
||||
<arquillian-cube.version>1.15.2</arquillian-cube.version>
|
||||
<hoverfly.version>0.13.0</hoverfly.version>
|
||||
<kubernetes-client.version>4.13.2</kubernetes-client.version>
|
||||
<kubernetes-client.version>4.13.3</kubernetes-client.version>
|
||||
<kubernetes-java-client.version>11.0.2</kubernetes-java-client.version>
|
||||
<istio-client.version>1.5.5</istio-client.version>
|
||||
<mockwebserver.version>0.1.2</mockwebserver.version>
|
||||
|
||||
@@ -42,7 +42,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
"spring.cloud.kubernetes.client.proxy-password=myproxypassword" })
|
||||
public class Fabric8AutoConfigurationTests {
|
||||
|
||||
public static KubernetesServer server = new KubernetesServer();
|
||||
public static KubernetesServer server = new KubernetesServer(false);
|
||||
|
||||
@Autowired
|
||||
ConfigurableApplicationContext context;
|
||||
|
||||
@@ -37,7 +37,7 @@ import static org.hamcrest.Matchers.not;
|
||||
properties = { "management.health.kubernetes.enabled=false" })
|
||||
public class Fabric8HealthIndicatorDisabledTest {
|
||||
|
||||
public static KubernetesServer server = new KubernetesServer();
|
||||
public static KubernetesServer server = new KubernetesServer(false);
|
||||
|
||||
@Autowired
|
||||
private WebTestClient webClient;
|
||||
|
||||
@@ -40,7 +40,7 @@ import org.springframework.test.web.reactive.server.WebTestClient;
|
||||
properties = { "management.endpoint.health.show-details=always" })
|
||||
public class Fabric8NotInsideHealthIndicatorTest {
|
||||
|
||||
public static KubernetesServer server = new KubernetesServer();
|
||||
public static KubernetesServer server = new KubernetesServer(false);
|
||||
|
||||
@Autowired
|
||||
private WebTestClient webClient;
|
||||
|
||||
@@ -39,7 +39,7 @@ import org.springframework.test.web.reactive.server.WebTestClient;
|
||||
"management.info.kubernetes.enabled=true" })
|
||||
public class Fabric8NotInsideInfoContributorTest {
|
||||
|
||||
public static KubernetesServer server = new KubernetesServer();
|
||||
public static KubernetesServer server = new KubernetesServer(false);
|
||||
|
||||
@Autowired
|
||||
private WebTestClient webClient;
|
||||
|
||||
@@ -66,7 +66,7 @@ public class ConfigMapsFromFilePathsTests {
|
||||
+ FIRST_FILE_NAME;
|
||||
|
||||
@ClassRule
|
||||
public static KubernetesServer server = new KubernetesServer();
|
||||
public static KubernetesServer server = new KubernetesServer(false);
|
||||
|
||||
private static KubernetesClient mockClient;
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ public class ConfigMapsMixedTests {
|
||||
protected static final String APPLICATION_NAME = "configmap-mixed-example";
|
||||
|
||||
@ClassRule
|
||||
public static KubernetesServer server = new KubernetesServer();
|
||||
public static KubernetesServer server = new KubernetesServer(false);
|
||||
|
||||
private static KubernetesClient mockClient;
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ import static org.springframework.cloud.kubernetes.fabric8.config.ConfigMapTestU
|
||||
public class ConfigMapsTest {
|
||||
|
||||
@Rule
|
||||
public KubernetesServer server = new KubernetesServer();
|
||||
public KubernetesServer server = new KubernetesServer(false);
|
||||
|
||||
@Test
|
||||
public void testConfigMapList() {
|
||||
|
||||
@@ -49,7 +49,7 @@ public class ConfigMapsTests {
|
||||
private static final String APPLICATION_NAME = "configmap-example";
|
||||
|
||||
@ClassRule
|
||||
public static KubernetesServer server = new KubernetesServer();
|
||||
public static KubernetesServer server = new KubernetesServer(false);
|
||||
|
||||
private static KubernetesClient mockClient;
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ public class ConfigMapsWithActiveProfilesNameTests {
|
||||
private static final String APPLICATION_NAME = "configmap-with-active-profile-name-example";
|
||||
|
||||
@ClassRule
|
||||
public static KubernetesServer server = new KubernetesServer();
|
||||
public static KubernetesServer server = new KubernetesServer(false);
|
||||
|
||||
private static KubernetesClient mockClient;
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ import org.springframework.test.web.reactive.server.WebTestClient;
|
||||
public class ConfigMapsWithProfileExpressionTests {
|
||||
|
||||
@ClassRule
|
||||
public static KubernetesServer server = new KubernetesServer();
|
||||
public static KubernetesServer server = new KubernetesServer(false);
|
||||
|
||||
private static final String APPLICATION_NAME = "configmap-with-profile-example";
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ public class ConfigMapsWithProfilesNoActiveProfileTests {
|
||||
private static final String APPLICATION_NAME = "configmap-with-profile-no-active-profiles-example";
|
||||
|
||||
@ClassRule
|
||||
public static KubernetesServer server = new KubernetesServer();
|
||||
public static KubernetesServer server = new KubernetesServer(false);
|
||||
|
||||
private static KubernetesClient mockClient;
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ public class ConfigMapsWithProfilesTests {
|
||||
private static final String APPLICATION_NAME = "configmap-with-profile-example";
|
||||
|
||||
@ClassRule
|
||||
public static KubernetesServer server = new KubernetesServer();
|
||||
public static KubernetesServer server = new KubernetesServer(false);
|
||||
|
||||
private static KubernetesClient mockClient;
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ public class ConfigMapsWithoutProfilesTests {
|
||||
private static final String APPLICATION_NAME = "configmap-without-profile-example";
|
||||
|
||||
@ClassRule
|
||||
public static KubernetesServer server = new KubernetesServer();
|
||||
public static KubernetesServer server = new KubernetesServer(false);
|
||||
|
||||
private static KubernetesClient mockClient;
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
public class CoreTest {
|
||||
|
||||
@ClassRule
|
||||
public static KubernetesServer mockServer = new KubernetesServer();
|
||||
public static KubernetesServer mockServer = new KubernetesServer(false);
|
||||
|
||||
private static KubernetesClient mockClient;
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
public class Fabric8ConfigUtilsTests {
|
||||
|
||||
@ClassRule
|
||||
public static final KubernetesServer server = new KubernetesServer();
|
||||
public static final KubernetesServer server = new KubernetesServer(false);
|
||||
|
||||
@Test
|
||||
public void testGetApplicationNamespaceNotPresent() {
|
||||
|
||||
@@ -40,7 +40,7 @@ import static org.hamcrest.Matchers.containsString;
|
||||
public class HealthIndicatorTest {
|
||||
|
||||
@ClassRule
|
||||
public static KubernetesServer server = new KubernetesServer();
|
||||
public static KubernetesServer server = new KubernetesServer(false);
|
||||
|
||||
private static KubernetesClient mockClient;
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ import org.springframework.context.annotation.Configuration;
|
||||
public class KubernetesConfigTestBase {
|
||||
|
||||
@ClassRule
|
||||
public static KubernetesServer server = new KubernetesServer();
|
||||
public static KubernetesServer server = new KubernetesServer(false);
|
||||
|
||||
private static ConfigurableApplicationContext context;
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ import org.springframework.test.web.reactive.server.WebTestClient;
|
||||
public class MultipleConfigMapsTests {
|
||||
|
||||
@ClassRule
|
||||
public static KubernetesServer server = new KubernetesServer();
|
||||
public static KubernetesServer server = new KubernetesServer(false);
|
||||
|
||||
private static KubernetesClient mockClient;
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
public class KubernetesDiscoveryClientTest {
|
||||
|
||||
@ClassRule
|
||||
public static KubernetesServer mockServer = new KubernetesServer();
|
||||
public static KubernetesServer mockServer = new KubernetesServer(false);
|
||||
|
||||
private static KubernetesClient mockClient;
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ import org.junit.jupiter.api.extension.ParameterResolver;
|
||||
*/
|
||||
public class KubernetesExtension implements ParameterResolver, BeforeEachCallback, AfterEachCallback {
|
||||
|
||||
private final KubernetesServer mockServer = new KubernetesServer();
|
||||
private final KubernetesServer mockServer = new KubernetesServer(false);
|
||||
|
||||
@Override
|
||||
public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext context) {
|
||||
|
||||
@@ -33,7 +33,7 @@ import org.springframework.web.client.RestTemplate;
|
||||
|
||||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||
@TestPropertySource(properties = "spring.cloud.kubernetes.discovery.all-namespaces=true")
|
||||
@EnableKubernetesMockClient(crud = true)
|
||||
@EnableKubernetesMockClient(crud = true, https = false)
|
||||
class LoadBalancerAllNamespacesTests {
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -31,7 +31,7 @@ import org.springframework.boot.web.server.LocalServerPort;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||
@EnableKubernetesMockClient(crud = true)
|
||||
@EnableKubernetesMockClient(crud = true, https = false)
|
||||
class LoadBalancerTests {
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -16,35 +16,35 @@
|
||||
|
||||
package org.springframework.cloud.kubernetes.fabric8.loadbalancer;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Collections;
|
||||
|
||||
import io.fabric8.kubernetes.api.model.Service;
|
||||
import io.fabric8.kubernetes.api.model.ServiceBuilder;
|
||||
import io.fabric8.kubernetes.api.model.ServicePortBuilder;
|
||||
import io.fabric8.kubernetes.api.model.ServiceSpecBuilder;
|
||||
import io.fabric8.kubernetes.client.Config;
|
||||
import io.fabric8.kubernetes.client.KubernetesClient;
|
||||
import io.specto.hoverfly.junit.core.Hoverfly;
|
||||
import io.specto.hoverfly.junit5.HoverflyExtension;
|
||||
import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
import org.springframework.boot.web.server.LocalServerPort;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesServiceInstance;
|
||||
import org.springframework.test.context.TestPropertySource;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import static io.specto.hoverfly.junit.core.SimulationSource.dsl;
|
||||
import static io.specto.hoverfly.junit.dsl.HoverflyDsl.service;
|
||||
import static io.specto.hoverfly.junit.dsl.HttpBodyConverter.json;
|
||||
import static io.specto.hoverfly.junit.dsl.ResponseCreators.success;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||
@TestPropertySource(properties = { "spring.cloud.kubernetes.loadbalancer.mode=SERVICE",
|
||||
"spring.cloud.kubernetes.loadbalancer.enabled=true" })
|
||||
@ExtendWith(HoverflyExtension.class)
|
||||
@EnableKubernetesMockClient(crud = true, https = false)
|
||||
class LoadBalancerWithServiceTests {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(LoadBalancerWithServiceTests.class);
|
||||
@@ -52,36 +52,53 @@ class LoadBalancerWithServiceTests {
|
||||
@Autowired
|
||||
RestTemplate restTemplate;
|
||||
|
||||
@Autowired
|
||||
KubernetesClient client;
|
||||
@LocalServerPort
|
||||
int randomServerPort;
|
||||
|
||||
@MockBean
|
||||
Fabric8ServiceInstanceMapper mapper;
|
||||
|
||||
static KubernetesClient client;
|
||||
|
||||
@BeforeAll
|
||||
static void setup() {
|
||||
System.setProperty(Config.KUBERNETES_MASTER_SYSTEM_PROPERTY, client.getConfiguration().getMasterUrl());
|
||||
System.setProperty(Config.KUBERNETES_TRUST_CERT_SYSTEM_PROPERTY, "true");
|
||||
System.setProperty(Config.KUBERNETES_AUTH_TRYKUBECONFIG_SYSTEM_PROPERTY, "false");
|
||||
System.setProperty(Config.KUBERNETES_AUTH_TRYSERVICEACCOUNT_SYSTEM_PROPERTY, "false");
|
||||
System.setProperty(Config.KUBERNETES_HTTP2_DISABLE, "true");
|
||||
System.setProperty(Config.KUBERNETES_NAMESPACE_SYSTEM_PROPERTY, "test");
|
||||
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
public void before() {
|
||||
KubernetesServiceInstance instance = new KubernetesServiceInstance("serviceinstance", "service", "localhost",
|
||||
randomServerPort, Collections.EMPTY_MAP, false);
|
||||
when(mapper.map(any())).thenReturn(instance);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testLoadBalancerInServiceMode(Hoverfly hoverfly) {
|
||||
LOGGER.info("Master URL: {}", client.getConfiguration().getMasterUrl());
|
||||
hoverfly.simulate(
|
||||
dsl(service("http://service-a.test.svc.cluster.local:8080").get("/greeting")
|
||||
.willReturn(success().body("greeting"))),
|
||||
dsl(service(client.getConfiguration().getMasterUrl().replace("/", "").replace("https:", ""))
|
||||
.get("/api/v1/namespaces/test/services/service-a")
|
||||
.willReturn(success().body(json(buildService("service-a", 8080, "test"))))));
|
||||
void testLoadBalancerSameNamespace() {
|
||||
createTestData("service-a", "test");
|
||||
String response = restTemplate.getForObject("http://service-a/greeting", String.class);
|
||||
Assertions.assertNotNull(response);
|
||||
Assertions.assertEquals("greeting", response);
|
||||
}
|
||||
|
||||
private Service buildService(String name, int port, String namespace) {
|
||||
return new ServiceBuilder().withNewMetadata().withName(name).withNamespace(namespace)
|
||||
.withLabels(new HashMap<>()).withAnnotations(new HashMap<>()).endMetadata().withNewSpec().addNewPort()
|
||||
.withPort(port).endPort().endSpec().build();
|
||||
@Test
|
||||
void testLoadBalancerDifferentNamespace() {
|
||||
createTestData("service-b", "b");
|
||||
Assertions.assertThrows(IllegalStateException.class,
|
||||
() -> restTemplate.getForObject("http://service-b/greeting", String.class));
|
||||
}
|
||||
|
||||
private void createTestData(String name, String namespace) {
|
||||
client.services().inNamespace(namespace).createNew().withNewMetadata().withName(name).endMetadata()
|
||||
.withSpec(new ServiceSpecBuilder()
|
||||
.withPorts(new ServicePortBuilder().withProtocol("TCP").withPort(randomServerPort).build())
|
||||
.build())
|
||||
.done();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user