public bool Run() { FinishCondition = GetFinishCondition(); foreach (var instance in _instances) { Runner.Enqueue(instance.EndPoint, new SystemMessage.SystemInit(), instance.InputBus); Runner.Enqueue(instance.EndPoint, new ElectionMessage.StartElections(), instance.InputBus); var gossip = GetInitialGossipFor(instance, _instances); Runner.Enqueue(instance.EndPoint, gossip, instance.InputBus); } var additionalProcessors = GetAdditionalProcessors(); var processors = new[] { Logger }.Union(additionalProcessors); var isGood = Runner.Run(FinishCondition, processors.ToArray()); if (!isGood) { Console.WriteLine("Unsuccessful run. Parameters:\n" + "rndSeed: {0}\n" + "maxIterCnt = {1}\n" + "instancesCnt = {2}\n" + "httpLossProbability = {3}\n" + "httpMaxDelay = {4}\n" + "timerMinDelay = {5}\n" + "timerMaxDelay = {6}\n", RndSeed, _maxIterCnt, InstancesCnt, HttpLossProbability, HttpMaxDelay, _timerMinDelay, _timerMaxDelay); } return(isGood); }
public bool Run(IRandTestFinishCondition finishCondition, params IRandTestItemProcessor[] processors) { Ensure.NotNull(finishCondition, "finishCondition"); while (++_iter <= _maxIterCnt && _queue.Count > 0) { var item = _queue.DeleteMin(); _curLogicalTime = item.LogicalTime; foreach (var processor in processors) { processor.Process(_iter, item); } finishCondition.Process(_iter, item); if (finishCondition.Done) { break; } item.Bus.Publish(item.Message); } return(finishCondition.Success); }
public bool Run() { FinishCondition = GetFinishCondition(); foreach (var instance in _instances) { Runner.Enqueue(instance.EndPoint, new SystemMessage.SystemInit(), instance.InputBus); Runner.Enqueue(instance.EndPoint, new ElectionMessage.StartElections(), instance.InputBus); var gossip = GetInitialGossipFor(instance, _instances); Runner.Enqueue(instance.EndPoint, gossip, instance.InputBus); } var additionalProcessors = GetAdditionalProcessors(); var processors = new[] { Logger }.Union(additionalProcessors); var isGood = Runner.Run(FinishCondition, processors.ToArray()); if (!isGood) { Console.WriteLine("Unsuccessfull run. Parameters:\n" + "rndSeed: {0}\n" + "maxIterCnt = {1}\n" + "instancesCnt = {2}\n" + "httpLossProbability = {3}\n" + "httpMaxDelay = {4}\n" + "timerMinDelay = {5}\n" + "timerMaxDelay = {6}\n", RndSeed, _maxIterCnt, InstancesCnt, HttpLossProbability, HttpMaxDelay, _timerMinDelay, _timerMaxDelay); } return isGood; }