public async Task should_be_notified_when_the_leadership_changes() { var manager = new InMemoryLeaseManager(node1); var node1Elected = false; var node2Elected = false; BuildSubject(node1, manager, b => { if (!node1Elected) { node1Elected = b; } }, out var _, out var node1Runner); BuildSubject(node2, manager, b => { if (!node2Elected) { node2Elected = b; } }, out var _, out var node2Runner); // start the runners async #pragma warning disable 4014 node1Runner.Start(); node2Runner.Start(); #pragma warning restore 4014 await Task.Delay(500); manager.AssignLeader(node2); await Task.Delay(500); Assert.True(node1Elected); Assert.True(node2Elected); }
public async Task only_one_node_should_be_running_at_any_one_time() { var manager = new InMemoryLeaseManager(node1); BuildSubject(node1, manager, out var service1, out var node1Runner); BuildSubject(node2, manager, out var service2, out var node2Runner); // start the runners async #pragma warning disable 4014 node1Runner.Start(); node2Runner.Start(); #pragma warning restore 4014 await Task.Delay(500); Assert.True(service1.Started); Assert.False(service2.Started); manager.AssignLeader(node2); await Task.Delay(500); Assert.False(service1.Started); Assert.True(service2.Started); }