From ccd26b3b5b33d1947e902186ab75b5d8952f3c0a Mon Sep 17 00:00:00 2001 From: Steve Gordon Date: Mon, 27 Feb 2023 17:03:27 +0000 Subject: [PATCH] Fix code-gen for enums with aliases. (#7253) * Update integration jobs version matrix * Add GetDataStream serialization test * Enum codegen now supports aliases for converters --- .github/workflows/integration-jobs.yml | 2 +- .../Types/Enums/Enums.Aggregations.g.cs | 8 +++ .../Types/Enums/Enums.IndexManagement.g.cs | 6 ++ .../_Generated/Types/Enums/Enums.Mapping.g.cs | 6 ++ .../Types/Enums/Enums.NoNamespace.g.cs | 3 + .../Types/Enums/Enums.QueryDsl.g.cs | 2 + .../GetDataStreamSerializationTests.cs | 71 +++++++++++++++++++ 7 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 tests/Tests/IndexManagement/DataStreamManagement/GetDataStreamSerializationTests.cs diff --git a/.github/workflows/integration-jobs.yml b/.github/workflows/integration-jobs.yml index 0ff85fa17a5..98e4318d01c 100644 --- a/.github/workflows/integration-jobs.yml +++ b/.github/workflows/integration-jobs.yml @@ -27,7 +27,7 @@ jobs: '8.3.3', '8.4.3', '8.5.3', - '8.6.1', + '8.6.2', '8.7.0-SNAPSHOT', 'latest-8' ] diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Aggregations.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Aggregations.g.cs index 0b63c79d08b..75f01f60aa0 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Aggregations.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Aggregations.g.cs @@ -53,20 +53,28 @@ public override CalendarInterval Read(ref Utf8JsonReader reader, Type typeToConv switch (enumString) { case "year": + case "1Y": return CalendarInterval.Year; case "week": + case "1w": return CalendarInterval.Week; case "second": + case "1s": return CalendarInterval.Second; case "quarter": + case "1q": return CalendarInterval.Quarter; case "month": + case "1M": return CalendarInterval.Month; case "minute": + case "1m": return CalendarInterval.Minute; case "hour": + case "1h": return CalendarInterval.Hour; case "day": + case "1d": return CalendarInterval.Day; } diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.IndexManagement.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.IndexManagement.g.cs index 0412bda6ebb..cd31675ba6d 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.IndexManagement.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.IndexManagement.g.cs @@ -377,8 +377,10 @@ public override SegmentSortMode Read(ref Utf8JsonReader reader, Type typeToConve switch (enumString) { case "min": + case "MIN": return SegmentSortMode.Min; case "max": + case "MAX": return SegmentSortMode.Max; } @@ -419,8 +421,10 @@ public override SegmentSortOrder Read(ref Utf8JsonReader reader, Type typeToConv switch (enumString) { case "desc": + case "DESC": return SegmentSortOrder.Desc; case "asc": + case "ASC": return SegmentSortOrder.Asc; } @@ -537,8 +541,10 @@ public override TranslogDurability Read(ref Utf8JsonReader reader, Type typeToCo switch (enumString) { case "request": + case "REQUEST": return TranslogDurability.Request; case "async": + case "ASYNC": return TranslogDurability.Async; } diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Mapping.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Mapping.g.cs index 325d561f3a7..095ff13114b 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Mapping.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Mapping.g.cs @@ -419,8 +419,14 @@ public override GeoOrientation Read(ref Utf8JsonReader reader, Type typeToConver switch (enumString) { case "right": + case "RIGHT": + case "counterclockwise": + case "ccw": return GeoOrientation.Right; case "left": + case "LEFT": + case "clockwise": + case "cw": return GeoOrientation.Left; } diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.NoNamespace.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.NoNamespace.g.cs index 884750812a6..27e13517006 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.NoNamespace.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.NoNamespace.g.cs @@ -470,10 +470,13 @@ public override HealthStatus Read(ref Utf8JsonReader reader, Type typeToConvert, switch (enumString) { case "yellow": + case "YELLOW": return HealthStatus.Yellow; case "red": + case "RED": return HealthStatus.Red; case "green": + case "GREEN": return HealthStatus.Green; } diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.QueryDsl.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.QueryDsl.g.cs index 47ee4826558..894a0f67b3b 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.QueryDsl.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.QueryDsl.g.cs @@ -426,8 +426,10 @@ public override Operator Read(ref Utf8JsonReader reader, Type typeToConvert, Jso switch (enumString) { case "or": + case "OR": return Operator.Or; case "and": + case "AND": return Operator.And; } diff --git a/tests/Tests/IndexManagement/DataStreamManagement/GetDataStreamSerializationTests.cs b/tests/Tests/IndexManagement/DataStreamManagement/GetDataStreamSerializationTests.cs new file mode 100644 index 00000000000..ab877d2ab3d --- /dev/null +++ b/tests/Tests/IndexManagement/DataStreamManagement/GetDataStreamSerializationTests.cs @@ -0,0 +1,71 @@ +// Licensed to Elasticsearch B.V under one or more agreements. +// Elasticsearch B.V licenses this file to you under the Apache 2.0 License. +// See the LICENSE file in the project root for more information. + +using System.Linq; +using Elastic.Clients.Elasticsearch.IndexManagement; +using Tests.Serialization; + +namespace Tests.IndexManagement.DataStreamManagement; + +public class GetDataStreamSerializationTests : SerializerTestBase +{ + [U] + public void GetIndexResponse_IsDeserializedCorrectly() + { + const string json = @"{ + ""data_streams"": [ + { + ""name"": ""logs-dev"", + ""timestamp_field"": { + ""name"": ""@timestamp"" + }, + ""indices"": [ + { + ""index_name"": "".ds-logs-dev-2023.02.16-000001"", + ""index_uuid"": ""xyWXN5T1Rm6_sOCayv7GDA"" + } + ], + ""generation"": 1, + ""_meta"": { + ""description"": ""default logs template installed by x-pack"", + ""managed"": true + }, + ""status"": ""GREEN"", + ""template"": ""logs"", + ""ilm_policy"": ""logs"", + ""hidden"": false, + ""system"": false, + ""allow_custom_routing"": false, + ""replicated"": false + } + ] +}"; + + var response = DeserializeJsonString(json); + + response.DataStreams.Count.Should().Be(1); + + var dataStream = response.DataStreams.First(); + + dataStream.Name.Should().Be("logs-dev"); + dataStream.TimestampField.Name.Should().Be("@timestamp"); + + dataStream.Indices.Count.Should().Be(1); + var indices = dataStream.Indices.First(); + indices.IndexName.Should().Be(".ds-logs-dev-2023.02.16-000001"); + indices.IndexUuid.Should().Be("xyWXN5T1Rm6_sOCayv7GDA"); + + dataStream.Generation.Should().Be(1); + dataStream.Meta["description"].Should().Be("default logs template installed by x-pack"); + dataStream.Meta["managed"].Should().Be(true); + dataStream.Status.Should().Be(HealthStatus.Green); + dataStream.Template.Should().Be("logs"); + dataStream.IlmPolicy.Should().Be("logs"); + dataStream.Hidden.Should().Be(false); + dataStream.System.Should().Be(false); + dataStream.AllowCustomRouting.Should().Be(false); + dataStream.Replicated.Should().Be(false); + } +} +