Skip to content

Commit 2c8ff4b

Browse files
authored
Fix CatHelp NodeHotThreads integ tests due to mimetype mismatch (#3883)
* content type can now be dictated on the request * improved logging for CoordinatedIntegrationTestBase.cs * SSL warnings on certgen were making xpack tests not run on my windows machine
1 parent 35bf534 commit 2c8ff4b

File tree

14 files changed

+95
-38
lines changed

14 files changed

+95
-38
lines changed

build/scripts/Tooling.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ module Tooling =
1616
let startArgs = StartArguments(bin, args |> List.toArray)
1717
if (Option.isSome workinDir) then
1818
startArgs.WorkingDirectory <- Option.defaultValue "" workinDir
19-
startArgs.WaitForStreamReadersTimeout <- Nullable<TimeSpan>()
19+
if Commandline.isMono then startArgs.WaitForStreamReadersTimeout <- Nullable<TimeSpan>()
2020
let result = Proc.StartRedirected(startArgs, timeout, LineHighlightWriter())
2121
if not result.Completed then failwithf "process failed to complete within %O: %s" timeout bin
2222
if not result.ExitCode.HasValue then failwithf "process yielded no exit code: %s" bin

build/scripts/scripts.fsproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
</PropertyGroup>
7070
<ItemGroup>
7171
<PackageReference Include="Bullseye" Version="2.4.0-alpha.1" />
72-
<PackageReference Include="Elastic.Managed" Version="0.1.0-ci20190621T072151" />
72+
<PackageReference Include="Elastic.Managed" Version="0.1.0-ci20190626T161237" />
7373
<PackageReference Include="Fake.Core.Environment" Version="5.15.0" />
7474
<PackageReference Include="Fake.Core.SemVer" Version="5.15.0" />
7575
<PackageReference Include="Fake.IO.FileSystem" Version="5.15.0" />

src/Elasticsearch.Net/Connection/HttpWebRequestConnection.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ static HttpWebRequestConnection()
2020
{
2121
//Not available under mono
2222
if (!IsMono) HttpWebRequest.DefaultMaximumErrorResponseLength = -1;
23+
24+
2325
}
2426

2527
internal static bool IsMono { get; } = Type.GetType("Mono.Runtime") != null;
@@ -244,10 +246,13 @@ protected virtual void SetBasicAuthenticationIfNeeded(HttpWebRequest request, Re
244246
// 2 - Specified at the global IConnectionSettings level
245247
// 3 - Specified with the URI (lowest precedence)
246248

247-
var userInfo = Uri.UnescapeDataString(requestData.Uri.UserInfo);
249+
string userInfo = null;
250+
if (!string.IsNullOrEmpty(requestData.Uri.UserInfo))
251+
userInfo = Uri.UnescapeDataString(requestData.Uri.UserInfo);
252+
else if (requestData.BasicAuthorizationCredentials != null)
253+
userInfo =
254+
$"{requestData.BasicAuthorizationCredentials.Username}:{requestData.BasicAuthorizationCredentials.Password.CreateString()}";
248255

249-
if (requestData.BasicAuthorizationCredentials != null)
250-
userInfo = requestData.BasicAuthorizationCredentials.ToString();
251256

252257
if (!string.IsNullOrWhiteSpace(userInfo))
253258
request.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(userInfo));

src/Elasticsearch.Net/Transport/Pipeline/RequestData.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ namespace Elasticsearch.Net
1212
public class RequestData
1313
{
1414
public const string MimeType = "application/json";
15+
public const string MimeTypeTextPlain = "text/plain";
1516
public const string OpaqueIdHeader = "X-Opaque-Id";
1617
public const string RunAsSecurityHeader = "es-security-runas-user";
1718

src/Nest/Cluster/NodesHotThreads/NodesHotThreadsRequest.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Elasticsearch.Net.Specification.NodesApi;
1+
using Elasticsearch.Net;
2+
using Elasticsearch.Net.Specification.NodesApi;
23

34
namespace Nest
45
{
@@ -7,12 +8,16 @@ public partial interface INodesHotThreadsRequest { }
78

89
public partial class NodesHotThreadsRequest
910
{
11+
protected override string ContentType => RequestData.MimeTypeTextPlain;
12+
1013
protected sealed override void RequestDefaults(NodesHotThreadsRequestParameters parameters) =>
1114
parameters.CustomResponseBuilder = NodeHotThreadsResponseBuilder.Instance;
1215
}
1316

1417
public partial class NodesHotThreadsDescriptor
1518
{
19+
protected override string ContentType => RequestData.MimeTypeTextPlain;
20+
1621
protected sealed override void RequestDefaults(NodesHotThreadsRequestParameters parameters) =>
1722
parameters.CustomResponseBuilder = NodeHotThreadsResponseBuilder.Instance;
1823
}

src/Nest/CommonAbstractions/Request/RequestBase.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ namespace Nest
99
[InterfaceDataContract]
1010
public interface IRequest
1111
{
12+
[IgnoreDataMember]
13+
string ContentType { get; }
14+
1215
[IgnoreDataMember]
1316
HttpMethod HttpMethod { get; }
1417

@@ -58,6 +61,10 @@ protected RequestBase(Func<RouteValues, RouteValues> pathSelector)
5861
[IgnoreDataMember]
5962
HttpMethod IRequest.HttpMethod => HttpMethod;
6063

64+
[IgnoreDataMember]
65+
string IRequest.ContentType => ContentType;
66+
protected virtual string ContentType { get; } = null;
67+
6168
private readonly TParameters _parameters;
6269

6370
[IgnoreDataMember]

src/Nest/ElasticClient.cs

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,11 @@ protected CatResponse<TCatRecord> DoCat<TRequest, TParams, TCatRecord>(TRequest
3838
where TRequest : class, IRequest<TParams>
3939
{
4040
if (typeof(TCatRecord) == typeof(CatHelpRecord))
41+
{
4142
request.RequestParameters.CustomResponseBuilder = CatHelpResponseBuilder.Instance;
42-
else
43-
request.RequestParameters.CustomResponseBuilder = CatResponseBuilder<TCatRecord>.Instance;
43+
return DoRequest<TRequest, CatResponse<TCatRecord>>(request, request.RequestParameters, r => ElasticClient.ForceTextPlain(r));
44+
}
45+
request.RequestParameters.CustomResponseBuilder = CatResponseBuilder<TCatRecord>.Instance;
4446
return DoRequest<TRequest, CatResponse<TCatRecord>>(request, request.RequestParameters, r => ElasticClient.ForceJson(r));
4547
}
4648

@@ -50,9 +52,11 @@ protected Task<CatResponse<TCatRecord>> DoCatAsync<TRequest, TParams, TCatRecord
5052
where TRequest : class, IRequest<TParams>
5153
{
5254
if (typeof(TCatRecord) == typeof(CatHelpRecord))
55+
{
5356
request.RequestParameters.CustomResponseBuilder = CatHelpResponseBuilder.Instance;
54-
else
55-
request.RequestParameters.CustomResponseBuilder = CatResponseBuilder<TCatRecord>.Instance;
57+
return DoRequestAsync<TRequest, CatResponse<TCatRecord>>(request, request.RequestParameters, ct, r => ElasticClient.ForceTextPlain(r));
58+
}
59+
request.RequestParameters.CustomResponseBuilder = CatResponseBuilder<TCatRecord>.Instance;
5660
return DoRequestAsync<TRequest, CatResponse<TCatRecord>>(request, request.RequestParameters, ct, r => ElasticClient.ForceJson(r));
5761
}
5862

@@ -103,6 +107,7 @@ internal TResponse DoRequest<TRequest, TResponse>(TRequest p, IRequestParameters
103107
where TResponse : class, IElasticsearchResponse, new()
104108
{
105109
if (forceConfiguration != null) ForceConfiguration(p, forceConfiguration);
110+
if (p.ContentType != null) ForceContentType(p, p.ContentType);
106111

107112
var url = p.GetUrl(ConnectionSettings);
108113
var b = (p.HttpMethod == HttpMethod.GET || p.HttpMethod == HttpMethod.HEAD) ? null : new SerializableData<TRequest>(p);
@@ -120,6 +125,7 @@ internal Task<TResponse> DoRequestAsync<TRequest, TResponse>(
120125
where TResponse : class, IElasticsearchResponse, new()
121126
{
122127
if (forceConfiguration != null) ForceConfiguration(p, forceConfiguration);
128+
if (p.ContentType != null) ForceContentType(p, p.ContentType);
123129

124130
var url = p.GetUrl(ConnectionSettings);
125131
var b = (p.HttpMethod == HttpMethod.GET || p.HttpMethod == HttpMethod.HEAD) ? null : new SerializableData<TRequest>(p);
@@ -130,16 +136,29 @@ internal Task<TResponse> DoRequestAsync<TRequest, TResponse>(
130136
private static void ForceConfiguration(IRequest request, Action<IRequestConfiguration> forceConfiguration)
131137
{
132138
if (forceConfiguration == null) return;
139+
133140
var configuration = request.RequestParameters.RequestConfiguration ?? new RequestConfiguration();
134141
forceConfiguration(configuration);
135142
request.RequestParameters.RequestConfiguration = configuration;
136143
}
144+
private void ForceContentType<TRequest>(TRequest request, string contentType) where TRequest : class, IRequest
145+
{
146+
var configuration = request.RequestParameters.RequestConfiguration ?? new RequestConfiguration();
147+
configuration.Accept = contentType;
148+
configuration.ContentType = contentType;
149+
request.RequestParameters.RequestConfiguration = configuration;
150+
}
137151

138152
internal static void ForceJson(IRequestConfiguration requestConfiguration)
139153
{
140154
requestConfiguration.Accept = RequestData.MimeType;
141155
requestConfiguration.ContentType = RequestData.MimeType;
142156
}
157+
internal static void ForceTextPlain(IRequestConfiguration requestConfiguration)
158+
{
159+
requestConfiguration.Accept = RequestData.MimeTypeTextPlain;
160+
requestConfiguration.ContentType = RequestData.MimeTypeTextPlain;
161+
}
143162

144163
internal IRequestParameters ResponseBuilder(SourceRequestParameters parameters, CustomResponseBuilderBase builder)
145164
{

src/Tests/Tests.Benchmarking/Tests.Benchmarking.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
</ItemGroup>
1414
<ItemGroup>
1515
<PackageReference Include="BenchmarkDotNet" Version="0.11.5" />
16-
<PackageReference Include="Elastic.BenchmarkDotNetExporter" Version="0.1.0-ci20190621T072151" />
16+
<PackageReference Include="Elastic.BenchmarkDotNetExporter" Version="0.1.0-ci20190626T161237" />
1717
<PackageReference Include="LibGit2Sharp" Version="0.26.0-preview-0062" />
1818
</ItemGroup>
1919
</Project>

src/Tests/Tests.Core/Tests.Core.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@
1313
</ItemGroup>
1414
<ItemGroup>
1515
<ProjectReference Include="..\Tests.Domain\Tests.Domain.csproj" />
16-
<PackageReference Include="Elastic.Xunit" Version="0.1.0-ci20190621T072151" />
16+
<PackageReference Include="Elastic.Xunit" Version="0.1.0-ci20190626T161237" />
1717
<PackageReference Include="Proc" Version="0.6.1" />
1818
<PackageReference Include="xunit" Version="2.3.1" />
19-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
19+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.1.1" />
2020
<PackageReference Include="FluentAssertions" Version="5.7.0" />
2121
<PackageReference Include="DiffPlex" Version="1.4.1" />
2222
</ItemGroup>

src/Tests/Tests.Domain/Tests.Domain.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
</ItemGroup>
1313
<ItemGroup>
1414
<PackageReference Include="Bogus" Version="22.1.2" />
15-
<PackageReference Include="Elastic.Managed" Version="0.1.0-ci20190621T072151" />
15+
<PackageReference Include="Elastic.Managed" Version="0.1.0-ci20190626T161237" />
1616
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
1717
<ProjectReference Include="..\Tests.Configuration\Tests.Configuration.csproj" />
1818
</ItemGroup>

0 commit comments

Comments
 (0)