Пример #1
0
        public async Task RunOneMessageEmulationAsync(string scenarioName, CancellationToken token)
        {
            Logger.SimulationStarted(_hostName, scenarioName);

            var produceMessagesForScenario = SimulationScenarios.GetScenarioByName(scenarioName);

            var messagingFactory = MessagingFactory
                .CreateFromConnectionString(_simulatorConfiguration.EventHubConnectionString);

            var messageSender = new MessageSender(
                        messagingFactory: messagingFactory,
                        config: _simulatorConfiguration,
                        serializer: Serializer.ToJsonUTF8,
                        telemetryPublisher: _instrumentationPublisher
                    );
            try
            {
                var scenario = produceMessagesForScenario();
                var car = new Car("Single Message Car", scenario, messageSender.SendAsync);
                await car.RunOneMessageSimulationAsync(token);
            }
            finally
            {
                messagingFactory.Close();
            }

            Logger.SimulationEnded(_hostName);
        }
Пример #2
0
        private static async Task SimulateCarAsync(
            string deviceId,
            Func<MessagingEntry[]> produceMessagesForScenario,
            Func<string, object, Task<bool>> sendMessageAsync,
            TimeSpan waitBeforeStarting,
            IObserver<int> totalCount,
            CancellationToken token)
        {
            Logger.WarmingUpFor(deviceId, waitBeforeStarting);

            try
            {
                await Task.Delay(waitBeforeStarting, token);
            }
            catch (TaskCanceledException)
            {
                return;
            }

            var messagingEntries = produceMessagesForScenario();
            var car = new Car(deviceId, messagingEntries, sendMessageAsync);

            car.ObservableEventCount
                .Sum()
                .Subscribe(total => Logger.Info("final count for {0} was {1}", deviceId, total));

            car.ObservableEventCount
                .Subscribe(totalCount.OnNext);

            await car.RunSimulationAsync(token);
        }