예제 #1
0
        private static void Main(string[] args)
        {
            var configuration = SimulatorConfiguration.GetCurrentConfiguration();

            var instrumentationPublisher =
                new SenderInstrumentationManager(instrumentationEnabled: true, installInstrumentation: true)
                .CreatePublisher("Console");

            var carEmulator = new SimulationProfile("Console", 1, instrumentationPublisher, configuration);

            var options = SimulationScenarios
                          .AllScenarios
                          .ToDictionary(
                scenario => "Run " + scenario,
                scenario => (Func <CancellationToken, Task>)(token => carEmulator.RunEmulationAsync(scenario, token)));

            // Add Single shot
            foreach (var scenario in SimulationScenarios.AllScenarios)
            {
                var name = scenario;
                options.Add(
                    "Send 1 message from " + name,
                    token => carEmulator.RunOneMessageEmulationAsync(name, token)
                    );
            }

            ConsoleHost.WithOptions(options, configuration.ScenarioDuration);
        }
예제 #2
0
        public override bool OnStart()
        {
            try
            {
                ServicePointManager.DefaultConnectionLimit = int.MaxValue;

                // We obtain the number of instance running this role and pass it along
                // to the simulation profile. Note that we are not supporting runtime
                // changing in the number of instances. Adding new instances at runtime will
                // increase the number of cars beyond the number specified in the configuration.
                var instanceCount = RoleEnvironment.CurrentRoleInstance.Role.Instances.Count;

                // Obtain the simulation configuration and generate a simulation profile.  Set up
                // the cancellation token to terminate the simulation after the configured duration
                var configuration = SimulatorConfiguration.GetCurrentConfiguration();

                _scenario = string.IsNullOrEmpty(configuration.Scenario)
                    ? SimulationScenarios.DefaultScenario()
                    : configuration.Scenario;

                var instrumentationPublisher =
                    new SenderInstrumentationManager(instrumentationEnabled: true, installInstrumentation: false)
                    .CreatePublisher("WaWorkerHost");

                var hostName = ConfigurationHelper.SourceName;

                _simulationProfile = new SimulationProfile(
                    hostName,
                    instanceCount,
                    instrumentationPublisher,
                    configuration);

                _cancellationTokenSource.CancelAfter(configuration.ScenarioDuration);

                Logger.WorkerRoleStartedWith(configuration);
            }
            catch (Exception ex)
            {
                // Hard error on startup, usually configuration or security related
                // Ensure that we log this error, including a direct post to the local
                // event log
                LogHelpers.HandleRoleException(Logger, "OnStart()", ex);
                throw;
            }

            return(base.OnStart());
        }
예제 #3
0
        private static void Main(string[] args)
        {
            var observableEventListener = new ObservableEventListener();

            var configuration = SimulatorConfiguration.GetCurrentConfiguration();

            observableEventListener.EnableEvents(ScenarioSimulatorEventSource.Log, configuration.GetLogLevel());

            observableEventListener.LogToConsole();

            var hostName = ConfigurationHelper.SourceName;

            _deviceSimulator = new SimulationProfile(hostName, configuration);

            // check for scenario specified on the command line
            if (args.Length > 0)
            {
                var scenario = args.Contains("/default", StringComparer.OrdinalIgnoreCase)
                    ? SimulationScenarios.DefaultScenario()
                    : args.First(x => !x.StartsWith("/", StringComparison.Ordinal));

                var ct = args.Contains("/webjob", StringComparer.OrdinalIgnoreCase)
                    ? GetWebJobCancellationToken()
                    : CancellationToken.None;

                ProvisionDevicesAsync(ct).Wait();

                _deviceSimulator.RunSimulationAsync(scenario, ct).Wait();

                return;
            }

            var options = new Dictionary <string, Func <CancellationToken, Task> >();

            options.Add("Provision Devices", ProvisionDevicesAsync);

            // no command line arguments, so prompt with a menu.
            foreach (var scenario in SimulationScenarios.AllScenarios)
            {
                options.Add("Run " + scenario, (Func <CancellationToken, Task>)(token => _deviceSimulator.RunSimulationAsync(scenario, token)));
            }

            //options.Add("Deprovision Devices", DeprovisionDevicesAsync);

            Tests.Common.ConsoleHost.RunWithOptionsAsync(options).Wait();
        }
예제 #4
0
        private static void Main(string[] args)
        {
            var observableEventListener = new ObservableEventListener();

            var configuration = SimulatorConfiguration.GetCurrentConfiguration();

            observableEventListener.EnableEvents(ScenarioSimulatorEventSource.Log, configuration.GetLogLevel());

            observableEventListener.LogToConsole();

            var hostName = ConfigurationHelper.SourceName;

            _deviceSimulator = new SimulationProfile(hostName, configuration);

            // check for scenario specified on the command line
            if (args.Length > 0)
            {
                var scenario = args.Contains("/default", StringComparer.OrdinalIgnoreCase)
                    ? SimulationScenarios.DefaultScenario()
                    : args.First(x => !x.StartsWith("/",StringComparison.Ordinal));

                var ct = args.Contains("/webjob", StringComparer.OrdinalIgnoreCase)
                    ? GetWebJobCancellationToken()
                    : CancellationToken.None;

                ProvisionDevicesAsync(ct).Wait();

                _deviceSimulator.RunSimulationAsync(scenario, ct).Wait();

                return;
            }

            var options = new Dictionary<string, Func<CancellationToken, Task>>();

            options.Add("Provision Devices", ProvisionDevicesAsync);

            // no command line arguments, so prompt with a menu.
            foreach (var scenario in SimulationScenarios.AllScenarios)
            {
                options.Add("Run " + scenario, (Func<CancellationToken, Task>)(token => _deviceSimulator.RunSimulationAsync(scenario, token)));
            }

            //options.Add("Deprovision Devices", DeprovisionDevicesAsync);

            Tests.Common.ConsoleHost.RunWithOptionsAsync(options).Wait();
        }
예제 #5
0
        public override bool OnStart()
        {
            try
            {
                var configuration = SimulatorConfiguration.GetCurrentConfiguration();
                var hostName      = ConfigurationHelper.SourceName;
                _deviceSimulator = new SimulationProfile(hostName, configuration);

                _deviceSimulator.ProvisionDevices(true);

                return(base.OnStart());
            }
            catch (Exception ex)
            {
                Trace.TraceError(ex.ToString());

                throw;
            }
        }
예제 #6
0
        public override bool OnStart()
        {
            try
            {
                var configuration = SimulatorConfiguration.GetCurrentConfiguration();
                var hostName = ConfigurationHelper.SourceName;
                _deviceSimulator = new SimulationProfile(hostName, configuration);  
                
                _deviceSimulator.ProvisionDevices(true);

                return base.OnStart();
            }
            catch (Exception ex)
            {
                Trace.TraceError(ex.ToString());

                throw;
            }
        }
예제 #7
0
        private static async Task MainAsync(string[] args)
        {
            var observableEventListener = new ObservableEventListener();

            var configuration = SimulatorConfiguration.GetCurrentConfiguration();

            observableEventListener.EnableEvents(ScenarioSimulatorEventSource.Log, configuration.EventLevel);

            observableEventListener.LogToConsole();

            var deviceSimulator = new SimulationProfile("Console", 1, configuration);

            // check for scenario specified on the command line
            if (args.Length > 0)
            {
                var scenario = args.Contains("/default", StringComparer.OrdinalIgnoreCase)
                    ? SimulationScenarios.DefaultScenario()
                    : args.First(x => !x.StartsWith("/"));

                var ct = args.Contains("/webjob", StringComparer.OrdinalIgnoreCase)
                    ? GetWebJobCancellationToken()
                    : CancellationToken.None;

                await deviceSimulator.RunSimulationAsync(scenario, ct);
                return;
            }

            // no command line arguments, so prompt with a menu
            var options = SimulationScenarios
                .AllScenarios
                .ToDictionary(
                    scenario => "Run " + scenario,
                    scenario => (Func<CancellationToken, Task>)(token => deviceSimulator.RunSimulationAsync(scenario, token)));

            await Tests.Common.ConsoleHost.RunWithOptionsAsync(options);
        }