public AutomatedSpectator( TimeSpan checkHealthPeriod, TimeSpan retentionPeriod, IStateEvaluator <TState> stateEvaluator, TState initialState) : base(stateEvaluator, retentionPeriod, initialState) { CheckHealthPeriod = checkHealthPeriod; _timer = new System.Timers.Timer(CheckHealthPeriod.TotalMilliseconds); _timer.Elapsed += (sender, args) => CheckHealth(); _timer.AutoReset = true; }
public SpectatorBase(IStateEvaluator <TState> stateEvaluator, TimeSpan retentionPeriod, TState initialState) { RetentionPeriod = retentionPeriod; _state = initialState; StateChangedDate = DateTime.UtcNow; _stateEvaluator = stateEvaluator; _stopwatch = Stopwatch.StartNew(); _probes = new List <IProbe>(); _journal = new List <JournalRecord>(); _journalLock = new ReaderWriterLockSlim(); _stateLock = new ReaderWriterLockSlim(); }
public AlphaBetaAi(IStateEvaluator evaluator, int maxDepth = int.MaxValue) { this.evaluator = evaluator; this.maxDepth = maxDepth; }
public SingleTargetAi(int timeToSimulate, IStateEvaluator evaluator, IAi fastEnemyAi) { this.timeToSimulate = timeToSimulate; this.evaluator = evaluator; this.fastEnemyAi = fastEnemyAi; }
public SystemSpectator(TimeSpan checkHealthPeriod, IStateEvaluator <SystemState> stateEvaluator, TimeSpan retentionPeriod, SystemState initialState) : base(checkHealthPeriod, retentionPeriod, stateEvaluator, initialState) { Console.WriteLine("SystemSpectator created"); }
public async Task TestSpectatorBase() { var probe1States = new Queue <ProbeResult>(new[] { C(true), C(true), C(true), C(false), C(true), C(true), C(true), C(true) } ); var probe2States = new Queue <ProbeResult>(new[] { C(true), C(true), C(false), C(true), C(false), C(true), C(true), C(true) } ); IProbe probe1 = new Probe("Test-1", () => { var result = probe1States.Dequeue(); result.ProbeName = "Test-1"; return(Task.FromResult(result)); }); IProbe probe2 = new Probe("Test-2", () => { var result = probe2States.Dequeue(); result.ProbeName = "Test-2"; return(Task.FromResult(result)); }); var stateEvaluatorMock = new Mock <IStateEvaluator <State> >(); stateEvaluatorMock .Setup(o => o.Evaluate( It.IsAny <State>(), It.IsAny <DateTime>(), It.IsAny <IReadOnlyCollection <JournalRecord> >())) .Returns((State currentState, DateTime stateChangedLastTime, IReadOnlyCollection <JournalRecord> journal) => { var data = journal.TakeLast(3).ToImmutableList(); var totalChecks = data.Count; var failedChecks = data.Count(o => o.Values.Any(v => v.Success == false)); if (failedChecks == 0) { return(State.Live); } if (failedChecks == 1) { return(State.Warning); } return(State.Down); }); IStateEvaluator <State> stateEvaluator = stateEvaluatorMock.Object; TimeSpan retentionPeriod = TimeSpan.FromMinutes(10); var spectator = new SpectatorBase <State>(stateEvaluator, retentionPeriod, State.Unknown); spectator.AddProbe(probe1); spectator.AddProbe(probe2); var states = new List <State>(); spectator.HealthChecked += (sender, args) => { }; spectator.StateChanged += (sender, args) => { states.Add(args.State); }; for (int i = 0; i < 8; i++) { spectator.CheckHealth(); } var expected = new State[] { State.Live, State.Warning, State.Down, State.Warning, State.Live }; Assert.Equal(expected.ToArray(), states.ToArray()); }
public GreedyAi(IStateEvaluator evaluator) { this.evaluator = evaluator; }