diff --git a/src/Elasticsearch.Net/Connection/MetaData/MetaDataHeader.cs b/src/Elasticsearch.Net/Connection/MetaData/MetaDataHeader.cs index 2d332817c85..367f6c70a58 100644 --- a/src/Elasticsearch.Net/Connection/MetaData/MetaDataHeader.cs +++ b/src/Elasticsearch.Net/Connection/MetaData/MetaDataHeader.cs @@ -20,12 +20,13 @@ public MetaDataHeader(VersionInfo version, string serviceIdentifier, bool isAsyn ServiceIdentifier = serviceIdentifier; RuntimeVersion = RuntimeVersionString; - // This code is expected to be called infrequently so we're not concerns with over optimising this + // This code is expected to be called infrequently so we're not concerned with over optimising this. _headerValue = new StringBuilder(64) .Append(serviceIdentifier).Append("=").Append(ClientVersion).Append(Separator) - .Append("a=").Append(isAsync ? "1" : "0").Append(Separator) .Append("net=").Append(RuntimeVersion).Append(Separator) + .Append("t=").Append(ClientVersion).Append(Separator) + .Append("a=").Append(isAsync ? "1" : "0").Append(Separator) .Append(HttpClientIdentifier).Append("=").Append(RuntimeVersion) .ToString(); } diff --git a/tests/Tests/Connection/MetaData/MetaHeaderProviderTests.cs b/tests/Tests/Connection/MetaData/MetaHeaderProviderTests.cs index b498a16155e..fd756ec48fc 100644 --- a/tests/Tests/Connection/MetaData/MetaHeaderProviderTests.cs +++ b/tests/Tests/Connection/MetaData/MetaHeaderProviderTests.cs @@ -12,9 +12,8 @@ namespace Tests.Connection.MetaData { public class MetaHeaderProviderTests { - private readonly Regex _validHeaderRegex = new Regex(@"^[a-z]{1,}=[a-z0-9\.\-]{1,}(?:,[a-z]{1,}=[a-z0-9\.\-]+)*$"); - private readonly Regex _validVersionRegex = new Regex(@"^[0-9]{1,2}\.[0-9]{1,2}(?:\.[0-9]{1,3})?p?$"); - private readonly Regex _validHttpClientPart = new Regex(@"^[a-z]{2,3}=[0-9]{1,2}\.[0-9]{1,2}(?:\.[0-9]{1,3})?p?$"); + private readonly Regex _validHeaderRegex = new(@"^[a-z]{1,}=[a-z0-9\.\-]{1,}(?:,[a-z]{1,}=[a-z0-9\.\-]+)*$"); + private readonly Regex _validVersionRegex = new(@"^[0-9]{1,2}\.[0-9]{1,2}(?:\.[0-9]{1,3})?p?$"); [U] public void HeaderName_ReturnsExpectedValue() { @@ -54,19 +53,25 @@ [U] public void HeaderName_ReturnsExpectedValue_ForSyncRequest_WhenNotDisabled() _validHeaderRegex.Match(result).Success.Should().BeTrue(); var parts = result.Split(','); - parts.Length.Should().Be(4); + parts.Length.Should().Be(5); parts[0].Should().StartWith("es="); var clientVersion = parts[0].Substring(3); _validVersionRegex.Match(clientVersion).Success.Should().BeTrue(); - parts[1].Should().Be("a=0"); - - parts[2].Should().StartWith("net="); - var runtimeVersion = parts[2].Substring(4); + parts[1].Should().StartWith("net="); + var runtimeVersion = parts[1].Substring(4); _validVersionRegex.Match(runtimeVersion).Success.Should().BeTrue(); - _validHttpClientPart.Match(parts[3]).Success.Should().BeTrue(); + parts[2].Should().StartWith("t="); + clientVersion = parts[2].Substring(2); + _validVersionRegex.Match(clientVersion).Success.Should().BeTrue(); + + parts[3].Should().Be("a=0"); + + parts[4].Should().StartWith("so="); + var socketVersion = parts[4].Substring(3); + _validVersionRegex.Match(socketVersion).Success.Should().BeTrue(); } [U] public void HeaderName_ReturnsExpectedValue_ForAsyncRequest_WhenNotDisabled() @@ -87,19 +92,25 @@ [U] public void HeaderName_ReturnsExpectedValue_ForAsyncRequest_WhenNotDisabled( _validHeaderRegex.Match(result).Success.Should().BeTrue(); var parts = result.Split(','); - parts.Length.Should().Be(4); + parts.Length.Should().Be(5); parts[0].Should().StartWith("es="); var clientVersion = parts[0].Substring(3); _validVersionRegex.Match(clientVersion).Success.Should().BeTrue(); - parts[1].Should().Be("a=1"); - - parts[2].Should().StartWith("net="); + parts[1].Should().StartWith("net="); var runtimeVersion = parts[2].Substring(4); _validVersionRegex.Match(runtimeVersion).Success.Should().BeTrue(); - _validHttpClientPart.Match(parts[3]).Success.Should().BeTrue(); + parts[2].Should().StartWith("t="); + clientVersion = parts[2].Substring(2); + _validVersionRegex.Match(clientVersion).Success.Should().BeTrue(); + + parts[3].Should().Be("a=1"); + + parts[4].Should().StartWith("so="); + var socketVersion = parts[4].Substring(3); + _validVersionRegex.Match(socketVersion).Success.Should().BeTrue(); } } }