diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 751a7e7231c..a2e78351cc9 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -6,12 +6,12 @@ - - + + diff --git a/README.md b/README.md index 5a952b94e66..e85aa8865a0 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,21 @@ # Cloud Foundry Java Client -[![Maven Central](https://img.shields.io/maven-central/v/org.cloudfoundry/cloudfoundry-client/3)](https://search.maven.org/search?q=g:org.cloudfoundry%20AND%20a:cloudfoundry-client%20AND%20v:3.*) +[![Maven Central](https://img.shields.io/maven-central/v/org.cloudfoundry/cloudfoundry-client)](https://search.maven.org/search?q=g:org.cloudfoundry%20AND%20a:cloudfoundry-client%20AND%20v) | Artifact | Javadocs | -------- | -------- -| `cloudfoundry-client` | [![javadoc](https://javadoc.io/badge2/org.cloudfoundry/cloudfoundry-client/3.23.0.RELEASE/javadoc.svg)](https://javadoc.io/doc/org.cloudfoundry/cloudfoundry-client/3.23.0.RELEASE) -| `cloudfoundry-client-reactor` | [![javadoc](https://javadoc.io/badge2/org.cloudfoundry/cloudfoundry-client-reactor/3.23.0.RELEASE/javadoc.svg)](https://javadoc.io/doc/org.cloudfoundry/cloudfoundry-client-reactor/3.23.0.RELEASE) -| `cloudfoundry-operations` | [![javadoc](https://javadoc.io/badge2/org.cloudfoundry/cloudfoundry-operations/3.23.0.RELEASE/javadoc.svg)](https://javadoc.io/doc/org.cloudfoundry/cloudfoundry-operations/3.23.0.RELEASE) -| `cloudfoundry-util` | [![javadoc](https://javadoc.io/badge2/org.cloudfoundry/cloudfoundry-util/3.23.0.RELEASE/javadoc.svg)](https://javadoc.io/doc/org.cloudfoundry/cloudfoundry-util/3.23.0.RELEASE) +| `cloudfoundry-client` | [![javadoc](https://javadoc.io/badge2/org.cloudfoundry/cloudfoundry-client/javadoc.svg)](https://javadoc.io/doc/org.cloudfoundry/cloudfoundry-client) +| `cloudfoundry-client-reactor` | [![javadoc](https://javadoc.io/badge2/org.cloudfoundry/cloudfoundry-client-reactor/javadoc.svg)](https://javadoc.io/doc/org.cloudfoundry/cloudfoundry-client-reactor) +| `cloudfoundry-operations` | [![javadoc](https://javadoc.io/badge2/org.cloudfoundry/cloudfoundry-operations/javadoc.svg)](https://javadoc.io/doc/org.cloudfoundry/cloudfoundry-operations) +| `cloudfoundry-util` | [![javadoc](https://javadoc.io/badge2/org.cloudfoundry/cloudfoundry-util/javadoc.svg)](https://javadoc.io/doc/org.cloudfoundry/cloudfoundry-util) | Job | Status | --- | ------ -| `unit-test` | [![unit-test-3.x](https://java-experience.ci.springapps.io/api/v1/teams/java-experience/pipelines/java-client/jobs/unit-test-3.x/badge)](https://java-experience.ci.springapps.io/teams/java-experience/pipelines/java-client/jobs/unit-test-3.x) -| `integration-test-2.5` | [![integration-test-2.5-3.x](https://java-experience.ci.springapps.io/api/v1/teams/java-experience/pipelines/java-client/jobs/integration-test-2.5-3.x/badge)](https://java-experience.ci.springapps.io/teams/java-experience/pipelines/java-client/jobs/integration-test-2.5-3.x) -| `integration-test-2.6` | [![integration-test-2.6-3.x](https://java-experience.ci.springapps.io/api/v1/teams/java-experience/pipelines/java-client/jobs/integration-test-2.6-3.x/badge)](https://java-experience.ci.springapps.io/teams/java-experience/pipelines/java-client/jobs/integration-test-2.6-3.x) -| `integration-test-2.7` | [![integration-test-2.7-3.x](https://java-experience.ci.springapps.io/api/v1/teams/java-experience/pipelines/java-client/jobs/integration-test-2.7-3.x/badge)](https://java-experience.ci.springapps.io/teams/java-experience/pipelines/java-client/jobs/integration-test-2.7-3.x) -| `integration-test-2.8` | [![integration-test-2.8-3.x](https://java-experience.ci.springapps.io/api/v1/teams/java-experience/pipelines/java-client/jobs/integration-test-2.8-3.x/badge)](https://java-experience.ci.springapps.io/teams/java-experience/pipelines/java-client/jobs/integration-test-2.8-3.x) -| `deploy` | [![deploy-3.x](https://java-experience.ci.springapps.io/api/v1/teams/java-experience/pipelines/java-client/jobs/deploy-3.x/badge)](https://java-experience.ci.springapps.io/teams/java-experience/pipelines/java-client/jobs/deploy-3.x) +| `unit-test` | [![unit-test-master](https://java-experience.ci.springapps.io/api/v1/teams/java-experience/pipelines/java-client/jobs/unit-test-master/badge)](https://java-experience.ci.springapps.io/teams/java-experience/pipelines/java-client/jobs/unit-test-master) +| `integration-test-2.5` | [![integration-test-2.5-master](https://java-experience.ci.springapps.io/api/v1/teams/java-experience/pipelines/java-client/jobs/integration-test-2.5-master/badge)](https://java-experience.ci.springapps.io/teams/java-experience/pipelines/java-client/jobs/integration-test-2.5-master) +| `integration-test-2.6` | [![integration-test-2.6-master](https://java-experience.ci.springapps.io/api/v1/teams/java-experience/pipelines/java-client/jobs/integration-test-2.6-master/badge)](https://java-experience.ci.springapps.io/teams/java-experience/pipelines/java-client/jobs/integration-test-2.6-master) +| `integration-test-2.7` | [![integration-test-2.7-master](https://java-experience.ci.springapps.io/api/v1/teams/java-experience/pipelines/java-client/jobs/integration-test-2.7-master/badge)](https://java-experience.ci.springapps.io/teams/java-experience/pipelines/java-client/jobs/integration-test-2.7-master) +| `integration-test-2.8` | [![integration-test-2.8-master](https://java-experience.ci.springapps.io/api/v1/teams/java-experience/pipelines/java-client/jobs/integration-test-2.8-master/badge)](https://java-experience.ci.springapps.io/teams/java-experience/pipelines/java-client/jobs/integration-test-2.8-master) +| `deploy` | [![deploy-master](https://java-experience.ci.springapps.io/api/v1/teams/java-experience/pipelines/java-client/jobs/deploy-master/badge)](https://java-experience.ci.springapps.io/teams/java-experience/pipelines/java-client/jobs/deploy-master) The `cf-java-client` project is a Java language binding for interacting with a Cloud Foundry instance. The project is broken up into a number of components that expose different levels of abstraction depending on need. @@ -35,12 +35,12 @@ Most projects will need two dependencies; the Operations API and an implementati org.cloudfoundry cloudfoundry-client-reactor - 3.23.0.RELEASE + 4.6.0.RELEASE org.cloudfoundry cloudfoundry-operations - 3.23.0.RELEASE + 4.6.0.RELEASE ... @@ -66,8 +66,8 @@ For Gradle, the dependencies would be defined like this: ```groovy dependencies { - compile 'org.cloudfoundry:cloudfoundry-client-reactor:3.23.0.RELEASE' - compile 'org.cloudfoundry:cloudfoundry-operations:3.23.0.RELEASE' + compile 'org.cloudfoundry:cloudfoundry-client-reactor:4.6.0.RELEASE' + compile 'org.cloudfoundry:cloudfoundry-operations:4.6.0.RELEASE' ... } ``` diff --git a/cloudfoundry-client-reactor/pom.xml b/cloudfoundry-client-reactor/pom.xml index 5e6746ef7a7..c7d9aac2e0a 100644 --- a/cloudfoundry-client-reactor/pom.xml +++ b/cloudfoundry-client-reactor/pom.xml @@ -25,7 +25,7 @@ org.cloudfoundry cloudfoundry-java-client - 3.27.0.BUILD-SNAPSHOT + 4.10.0.BUILD-SNAPSHOT cloudfoundry-client-reactor diff --git a/cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/_DefaultConnectionContext.java b/cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/_DefaultConnectionContext.java index 35d3e74394f..b3e27fd63c2 100644 --- a/cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/_DefaultConnectionContext.java +++ b/cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/_DefaultConnectionContext.java @@ -173,8 +173,12 @@ public Mono trust(String host, int port) { @Value.Derived Optional getConnectionProvider() { + ConnectionProvider.Builder builder = ConnectionProvider.builder("cloudfoundry-client"); + return Optional.ofNullable(getConnectionPoolSize()) - .map(connectionPoolSize -> ConnectionProvider.fixed("cloudfoundry-client", connectionPoolSize)); + .map(connectionPoolSize -> builder.maxConnections(connectionPoolSize) + .pendingAcquireMaxCount(-1) + .build()); } /** diff --git a/cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/tokenprovider/AbstractUaaTokenProvider.java b/cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/tokenprovider/AbstractUaaTokenProvider.java index 3fc901639c2..d4a3049a6b3 100644 --- a/cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/tokenprovider/AbstractUaaTokenProvider.java +++ b/cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/tokenprovider/AbstractUaaTokenProvider.java @@ -148,10 +148,6 @@ private static String extractAccessToken(Map payload) { } private static Optional parseToken(String token) { - if (!token.contains(".")) { - return Optional.empty(); - } - try { String jws = token.substring(0, token.lastIndexOf('.') + 1); diff --git a/cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/uaa/UsernameProvider.java b/cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/uaa/UsernameProvider.java index 857d0aad284..b172b3d5274 100644 --- a/cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/uaa/UsernameProvider.java +++ b/cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/uaa/UsernameProvider.java @@ -26,6 +26,7 @@ import org.cloudfoundry.uaa.tokens.Tokens; import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; +import reactor.util.retry.Retry; import java.util.Optional; @@ -51,14 +52,8 @@ Mono get() { return getToken(this.connectionContext, this.tokenProvider) .map(this::getUsername) .subscribeOn(Schedulers.elastic()) - .retry(1, t -> { - if (t instanceof ExpiredJwtException) { - this.tokenProvider.invalidate(this.connectionContext); - return true; - } - - return false; - }); + .retryWhen(Retry.max(1).filter(ExpiredJwtException.class::isInstance) + .doAfterRetry(r -> this.tokenProvider.invalidate(this.connectionContext))); } private static Mono getToken(ConnectionContext connectionContext, TokenProvider tokenProvider) { diff --git a/cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/util/Operator.java b/cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/util/Operator.java index 332227716ad..9b2c86dd5af 100644 --- a/cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/util/Operator.java +++ b/cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/util/Operator.java @@ -37,6 +37,7 @@ import reactor.netty.http.client.HttpClientResponse; import reactor.netty.http.websocket.WebsocketInbound; import reactor.netty.http.websocket.WebsocketOutbound; +import reactor.util.retry.Retry; import java.io.InputStream; import java.util.ArrayList; @@ -102,7 +103,8 @@ public Operator withErrorPayloadMapper(ErrorPayloadMapper errorPayloadMapper) { private static HttpClient attachRequestLogger(HttpClient httpClient) { RequestLogger requestLogger = new RequestLogger(); return httpClient.doAfterRequest((request, connection) -> requestLogger.request(request)) - .doAfterResponse((response, connection) -> requestLogger.response(response)); + .doAfterResponseSuccess((response, connection) -> requestLogger.response(response)) + .doOnResponseError((response, connection) -> requestLogger.response(response)); } public static class PayloadConfiguration extends OperatorContextAware { @@ -239,8 +241,7 @@ private Flux invalidateToken(Flux processResponse(Flux inbound) { return inbound .transform(this::invalidateToken) - .retry(this.context.getConnectionContext().getInvalidTokenRetries(), - t -> t instanceof InvalidTokenException) + .retryWhen(Retry.max(this.context.getConnectionContext().getInvalidTokenRetries()).filter(InvalidTokenException.class::isInstance)) .transform(this.context.getErrorPayloadMapper() .orElse(ErrorPayloadMappers.fallback())); } diff --git a/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/client/v3/applications/ReactorApplicationsV3Test.java b/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/client/v3/applications/ReactorApplicationsV3Test.java index ee26db1f9a1..6d62acef3e1 100644 --- a/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/client/v3/applications/ReactorApplicationsV3Test.java +++ b/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/client/v3/applications/ReactorApplicationsV3Test.java @@ -586,7 +586,7 @@ public void getProcessStatistics() { .usage(ProcessUsage.builder() .time("2016-03-23T23:17:30.476314154Z") .cpu(0.00038711029163348665) - .memory(19177472) + .memory((long)19177472) .disk(69705728) .build()) .host("10.244.16.10") @@ -596,10 +596,10 @@ public void getProcessStatistics() { .internal(8080) .internalTlsProxyPort(5678) .build()) - .uptime(9042) - .memoryQuota(268435456) - .diskQuota(1073741824) - .fileDescriptorQuota(16384) + .uptime((long)9042) + .memoryQuota((long)268435456) + .diskQuota((long)1073741824) + .fileDescriptorQuota((long)16384) .build()) .build()) .expectComplete() diff --git a/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/client/v3/processes/ReactorProcessesTest.java b/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/client/v3/processes/ReactorProcessesTest.java index 642a93bdd57..bb9bb301b4b 100644 --- a/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/client/v3/processes/ReactorProcessesTest.java +++ b/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/client/v3/processes/ReactorProcessesTest.java @@ -166,7 +166,7 @@ public void getProcessStatistics() { .usage(ProcessUsage.builder() .time("2016-03-23T23:17:30.476314154Z") .cpu(0.00038711029163348665) - .memory(19177472) + .memory((long)19177472) .disk(69705728) .build()) .host("10.244.16.10") @@ -176,10 +176,10 @@ public void getProcessStatistics() { .internal(8080) .internalTlsProxyPort(5678) .build()) - .uptime(9042) - .memoryQuota(268435456) - .diskQuota(1073741824) - .fileDescriptorQuota(16384) + .uptime((long)9042) + .memoryQuota((long)268435456) + .diskQuota((long)1073741824) + .fileDescriptorQuota((long)16384) .build()) .build()) .expectComplete() diff --git a/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/uaa/IdentityZoneBuilderTest.java b/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/uaa/IdentityZoneBuilderTest.java index cba151f7996..a4d50242cf7 100644 --- a/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/uaa/IdentityZoneBuilderTest.java +++ b/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/uaa/IdentityZoneBuilderTest.java @@ -22,7 +22,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyZeroInteractions; +import static org.mockito.Mockito.verifyNoInteractions; public final class IdentityZoneBuilderTest { @@ -40,7 +40,7 @@ public void augment() { public void augmentNotIdentityZoned() { IdentityZoneBuilder.augment(this.outbound, new Object()); - verifyZeroInteractions(this.outbound); + verifyNoInteractions(this.outbound); } private static final class StubIdentityZoned implements IdentityZoned { diff --git a/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/uaa/VersionBuilderTest.java b/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/uaa/VersionBuilderTest.java index 706e94ebc62..b9c93d563c4 100644 --- a/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/uaa/VersionBuilderTest.java +++ b/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/uaa/VersionBuilderTest.java @@ -22,7 +22,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyZeroInteractions; +import static org.mockito.Mockito.verifyNoInteractions; public final class VersionBuilderTest { @@ -38,13 +38,13 @@ public void augment() { @Test public void augmentNotVersioned() { VersionBuilder.augment(this.outbound, new Object()); - verifyZeroInteractions(this.outbound); + verifyNoInteractions(this.outbound); } @Test public void augmentNullVersion() { VersionBuilder.augment(this.outbound, new StubVersioned(null)); - verifyZeroInteractions(this.outbound); + verifyNoInteractions(this.outbound); } private static final class StubVersioned implements Versioned { diff --git a/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/util/ErrorPayloadMappersTest.java b/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/util/ErrorPayloadMappersTest.java index 41ffed24332..4af890bbb69 100644 --- a/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/util/ErrorPayloadMappersTest.java +++ b/cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/util/ErrorPayloadMappersTest.java @@ -151,7 +151,7 @@ public void clientV3ClientError() throws IOException { assertThat(t).isInstanceOf(ClientV3Exception.class) .hasMessage("CF-UnprocessableEntity(10008): something went wrong") .extracting("statusCode") - .containsExactly(BAD_REQUEST.code()); + .isEqualTo(BAD_REQUEST.code()); assertThat(((ClientV3Exception) t).getErrors()).flatExtracting(org.cloudfoundry.client.v3.Error::getCode, org.cloudfoundry.client.v3.Error::getDetail, @@ -188,7 +188,7 @@ public void clientV3ServerError() throws IOException { assertThat(t).isInstanceOf(ClientV3Exception.class) .hasMessage("CF-UnprocessableEntity(10008): something went wrong") .extracting("statusCode") - .containsExactly(INTERNAL_SERVER_ERROR.code()); + .isEqualTo(INTERNAL_SERVER_ERROR.code()); assertThat(((ClientV3Exception) t).getErrors()).flatExtracting(org.cloudfoundry.client.v3.Error::getCode, org.cloudfoundry.client.v3.Error::getDetail, diff --git a/cloudfoundry-client/pom.xml b/cloudfoundry-client/pom.xml index 08c0d1059f8..7034c0baef0 100644 --- a/cloudfoundry-client/pom.xml +++ b/cloudfoundry-client/pom.xml @@ -25,7 +25,7 @@ org.cloudfoundry cloudfoundry-java-client - 3.27.0.BUILD-SNAPSHOT + 4.10.0.BUILD-SNAPSHOT cloudfoundry-client diff --git a/cloudfoundry-client/src/main/java/org/cloudfoundry/client/v3/processes/ProcessStatistics.java b/cloudfoundry-client/src/main/java/org/cloudfoundry/client/v3/processes/ProcessStatistics.java index c1d0e8451c6..8f5f1a22ce1 100644 --- a/cloudfoundry-client/src/main/java/org/cloudfoundry/client/v3/processes/ProcessStatistics.java +++ b/cloudfoundry-client/src/main/java/org/cloudfoundry/client/v3/processes/ProcessStatistics.java @@ -37,18 +37,21 @@ public abstract class ProcessStatistics { * The disk quota */ @JsonProperty("disk_quota") - public abstract Integer getDiskQuota(); + @Nullable + public abstract Long getDiskQuota(); /** * The file descriptor quota */ @JsonProperty("fds_quota") - public abstract Integer getFileDescriptorQuota(); + @Nullable + public abstract Long getFileDescriptorQuota(); /** * The host */ @JsonProperty("host") + @Nullable public abstract String getHost(); /** @@ -61,6 +64,7 @@ public abstract class ProcessStatistics { * The instance port mappings */ @JsonProperty("instance_ports") + @Nullable public abstract List getInstancePorts(); /** @@ -74,7 +78,8 @@ public abstract class ProcessStatistics { * The memory quota */ @JsonProperty("mem_quota") - public abstract Integer getMemoryQuota(); + @Nullable + public abstract Long getMemoryQuota(); /** * The state @@ -93,12 +98,13 @@ public abstract class ProcessStatistics { * The uptime */ @JsonProperty("uptime") - public abstract Integer getUptime(); + public abstract Long getUptime(); /** * The usage */ @JsonProperty("usage") + @Nullable public abstract ProcessUsage getUsage(); } diff --git a/cloudfoundry-client/src/main/java/org/cloudfoundry/client/v3/processes/_ProcessUsage.java b/cloudfoundry-client/src/main/java/org/cloudfoundry/client/v3/processes/_ProcessUsage.java index 76293b67ce6..b9b4ba73c4f 100644 --- a/cloudfoundry-client/src/main/java/org/cloudfoundry/client/v3/processes/_ProcessUsage.java +++ b/cloudfoundry-client/src/main/java/org/cloudfoundry/client/v3/processes/_ProcessUsage.java @@ -43,7 +43,7 @@ abstract class _ProcessUsage { * The memory */ @JsonProperty("mem") - abstract Integer getMemory(); + abstract Long getMemory(); /** * The time diff --git a/cloudfoundry-client/src/test/java/org/cloudfoundry/client/v3/ClientV3ExceptionTest.java b/cloudfoundry-client/src/test/java/org/cloudfoundry/client/v3/ClientV3ExceptionTest.java index a54f0a9275d..a2683a53259 100644 --- a/cloudfoundry-client/src/test/java/org/cloudfoundry/client/v3/ClientV3ExceptionTest.java +++ b/cloudfoundry-client/src/test/java/org/cloudfoundry/client/v3/ClientV3ExceptionTest.java @@ -42,7 +42,7 @@ public void test() { assertThat(exception) .hasNoCause() .hasMessage("test-title-1(-2): test-detail-1, test-title-2(-3): test-detail-2") - .extracting("statusCode").containsExactly(-1); + .extracting("statusCode").isEqualTo(-1); assertThat(exception.getErrors()) .flatExtracting(Error::getCode, Error::getDetail, Error::getTitle) diff --git a/cloudfoundry-client/src/test/java/org/cloudfoundry/client/v3/applications/GetApplicationProcessStatisticsRequestTest.java b/cloudfoundry-client/src/test/java/org/cloudfoundry/client/v3/applications/GetApplicationProcessStatisticsRequestTest.java index 5450b050ccc..d6e83defb09 100644 --- a/cloudfoundry-client/src/test/java/org/cloudfoundry/client/v3/applications/GetApplicationProcessStatisticsRequestTest.java +++ b/cloudfoundry-client/src/test/java/org/cloudfoundry/client/v3/applications/GetApplicationProcessStatisticsRequestTest.java @@ -16,6 +16,9 @@ package org.cloudfoundry.client.v3.applications; +import org.cloudfoundry.client.v3.processes.ProcessState; +import org.cloudfoundry.client.v3.processes.ProcessStatisticsResource; +import org.cloudfoundry.client.v3.processes.ProcessUsage; import org.junit.Test; public final class GetApplicationProcessStatisticsRequestTest { @@ -42,4 +45,40 @@ public void valid() { .build(); } + @Test + public void validDownResponse() { + ProcessStatisticsResource processStatisticsResource = ProcessStatisticsResource.builder() + .type("web") + .index(0) + .state(ProcessState.DOWN) + .uptime(new Long(0)) + .build(); + GetApplicationProcessStatisticsResponse.builder() + .resource(processStatisticsResource) + .build(); + } + + @Test + public void validRunningResponse() { + ProcessUsage processUsage = ProcessUsage.builder() + .time("") + .cpu(new Double("0.00038711029163348665")) + .memory(new Long(19177472)) + .disk(new Integer(69705728)) + .build(); + ProcessStatisticsResource processStatisticsResource = ProcessStatisticsResource.builder() + .type("web") + .index(0) + .state(ProcessState.RUNNING) + .host("10.244.16.10") + .usage(processUsage) + .uptime(new Long(9042)) + .memoryQuota(new Long(268435456)) + .diskQuota(new Long(1073741824)) + .fileDescriptorQuota(new Long(16384)) + .build(); + GetApplicationProcessStatisticsResponse.builder() + .resource(processStatisticsResource) + .build(); + } } diff --git a/cloudfoundry-operations/pom.xml b/cloudfoundry-operations/pom.xml index 614b878649a..b386ead9a6e 100644 --- a/cloudfoundry-operations/pom.xml +++ b/cloudfoundry-operations/pom.xml @@ -25,7 +25,7 @@ org.cloudfoundry cloudfoundry-java-client - 3.27.0.BUILD-SNAPSHOT + 4.10.0.BUILD-SNAPSHOT cloudfoundry-operations diff --git a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java index 5e8f6cad34c..d37b7b78518 100644 --- a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java +++ b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java @@ -900,7 +900,7 @@ private static Flux getLogs(Mono dopplerClient, Strin return requestLogsStream(dopplerClient, applicationId) .filter(e -> EventType.LOG_MESSAGE == e.getEventType()) .map(Envelope::getLogMessage) - .compose(SortingUtils.timespan(LOG_MESSAGE_COMPARATOR, LOG_MESSAGE_TIMESPAN)); + .transformDeferred(SortingUtils.timespan(LOG_MESSAGE_COMPARATOR, LOG_MESSAGE_TIMESPAN)); } } diff --git a/cloudfoundry-util/pom.xml b/cloudfoundry-util/pom.xml index c5b44747923..02f9952721b 100644 --- a/cloudfoundry-util/pom.xml +++ b/cloudfoundry-util/pom.xml @@ -25,7 +25,7 @@ org.cloudfoundry cloudfoundry-java-client - 3.27.0.BUILD-SNAPSHOT + 4.10.0.BUILD-SNAPSHOT cloudfoundry-util diff --git a/integration-test/pom.xml b/integration-test/pom.xml index 6773a30008b..c5b117897ae 100644 --- a/integration-test/pom.xml +++ b/integration-test/pom.xml @@ -25,7 +25,7 @@ org.cloudfoundry cloudfoundry-java-client - 3.27.0.BUILD-SNAPSHOT + 4.10.0.BUILD-SNAPSHOT integration-test diff --git a/integration-test/src/test/java/org/cloudfoundry/CloudFoundryCleaner.java b/integration-test/src/test/java/org/cloudfoundry/CloudFoundryCleaner.java index 651df0501cd..39ea0b299ed 100644 --- a/integration-test/src/test/java/org/cloudfoundry/CloudFoundryCleaner.java +++ b/integration-test/src/test/java/org/cloudfoundry/CloudFoundryCleaner.java @@ -109,6 +109,7 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.util.function.Tuples; +import reactor.util.retry.Retry; import javax.net.ssl.SSLException; import java.time.Duration; @@ -188,7 +189,7 @@ void clean() { )) .thenMany(cleanOrganizations(this.cloudFoundryClient, this.nameFactory)) // After Spaces .thenMany(cleanOrganizationQuotaDefinitions(this.cloudFoundryClient, this.nameFactory)) // After Organizations - .retry(5, t -> t instanceof SSLException) + .retryWhen(Retry.max(5).filter(SSLException.class::isInstance)) .doOnSubscribe(s -> LOGGER.debug(">> CLEANUP <<")) .doOnComplete(() -> LOGGER.debug("<< CLEANUP >>")) .then() diff --git a/pom.xml b/pom.xml index e6e128b4d36..6c10cf52a98 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,7 @@ cloudfoundry-java-client Cloud Foundry Java Client Parent A Java language binding for interacting with a Cloud Foundry instance - 3.27.0.BUILD-SNAPSHOT + 4.10.0.BUILD-SNAPSHOT pom https://github.com/cloudfoundry/cf-java-client @@ -59,12 +59,11 @@ 1.20 - 2.1.15.RELEASE + 2.2.8.RELEASE 1.2.2 2.8.8 0.9.0 0.9.1 - 3.14.9 UTF-8 2.2.0 @@ -84,11 +83,6 @@ java-semver ${java-semver.version} - - com.squareup.okhttp3 - mockwebserver - ${okhttp3.version} - com.squareup.wire wire-runtime diff --git a/test-service-broker/pom.xml b/test-service-broker/pom.xml index 0c174dc9863..cba2273b022 100644 --- a/test-service-broker/pom.xml +++ b/test-service-broker/pom.xml @@ -25,7 +25,7 @@ org.cloudfoundry cloudfoundry-java-client - 3.27.0.BUILD-SNAPSHOT + 4.10.0.BUILD-SNAPSHOT test-service-broker