public void TestUpdateStatsStreamDisconnectionsCount() { // //Arrange // var streamStatsActorRef = ActorOfAsTestActorRef <StreamStatsActor>( Props.Create(() => new StreamStatsActor()), StreamStatsActor.ActorName); var streamDisconnectedMsg = new StreamDisconnectedMsg(); // //Act // streamStatsActorRef.Tell(streamDisconnectedMsg); Task.Delay(TimeSpan.FromMilliseconds(500)); streamStatsActorRef.Tell(streamDisconnectedMsg); // //Assert // AwaitAssert(() => { Assert.AreEqual(0, streamStatsActorRef.UnderlyingActor.SnapshotsCount); Assert.AreEqual(0, streamStatsActorRef.UnderlyingActor.StreamUpdatesCount); Assert.AreEqual(2, streamStatsActorRef.UnderlyingActor.DisconnectionsCount); Assert.AreEqual(0, streamStatsActorRef.UnderlyingActor.ErrorsCount[StreamStatsActor.PluginExceptionType]); Assert.AreEqual(0, streamStatsActorRef.UnderlyingActor.ErrorsCount[StreamStatsActor.ApiExceptionType]); Assert.AreEqual(0, streamStatsActorRef.UnderlyingActor.ErrorsCount[StreamStatsActor.GenericExceptionType]); Assert.Less((DateTime.UtcNow - streamStatsActorRef.UnderlyingActor.LastDisconnectedDate).TotalSeconds, 5); }, TimeSpan.FromMilliseconds(ASSERT_WAIT_TIMEOUT), TimeSpan.FromMilliseconds(ASSERT_EXEC_INTERVAL)); }
private void StreamDisconnectedMsgHandler(StreamDisconnectedMsg msg) { try { _logger.Warn($"Stream got disconnected for {_resource}"); var fixtureStateActor = Context.System.ActorSelection(FixtureStateActor.Path); var fixtureState = fixtureStateActor .Ask <FixtureState>( new GetFixtureStateMsg { FixtureId = _fixtureId }, TimeSpan.FromSeconds(10)) .Result; if (_streamHealthCheckValidation.ShouldSuspendOnDisconnection(fixtureState, _fixtureStartTime)) { SuspendFixture(SuspensionReason.DISCONNECT_EVENT); } Become(Disconnected); } catch (Exception ex) { _logger.Error($"Error processing disconnection for {_resource} - exception - {ex}"); _erroredException = ex; Become(Errored); } }
private void StreamDisconnectedMsgHandler(StreamDisconnectedMsg msg) { _disconnectionsCount++; _lastDisconnectedDate = DateTime.UtcNow; var days = (DateTime.UtcNow - AdapterStartDate).TotalDays; var weeks = days > 7 ? (int)(days / 7) : 1; _logger.Info($"Stream got disconnected at {_lastDisconnectedDate}"); _logger.Info($"Detected {_disconnectionsCount / weeks} Stream disconnections / week"); }
//Resource has been disconnected, quick reconnection will occur soon private void Disconnected() { State = StreamListenerState.Disconnected; _logger.Info($"Stream listener for {_resource} moved to Disconnected State"); Receive <GetStreamListenerActorStateMsg>(a => Sender.Tell(State)); var streamDisconnectedMessage = new StreamDisconnectedMsg { FixtureId = _fixtureId, Sport = _resource.Sport }; //tell Stream Stats actor that we got disconnected so it can monitor number of disconnections _streamStatsActor.Tell(streamDisconnectedMessage); //tell Stream Listener Manager Actor that we got disconnected so it can kill and recreate this child actor Context.Parent.Tell(streamDisconnectedMessage); }
private void StreamDisconnectedMsgHandler(StreamDisconnectedMsg msg) { try { _logger.Warn($"Stream got disconnected for {_resource}"); var fixtureState = GetFixtureState(); if (_streamHealthCheckValidation.ShouldSuspendOnDisconnection(fixtureState, _fixtureStartTime)) { SuspendFixture(SuspensionReason.DISCONNECT_EVENT); } Become(Disconnected); } catch (Exception ex) { _logger.Error($"Error processing disconnection for {_resource} - exception - {ex}"); _erroredException = ex; Become(Errored); } }
private void StreamDisconnectedMsgHandler(StreamDisconnectedMsg msg) { StopStreamListenerChildActor(msg.FixtureId); }