elsa-core/test/Elsa.ProtoCluster.ComponentTests/AzureContainerAppTests/RedisClusterMemberStoreTests.cs
gurkanguran 90e560bc73
Redis proto cluster member store (#4241)
* Implemented redis as a proto cluster member store

* Added component tests for redis protocluster member store

---------

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
2023-07-14 19:29:43 +02:00

63 lines
2.1 KiB
C#

using Proto.Cluster;
using Proto.Cluster.AzureContainerApps.Stores.Redis;
using StackExchange.Redis;
namespace Elsa.ProtoCluster.ComponentTests.AzureContainerAppTests;
public class RedisClusterMemberStoreTests : IClassFixture<RedisFixture>
{
private readonly RedisClusterMemberStore _memberStore;
private readonly Member _member;
public RedisClusterMemberStoreTests(RedisFixture redisFixture)
{
var multiplexer = ConnectionMultiplexer.Connect(redisFixture.GetConnectionString());
_memberStore = new RedisClusterMemberStore(multiplexer);
_member = new Member
{
Id = "id1",
Host = "localhost",
Port = 8000,
Kinds = { "kind1", "kind2" }
};
}
[Fact(DisplayName = "Invoking RegisterAsync should register member")]
public async Task RegisterAsync_ShouldRegisterMember()
{
await _memberStore.RegisterAsync("cluster", _member);
var members = await _memberStore.ListAsync();
Assert.Contains(members, m => m.Id == _member.Id);
}
[Fact(DisplayName = "Invoking UnregisterAsync should unregister member")]
public async Task UnregisterAsync_ShouldUnregisterMember()
{
await _memberStore.RegisterAsync("cluster", _member);
await _memberStore.UnregisterAsync(_member.Id);
var members = await _memberStore.ListAsync();
Assert.DoesNotContain(members, m => m.Id == _member.Id);
}
[Fact(DisplayName = "Invoking ClearAsync should clear all members")]
public async Task ClearAsync_ShouldClearAllMembers()
{
await _memberStore.RegisterAsync("cluster", _member);
await _memberStore.ClearAsync("cluster");
var members = await _memberStore.ListAsync();
Assert.Empty(members);
}
[Fact(DisplayName = "Invoking ListAsync should return all registered members")]
public async Task ListAsync_ShouldReturnAllRegisteredMembers()
{
await _memberStore.RegisterAsync("cluster", _member);
var members = await _memberStore.ListAsync();
Assert.Contains(members, m => m.Id == _member.Id);
}
}