diff --git a/src/Elasticsearch.Net/Connection/Content/RequestDataContent.cs b/src/Elasticsearch.Net/Connection/Content/RequestDataContent.cs index d624e90f4cc..9ff4376a060 100644 --- a/src/Elasticsearch.Net/Connection/Content/RequestDataContent.cs +++ b/src/Elasticsearch.Net/Connection/Content/RequestDataContent.cs @@ -37,6 +37,8 @@ public RequestDataContent(RequestData requestData) Task OnStreamAvailable(PostData data, Stream stream, HttpContent content, TransportContext context) { + if (_requestData.HttpCompression) + stream = new GZipStream(stream, CompressionMode.Compress, false); using(stream) data.Write(stream, requestData.ConnectionSettings); return Task.CompletedTask; @@ -52,6 +54,8 @@ public RequestDataContent(RequestData requestData, CancellationToken token) async Task OnStreamAvailable(PostData data, Stream stream, HttpContent content, TransportContext context) { + if (_requestData.HttpCompression) + stream = new GZipStream(stream, CompressionMode.Compress, false); using (stream) await data.WriteAsync(stream, requestData.ConnectionSettings, token).ConfigureAwait(false); } @@ -75,8 +79,6 @@ protected override async Task SerializeToStreamAsync(Stream stream, TransportCon var serializeToStreamTask = new TaskCompletionSource(); - if (_requestData.HttpCompression) - stream = new GZipStream(stream, CompressionMode.Compress, false); var wrappedStream = new CompleteTaskOnCloseStream(stream, serializeToStreamTask); await _onStreamAvailable(data, wrappedStream, this, context).ConfigureAwait(false); await serializeToStreamTask.Task.ConfigureAwait(false); diff --git a/src/Elasticsearch.Net/Connection/HttpConnection.cs b/src/Elasticsearch.Net/Connection/HttpConnection.cs index 734e7e6d3b0..92559112024 100644 --- a/src/Elasticsearch.Net/Connection/HttpConnection.cs +++ b/src/Elasticsearch.Net/Connection/HttpConnection.cs @@ -241,13 +241,7 @@ protected virtual HttpRequestMessage CreateRequestMessage(RequestData requestDat if (!requestData.RunAs.IsNullOrEmpty()) requestMessage.Headers.Add(RequestData.RunAsSecurityHeader, requestData.RunAs); - - if (requestData.HttpCompression) - { - requestMessage.Headers.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip")); - requestMessage.Headers.AcceptEncoding.Add(new StringWithQualityHeaderValue("deflate")); - } - + return requestMessage; } diff --git a/src/Tests/Tests.Configuration/EnvironmentConfiguration.cs b/src/Tests/Tests.Configuration/EnvironmentConfiguration.cs index 6a15460e49c..e8381666d83 100644 --- a/src/Tests/Tests.Configuration/EnvironmentConfiguration.cs +++ b/src/Tests/Tests.Configuration/EnvironmentConfiguration.cs @@ -28,6 +28,7 @@ public EnvironmentConfiguration(YamlConfiguration yamlConfiguration) { SourceSerializer = RandomBoolConfig("SOURCESERIALIZER", randomizer), TypedKeys = RandomBoolConfig("TYPEDKEYS", randomizer), + HttpCompression = RandomBoolConfig("HTTPCOMPRESSION", randomizer), }; } diff --git a/src/Tests/Tests.Configuration/TestConfigurationBase.cs b/src/Tests/Tests.Configuration/TestConfigurationBase.cs index 020acbf1146..ad0e7add238 100644 --- a/src/Tests/Tests.Configuration/TestConfigurationBase.cs +++ b/src/Tests/Tests.Configuration/TestConfigurationBase.cs @@ -66,5 +66,8 @@ public class RandomConfiguration /// Randomly enable typed keys on searches (defaults to true) on NEST search requests public bool TypedKeys { get; set; } + + /// Randomly enable compression on the http requests + public bool HttpCompression { get; set; } } } diff --git a/src/Tests/Tests.Configuration/TestConfigurationExtensions.cs b/src/Tests/Tests.Configuration/TestConfigurationExtensions.cs index 8537315ea95..4622f558b85 100644 --- a/src/Tests/Tests.Configuration/TestConfigurationExtensions.cs +++ b/src/Tests/Tests.Configuration/TestConfigurationExtensions.cs @@ -24,6 +24,7 @@ public static void DumpConfiguration(this TestConfigurationBase config) Console.WriteLine($" - Random:"); Console.WriteLine($" \t- {nameof(config.Random.SourceSerializer)}: {config.Random.SourceSerializer}"); Console.WriteLine($" \t- {nameof(config.Random.TypedKeys)}: {config.Random.TypedKeys}"); + Console.WriteLine($" \t- {nameof(config.Random.HttpCompression)}: {config.Random.HttpCompression}"); Console.WriteLine(new string('-', 20)); } } diff --git a/src/Tests/Tests.Configuration/YamlConfiguration.cs b/src/Tests/Tests.Configuration/YamlConfiguration.cs index b7e6a92ca57..6f74fc608ae 100644 --- a/src/Tests/Tests.Configuration/YamlConfiguration.cs +++ b/src/Tests/Tests.Configuration/YamlConfiguration.cs @@ -34,6 +34,7 @@ public YamlConfiguration(string configurationFile) { SourceSerializer = RandomBool("source_serializer", randomizer), TypedKeys = RandomBool("typed_keys", randomizer), + HttpCompression = RandomBool("http_compression", randomizer), }; } diff --git a/src/Tests/Tests.Configuration/tests.default.yaml b/src/Tests/Tests.Configuration/tests.default.yaml index 4dcbf709690..99aa089a777 100644 --- a/src/Tests/Tests.Configuration/tests.default.yaml +++ b/src/Tests/Tests.Configuration/tests.default.yaml @@ -20,7 +20,8 @@ test_against_already_running_elasticsearch: true #random_source_serializer: true #random_old_connection: true -seed: 74337 +#random_http_compresssion: true +#seed: 74337 # Can be helpful to speed up tests runs as setting this to true only randomly tests a single overload of the api rather than all 4. # Can also help keep the noise down in case of test failures diff --git a/src/Tests/Tests.Core/Client/Settings/TestConnectionSettings.cs b/src/Tests/Tests.Core/Client/Settings/TestConnectionSettings.cs index 75f1a083d27..5ee645c2728 100644 --- a/src/Tests/Tests.Core/Client/Settings/TestConnectionSettings.cs +++ b/src/Tests/Tests.Core/Client/Settings/TestConnectionSettings.cs @@ -43,8 +43,7 @@ public TestConnectionSettings( private void ApplyTestSettings() => RerouteToProxyIfNeeded() .EnableDebugMode() - //TODO make this random - //.EnableHttpCompression() + .EnableHttpCompression(TestConfiguration.Instance.Random.HttpCompression) #if DEBUG .EnableDebugMode() #endif diff --git a/src/Tests/Tests.Core/Xunit/NestXunitRunOptions.cs b/src/Tests/Tests.Core/Xunit/NestXunitRunOptions.cs index a4db876f8d5..aa3a2575906 100644 --- a/src/Tests/Tests.Core/Xunit/NestXunitRunOptions.cs +++ b/src/Tests/Tests.Core/Xunit/NestXunitRunOptions.cs @@ -96,6 +96,7 @@ bool runningIntegrations AppendExplictConfig(nameof(RandomConfiguration.SourceSerializer), sb); AppendExplictConfig(nameof(RandomConfiguration.TypedKeys), sb); + AppendExplictConfig(nameof(RandomConfiguration.HttpCompression), sb); if (runningIntegrations) sb.Append("integrate ")