diff --git a/rollbar-java/src/integTest/java/com/rollbar/notifier/RollbarITest.java b/rollbar-java/src/integTest/java/com/rollbar/notifier/RollbarITest.java index 11d7e162..59364d2c 100644 --- a/rollbar-java/src/integTest/java/com/rollbar/notifier/RollbarITest.java +++ b/rollbar-java/src/integTest/java/com/rollbar/notifier/RollbarITest.java @@ -352,7 +352,7 @@ public void ifPayloadIsTooLargeItShouldBeTruncated() { assertThat(frames, hasSize(20)); assertThat(PayloadTruncator.sizeInBytes(payloadJsonString), - lessThanOrEqualTo(512 * 1024)); + lessThanOrEqualTo(1024 * 1024)); } protected Sender buildSender(String url, String accessToken, Proxy proxy) { diff --git a/rollbar-java/src/main/java/com/rollbar/notifier/RollbarBase.java b/rollbar-java/src/main/java/com/rollbar/notifier/RollbarBase.java index 6e1be6f2..ca5f45ec 100644 --- a/rollbar-java/src/main/java/com/rollbar/notifier/RollbarBase.java +++ b/rollbar-java/src/main/java/com/rollbar/notifier/RollbarBase.java @@ -36,7 +36,7 @@ public abstract class RollbarBase { private static final Logger LOGGER = LoggerFactory.getLogger(RollbarBase.class); - private static final int MAX_PAYLOAD_SIZE_BYTES = 512 * 1024; // 512kb + private static final int MAX_PAYLOAD_SIZE_BYTES = 1024 * 1024; // 1mb protected BodyFactory bodyFactory; protected PayloadTruncator payloadTruncator; diff --git a/rollbar-java/src/main/java/com/rollbar/notifier/config/CommonConfig.java b/rollbar-java/src/main/java/com/rollbar/notifier/config/CommonConfig.java index f2fac03c..c4c4ea41 100644 --- a/rollbar-java/src/main/java/com/rollbar/notifier/config/CommonConfig.java +++ b/rollbar-java/src/main/java/com/rollbar/notifier/config/CommonConfig.java @@ -212,6 +212,17 @@ public interface CommonConfig { */ boolean truncateLargePayloads(); + /** + *

+ * If set to true (the default), payloads are gzip-compressed before sending. + * Set to false to send uncompressed JSON. + *

+ * @return true to compress payloads, false otherwise. + */ + default boolean compressPayload() { + return true; + } + int maximumTelemetryData(); TelemetryEventTracker telemetryEventTracker(); diff --git a/rollbar-java/src/main/java/com/rollbar/notifier/config/ConfigBuilder.java b/rollbar-java/src/main/java/com/rollbar/notifier/config/ConfigBuilder.java index 88f56b53..d91e3705 100644 --- a/rollbar-java/src/main/java/com/rollbar/notifier/config/ConfigBuilder.java +++ b/rollbar-java/src/main/java/com/rollbar/notifier/config/ConfigBuilder.java @@ -87,6 +87,8 @@ public class ConfigBuilder { protected boolean truncateLargePayloads; + protected boolean compressPayload; + private int maximumTelemetryData = RollbarTelemetryEventTracker.MAXIMUM_CAPACITY_FOR_TELEMETRY_EVENTS; @@ -101,6 +103,7 @@ protected ConfigBuilder(String accessToken) { this.accessToken = accessToken; this.handleUncaughtErrors = true; this.enabled = true; + this.compressPayload = true; this.defaultLevels = new DefaultLevels(); } @@ -136,6 +139,7 @@ private ConfigBuilder(Config config) { this.appPackages = config.appPackages(); this.defaultLevels = new DefaultLevels(config); this.truncateLargePayloads = config.truncateLargePayloads(); + this.compressPayload = config.compressPayload(); this.maximumTelemetryData = config.maximumTelemetryData(); this.telemetryEventTracker = config.telemetryEventTracker(); } @@ -480,6 +484,18 @@ public ConfigBuilder truncateLargePayloads(boolean truncate) { return this; } + /** + *

+ * If set to false, payloads will not be gzip-compressed before sending. Default: true. + *

+ * @param compress true to gzip-compress payloads. + * @return the builder instance. + */ + public ConfigBuilder compressPayload(boolean compress) { + this.compressPayload = compress; + return this; + } + /** *

* Maximum Telemetry events sent in a payload, only for the default TelemetryEventTracker, if @@ -526,7 +542,8 @@ public Config build() { SyncSender.Builder innerSender = new SyncSender.Builder(this.endpoint) .accessToken(accessToken) - .proxy(proxy); + .proxy(proxy) + .compressPayload(this.compressPayload); if (this.jsonSerializer != null) { innerSender.jsonSerializer(this.jsonSerializer); } @@ -601,6 +618,8 @@ private static class ConfigImpl implements Config { private final boolean truncateLargePayloads; + private final boolean compressPayload; + private final int maximumTelemetryData; private final TelemetryEventTracker telemetryEventTracker; @@ -637,6 +656,7 @@ private static class ConfigImpl implements Config { this.enabled = builder.enabled; this.defaultLevels = builder.defaultLevels; this.truncateLargePayloads = builder.truncateLargePayloads; + this.compressPayload = builder.compressPayload; this.maximumTelemetryData = builder.maximumTelemetryData; this.telemetryEventTracker = builder.telemetryEventTracker; } @@ -786,6 +806,11 @@ public boolean truncateLargePayloads() { return this.truncateLargePayloads; } + @Override + public boolean compressPayload() { + return this.compressPayload; + } + @Override public int maximumTelemetryData() { return this.maximumTelemetryData; diff --git a/rollbar-java/src/main/java/com/rollbar/notifier/sender/SyncSender.java b/rollbar-java/src/main/java/com/rollbar/notifier/sender/SyncSender.java index cb5017eb..2a8f0cb3 100755 --- a/rollbar-java/src/main/java/com/rollbar/notifier/sender/SyncSender.java +++ b/rollbar-java/src/main/java/com/rollbar/notifier/sender/SyncSender.java @@ -15,6 +15,7 @@ import java.net.MalformedURLException; import java.net.Proxy; import java.net.URL; +import java.util.zip.GZIPOutputStream; /** * Synchronous implementation of the {@link Sender sender}. @@ -33,11 +34,14 @@ public class SyncSender extends AbstractSender { private final Proxy proxy; + private final boolean compressPayload; + SyncSender(Builder builder) { this.url = builder.url; this.jsonSerializer = builder.jsonSerializer; this.accessToken = builder.accessToken; this.proxy = builder.proxy != null ? builder.proxy : Proxy.NO_PROXY; + this.compressPayload = builder.compressPayload; } @Override @@ -69,6 +73,9 @@ private HttpURLConnection getConnection() throws IOException { connection.setRequestProperty("Accept-Charset", UTF_8); connection.setRequestProperty("Content-Type", "application/json; charset=" + UTF_8); connection.setRequestProperty("Accept", "application/json"); + if (compressPayload) { + connection.setRequestProperty("Content-Encoding", "gzip"); + } connection.setDoOutput(true); connection.setRequestMethod("POST"); @@ -78,10 +85,14 @@ private HttpURLConnection getConnection() throws IOException { private void sendJson(HttpURLConnection connection, byte[] bytes) throws IOException { OutputStream out = null; try { - out = connection.getOutputStream(); + OutputStream raw = connection.getOutputStream(); + try { + out = compressPayload ? new GZIPOutputStream(raw) : raw; + } catch (IOException e) { + ObjectsUtils.close(raw); + throw e; + } out.write(bytes, 0, bytes.length); - } catch (IOException e) { - throw e; } finally { ObjectsUtils.close(out); } @@ -131,6 +142,8 @@ public static final class Builder { private Proxy proxy; + private boolean compressPayload = true; + public Builder() { this(DEFAULT_API_ENDPOINT); } @@ -195,6 +208,16 @@ public Builder proxy(Proxy proxy) { return this; } + /** + * Whether to gzip-compress payloads before sending. Default: true. + * @param compress true to enable compression. + * @return the builder instance. + */ + public Builder compressPayload(boolean compress) { + this.compressPayload = compress; + return this; + } + /** * Builds the {@link SyncSender sync sender}. * diff --git a/rollbar-java/src/test/java/com/rollbar/notifier/sender/SyncSenderTest.java b/rollbar-java/src/test/java/com/rollbar/notifier/sender/SyncSenderTest.java index 70736995..4e4fcea6 100644 --- a/rollbar-java/src/test/java/com/rollbar/notifier/sender/SyncSenderTest.java +++ b/rollbar-java/src/test/java/com/rollbar/notifier/sender/SyncSenderTest.java @@ -17,9 +17,11 @@ import com.rollbar.notifier.sender.result.Response; import com.rollbar.notifier.sender.result.Result; import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.util.zip.GZIPInputStream; import java.net.HttpURLConnection; import java.net.Proxy; import java.net.URL; @@ -76,6 +78,7 @@ public void setUp()throws Exception { sut = new SyncSender.Builder() .url(url) .jsonSerializer(serializer) + .compressPayload(false) .build(); sut.addListener(listener); } @@ -198,6 +201,57 @@ public void shouldSendThePayloadUsingAProxyIfProvided() throws Exception { verify(listener).onResponse(payload, expectedResponse); } + @Test + public void shouldSendGzipEncodedPayloadWhenCompressionEnabled() throws Exception { + ByteArrayOutputStream capturedBytes = new ByteArrayOutputStream(); + when(url.openConnection(eq(Proxy.NO_PROXY))).thenReturn(connection); + when(connection.getOutputStream()).thenReturn(capturedBytes); + + int responseCode = 200; + String responseJson = "simulated_response_json"; + when(connection.getResponseCode()).thenReturn(responseCode); + when(connection.getInputStream()) + .thenReturn(new ByteArrayInputStream(responseJson.getBytes(UTF_8))); + when(serializer.resultFrom(responseJson)).thenReturn(result); + + SyncSender compressingSut = new SyncSender.Builder() + .url(url) + .jsonSerializer(serializer) + .compressPayload(true) + .build(); + + compressingSut.send(payload); + + verify(connection).setRequestProperty("Content-Encoding", "gzip"); + + GZIPInputStream gzipIn = new GZIPInputStream( + new ByteArrayInputStream(capturedBytes.toByteArray())); + ByteArrayOutputStream decompressedBytes = new ByteArrayOutputStream(); + byte[] buf = new byte[1024]; + int n; + while ((n = gzipIn.read(buf)) != -1) { + decompressedBytes.write(buf, 0, n); + } + String decompressed = decompressedBytes.toString(UTF_8); + assertThat(decompressed, is(PAYLOAD_JSON)); + } + + @Test + public void shouldNotSetContentEncodingWhenCompressionDisabled() throws Exception { + int responseCode = 200; + String responseJson = "simulated_response_json"; + when(connection.getResponseCode()).thenReturn(responseCode); + when(connection.getInputStream()) + .thenReturn(new ByteArrayInputStream(responseJson.getBytes(UTF_8))); + when(serializer.resultFrom(responseJson)).thenReturn(result); + + sut.send(payload); + + verify(connection, org.mockito.Mockito.never()) + .setRequestProperty(org.mockito.ArgumentMatchers.eq("Content-Encoding"), + org.mockito.ArgumentMatchers.anyString()); + } + private void verifyHttp() throws Exception { verify(connection).setRequestProperty("Accept-Charset", UTF_8); verify(connection).setRequestProperty("Content-Type", "application/json; charset=" + UTF_8); diff --git a/rollbar-reactive-streams-reactor/src/main/java/com/rollbar/reactivestreams/notifier/sender/http/ReactorAsyncHttpClient.java b/rollbar-reactive-streams-reactor/src/main/java/com/rollbar/reactivestreams/notifier/sender/http/ReactorAsyncHttpClient.java index 4d0d6855..a283ff92 100644 --- a/rollbar-reactive-streams-reactor/src/main/java/com/rollbar/reactivestreams/notifier/sender/http/ReactorAsyncHttpClient.java +++ b/rollbar-reactive-streams-reactor/src/main/java/com/rollbar/reactivestreams/notifier/sender/http/ReactorAsyncHttpClient.java @@ -1,12 +1,16 @@ package com.rollbar.reactivestreams.notifier.sender.http; +import com.rollbar.notifier.sender.SyncSender; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; +import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.net.InetSocketAddress; import java.net.Proxy; import java.nio.charset.StandardCharsets; import java.util.AbstractMap; import java.util.Map; +import java.util.zip.GZIPOutputStream; import org.reactivestreams.Publisher; import reactor.core.publisher.Mono; @@ -47,7 +51,16 @@ public class ReactorAsyncHttpClient implements AsyncHttpClient { public Publisher send(AsyncHttpRequest httpRequest) { ByteBuf buffer = ByteBufAllocator.DEFAULT.buffer(); - buffer.writeCharSequence(httpRequest.getBody(), StandardCharsets.UTF_8); + try { + if (httpRequest.isCompressionRequested()) { + buffer.writeBytes(compress(httpRequest.getBody())); + } else { + buffer.writeCharSequence(httpRequest.getBody(), StandardCharsets.UTF_8); + } + } catch (Throwable t) { + buffer.release(); + throw t; + } Mono buf = Mono.just(buffer); return httpClient @@ -55,6 +68,9 @@ public Publisher send(AsyncHttpRequest httpRequest) { for (Map.Entry header : httpRequest.getHeaders()) { entries.add(header.getKey(), header.getValue()); } + if (httpRequest.isCompressionRequested()) { + entries.add("Content-Encoding", "gzip"); + } }) .post() .uri(httpRequest.getUrl()) @@ -140,6 +156,18 @@ private static ProxyProvider.Proxy getProxyType(Proxy proxy) { } } + private static byte[] compress(String json) { + try { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try (GZIPOutputStream gzip = new GZIPOutputStream(baos)) { + gzip.write(json.getBytes(SyncSender.UTF_8)); + } + return baos.toByteArray(); + } catch (IOException e) { + throw new RuntimeException("Failed to gzip-compress payload", e); + } + } + public static final class Builder { private Proxy proxy; private ConnectionProvider connectionProvider; diff --git a/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/config/ConfigBuilder.java b/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/config/ConfigBuilder.java index 48536116..5151e234 100644 --- a/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/config/ConfigBuilder.java +++ b/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/config/ConfigBuilder.java @@ -61,6 +61,7 @@ public final class ConfigBuilder { private boolean enabled; private DefaultLevels defaultLevels; private boolean truncateLargePayloads; + private boolean compressPayload; private int maximumTelemetryData = RollbarTelemetryEventTracker.MAXIMUM_CAPACITY_FOR_TELEMETRY_EVENTS; private TelemetryEventTracker telemetryEventTracker; @@ -74,6 +75,7 @@ protected ConfigBuilder(String accessToken) { this.accessToken = accessToken; this.handleUncaughtErrors = true; this.enabled = true; + this.compressPayload = true; this.defaultLevels = new DefaultLevels(); } @@ -106,6 +108,7 @@ private ConfigBuilder(Config config) { this.appPackages = config.appPackages(); this.defaultLevels = new DefaultLevels(config); this.truncateLargePayloads = config.truncateLargePayloads(); + this.compressPayload = config.compressPayload(); this.maximumTelemetryData = config.maximumTelemetryData(); this.telemetryEventTracker = config.telemetryEventTracker(); } @@ -469,6 +472,18 @@ public ConfigBuilder truncateLargePayloads(boolean truncate) { return this; } + /** + *

+ * If set to false, payloads will not be gzip-compressed before sending. Default: true. + *

+ * @param compress true to gzip-compress payloads. + * @return the builder instance. + */ + public ConfigBuilder compressPayload(boolean compress) { + this.compressPayload = compress; + return this; + } + /** *

* Maximum Telemetry events sent in a payload, only for the default TelemetryEventTracker, if @@ -517,7 +532,8 @@ public Config build() { httpClient = AsyncHttpClientFactory.defaultClient(); } AsyncSender.Builder senderBuilder = new AsyncSender.Builder(httpClient, this.endpoint) - .accessToken(accessToken); + .accessToken(accessToken) + .compressPayload(this.compressPayload); if (this.jsonSerializer != null) { senderBuilder.jsonSerializer(this.jsonSerializer); @@ -565,6 +581,7 @@ private static class ConfigImpl implements Config { private final DefaultLevels defaultLevels; private final JsonSerializer jsonSerializer; private final boolean truncateLargePayloads; + private final boolean compressPayload; private final int maximumTelemetryData; private final TelemetryEventTracker telemetryEventTracker; @@ -599,6 +616,7 @@ private static class ConfigImpl implements Config { this.defaultLevels = builder.defaultLevels; this.jsonSerializer = builder.jsonSerializer; this.truncateLargePayloads = builder.truncateLargePayloads; + this.compressPayload = builder.compressPayload; this.maximumTelemetryData = builder.maximumTelemetryData; this.telemetryEventTracker = builder.telemetryEventTracker; } @@ -743,6 +761,11 @@ public boolean truncateLargePayloads() { return truncateLargePayloads; } + @Override + public boolean compressPayload() { + return compressPayload; + } + @Override public int maximumTelemetryData() { return this.maximumTelemetryData; diff --git a/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/sender/AsyncSender.java b/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/sender/AsyncSender.java index 06799c94..45e96dd4 100644 --- a/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/sender/AsyncSender.java +++ b/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/sender/AsyncSender.java @@ -23,12 +23,14 @@ public class AsyncSender implements Sender { private final String url; private final JsonSerializer jsonSerializer; private final String accessToken; + private final boolean compressPayload; AsyncSender(Builder builder) { this.httpClient = builder.httpClient; this.url = builder.url.toExternalForm(); this.jsonSerializer = builder.jsonSerializer; this.accessToken = builder.accessToken; + this.compressPayload = builder.compressPayload; } /** @@ -49,10 +51,10 @@ public Publisher send(Payload payload) { headers.put("Content-Type", "application/json; charset=" + SyncSender.UTF_8); headers.put("Accept", "application/json"); - String reqBody = jsonSerializer.toJson(payload); + String json = jsonSerializer.toJson(payload); AsyncHttpRequest request = - AsyncHttpRequest.Builder.build(this.url, headers.entrySet(), reqBody); + AsyncHttpRequest.Builder.build(this.url, headers.entrySet(), json, compressPayload); return Utils.map(httpClient.send(request), new Utils.Converter() { @@ -82,6 +84,7 @@ public static class Builder { private URL url; private JsonSerializer jsonSerializer; private String accessToken; + private boolean compressPayload = true; /** * Constructor. @@ -148,6 +151,17 @@ public Builder accessToken(String accessToken) { return this; } + /** + * Whether to gzip-compress payloads before sending. Default: true. + * + * @param compress true to enable compression. + * @return the builder instance. + */ + public Builder compressPayload(boolean compress) { + this.compressPayload = compress; + return this; + } + /** * Builds the {@link AsyncSender} async sender. * diff --git a/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/sender/http/ApacheRequestPublisher.java b/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/sender/http/ApacheRequestPublisher.java index 6edb2c3c..e7470313 100644 --- a/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/sender/http/ApacheRequestPublisher.java +++ b/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/sender/http/ApacheRequestPublisher.java @@ -1,10 +1,14 @@ package com.rollbar.reactivestreams.notifier.sender.http; +import com.rollbar.notifier.sender.SyncSender; +import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.net.URI; import java.util.Map; import java.util.concurrent.Future; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; +import java.util.zip.GZIPOutputStream; import org.apache.hc.client5.http.async.HttpAsyncClient; import org.apache.hc.client5.http.async.methods.SimpleHttpRequest; import org.apache.hc.client5.http.async.methods.SimpleHttpResponse; @@ -102,7 +106,12 @@ private SimpleRequestProducer buildRequest() { req.setHeader(header.getKey(), header.getValue()); } - req.setBody(request.getBody(), ContentType.APPLICATION_JSON); + if (request.isCompressionRequested()) { + req.addHeader("Content-Encoding", "gzip"); + req.setBody(compress(request.getBody()), ContentType.APPLICATION_JSON); + } else { + req.setBody(request.getBody(), ContentType.APPLICATION_JSON); + } return SimpleRequestProducer.create(req); } @@ -116,4 +125,16 @@ public void cancel() { } } } + + private static byte[] compress(String json) { + try { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try (GZIPOutputStream gzip = new GZIPOutputStream(baos)) { + gzip.write(json.getBytes(SyncSender.UTF_8)); + } + return baos.toByteArray(); + } catch (IOException e) { + throw new RuntimeException("Failed to gzip-compress payload", e); + } + } } diff --git a/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/sender/http/AsyncHttpRequest.java b/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/sender/http/AsyncHttpRequest.java index a9ab308f..6827e526 100644 --- a/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/sender/http/AsyncHttpRequest.java +++ b/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/sender/http/AsyncHttpRequest.java @@ -13,10 +13,19 @@ public interface AsyncHttpRequest { String getBody(); + default boolean isCompressionRequested() { + return false; + } + class Builder { public static AsyncHttpRequest build(String url, Set> headers, String reqBody) { - return new AsyncHttpRequestImpl(url, headers, reqBody); + return new AsyncHttpRequestImpl(url, headers, reqBody, false); + } + + public static AsyncHttpRequest build(String url, Set> headers, + String reqBody, boolean compressionRequested) { + return new AsyncHttpRequestImpl(url, headers, reqBody, compressionRequested); } } } diff --git a/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/sender/http/AsyncHttpRequestImpl.java b/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/sender/http/AsyncHttpRequestImpl.java index 246eb752..5454b773 100644 --- a/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/sender/http/AsyncHttpRequestImpl.java +++ b/rollbar-reactive-streams/src/main/java/com/rollbar/reactivestreams/notifier/sender/http/AsyncHttpRequestImpl.java @@ -9,19 +9,14 @@ class AsyncHttpRequestImpl implements AsyncHttpRequest { private final String url; private final Iterable> headers; private final String body; + private final boolean compressionRequested; - /** - * Constructor. - * - * @param url The URL to connect to. - * @param headers Request headers. - * @param body Request body. - */ public AsyncHttpRequestImpl(String url, Iterable> headers, - String body) { + String body, boolean compressionRequested) { this.url = url; this.headers = headers; this.body = body; + this.compressionRequested = compressionRequested; } @Override @@ -38,4 +33,9 @@ public Iterable> getHeaders() { public String getBody() { return body; } + + @Override + public boolean isCompressionRequested() { + return compressionRequested; + } } diff --git a/rollbar-reactive-streams/src/test/java/com/rollbar/reactivestreams/notifier/sender/AsyncSenderTest.java b/rollbar-reactive-streams/src/test/java/com/rollbar/reactivestreams/notifier/sender/AsyncSenderTest.java index e1e24f52..66cd99b0 100644 --- a/rollbar-reactive-streams/src/test/java/com/rollbar/reactivestreams/notifier/sender/AsyncSenderTest.java +++ b/rollbar-reactive-streams/src/test/java/com/rollbar/reactivestreams/notifier/sender/AsyncSenderTest.java @@ -52,6 +52,7 @@ public void setUp() { sender = new AsyncSender.Builder(httpClient) .accessToken(ACCESS_TOKEN) + .compressPayload(false) .build(); } diff --git a/rollbar-reactive-streams/src/test/java/com/rollbar/reactivestreams/notifier/sender/http/ApacheAsyncHttpTckTest.java b/rollbar-reactive-streams/src/test/java/com/rollbar/reactivestreams/notifier/sender/http/ApacheAsyncHttpTckTest.java index 50b0e05a..9c416d9f 100644 --- a/rollbar-reactive-streams/src/test/java/com/rollbar/reactivestreams/notifier/sender/http/ApacheAsyncHttpTckTest.java +++ b/rollbar-reactive-streams/src/test/java/com/rollbar/reactivestreams/notifier/sender/http/ApacheAsyncHttpTckTest.java @@ -74,7 +74,7 @@ public Publisher createPublisher(long elements) { }); return new ApacheRequestPublisher(client, new AsyncHttpRequestImpl(url, - new LinkedHashMap().entrySet(), "")); + new LinkedHashMap().entrySet(), "", false)); } @Override @@ -85,7 +85,7 @@ public Publisher createFailedPublisher() { }); return new ApacheRequestPublisher(client, new AsyncHttpRequestImpl(url, - new LinkedHashMap().entrySet(), "")); + new LinkedHashMap().entrySet(), "", false)); } @Override