34 lines
1.1 KiB
C#
34 lines
1.1 KiB
C#
using StackExchange.Redis;
|
|
using Xunit;
|
|
|
|
namespace BuildFlow.Rag.Tests.Chat;
|
|
|
|
/// <summary>管理连接到本地独立基础设施 Redis 的测试连接。</summary>
|
|
public sealed class RedisChatMessageCacheFixture : IAsyncLifetime
|
|
{
|
|
private const string DefaultConnection = "127.0.0.1:56379,abortConnect=false";
|
|
|
|
/// <summary>测试复用的 Redis 连接。</summary>
|
|
public IConnectionMultiplexer Redis { get; private set; } = default!;
|
|
|
|
public async Task InitializeAsync()
|
|
{
|
|
var connection = Environment.GetEnvironmentVariable("BUILDFLOW_RAG_REDIS_TEST_CONNECTION")
|
|
?? DefaultConnection;
|
|
Redis = await ConnectionMultiplexer.ConnectAsync(connection);
|
|
}
|
|
|
|
public Task DisposeAsync()
|
|
{
|
|
Redis.Dispose();
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
/// <summary>删除单个测试会话的固定缓存 key。</summary>
|
|
public Task DeleteAsync(Guid conversationId)
|
|
=> Redis.GetDatabase().KeyDeleteAsync(Key(conversationId));
|
|
|
|
/// <summary>返回生产缓存使用的固定 key。</summary>
|
|
public static string Key(Guid conversationId) => $"chat:messages:{conversationId}";
|
|
}
|