private void StopPeer(UnregisterPeerCommand message, PeerDescriptor peer) { var peerId = message.PeerId; var endPoint = message.PeerEndPoint ?? peer.Peer.EndPoint; var timestampUtc = message.TimestampUtc ?? SystemDateTime.UtcNow; if (_peerRepository.SetPeerDown(peerId, timestampUtc)) { _bus.Publish(new PeerStopped(peerId, endPoint, timestampUtc)); } }
public void should_not_unregister_a_peer_that_started_after_timestamp() { var peerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand)); _repositoryMock.Setup(x => x.Get(peerDescriptor.PeerId)).Returns(peerDescriptor); var command = new UnregisterPeerCommand(peerDescriptor.Peer, peerDescriptor.TimestampUtc.Value.AddSeconds(-2)); _handler.Handle(command); _repositoryMock.Verify(x => x.AddOrUpdatePeer(It.IsAny <PeerDescriptor>()), Times.Never()); _bus.ExpectNothing(); }
public void should_publish_stopped_event_when_unregistering_a_persistent_client() { var peerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand)); peerDescriptor.TimestampUtc = SystemDateTime.UtcNow.AddSeconds(-30); _repositoryMock.Setup(x => x.Get(peerDescriptor.Peer.Id)).Returns(peerDescriptor); var command = new UnregisterPeerCommand(peerDescriptor.Peer, SystemDateTime.UtcNow.AddSeconds(-2)); _handler.Handle(command); _bus.ExpectExactly(new PeerStopped(peerDescriptor.Peer, command.TimestampUtc)); }
public void should_unregister_persistent_peer_when_unregistering() { var peerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand)); peerDescriptor.TimestampUtc = SystemDateTime.UtcNow.AddSeconds(-30); _repositoryMock.Setup(x => x.Get(peerDescriptor.Peer.Id)).Returns(peerDescriptor); var command = new UnregisterPeerCommand(peerDescriptor.Peer); _handler.Handle(command); _repositoryMock.Verify(x => x.AddOrUpdatePeer(It.Is <PeerDescriptor>(peer => peer.Peer.Id == peerDescriptor.Peer.Id && peer.Peer.IsUp == false && peer.TimestampUtc == command.TimestampUtc))); }
public void Handle(UnregisterPeerCommand message) { var stopwatch = Stopwatch.StartNew(); var peer = _peerRepository.Get(message.PeerId); if (peer == null || peer.TimestampUtc > message.TimestampUtc) { return; } if (peer.IsPersistent) { StopPeer(message, peer); } else { RemovePeer(message.PeerId); } _speedReporter.ReportUnregistrationDuration(stopwatch.Elapsed); }
public void should_not_unregister_a_peer_that_started_after_timestamp() { var peerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand)); _repositoryMock.Setup(x => x.Get(peerDescriptor.PeerId)).Returns(peerDescriptor); var command = new UnregisterPeerCommand(peerDescriptor.Peer, peerDescriptor.TimestampUtc.Value.AddSeconds(-2)); _handler.Handle(command); _repositoryMock.Verify(x => x.AddOrUpdatePeer(It.IsAny<PeerDescriptor>()), Times.Never()); _bus.ExpectNothing(); }
public void should_unregister_persistent_peer_when_unregistering() { var peerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand)); peerDescriptor.TimestampUtc = SystemDateTime.UtcNow.AddSeconds(-30); _repositoryMock.Setup(x => x.Get(peerDescriptor.Peer.Id)).Returns(peerDescriptor); var command = new UnregisterPeerCommand(peerDescriptor.Peer); _handler.Handle(command); _repositoryMock.Verify(x => x.AddOrUpdatePeer(It.Is<PeerDescriptor>(peer => peer.Peer.Id == peerDescriptor.Peer.Id && peer.Peer.IsUp == false && peer.TimestampUtc == command.TimestampUtc))); }