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