Skip to content

Commit d969dfe

Browse files
Add aggregation usage to nodes usage (#4737) (#4758)
Relates: #4718, elastic/elasticsearch#55732 Co-authored-by: Russ Cam <[email protected]>
1 parent fd76897 commit d969dfe

File tree

2 files changed

+34
-3
lines changed

2 files changed

+34
-3
lines changed

src/Nest/Cluster/NodesUsage/NodeUsageInformation.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,14 @@ namespace Nest
1111
{
1212
public class NodeUsageInformation
1313
{
14+
/// <summary>
15+
/// Aggregation usage.
16+
/// <para />
17+
/// Available in Elasticsearch 7.8.0+
18+
/// </summary>
19+
[DataMember(Name ="aggregations")]
20+
public IReadOnlyDictionary<string, IReadOnlyDictionary<string, long>> Aggregations { get; internal set; }
21+
1422
[DataMember(Name ="rest_actions")]
1523
public IReadOnlyDictionary<string, int> RestActions { get; internal set; }
1624

tests/Tests/Cluster/NodesUsage/NodesUsageApiTests.cs

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
using Elasticsearch.Net;
88
using FluentAssertions;
99
using Nest;
10+
using Tests.Core.Client;
1011
using Tests.Core.Extensions;
1112
using Tests.Core.ManagedElasticsearch.Clusters;
13+
using Tests.Domain;
1214
using Tests.Framework.EndpointTests;
1315
using Tests.Framework.EndpointTests.TestState;
1416

@@ -24,6 +26,21 @@ public NodesUsageApiTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(c
2426
protected override HttpMethod HttpMethod => HttpMethod.GET;
2527
protected override string UrlPath => "/_nodes/usage";
2628

29+
protected override void IntegrationSetup(IElasticClient client, CallUniqueValues values)
30+
{
31+
var searchResponse = client.Search<Project>(s => s
32+
.Size(0)
33+
.Aggregations(a => a
34+
.Average("avg_commits", avg => avg
35+
.Field(f => f.NumberOfCommits)
36+
)
37+
)
38+
);
39+
40+
if (!searchResponse.IsValid)
41+
throw new Exception($"Exception when setting up {nameof(NodesUsageApiTests)}: {searchResponse.DebugInformation}");
42+
}
43+
2744
protected override LazyResponses ClientUsage() => Calls(
2845
(client, f) => client.Nodes.Usage(),
2946
(client, f) => client.Nodes.UsageAsync(),
@@ -43,9 +60,15 @@ protected override void ExpectResponse(NodesUsageResponse response)
4360
response.Nodes.Should().NotBeNull();
4461
response.Nodes.Should().HaveCount(1);
4562

46-
response.Nodes.First().Value.Timestamp.Should().BeBefore(DateTimeOffset.UtcNow);
47-
response.Nodes.First().Value.Since.Should().BeBefore(DateTimeOffset.UtcNow);
48-
response.Nodes.First().Value.RestActions.Should().NotBeNull();
63+
var firstNode = response.Nodes.First();
64+
firstNode.Value.Timestamp.Should().BeBefore(DateTimeOffset.UtcNow);
65+
firstNode.Value.Since.Should().BeBefore(DateTimeOffset.UtcNow);
66+
firstNode.Value.RestActions.Should().NotBeNull();
67+
68+
if (TestClient.Configuration.InRange(">=7.8.0"))
69+
{
70+
firstNode.Value.Aggregations.Should().NotBeNull().And.ContainKey("avg");
71+
}
4972
}
5073
}
5174
}

0 commit comments

Comments
 (0)