forked from akkadotnet/akka.net
/
ClusterHeartbeatSenderSpec.cs
66 lines (56 loc) · 2.28 KB
/
ClusterHeartbeatSenderSpec.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//-----------------------------------------------------------------------
// <copyright file="ClusterHeartbeatSenderSpec.cs" company="Akka.NET Project">
// Copyright (C) 2009-2021 Lightbend Inc. <http://www.lightbend.com>
// Copyright (C) 2013-2021 .NET Foundation <https://github.com/akkadotnet/akka.net>
// </copyright>
//-----------------------------------------------------------------------
using System.Collections.Immutable;
using Akka.Actor;
using Akka.Configuration;
using Akka.TestKit;
using Akka.Util;
using FluentAssertions;
using Xunit;
using Xunit.Abstractions;
using static Akka.Cluster.ClusterHeartbeatSender;
namespace Akka.Cluster.Tests
{
public class ClusterHeartbeatSenderSpec : AkkaSpec
{
class TestClusterHeartbeatSender : ClusterHeartbeatSender
{
private readonly TestProbe _probe;
public TestClusterHeartbeatSender(TestProbe probe) : base(Cluster.Get(Context.System))
{
_probe = probe;
}
protected override void PreStart()
{
// don't register for cluster events
}
protected override ActorSelection HeartbeatReceiver(Address address)
{
return Context.ActorSelection(_probe.Ref.Path);
}
}
public static readonly Config Config = @"
akka.loglevel = DEBUG
akka.actor.provider = cluster
akka.cluster.failure-detector.heartbeat-interval = 0.2s
";
public ClusterHeartbeatSenderSpec(ITestOutputHelper output)
: base(Config, output){ }
[Fact]
public void ClusterHeartBeatSender_must_increment_heartbeat_SeqNo()
{
var probe = CreateTestProbe();
var underTest = Sys.ActorOf(Props.Create(() => new TestClusterHeartbeatSender(probe)));
underTest.Tell(new ClusterEvent.CurrentClusterState());
underTest.Tell(new ClusterEvent.MemberUp(new Member(
new UniqueAddress(new Address("akka", Sys.Name), 1), 1,
MemberStatus.Up, ImmutableHashSet<string>.Empty, AppVersion.Zero)));
probe.ExpectMsg<Heartbeat>().SequenceNr.Should().Be(1L);
probe.ExpectMsg<Heartbeat>().SequenceNr.Should().Be(2L);
}
}
}