diff --git a/src/NatsDistributedCache/NatsCache.cs b/src/NatsDistributedCache/NatsCache.cs index dc84cdf..57f1c53 100644 --- a/src/NatsDistributedCache/NatsCache.cs +++ b/src/NatsDistributedCache/NatsCache.cs @@ -25,6 +25,14 @@ public class CacheEntry public byte[]? Data { get; set; } } +/// +/// JsonSerializerContext for CacheEntry +/// +[JsonSerializable(typeof(CacheEntry))] +public partial class CacheEntryJsonContext : JsonSerializerContext +{ +} + /// /// Distributed cache implementation using NATS Key-Value Store. /// @@ -364,8 +372,3 @@ await kvStore.DeleteAsync(GetPrefixedKey(key), natsKvDeleteOpts, cancellationTok .ConfigureAwait(false); } } - -[JsonSerializable(typeof(CacheEntry))] -internal partial class CacheEntryJsonContext : JsonSerializerContext -{ -} diff --git a/test/IntegrationTests/Cache/HybridCacheSetAndRemoveTests.cs b/test/IntegrationTests/Cache/HybridCacheSetAndRemoveTests.cs new file mode 100644 index 0000000..6c1e792 --- /dev/null +++ b/test/IntegrationTests/Cache/HybridCacheSetAndRemoveTests.cs @@ -0,0 +1,89 @@ +using System.Buffers; +using System.Globalization; +using System.Text; +using Microsoft.Extensions.Caching.Hybrid; +using NATS.Client.Core; +using NATS.Client.KeyValueStore; +using NATS.Net; +using StreamJsonRpc; + +namespace CodeCargo.Nats.DistributedCache.IntegrationTests.Cache; + +public class HybridCacheGetSetRemoveTests(NatsIntegrationFixture fixture) : TestBase(fixture) +{ + [Fact] + public async Task HybridCacheGetSetRemoveTest() + { + // Arrange + var key = MethodKey(); + var value = Encoding.UTF8.GetBytes($"test-value-{Guid.NewGuid()}"); + var options = new HybridCacheEntryOptions + { + Expiration = TimeSpan.FromMinutes(10) + }; + + // Assert - Verify the value is not stored in NATS KV store + var kvStore = await NatsConnection.CreateKeyValueStoreContext().GetStoreAsync("cache"); + await Assert.ThrowsAsync(async () => await kvStore.GetEntryAsync(key)); + + // Act + await HybridCache.SetAsync(key, value, options); + + // Assert - Verify the value is stored in NATS KV store + var kvEntry = await kvStore.GetEntryAsync(key); + Assert.NotNull(kvEntry.Value); + + // Assert - Verify the value is retrievable from hybrid cache + var result = await HybridCache.GetOrCreateAsync(key, async ct => await Task.FromResult(Array.Empty())); + Assert.NotEmpty(result); + Assert.Equal(value, result); + + // Act + await HybridCache.RemoveAsync(key); + + // Assert - Verify the value is not stored in NATS KV store + await Assert.ThrowsAsync(async () => await kvStore.GetEntryAsync(key)); + + // Assert - Verify the value is not retrievable from hybrid cache + result = await HybridCache.GetOrCreateAsync(key, async ct => await Task.FromResult(Array.Empty())); + Assert.Empty(result); + } + + [Fact] + public async Task HybridCacheSerializesDateTime() + { + // Arrange + var key = MethodKey(); + const string invariant = "2025-05-15T17:18:58.7503097Z"; + var date = DateTime.Parse(invariant, CultureInfo.InvariantCulture); + + var options = new HybridCacheEntryOptions + { + Expiration = TimeSpan.FromMinutes(10) + }; + + // Act - Store the complex object in the cache + await HybridCache.SetAsync(key, date, options); + + // Assert - date is serialized as expected + var writer = new ArrayBufferWriter(); + new NatsUtf8PrimitivesSerializer().Serialize(writer, date); + var serializedDateString = Encoding.ASCII.GetString(writer.WrittenSpan.ToArray()); + + var kvStore = await NatsConnection.CreateKeyValueStoreContext().GetStoreAsync("cache"); + NatsJsonContextSerializer cacheEntrySerializer = new(CacheEntryJsonContext.Default); + var kvEntry = await kvStore.GetEntryAsync(key, serializer: cacheEntrySerializer); + Assert.NotNull(kvEntry.Value?.Data); + var storedDateString = Encoding.ASCII.GetString(kvEntry.Value.Data); + + // HybridCache adds additional data to the front of the serialized value, so we're matching only the relevant data + Assert.Contains(serializedDateString, storedDateString); + + // Assert - date is deserialized as expected + var retrieved = await HybridCache.GetOrCreateAsync(key, async ct => await Task.FromResult(DateTime.UnixEpoch)); + Assert.Equal(date, retrieved); + + // Cleanup + await HybridCache.RemoveAsync(key); + } +} diff --git a/test/IntegrationTests/TestBase.cs b/test/IntegrationTests/TestBase.cs index e57d265..a20255a 100644 --- a/test/IntegrationTests/TestBase.cs +++ b/test/IntegrationTests/TestBase.cs @@ -1,9 +1,12 @@ using System.Runtime.CompilerServices; +using CodeCargo.Nats.DistributedCache.TestUtils; using CodeCargo.Nats.DistributedCache.TestUtils.Services.Logging; using Microsoft.Extensions.Caching.Distributed; +using Microsoft.Extensions.Caching.Hybrid; using Microsoft.Extensions.Logging; using NATS.Client.Core; using NATS.Client.JetStream.Models; +using NATS.Client.KeyValueStore; using NATS.Net; namespace CodeCargo.Nats.DistributedCache.IntegrationTests; @@ -41,6 +44,7 @@ protected TestBase(NatsIntegrationFixture fixture) // Add the cache services.AddNatsDistributedCache(options => options.BucketName = "cache"); + services.AddHybridCacheTestClient(); // Build service provider ServiceProvider = services.BuildServiceProvider(); @@ -61,6 +65,11 @@ protected TestBase(NatsIntegrationFixture fixture) /// protected IDistributedCache Cache => ServiceProvider.GetRequiredService(); + /// + /// Gets the cache from the service provider + /// + protected HybridCache HybridCache => ServiceProvider.GetRequiredService(); + /// /// Purge stream before test run /// diff --git a/test/IntegrationTests/packages.linux-x64.lock.json b/test/IntegrationTests/packages.linux-x64.lock.json index 5813dfd..987977f 100644 --- a/test/IntegrationTests/packages.linux-x64.lock.json +++ b/test/IntegrationTests/packages.linux-x64.lock.json @@ -317,6 +317,29 @@ "Microsoft.Extensions.Primitives": "9.0.4" } }, + "Microsoft.Extensions.Caching.Hybrid": { + "type": "Transitive", + "resolved": "9.4.0", + "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.Caching.Memory": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "9.0.4", + "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", + "Microsoft.Extensions.Primitives": "9.0.4" + } + }, "Microsoft.Extensions.Compliance.Abstractions": { "type": "Transitive", "resolved": "9.4.0", @@ -1074,6 +1097,7 @@ "type": "Project", "dependencies": { "CodeCargo.Nats.DistributedCache": "[1.0.0, )", + "Microsoft.Extensions.Caching.Hybrid": "[9.4.0, )", "Microsoft.Extensions.Logging": "[9.0.4, )", "NATS.Net": "[2.6.0, )", "xunit.v3.assert": "[2.0.2, )", diff --git a/test/IntegrationTests/packages.osx-arm64.lock.json b/test/IntegrationTests/packages.osx-arm64.lock.json index 4d0c6d1..16bcfb7 100644 --- a/test/IntegrationTests/packages.osx-arm64.lock.json +++ b/test/IntegrationTests/packages.osx-arm64.lock.json @@ -317,6 +317,29 @@ "Microsoft.Extensions.Primitives": "9.0.4" } }, + "Microsoft.Extensions.Caching.Hybrid": { + "type": "Transitive", + "resolved": "9.4.0", + "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.Caching.Memory": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "9.0.4", + "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", + "Microsoft.Extensions.Primitives": "9.0.4" + } + }, "Microsoft.Extensions.Compliance.Abstractions": { "type": "Transitive", "resolved": "9.4.0", @@ -1074,6 +1097,7 @@ "type": "Project", "dependencies": { "CodeCargo.Nats.DistributedCache": "[1.0.0, )", + "Microsoft.Extensions.Caching.Hybrid": "[9.4.0, )", "Microsoft.Extensions.Logging": "[9.0.4, )", "NATS.Net": "[2.6.0, )", "xunit.v3.assert": "[2.0.2, )", diff --git a/test/IntegrationTests/packages.win-x64.lock.json b/test/IntegrationTests/packages.win-x64.lock.json index 6f21006..d7512b1 100644 --- a/test/IntegrationTests/packages.win-x64.lock.json +++ b/test/IntegrationTests/packages.win-x64.lock.json @@ -317,6 +317,29 @@ "Microsoft.Extensions.Primitives": "9.0.4" } }, + "Microsoft.Extensions.Caching.Hybrid": { + "type": "Transitive", + "resolved": "9.4.0", + "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.Caching.Memory": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "9.0.4", + "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", + "Microsoft.Extensions.Primitives": "9.0.4" + } + }, "Microsoft.Extensions.Compliance.Abstractions": { "type": "Transitive", "resolved": "9.4.0", @@ -1074,6 +1097,7 @@ "type": "Project", "dependencies": { "CodeCargo.Nats.DistributedCache": "[1.0.0, )", + "Microsoft.Extensions.Caching.Hybrid": "[9.4.0, )", "Microsoft.Extensions.Logging": "[9.0.4, )", "NATS.Net": "[2.6.0, )", "xunit.v3.assert": "[2.0.2, )", diff --git a/test/TestUtils/NatsTestExtensions.cs b/test/TestUtils/NatsTestExtensions.cs index 46fea13..f486080 100644 --- a/test/TestUtils/NatsTestExtensions.cs +++ b/test/TestUtils/NatsTestExtensions.cs @@ -13,4 +13,16 @@ options with Url = natsConnectionString, RequestReplyMode = NatsRequestReplyMode.Direct, }); + + public static IServiceCollection AddHybridCacheTestClient(this IServiceCollection services) + { + // Add HybridCache + var hybridCacheServices = services.AddHybridCache(); + + // Use NATS Serializer for HybridCache + var natsOpts = NatsOpts.Default; + hybridCacheServices.AddSerializerFactory( + natsOpts.SerializerRegistry.ToHybridCacheSerializerFactory()); + return services; + } } diff --git a/test/TestUtils/TestUtils.csproj b/test/TestUtils/TestUtils.csproj index 4af9535..0c13076 100644 --- a/test/TestUtils/TestUtils.csproj +++ b/test/TestUtils/TestUtils.csproj @@ -5,6 +5,7 @@ + diff --git a/test/TestUtils/packages.linux-x64.lock.json b/test/TestUtils/packages.linux-x64.lock.json index c41655f..7890c9e 100644 --- a/test/TestUtils/packages.linux-x64.lock.json +++ b/test/TestUtils/packages.linux-x64.lock.json @@ -2,6 +2,18 @@ "version": 1, "dependencies": { "net8.0": { + "Microsoft.Extensions.Caching.Hybrid": { + "type": "Direct", + "requested": "[9.4.0, )", + "resolved": "9.4.0", + "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.Caching.Memory": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4" + } + }, "Microsoft.Extensions.Logging": { "type": "Direct", "requested": "[9.0.4, )", @@ -66,6 +78,18 @@ "Microsoft.Extensions.Primitives": "9.0.4" } }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "9.0.4", + "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", + "Microsoft.Extensions.Primitives": "9.0.4" + } + }, "Microsoft.Extensions.Configuration.Abstractions": { "type": "Transitive", "resolved": "8.0.0", diff --git a/test/TestUtils/packages.osx-arm64.lock.json b/test/TestUtils/packages.osx-arm64.lock.json index c41655f..7890c9e 100644 --- a/test/TestUtils/packages.osx-arm64.lock.json +++ b/test/TestUtils/packages.osx-arm64.lock.json @@ -2,6 +2,18 @@ "version": 1, "dependencies": { "net8.0": { + "Microsoft.Extensions.Caching.Hybrid": { + "type": "Direct", + "requested": "[9.4.0, )", + "resolved": "9.4.0", + "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.Caching.Memory": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4" + } + }, "Microsoft.Extensions.Logging": { "type": "Direct", "requested": "[9.0.4, )", @@ -66,6 +78,18 @@ "Microsoft.Extensions.Primitives": "9.0.4" } }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "9.0.4", + "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", + "Microsoft.Extensions.Primitives": "9.0.4" + } + }, "Microsoft.Extensions.Configuration.Abstractions": { "type": "Transitive", "resolved": "8.0.0", diff --git a/test/TestUtils/packages.win-x64.lock.json b/test/TestUtils/packages.win-x64.lock.json index c41655f..7890c9e 100644 --- a/test/TestUtils/packages.win-x64.lock.json +++ b/test/TestUtils/packages.win-x64.lock.json @@ -2,6 +2,18 @@ "version": 1, "dependencies": { "net8.0": { + "Microsoft.Extensions.Caching.Hybrid": { + "type": "Direct", + "requested": "[9.4.0, )", + "resolved": "9.4.0", + "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.Caching.Memory": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4" + } + }, "Microsoft.Extensions.Logging": { "type": "Direct", "requested": "[9.0.4, )", @@ -66,6 +78,18 @@ "Microsoft.Extensions.Primitives": "9.0.4" } }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "9.0.4", + "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", + "Microsoft.Extensions.Primitives": "9.0.4" + } + }, "Microsoft.Extensions.Configuration.Abstractions": { "type": "Transitive", "resolved": "8.0.0", diff --git a/test/UnitTests/packages.linux-x64.lock.json b/test/UnitTests/packages.linux-x64.lock.json index 5e11b64..2d24c70 100644 --- a/test/UnitTests/packages.linux-x64.lock.json +++ b/test/UnitTests/packages.linux-x64.lock.json @@ -73,6 +73,29 @@ "Microsoft.Extensions.Primitives": "9.0.4" } }, + "Microsoft.Extensions.Caching.Hybrid": { + "type": "Transitive", + "resolved": "9.4.0", + "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.Caching.Memory": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "9.0.4", + "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", + "Microsoft.Extensions.Primitives": "9.0.4" + } + }, "Microsoft.Extensions.Configuration.Abstractions": { "type": "Transitive", "resolved": "8.0.0", @@ -382,6 +405,7 @@ "type": "Project", "dependencies": { "CodeCargo.Nats.DistributedCache": "[1.0.0, )", + "Microsoft.Extensions.Caching.Hybrid": "[9.4.0, )", "Microsoft.Extensions.Logging": "[9.0.4, )", "NATS.Net": "[2.6.0, )", "xunit.v3.assert": "[2.0.2, )", diff --git a/test/UnitTests/packages.osx-arm64.lock.json b/test/UnitTests/packages.osx-arm64.lock.json index 5e11b64..2d24c70 100644 --- a/test/UnitTests/packages.osx-arm64.lock.json +++ b/test/UnitTests/packages.osx-arm64.lock.json @@ -73,6 +73,29 @@ "Microsoft.Extensions.Primitives": "9.0.4" } }, + "Microsoft.Extensions.Caching.Hybrid": { + "type": "Transitive", + "resolved": "9.4.0", + "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.Caching.Memory": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "9.0.4", + "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", + "Microsoft.Extensions.Primitives": "9.0.4" + } + }, "Microsoft.Extensions.Configuration.Abstractions": { "type": "Transitive", "resolved": "8.0.0", @@ -382,6 +405,7 @@ "type": "Project", "dependencies": { "CodeCargo.Nats.DistributedCache": "[1.0.0, )", + "Microsoft.Extensions.Caching.Hybrid": "[9.4.0, )", "Microsoft.Extensions.Logging": "[9.0.4, )", "NATS.Net": "[2.6.0, )", "xunit.v3.assert": "[2.0.2, )", diff --git a/test/UnitTests/packages.win-x64.lock.json b/test/UnitTests/packages.win-x64.lock.json index 5e11b64..2d24c70 100644 --- a/test/UnitTests/packages.win-x64.lock.json +++ b/test/UnitTests/packages.win-x64.lock.json @@ -73,6 +73,29 @@ "Microsoft.Extensions.Primitives": "9.0.4" } }, + "Microsoft.Extensions.Caching.Hybrid": { + "type": "Transitive", + "resolved": "9.4.0", + "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.Caching.Memory": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "9.0.4", + "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", + "Microsoft.Extensions.Primitives": "9.0.4" + } + }, "Microsoft.Extensions.Configuration.Abstractions": { "type": "Transitive", "resolved": "8.0.0", @@ -382,6 +405,7 @@ "type": "Project", "dependencies": { "CodeCargo.Nats.DistributedCache": "[1.0.0, )", + "Microsoft.Extensions.Caching.Hybrid": "[9.4.0, )", "Microsoft.Extensions.Logging": "[9.0.4, )", "NATS.Net": "[2.6.0, )", "xunit.v3.assert": "[2.0.2, )", diff --git a/util/PerfTest/packages.linux-x64.lock.json b/util/PerfTest/packages.linux-x64.lock.json index 346ec48..babef24 100644 --- a/util/PerfTest/packages.linux-x64.lock.json +++ b/util/PerfTest/packages.linux-x64.lock.json @@ -301,6 +301,29 @@ "Microsoft.Extensions.Primitives": "9.0.4" } }, + "Microsoft.Extensions.Caching.Hybrid": { + "type": "Transitive", + "resolved": "9.4.0", + "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.Caching.Memory": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "9.0.4", + "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", + "Microsoft.Extensions.Primitives": "9.0.4" + } + }, "Microsoft.Extensions.Compliance.Abstractions": { "type": "Transitive", "resolved": "9.4.0", @@ -966,6 +989,7 @@ "type": "Project", "dependencies": { "CodeCargo.Nats.DistributedCache": "[1.0.0, )", + "Microsoft.Extensions.Caching.Hybrid": "[9.4.0, )", "Microsoft.Extensions.Logging": "[9.0.4, )", "NATS.Net": "[2.6.0, )", "xunit.v3.assert": "[2.0.2, )", diff --git a/util/PerfTest/packages.osx-arm64.lock.json b/util/PerfTest/packages.osx-arm64.lock.json index cc3d194..0b0278b 100644 --- a/util/PerfTest/packages.osx-arm64.lock.json +++ b/util/PerfTest/packages.osx-arm64.lock.json @@ -301,6 +301,29 @@ "Microsoft.Extensions.Primitives": "9.0.4" } }, + "Microsoft.Extensions.Caching.Hybrid": { + "type": "Transitive", + "resolved": "9.4.0", + "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.Caching.Memory": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "9.0.4", + "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", + "Microsoft.Extensions.Primitives": "9.0.4" + } + }, "Microsoft.Extensions.Compliance.Abstractions": { "type": "Transitive", "resolved": "9.4.0", @@ -966,6 +989,7 @@ "type": "Project", "dependencies": { "CodeCargo.Nats.DistributedCache": "[1.0.0, )", + "Microsoft.Extensions.Caching.Hybrid": "[9.4.0, )", "Microsoft.Extensions.Logging": "[9.0.4, )", "NATS.Net": "[2.6.0, )", "xunit.v3.assert": "[2.0.2, )", diff --git a/util/PerfTest/packages.win-x64.lock.json b/util/PerfTest/packages.win-x64.lock.json index 0e84cdf..55d0a36 100644 --- a/util/PerfTest/packages.win-x64.lock.json +++ b/util/PerfTest/packages.win-x64.lock.json @@ -301,6 +301,29 @@ "Microsoft.Extensions.Primitives": "9.0.4" } }, + "Microsoft.Extensions.Caching.Hybrid": { + "type": "Transitive", + "resolved": "9.4.0", + "contentHash": "GtHP+DRraRM6RLq7TzUV8Iiyqm+WemJRLDNqy7uvA+Dgf6fjvxpmHnzgPb+RAcRNjADz961DMHHZ4i5EQjpDPw==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.Caching.Memory": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "9.0.4", + "contentHash": "G5rEq1Qez5VJDTEyRsRUnewAspKjaY57VGsdZ8g8Ja6sXXzoiI3PpTd1t43HjHqNWD5A06MQveb2lscn+2CU+w==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "9.0.4", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4", + "Microsoft.Extensions.Logging.Abstractions": "9.0.4", + "Microsoft.Extensions.Options": "9.0.4", + "Microsoft.Extensions.Primitives": "9.0.4" + } + }, "Microsoft.Extensions.Compliance.Abstractions": { "type": "Transitive", "resolved": "9.4.0", @@ -966,6 +989,7 @@ "type": "Project", "dependencies": { "CodeCargo.Nats.DistributedCache": "[1.0.0, )", + "Microsoft.Extensions.Caching.Hybrid": "[9.4.0, )", "Microsoft.Extensions.Logging": "[9.0.4, )", "NATS.Net": "[2.6.0, )", "xunit.v3.assert": "[2.0.2, )",