public Task <IDictionary <DateTime, IList <ISimulatedRequest> > > GetAsync(DateTime from, DateTime to)
        {
            from = from.Normalize();
            to   = to.Normalize();

            var diff  = to.Subtract(from).TotalMilliseconds;
            var delta = Random.Next(1, (int)diff);

            DateTime RandomizeDate() => from.AddMilliseconds(delta).Normalize();

            var requests = Enumerable
                           .Range(0, _numberOfRequestsToGenerate)
                           .Select(x => SimulatedRequest.Create("http://localhost", $"/test/{x}", null, "GET", RandomizeDate()))
                           .OrderBy(x => x.Created)
                           .ToList();

            var uniqueDates = requests.Select(x => x.Created).Distinct();
            var result      = new Dictionary <DateTime, ISimulatedRequest[]>();

            foreach (var request in requests)
            {
                Console.WriteLine($"[HardCodedRequestSourceService]: Added request: {request}");
            }

            foreach (var date in uniqueDates)
            {
                var match = requests.Where(x => x.Created == date).ToArray();
                Console.WriteLine($"[HardCodedRequestSourceService]: Added matching request count of {match.Length} for {date}");

                result.Add(date, match);
            }
            return(Task.FromResult(result as IDictionary <DateTime, IList <ISimulatedRequest> >));
        }
        private static IDictionary <DateTime, IList <ISimulatedRequest> > CreateResult(IMapToSimulatedRequest[] requests)
        {
            var result = new Dictionary <DateTime, IList <ISimulatedRequest> >();

            foreach (var request in requests)
            {
                var timestamp = request.TimeStamp.Normalize();
                if (!result.ContainsKey(timestamp))
                {
                    result[timestamp] = new List <ISimulatedRequest>();
                }

                result[timestamp].Add(SimulatedRequest.Create(request));
            }

            return(result);
        }
Exemplo n.º 3
0
        private async Task SendSimulatedRequest(CancellationToken cancellationToken)
        {
            var request = new SimulatedRequest
            {
                CorrelationId = Guid.NewGuid().ToString(),
                Error         = _rng.NextDouble() < _errorRate,
                Time          = _rng.Next(_minTime, _maxTime)
            };

            if (!request.Error)
            {
                request.Reply       = _rng.NextDouble() < _replyRate;
                request.Acknowledge = _rng.NextDouble() < _acknowledgementRate;
            }

            // Wait a random amount of time (0 - 10 seconds) before sending to even the calls out
            await Task.Delay(_rng.Next(10000), cancellationToken);

            await _bus.Send(request, null, cancellationToken);
        }