|
3 | 3 |
|
4 | 4 | package oracle.kubernetes.operator.helpers; |
5 | 5 |
|
| 6 | +import java.util.Collections; |
| 7 | +import java.util.List; |
| 8 | +import java.util.Optional; |
| 9 | +import javax.annotation.Nonnull; |
| 10 | + |
6 | 11 | import io.kubernetes.client.openapi.models.V1Service; |
| 12 | +import io.kubernetes.client.openapi.models.V1ServicePort; |
| 13 | +import io.kubernetes.client.openapi.models.V1ServiceSpec; |
| 14 | +import oracle.kubernetes.operator.wlsconfig.NetworkAccessPoint; |
7 | 15 | import oracle.kubernetes.operator.work.Packet; |
8 | 16 | import oracle.kubernetes.operator.work.Step; |
9 | 17 | import oracle.kubernetes.weblogic.domain.DomainConfigurator; |
10 | 18 | import oracle.kubernetes.weblogic.domain.ServiceConfigurator; |
| 19 | +import org.junit.jupiter.params.ParameterizedTest; |
| 20 | +import org.junit.jupiter.params.provider.ValueSource; |
11 | 21 |
|
12 | 22 | import static oracle.kubernetes.operator.logging.MessageKeys.EXTERNAL_CHANNEL_SERVICE_CREATED; |
13 | 23 | import static oracle.kubernetes.operator.logging.MessageKeys.EXTERNAL_CHANNEL_SERVICE_EXISTS; |
14 | 24 | import static oracle.kubernetes.operator.logging.MessageKeys.EXTERNAL_CHANNEL_SERVICE_REPLACED; |
| 25 | +import static org.hamcrest.Matchers.equalTo; |
| 26 | +import static org.hamcrest.Matchers.notNullValue; |
| 27 | +import static org.hamcrest.junit.MatcherAssert.assertThat; |
15 | 28 |
|
16 | 29 | public class ExternalServiceHelperTest extends ServiceHelperTest { |
17 | 30 |
|
| 31 | + private static final int NODE_PORT = 2300; |
| 32 | + private static final int LISTEN_PORT = 2100; |
| 33 | + |
18 | 34 | public ExternalServiceHelperTest() { |
19 | 35 | super(new ExternalServiceTestFacade()); |
20 | 36 | } |
@@ -97,4 +113,34 @@ String getExpectedSelectorValue() { |
97 | 113 | } |
98 | 114 | } |
99 | 115 |
|
| 116 | + @ParameterizedTest |
| 117 | + @ValueSource(strings = {"http", "https", "tcp", "tls"}) |
| 118 | + void whenIstioPortAdded_createExternalPort(String protocol) { |
| 119 | + final String configuredChannelName = "istio"; |
| 120 | + final String channelName = protocol + "-" + configuredChannelName; |
| 121 | + configureDomain().withIstio() |
| 122 | + .configureAdminServer().configureAdminService().withChannel(configuredChannelName, NODE_PORT); |
| 123 | + getServerConfig().addNetworkAccessPoint( |
| 124 | + new NetworkAccessPoint(channelName, "t3", LISTEN_PORT, 0)); |
| 125 | + |
| 126 | + final V1ServicePort createdPort = getServerPortWithName(channelName); |
| 127 | + assertThat(createdPort, notNullValue()); |
| 128 | + assertThat(createdPort.getPort(), equalTo(LISTEN_PORT)); |
| 129 | + assertThat(createdPort.getNodePort(), equalTo(NODE_PORT)); |
| 130 | + } |
| 131 | + |
| 132 | + V1ServicePort getServerPortWithName(String name) { |
| 133 | + return getCreatedServicePorts().stream() |
| 134 | + .filter(p -> name.equals(p.getName())) |
| 135 | + .findFirst().orElse(null); |
| 136 | + } |
| 137 | + |
| 138 | + @Nonnull |
| 139 | + private List<V1ServicePort> getCreatedServicePorts() { |
| 140 | + return Optional.ofNullable(createService()) |
| 141 | + .map(V1Service::getSpec) |
| 142 | + .map(V1ServiceSpec::getPorts) |
| 143 | + .orElse(Collections.emptyList()); |
| 144 | + } |
| 145 | + |
100 | 146 | } |
0 commit comments