|
8 | 8 | using System.Collections.Generic; |
9 | 9 | using System.Linq; |
10 | 10 | using System.Reflection; |
11 | | -using System.Text; |
12 | 11 | using System.Threading.Tasks; |
13 | 12 | using Xunit; |
14 | 13 | using Xunit.Abstractions; |
@@ -577,27 +576,14 @@ await tester.Destination.CogniteClient.TimeSeries.DeleteAsync(new TimeSeriesDele |
577 | 576 | } |
578 | 577 | } |
579 | 578 |
|
580 | | - private async Task<(string extId, long id)[]> CreateTestTimeSeries(CDFTester tester) |
| 579 | + private async Task<(string extId, long id)[]> CreateTestTimeSeries(CDFTester tester, int count = 3) |
581 | 580 | { |
582 | | - var timeseries = new[] |
| 581 | + var timeseries = Enumerable.Range(1, count).Select(i => new TimeSeriesCreate |
583 | 582 | { |
584 | | - new TimeSeriesCreate |
585 | | - { |
586 | | - Name = "utils-test-ts-1", |
587 | | - ExternalId = $"{tester.Prefix} utils-test-ts-1" |
588 | | - }, |
589 | | - new TimeSeriesCreate |
590 | | - { |
591 | | - Name = "utils-test-ts-2", |
592 | | - ExternalId = $"{tester.Prefix} utils-test-ts-2", |
593 | | - IsString = true |
594 | | - }, |
595 | | - new TimeSeriesCreate |
596 | | - { |
597 | | - Name = "utils-test-ts-3", |
598 | | - ExternalId = $"{tester.Prefix} utils-test-ts-3" |
599 | | - } |
600 | | - }; |
| 583 | + Name = $"utils-test-ts-{i}", |
| 584 | + ExternalId = $"{tester.Prefix} utils-test-ts-{i}", |
| 585 | + IsString = i % 2 == 0 |
| 586 | + }).ToArray(); |
601 | 587 |
|
602 | 588 | var result = await tester.Destination.EnsureTimeSeriesExistsAsync(timeseries, RetryMode.None, SanitationMode.None, tester.Source.Token); |
603 | 589 | return result.Results.Select(ts => (ts.ExternalId, ts.Id)).ToArray(); |
@@ -985,6 +971,89 @@ await tester.Destination.CogniteClient.TimeSeries.DeleteAsync(new TimeSeriesDele |
985 | 971 | } |
986 | 972 | } |
987 | 973 |
|
| 974 | + [Theory] |
| 975 | + [InlineData(CogniteHost.GreenField)] |
| 976 | + [InlineData(CogniteHost.BlueField)] |
| 977 | + public async Task TestGetExtractedRanges(CogniteHost host) |
| 978 | + { |
| 979 | + using var tester = new CDFTester(host, _output); |
| 980 | + |
| 981 | + var tss = await CreateTestTimeSeries(tester, 5); |
| 982 | + var identities = tss.Select(x => Identity.Create(x.extId)).ToArray(); |
| 983 | + var now = DateTime.UtcNow; |
| 984 | + |
| 985 | + var dps = new Dictionary<Identity, IEnumerable<Datapoint>>() |
| 986 | + { |
| 987 | + { identities[0], new[] |
| 988 | + { |
| 989 | + new Datapoint(now.AddSeconds(-20), Double.NaN, StatusCode.Bad), |
| 990 | + new Datapoint(now.AddSeconds(-10), 1.0), |
| 991 | + new Datapoint(now, Double.NaN, StatusCode.Bad), |
| 992 | + } |
| 993 | + }, |
| 994 | + { identities[1], new[] |
| 995 | + { |
| 996 | + new Datapoint(now.AddSeconds(-20), null, StatusCode.Bad), |
| 997 | + new Datapoint(now.AddSeconds(-10), "value"), |
| 998 | + new Datapoint(now, null, StatusCode.Bad), |
| 999 | + } |
| 1000 | + }, |
| 1001 | + { identities[2], new[] |
| 1002 | + { |
| 1003 | + new Datapoint(now.AddSeconds(-20), Double.NegativeInfinity, StatusCode.Bad), |
| 1004 | + new Datapoint(now.AddSeconds(-10), 1.0), |
| 1005 | + new Datapoint(now, Double.NegativeInfinity, StatusCode.Bad), |
| 1006 | + } |
| 1007 | + }, |
| 1008 | + { identities[3], new[] |
| 1009 | + { |
| 1010 | + new Datapoint(now.AddSeconds(-20), null, StatusCode.Bad), |
| 1011 | + new Datapoint(now.AddSeconds(-10), "value"), |
| 1012 | + new Datapoint(now, null, StatusCode.Bad), |
| 1013 | + } |
| 1014 | + }, |
| 1015 | + { identities[4], new[] |
| 1016 | + { |
| 1017 | + new Datapoint(now.AddSeconds(-20), Double.PositiveInfinity, StatusCode.Bad), |
| 1018 | + new Datapoint(now.AddSeconds(-10), 1.0), |
| 1019 | + new Datapoint(now, Double.PositiveInfinity, StatusCode.Bad), |
| 1020 | + } |
| 1021 | + }, |
| 1022 | + }; |
| 1023 | + |
| 1024 | + try |
| 1025 | + { |
| 1026 | + await tester.Destination.InsertDataPointsAsync(dps, SanitationMode.None, RetryMode.None, tester.Source.Token); |
| 1027 | + |
| 1028 | + var result = await tester.Destination.GetExtractedRanges(identities, tester.Source.Token, ignoreBadDataPoints: false); |
| 1029 | + |
| 1030 | + Assert.Equal(5, result.Count); |
| 1031 | + var hashedIdentities = identities.ToHashSet(); |
| 1032 | + foreach (var item in result) |
| 1033 | + { |
| 1034 | + Assert.Contains(item.Key, hashedIdentities); |
| 1035 | + Assert.Equal(now.ToISOString(), item.Value.Last.ToISOString()); |
| 1036 | + Assert.Equal(now.AddSeconds(-20).ToISOString(), item.Value.First.ToISOString()); |
| 1037 | + } |
988 | 1038 |
|
| 1039 | + result = await tester.Destination.GetExtractedRanges(identities, tester.Source.Token, ignoreBadDataPoints: true); |
| 1040 | + |
| 1041 | + Assert.Equal(5, result.Count); |
| 1042 | + foreach (var item in result) |
| 1043 | + { |
| 1044 | + Assert.Contains(item.Key, hashedIdentities); |
| 1045 | + Assert.Equal(now.AddSeconds(-10).ToISOString(), item.Value.Last.ToISOString()); |
| 1046 | + Assert.Equal(now.AddSeconds(-10).ToISOString(), item.Value.First.ToISOString()); |
| 1047 | + } |
| 1048 | + } |
| 1049 | + finally |
| 1050 | + { |
| 1051 | + await tester.Destination.CogniteClient.TimeSeries.DeleteAsync(new TimeSeriesDelete |
| 1052 | + { |
| 1053 | + IgnoreUnknownIds = true, |
| 1054 | + Items = identities |
| 1055 | + }); |
| 1056 | + } |
| 1057 | + } |
989 | 1058 | } |
990 | 1059 | } |
0 commit comments