Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -297,8 +297,8 @@

<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>mockwebserver</artifactId>
<version>4.12.0</version>
<artifactId>mockwebserver3-junit5</artifactId>
<version>5.1.0</version>
<scope>test</scope>
</dependency>

Expand Down
46 changes: 29 additions & 17 deletions src/test/java/com/influxdb/v3/client/AbstractMockServerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,13 @@
package com.influxdb.v3.client;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;

import okhttp3.mockwebserver.MockResponse;
import okhttp3.mockwebserver.MockWebServer;
import mockwebserver3.MockResponse;
import mockwebserver3.MockWebServer;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;

Expand All @@ -50,32 +52,42 @@ protected void startMockServer() {

@AfterEach
protected void shutdownMockServer() throws IOException {
mockServer.shutdown();
mockServer.close();
}

@Nonnull
protected MockResponse createEmptyResponse(final int responseCode) {
return new MockResponse().setResponseCode(responseCode);
return new MockResponse.Builder().code(responseCode).build();
}

@Nonnull
protected MockResponse createResponse(final int responseCode) {
protected MockResponse createResponse(final int responseCode,
@Nullable final Map<String, String> headers,
@Nullable final String body) {

MockResponse.Builder mrb = new MockResponse.Builder();
mrb.code(responseCode);
Map<String, String> effectiveHeaders = new HashMap<>(Map.of("Content-Type", "text/csv; charset=utf-8",
"Date", "Tue, 26 Jun 2018 13:15:01 GMT"));
if (headers != null) {
effectiveHeaders.putAll(headers);
}
for (Map.Entry<String, String> entry : effectiveHeaders.entrySet()) {
mrb.addHeader(entry.getKey(), entry.getValue());
}
if (body != null) {
mrb.body(body);
}

return createResponseWithHeaders(responseCode, Map.of(
"Content-Type", "text/csv; charset=utf-8",
"Date", "Tue, 26 Jun 2018 13:15:01 GMT"
));
return mrb.build();
}

@Nonnull
protected MockResponse createResponseWithHeaders(final int responseCode, final Map<String, String> headers) {

final MockResponse response = new MockResponse()
.setResponseCode(responseCode);
for (Map.Entry<String, String> entry : headers.entrySet()) {
response.addHeader(entry.getKey(), entry.getValue());
}
protected MockResponse createResponse(final int responseCode) {

return response;
return createResponse(responseCode, Map.of(
"Content-Type", "text/csv; charset=utf-8",
"Date", "Tue, 26 Jun 2018 13:15:01 GMT"
), null);
}
}
96 changes: 50 additions & 46 deletions src/test/java/com/influxdb/v3/client/InfluxDBClientWriteTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
import java.util.Map;

import io.netty.handler.codec.http.HttpResponseStatus;
import mockwebserver3.RecordedRequest;
import okhttp3.HttpUrl;
import okhttp3.mockwebserver.RecordedRequest;
import org.assertj.core.api.Assertions;
import org.jetbrains.annotations.NotNull;
import org.junit.jupiter.api.AfterEach;
Expand Down Expand Up @@ -103,8 +103,8 @@ void databaseParameter() throws InterruptedException {
assertThat(mockServer.getRequestCount()).isEqualTo(1);
RecordedRequest request = mockServer.takeRequest();
assertThat(request).isNotNull();
assertThat(request.getRequestUrl()).isNotNull();
assertThat(request.getRequestUrl().queryParameter("bucket")).isEqualTo("my-database");
assertThat(request.getUrl()).isNotNull();
assertThat(request.getUrl().queryParameter("bucket")).isEqualTo("my-database");
}

@Test
Expand All @@ -116,8 +116,8 @@ void databaseParameterSpecified() throws InterruptedException {
assertThat(mockServer.getRequestCount()).isEqualTo(1);
RecordedRequest request = mockServer.takeRequest();
assertThat(request).isNotNull();
assertThat(request.getRequestUrl()).isNotNull();
assertThat(request.getRequestUrl().queryParameter("bucket")).isEqualTo("my-database-2");
assertThat(request.getUrl()).isNotNull();
assertThat(request.getUrl().queryParameter("bucket")).isEqualTo("my-database-2");
}

@Test
Expand All @@ -144,8 +144,8 @@ void precisionParameter() throws InterruptedException {
assertThat(mockServer.getRequestCount()).isEqualTo(1);
RecordedRequest request = mockServer.takeRequest();
assertThat(request).isNotNull();
assertThat(request.getRequestUrl()).isNotNull();
assertThat(request.getRequestUrl().queryParameter("precision")).isEqualTo("ns");
assertThat(request.getUrl()).isNotNull();
assertThat(request.getUrl().queryParameter("precision")).isEqualTo("ns");
}

@Test
Expand All @@ -157,8 +157,8 @@ void precisionParameterSpecified() throws InterruptedException {
assertThat(mockServer.getRequestCount()).isEqualTo(1);
RecordedRequest request = mockServer.takeRequest();
assertThat(request).isNotNull();
assertThat(request.getRequestUrl()).isNotNull();
assertThat(request.getRequestUrl().queryParameter("precision")).isEqualTo("s");
assertThat(request.getUrl()).isNotNull();
assertThat(request.getUrl().queryParameter("precision")).isEqualTo("s");
}

@Test
Expand All @@ -170,9 +170,9 @@ void gzipParameter() throws InterruptedException {
assertThat(mockServer.getRequestCount()).isEqualTo(1);
RecordedRequest request = mockServer.takeRequest();
assertThat(request).isNotNull();
assertThat(request.getRequestUrl()).isNotNull();
assertThat(request.getHeader("Content-Type")).isEqualTo("text/plain; charset=utf-8");
assertThat(request.getHeader("Content-Encoding")).isNotEqualTo("gzip");
assertThat(request.getUrl()).isNotNull();
assertThat(request.getHeaders().get("Content-Type")).isEqualTo("text/plain; charset=utf-8");
assertThat(request.getHeaders().get("Content-Encoding")).isNotEqualTo("gzip");
}

@Test
Expand All @@ -184,9 +184,9 @@ void gzipParameterSpecified() throws InterruptedException {
assertThat(mockServer.getRequestCount()).isEqualTo(1);
RecordedRequest request = mockServer.takeRequest();
assertThat(request).isNotNull();
assertThat(request.getRequestUrl()).isNotNull();
assertThat(request.getHeader("Content-Type")).isEqualTo("text/plain; charset=utf-8");
assertThat(request.getHeader("Content-Encoding")).isEqualTo("gzip");
assertThat(request.getUrl()).isNotNull();
assertThat(request.getHeaders().get("Content-Type")).isEqualTo("text/plain; charset=utf-8");
assertThat(request.getHeaders().get("Content-Encoding")).isEqualTo("gzip");
}

@Test
Expand All @@ -199,10 +199,10 @@ void writeNoSyncFalseUsesV2API() throws InterruptedException {
assertThat(mockServer.getRequestCount()).isEqualTo(1);
RecordedRequest request = mockServer.takeRequest();
assertThat(request).isNotNull();
assertThat(request.getRequestUrl()).isNotNull();
assertThat(request.getRequestUrl().encodedPath()).isEqualTo("/api/v2/write");
assertThat(request.getRequestUrl().queryParameter("no_sync")).isNull();
assertThat(request.getRequestUrl().queryParameter("precision")).isEqualTo("ns");
assertThat(request.getUrl()).isNotNull();
assertThat(request.getUrl().encodedPath()).isEqualTo("/api/v2/write");
assertThat(request.getUrl().queryParameter("no_sync")).isNull();
assertThat(request.getUrl().queryParameter("precision")).isEqualTo("ns");

}

Expand All @@ -216,10 +216,10 @@ void writeNoSyncTrueUsesV3API() throws InterruptedException {
assertThat(mockServer.getRequestCount()).isEqualTo(1);
RecordedRequest request = mockServer.takeRequest();
assertThat(request).isNotNull();
assertThat(request.getRequestUrl()).isNotNull();
assertThat(request.getRequestUrl().encodedPath()).isEqualTo("/api/v3/write_lp");
assertThat(request.getRequestUrl().queryParameter("no_sync")).isEqualTo("true");
assertThat(request.getRequestUrl().queryParameter("precision")).isEqualTo("nanosecond");
assertThat(request.getUrl()).isNotNull();
assertThat(request.getUrl().encodedPath()).isEqualTo("/api/v3/write_lp");
assertThat(request.getUrl().queryParameter("no_sync")).isEqualTo("true");
assertThat(request.getUrl().queryParameter("precision")).isEqualTo("nanosecond");
}

@Test
Expand All @@ -234,10 +234,10 @@ void writeNoSyncTrueOnV2ServerThrowsException() throws InterruptedException {
assertThat(mockServer.getRequestCount()).isEqualTo(1);
RecordedRequest request = mockServer.takeRequest();
assertThat(request).isNotNull();
assertThat(request.getRequestUrl()).isNotNull();
assertThat(request.getRequestUrl().encodedPath()).isEqualTo("/api/v3/write_lp");
assertThat(request.getRequestUrl().queryParameter("no_sync")).isEqualTo("true");
assertThat(request.getRequestUrl().queryParameter("precision")).isEqualTo("millisecond");
assertThat(request.getUrl()).isNotNull();
assertThat(request.getUrl().encodedPath()).isEqualTo("/api/v3/write_lp");
assertThat(request.getUrl().queryParameter("no_sync")).isEqualTo("true");
assertThat(request.getUrl().queryParameter("precision")).isEqualTo("millisecond");

assertThat(ae.statusCode()).isEqualTo(HttpResponseStatus.METHOD_NOT_ALLOWED.code());
assertThat(ae.getMessage()).contains("Server doesn't support write with NoSync=true"
Expand Down Expand Up @@ -376,7 +376,7 @@ private void checkWriteCalled(final String expectedPath, final String expectedDB
final String expectedPrecision, final boolean expectedNoSync,
final boolean expectedGzip) throws InterruptedException {
RecordedRequest request = assertThatServerRequested();
HttpUrl requestUrl = request.getRequestUrl();
HttpUrl requestUrl = request.getUrl();
assertThat(requestUrl).isNotNull();
assertThat(requestUrl.encodedPath()).isEqualTo(expectedPath);
if (expectedNoSync) {
Expand All @@ -391,9 +391,9 @@ private void checkWriteCalled(final String expectedPath, final String expectedDB
assertThat(requestUrl.queryParameter("no_sync")).isNull();
}
if (expectedGzip) {
assertThat(request.getHeader("Content-Encoding")).isEqualTo("gzip");
assertThat(request.getHeaders().get("Content-Encoding")).isEqualTo("gzip");
} else {
assertThat(request.getHeader("Content-Encoding")).isNull();
assertThat(request.getHeaders().get("Content-Encoding")).isNull();
}
}

Expand All @@ -415,11 +415,11 @@ void allParameterSpecified() throws InterruptedException {
assertThat(mockServer.getRequestCount()).isEqualTo(1);
RecordedRequest request = mockServer.takeRequest();
assertThat(request).isNotNull();
assertThat(request.getRequestUrl()).isNotNull();
assertThat(request.getHeader("Content-Type")).isEqualTo("text/plain; charset=utf-8");
assertThat(request.getHeader("Content-Encoding")).isEqualTo("gzip");
assertThat(request.getRequestUrl().queryParameter("precision")).isEqualTo("s");
assertThat(request.getRequestUrl().queryParameter("bucket")).isEqualTo("your-database");
assertThat(request.getUrl()).isNotNull();
assertThat(request.getHeaders().get("Content-Type")).isEqualTo("text/plain; charset=utf-8");
assertThat(request.getHeaders().get("Content-Encoding")).isEqualTo("gzip");
assertThat(request.getUrl().queryParameter("precision")).isEqualTo("s");
assertThat(request.getUrl().queryParameter("bucket")).isEqualTo("your-database");
}

@Test
Expand All @@ -431,8 +431,8 @@ void contentHeaders() throws InterruptedException {
assertThat(mockServer.getRequestCount()).isEqualTo(1);
RecordedRequest request = mockServer.takeRequest();
assertThat(request).isNotNull();
assertThat(request.getHeader("Content-Type")).isEqualTo("text/plain; charset=utf-8");
assertThat(request.getHeader("Content-Encoding")).isNull();
assertThat(request.getHeaders().get("Content-Type")).isEqualTo("text/plain; charset=utf-8");
assertThat(request.getHeaders().get("Content-Encoding")).isNull();
}

@Test
Expand All @@ -444,7 +444,10 @@ void bodyRecord() throws InterruptedException {
assertThat(mockServer.getRequestCount()).isEqualTo(1);
RecordedRequest request = mockServer.takeRequest();
assertThat(request).isNotNull();
assertThat(request.getBody().readUtf8()).isEqualTo("mem,tag=one value=1.0");
// assertThat(request.getBody().readUtf8()).isEqualTo("mem,tag=one value=1.0");
// assertThat(request.getBody().getUtf8$okio()).isEqualTo("mem,tag=one value=1.0");
assertThat(request.getBody().utf8()).isEqualTo("mem,tag=one value=1.0");

}

@Test
Expand All @@ -460,7 +463,8 @@ void bodyPoint() throws InterruptedException {
assertThat(mockServer.getRequestCount()).isEqualTo(1);
RecordedRequest request = mockServer.takeRequest();
assertThat(request).isNotNull();
assertThat(request.getBody().readUtf8()).isEqualTo("mem,tag=one value=1.0");
// assertThat(request.getBody().readUtf8()).isEqualTo("mem,tag=one value=1.0");
assertThat(request.getBody().utf8()).isEqualTo("mem,tag=one value=1.0");
}

@Test
Expand All @@ -480,7 +484,8 @@ void bodyConcat() throws InterruptedException {
assertThat(mockServer.getRequestCount()).isEqualTo(1);
RecordedRequest request = mockServer.takeRequest();
assertThat(request).isNotNull();
assertThat(request.getBody().readUtf8()).isEqualTo("mem,tag=one value=1.0\ncpu,tag=two value=2.0");
// assertThat(request.getBody().readUtf8()).isEqualTo("mem,tag=one value=1.0\ncpu,tag=two value=2.0");
assertThat(request.getBody().utf8()).isEqualTo("mem,tag=one value=1.0\ncpu,tag=two value=2.0");
}


Expand All @@ -502,17 +507,16 @@ void defaultTags() throws InterruptedException {
RecordedRequest request = mockServer.takeRequest();

assertThat(request).isNotNull();
assertThat(request.getBody().readUtf8()).isEqualTo("mem,model=M5,tag=one,unit=U2 value=1.0");
// assertThat(request.getBody().readUtf8()).isEqualTo("mem,model=M5,tag=one,unit=U2 value=1.0");
assertThat(request.getBody().utf8()).isEqualTo("mem,model=M5,tag=one,unit=U2 value=1.0");

}

@Test
public void retryHandled429Test() {
mockServer.enqueue(createResponse(429)
.setBody("{ \"message\" : \"Too Many Requests\" }")
.setHeader("retry-after", "42")
.setHeader("content-type", "application/json")
);
mockServer.enqueue(createResponse(429,
Map.of("retry-after", "42", "content-type", "application/json"),
"{ \"message\" : \"Too Many Requests\" }"));

Point point = Point.measurement("mem")
.setTag("tag", "one")
Expand Down
Loading
Loading