Skip to content

Commit 596f2ba

Browse files
PartitionKey test cases
1 parent a2a5a43 commit 596f2ba

4 files changed

Lines changed: 23 additions & 10 deletions

File tree

Microsoft.Azure.Cosmos/src/Microsoft.Azure.Cosmos.csproj

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -183,10 +183,6 @@
183183
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
184184
</ItemGroup>
185185

186-
<ItemGroup>
187-
<Folder Include="Resource\FullFidelity\Converters\" />
188-
</ItemGroup>
189-
190186
<PropertyGroup Condition=" '$(ProjectRef)' != 'True' ">
191187
<SignAssembly>true</SignAssembly>
192188
<DelaySign>true</DelaySign>

Microsoft.Azure.Cosmos/src/Resource/FullFidelity/ChangeFeedMetadata.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
namespace Microsoft.Azure.Cosmos
66
{
77
using System;
8+
using System.Collections.Generic;
89
using System.Text.Json;
10+
using System.Text.Json.Serialization;
911
using Microsoft.Azure.Cosmos.Resource.FullFidelity;
1012
using Newtonsoft.Json;
1113
using Newtonsoft.Json.Converters;
@@ -25,12 +27,12 @@ class ChangeFeedMetadata
2527
/// <summary>
2628
/// The change's conflict resolution timestamp.
2729
/// </summary>
28-
public DateTime ConflictResolutionTimestamp => UnixEpoch.AddSeconds(this.ConflictResolutionTimestampInSecones.Value);
30+
public DateTime ConflictResolutionTimestamp => UnixEpoch.AddSeconds(this.ConflictResolutionTimestampInSeconds.Value);
2931

3032
[System.Text.Json.Serialization.JsonInclude]
3133
[System.Text.Json.Serialization.JsonPropertyName(ChangeFeedMetadataFields.ConflictResolutionTimestamp)]
3234
[JsonProperty(PropertyName = ChangeFeedMetadataFields.ConflictResolutionTimestamp, NullValueHandling = NullValueHandling.Ignore)]
33-
internal double? ConflictResolutionTimestampInSecones { get; set; }
35+
internal double? ConflictResolutionTimestampInSeconds { get; set; }
3436

3537
/// <summary>
3638
/// The current change's logical sequence number.
@@ -44,7 +46,7 @@ class ChangeFeedMetadata
4446
/// The change's feed operation type <see cref="ChangeFeedOperationType"/>.
4547
/// </summary>
4648
[JsonProperty(PropertyName = ChangeFeedMetadataFields.OperationType, NullValueHandling = NullValueHandling.Ignore)]
47-
[JsonConverter(typeof(StringEnumConverter))]
49+
[Newtonsoft.Json.JsonConverter(typeof(StringEnumConverter))]
4850
[System.Text.Json.Serialization.JsonInclude]
4951
[System.Text.Json.Serialization.JsonPropertyName(ChangeFeedMetadataFields.OperationType)]
5052
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.JsonStringEnumConverter))]
@@ -65,5 +67,10 @@ class ChangeFeedMetadata
6567
[System.Text.Json.Serialization.JsonInclude]
6668
[System.Text.Json.Serialization.JsonPropertyName(ChangeFeedMetadataFields.TimeToLiveExpired)]
6769
public bool IsTimeToLiveExpired { get; internal set; }
70+
71+
[System.Text.Json.Serialization.JsonInclude]
72+
[JsonProperty(PropertyName = ChangeFeedMetadataFields.PartitionKey, NullValueHandling = NullValueHandling.Ignore)]
73+
[JsonPropertyName(ChangeFeedMetadataFields.PartitionKey)]
74+
public Dictionary<string, object> PartitionKey { get; internal set; }
6875
}
6976
}

Microsoft.Azure.Cosmos/src/Resource/FullFidelity/ChangeFeedMetadataFields.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@ internal class ChangeFeedMetadataFields
1111
public const string OperationType = "operationType";
1212
public const string PreviousImageLSN = "previousImageLSN";
1313
public const string TimeToLiveExpired = "timeToLiveExpired";
14+
public const string PartitionKey = "partitionKey";
1415
}
1516
}

Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/CFP/AllVersionsAndDeletes/BuilderWithCustomSerializerTests.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,12 @@ public void ValidateNSJAndSTJSerializationOfChangeFeedItemDeleteTimeToLiveExpire
3939
""crts"": 1722511591,
4040
""operationType"": ""delete"",
4141
""timeToLiveExpired"": true,
42-
""previousImageLSN"": 16
42+
""previousImageLSN"": 16,
43+
""id"": ""1"",
44+
""partitionKey"": {
45+
""pk1"": ""1"",
46+
""pk2"": ""2""
47+
}
4348
},
4449
""previous"": {
4550
""id"": ""1"",
@@ -92,6 +97,10 @@ static void ValidateDeserialization(List<ChangeFeedItem<ToDoActivity>> activitie
9297
Assert.IsTrue(deletedChange.Metadata.IsTimeToLiveExpired);
9398
Assert.IsNotNull(deletedChange.Previous);
9499
Assert.AreEqual(expected: "Testing TTL on CFP.", actual: deletedChange.Previous.description);
100+
Assert.AreEqual(expected: "pk1", actual: deletedChange.Metadata.PartitionKey.First().Key);
101+
Assert.AreEqual(expected: "1", actual: deletedChange.Metadata.PartitionKey.First().Value.ToString());
102+
Assert.AreEqual(expected: "pk2", actual: deletedChange.Metadata.PartitionKey.Last().Key);
103+
Assert.AreEqual(expected: "2", actual: deletedChange.Metadata.PartitionKey.Last().Value.ToString());
95104
Assert.AreEqual(expected: "1", actual: deletedChange.Previous.id);
96105
Assert.AreEqual(expected: 5, actual: deletedChange.Previous.ttl);
97106
}
@@ -313,7 +322,7 @@ public void ValidateChangeFeedMetadataSerializationReplaceAnDeleteWriteTest(bool
313322
Lsn = 374,
314323
OperationType = ChangeFeedOperationType.Create,
315324
IsTimeToLiveExpired = true,
316-
ConflictResolutionTimestampInSecones = 1722455970
325+
ConflictResolutionTimestampInSeconds = 1722455970
317326
};
318327

319328
string json = System.Text.Json.JsonSerializer.Serialize<ChangeFeedMetadata>(
@@ -339,7 +348,7 @@ public void ValidateChangeFeedMetadataSerializationCreateWriteTest(bool property
339348
{
340349
Lsn = 374,
341350
OperationType = ChangeFeedOperationType.Create,
342-
ConflictResolutionTimestampInSecones = 1722455970
351+
ConflictResolutionTimestampInSeconds = 1722455970
343352
};
344353

345354
string json = System.Text.Json.JsonSerializer.Serialize<ChangeFeedMetadata>(

0 commit comments

Comments
 (0)