stabilizaiton work - projects rework for maintenanceability and ui livening
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
using Moq;
|
||||
using StackExchange.Redis;
|
||||
using StellaOps.TestKit;
|
||||
using Xunit;
|
||||
|
||||
namespace StellaOps.ReachGraph.Cache.Tests;
|
||||
|
||||
public sealed class ReachGraphValkeyCacheSetTests
|
||||
{
|
||||
[Fact]
|
||||
[Trait("Category", TestCategories.Unit)]
|
||||
public async Task SetAsyncStoresCompressedGraph()
|
||||
{
|
||||
var options = new ReachGraphCacheOptions { DefaultTtl = TimeSpan.FromMinutes(5) };
|
||||
var harness = new ReachGraphValkeyCacheHarness("tenant-1", options);
|
||||
var graph = ReachGraphValkeyCacheTestData.CreateGraph("sha256:graph");
|
||||
|
||||
harness.Database
|
||||
.Setup(db => db.StringSetAsync(
|
||||
It.IsAny<RedisKey>(),
|
||||
It.IsAny<RedisValue>(),
|
||||
It.IsAny<TimeSpan?>(),
|
||||
It.IsAny<When>(),
|
||||
It.IsAny<CommandFlags>()))
|
||||
.ReturnsAsync(true);
|
||||
|
||||
await harness.Cache.SetAsync("sha256:graph", graph, ttl: TimeSpan.FromMinutes(2));
|
||||
|
||||
var invocation = Assert.Single(harness.Database.Invocations, i => i.Method.Name == "StringSetAsync");
|
||||
var key = (RedisKey)invocation.Arguments[0]!;
|
||||
var storedValue = (RedisValue)invocation.Arguments[1]!;
|
||||
var stored = (byte[]?)storedValue;
|
||||
var ttl = (Expiration)invocation.Arguments[2]!;
|
||||
var json = harness.Serializer.SerializeMinimal(graph);
|
||||
Assert.NotNull(stored);
|
||||
var decompressed = ReachGraphValkeyCacheTestData.Decompress(stored);
|
||||
|
||||
Assert.Equal("reachgraph:tenant-1:sha256:graph", key.ToString());
|
||||
Assert.Equal((Expiration)TimeSpan.FromMinutes(2), ttl);
|
||||
Assert.Equal(json, decompressed);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[Trait("Category", TestCategories.Unit)]
|
||||
public async Task SetAsyncSkipsWhenGraphTooLarge()
|
||||
{
|
||||
var options = new ReachGraphCacheOptions { MaxGraphSizeBytes = 1 };
|
||||
var harness = new ReachGraphValkeyCacheHarness("tenant-1", options);
|
||||
var graph = ReachGraphValkeyCacheTestData.CreateGraph("sha256:graph");
|
||||
|
||||
await harness.Cache.SetAsync("sha256:graph", graph);
|
||||
|
||||
harness.Database.Verify(
|
||||
db => db.StringSetAsync(
|
||||
It.IsAny<RedisKey>(),
|
||||
It.IsAny<RedisValue>(),
|
||||
It.IsAny<TimeSpan?>(),
|
||||
It.IsAny<When>(),
|
||||
It.IsAny<CommandFlags>()),
|
||||
Times.Never);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user