public void AndSettingValueIsNull_ThenThrowException()
        {
            var settingKey = "MyBadSetting";
            var sut        = new AppConfigSettingsProvider(new PropertiesSettingsProvider());

            sut.GetNullableSetting(settingKey).Should().BeNull();
        }
        static void Main(string[] args)
        {
            // optimizing IOCP performance
            int minWorkerThreads;
            int minCompletionPortThreads;

            ThreadPool.GetMinThreads(out minWorkerThreads, out minCompletionPortThreads);
            ThreadPool.SetMinThreads(minWorkerThreads, Math.Max(16, minCompletionPortThreads));

            int threadCount = Environment.ProcessorCount;

            if (args.Length > 0)
            {
                threadCount = int.Parse(args[0]);
            }

            var eventListener = new ObservableEventListener();

            eventListener.LogToConsole();
            eventListener.EnableEvents(BootstrapperEventSource.Log, EventLevel.Verbose);
            eventListener.EnableEvents(MqttIotHubAdapterEventSource.Log, EventLevel.Verbose);
            eventListener.EnableEvents(ChannelEventSource.Log, EventLevel.Verbose);
            eventListener.EnableEvents(BootstrapEventSource.Log, EventLevel.Verbose);
            eventListener.EnableEvents(ExecutorEventSource.Log, EventLevel.Verbose);
            eventListener.EnableEvents(MqttEventSource.Log, EventLevel.Verbose);

            try
            {
                var cts = new CancellationTokenSource();

                var certificate      = new X509Certificate2("protocol-gateway.contoso.com.pfx", "password");
                var settingsProvider = new AppConfigSettingsProvider();
                BlobSessionStatePersistenceProvider blobSessionStateProvider = BlobSessionStatePersistenceProvider.CreateAsync(
                    settingsProvider.GetSetting("BlobSessionStatePersistenceProvider.StorageConnectionString"),
                    settingsProvider.GetSetting("BlobSessionStatePersistenceProvider.StorageContainerName")).Result;

                TableQos2StatePersistenceProvider tableQos2StateProvider = TableQos2StatePersistenceProvider.CreateAsync(
                    settingsProvider.GetSetting("TableQos2StatePersistenceProvider.StorageConnectionString"),
                    settingsProvider.GetSetting("TableQos2StatePersistenceProvider.StorageTableName")).Result;

                var bootstrapper = new Bootstrapper(settingsProvider, blobSessionStateProvider, tableQos2StateProvider);
                Task.Run(() => bootstrapper.RunAsync(certificate, threadCount, cts.Token), cts.Token);

                while (true)
                {
                    string input = Console.ReadLine();
                    if (input != null && input.ToLowerInvariant() == "exit")
                    {
                        break;
                    }
                }

                cts.Cancel();
                bootstrapper.CloseCompletion.Wait(TimeSpan.FromSeconds(20));
            }
            finally
            {
                eventListener.Dispose();
            }
        }
Esempio n. 3
0
        static void BootstrapTcpServers()
        {
            int minWorkerThreads;
            int minCompletionPortThreads;

            ThreadPool.GetMinThreads(out minWorkerThreads, out minCompletionPortThreads);
            ThreadPool.SetMinThreads(minWorkerThreads, Math.Max(16, minCompletionPortThreads));

            int procCount         = Environment.ProcessorCount;
            int tlsThreadCount    = procCount / 2;
            int nonTlsThreadCount = (procCount - tlsThreadCount) > 0 ? (procCount - tlsThreadCount) : 1;

            //var eventListener = new ObservableEventListener();
            //eventListener.LogToConsole();
            //eventListener.EnableEvents(BootstrapperEventSource.Log, EventLevel.Verbose);
            //eventListener.EnableEvents(DefaultEventSource.Log, EventLevel.Verbose);

            CancellationTokenSource cts1            = null;
            CancellationTokenSource cts2            = null;
            SecureBootstrapper      tlsBootstrapper = null;

            Bootstrapper.Bootstrapper nonTlsBootstrapper = null;
            try
            {
                cts1 = new CancellationTokenSource();
                cts2 = new CancellationTokenSource();
                IDeviceCredentialProvider deviceSasTokenProvider1 = new InMemoryDeviceCredentialProvider();
                IDeviceCredentialProvider deviceSasTokenProvider2 = new InMemoryDeviceCredentialProvider();
                var settingsProvider1 = new AppConfigSettingsProvider();
                var settingsProvider2 = new AppConfigSettingsProvider();

                nonTlsBootstrapper = new Bootstrapper.Bootstrapper(settingsProvider1, deviceSasTokenProvider1);
                tlsBootstrapper    = new SecureBootstrapper(settingsProvider2, deviceSasTokenProvider2);

                Task.Run(() => nonTlsBootstrapper.RunAsync(nonTlsThreadCount, cts1.Token), cts1.Token);
                Task.Run(() => tlsBootstrapper.RunAsync(new X509Certificate2("protocol-gateway.contoso.com.pfx", "password"), tlsThreadCount, cts2.Token), cts2.Token);


                while (true)
                {
                    string input = Console.ReadLine();
                    if (input != null && input.ToLowerInvariant() == "exit")
                    {
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
            finally
            {
                cts1.Cancel();
                cts2.Cancel();
                tlsBootstrapper.CloseCompletion.Wait(TimeSpan.FromSeconds(20));
                nonTlsBootstrapper.CloseCompletion.Wait(TimeSpan.FromSeconds(20));
            }
        }
        public void AndSettingValueIsNull_ThenThrowException()
        {
            var settingKey = "MyBadSetting";
            var sut        = new AppConfigSettingsProvider(new PropertiesSettingsProvider());

            Action act = () => sut.GetSetting(settingKey);

            act.ShouldThrow <ConfigurationErrorsException>();
        }
Esempio n. 5
0
File: Program.cs Progetto: JHinW/SF
        private static void ConfigureSerilog()
        {
            var settings = new AppConfigSettingsProvider();
            var config   = new LoggerConfiguration();

            config     = ConfigureForElasticSearch(config, settings.GetSettingValue("LogElasticSearchUri"), settings.GetSettingValue("LogElasticSearchUserName"), settings.GetSettingValue("LogElasticSearchPassword"));
            config     = EnrichWithProperty(config, "Environment", settings.GetSettingValue("Environment"));
            config     = EnrichWithProperty(config, "NodeName", FabricRuntime.GetNodeContext().NodeName);
            config     = EnrichWithProperty(config, "MachineName", Environment.MachineName);
            Log.Logger = config.CreateLogger();
        }
        public void ThenReturnSettingValue()
        {
            var settingKey   = "MySetting";
            var settingValue = "hello world";
            var sut          = new AppConfigSettingsProvider(new PropertiesSettingsProvider());

            Properties.Settings.Default[settingKey] = settingValue;

            var setting = sut.GetNullableSetting(settingKey);

            setting.Should().Be(settingValue);
        }
Esempio n. 7
0
        static void Main(string[] args)
        {
            int threadCount = Environment.ProcessorCount;

            if (args.Length > 0)
            {
                threadCount = int.Parse(args[0]);
            }

            var eventListener = new ConsoleEventListener();

            eventListener.EnableEvents(BootstrapperEventSource.Log, EventLevel.Verbose);
            eventListener.EnableEvents(CommonEventSource.Log, EventLevel.Verbose);
            eventListener.EnableEvents(DefaultEventSource.Log, EventLevel.Verbose);

            try
            {
                var cts = new CancellationTokenSource();

                var certificate      = new X509Certificate2(Path.Combine(AppContext.BaseDirectory, "protocol-gateway.contoso.com.pfx"), "password");
                var settingsProvider = new AppConfigSettingsProvider();
                ISessionStatePersistenceProvider sessionStateProvider = new TransientSessionStatePersistenceProvider();

                var bootstrapper = new Bootstrapper(settingsProvider, sessionStateProvider, null);
                Task.Run(() => bootstrapper.RunAsync(certificate, threadCount, cts.Token), cts.Token);

                while (true)
                {
                    string input = Console.ReadLine();
                    if (input != null && input.ToLowerInvariant() == "exit")
                    {
                        break;
                    }
                }

                cts.Cancel();
                bootstrapper.CloseCompletion.Wait(TimeSpan.FromSeconds(20));
            }
            finally
            {
                eventListener.Dispose();
            }
        }
Esempio n. 8
0
        // Resource: https://github.com/NancyFx/Nancy/wiki/Hosting-Nancy-with-Nginx-on-Ubuntu
        // ReSharper disable once UnusedParameter.Local maybe later.
        private static void Main(string[] args)
        {
            var settingsProvider = new AppConfigSettingsProvider();
            var uri = settingsProvider.GetAppSetting(GlobalModule.SettingBaseAddress);

            Console.WriteLine("Starting Nancy Host on " + uri);
            var configuration = new HostConfiguration
            {
                UrlReservations = new UrlReservations {
                    CreateAutomatically = true
                }
            };
            // initialize an instance of NancyHost
            var host = new NancyHost(new Uri(uri), new Bootstrapper(), configuration);

            host.Start();  // start hosting

            // check if we're running on mono
            if (Type.GetType("Mono.Runtime") != null)
            {
                Console.WriteLine("Running on Mono");
                var p = (int)Environment.OSVersion.Platform;
                if ((p == 4) || (p == 6) || (p == 128))
                {
                    Console.WriteLine("Running on Unix Like System");
                    WaitForTerminationOnUnix();
                }
                else
                {
                    Console.WriteLine("Running on Windows");
                    WaitForTerminationOnWindows();
                }
            }
            else
            {
                Console.WriteLine("Running on .Net");
                WaitForTerminationOnWindows();
            }

            Console.WriteLine("Stopping Nancy Host");
            host.Stop();  // stop hosting
        }
Esempio n. 9
0
        static void BootstrapTcpServer()
        {
            int minWorkerThreads;
            int minCompletionPortThreads;

            ThreadPool.GetMinThreads(out minWorkerThreads, out minCompletionPortThreads);
            ThreadPool.SetMinThreads(minWorkerThreads, Math.Max(16, minCompletionPortThreads));

            int threadCount = Environment.ProcessorCount;

            try
            {
                var cts = new CancellationTokenSource();

                var certificate      = new X509Certificate2("protocol-gateway.contoso.com.pfx", "password");
                var settingsProvider = new AppConfigSettingsProvider();
                BlobSessionStatePersistenceProvider blobSessionStateProvider = BlobSessionStatePersistenceProvider.CreateAsync(
                    settingsProvider.GetSetting("BlobSessionStatePersistenceProvider.StorageConnectionString"),
                    settingsProvider.GetSetting("BlobSessionStatePersistenceProvider.StorageContainerName")).Result;


                var bootstrapper = new Bootstrapper(settingsProvider, blobSessionStateProvider);
                Task.Run(() => bootstrapper.RunAsync(certificate, threadCount, cts.Token, ValidateClientCertificate), cts.Token);

                while (true)
                {
                    string input = Console.ReadLine();
                    if (input != null && input.ToLowerInvariant() == "exit")
                    {
                        break;
                    }
                }

                cts.Cancel();
                bootstrapper.CloseCompletion.Wait(TimeSpan.FromSeconds(20));
            }
            catch (Exception ex)
            {
            }
        }
Esempio n. 10
0
        protected override async Task RunAsync(CancellationToken cancellationToken)
        {
            try
            {
                Log.Information("ProcessorSvc.RunAsync started. InstanceId={InstanceId}, PartitionId={PartitionId}, NodeId={NodeId}, NodeName={NodeName}", Context?.InstanceId, Context?.PartitionId, Context?.NodeContext?.NodeId, Context?.NodeContext?.NodeName);

                var settings = new AppConfigSettingsProvider();

                // Load input settings.
                var hostName                 = Guid.NewGuid().ToString();
                var eventHubPath             = settings.GetSettingValue("InputEventHubName");
                var eventHubConnectionString = settings.GetSettingValue("InputEventHubConnectionString");
                var eventProcessorStorageConnectionString = settings.GetSettingValue("EventProcessorStorageConnectionString");
                var eventProcessorLeaseContainerName      = settings.GetSettingValue("EventProcessorStorageLeaseContainer");
                var consumerGroupName    = settings.GetSettingValue("EventProcessorConsumerGroupName");
                var awsConsumerGroupName = settings.GetSettingValue("AwsEventProcessorConsumerGroupName");

                // kusto specfic

                var kustoConsumerGroupName           = settings.GetSettingValue("KustoConsumerGroupName");
                var kustoTelemetryServiceEndpoint    = settings.GetSettingValue("KustoTelemetryServiceEndpoint");
                var kustoInstrumentationKey          = settings.GetSettingValue("KustoInstrumentationKey");
                var kustoStorageAccountKeys          = settings.GetSettingValue("KustoStorageAccountKeys");
                var kustoBaseContainerName           = settings.GetSettingValue("KustoBaseContainerName");
                var kustoBlobMemoryBufferSizeInBytes = long.Parse(settings.GetSettingValue("KustoBlobMemoryBufferSizeInBytes"));
                var kustoCompressBlobs = bool.Parse(settings.GetSettingValue("KustoCompressBlobs"));

                Dictionary <string, Guid> schemaInfo = new Dictionary <string, Guid>();
                //schemaInfo.Add("Log", Guid.Parse(settings.GetSettingValue("KustoLogSchemaId")));
                //schemaInfo.Add("Interactions", Guid.Parse(settings.GetSettingValue("KustoInteractionsSchemaId")));

                var host = new EventProcessorHost(
                    hostName: hostName,
                    eventHubPath: eventHubPath,
                    consumerGroupName: consumerGroupName,
                    eventHubConnectionString: eventHubConnectionString,
                    storageConnectionString: eventProcessorStorageConnectionString,
                    leaseContainerName: eventProcessorLeaseContainerName);

                var awsHost = new EventProcessorHost(
                    hostName: hostName,
                    eventHubPath: eventHubPath,
                    consumerGroupName: awsConsumerGroupName,
                    eventHubConnectionString: eventHubConnectionString,
                    storageConnectionString: eventProcessorStorageConnectionString,
                    leaseContainerName: eventProcessorLeaseContainerName);

                var kustoHost = new EventProcessorHost(
                    hostName: hostName,
                    eventHubPath: eventHubPath,
                    consumerGroupName: kustoConsumerGroupName,
                    eventHubConnectionString: eventHubConnectionString,
                    storageConnectionString: eventProcessorStorageConnectionString,
                    leaseContainerName: eventProcessorLeaseContainerName);

                var options = new EventProcessorOptions()
                {
                    InitialOffsetProvider = partitionId => DateTime.UtcNow,
                    InvokeProcessorAfterReceiveTimeout = false,
                    PrefetchCount  = 5000,
                    MaxBatchSize   = 500,
                    ReceiveTimeOut = TimeSpan.FromSeconds(60),
                };

                var kustoOptions = new EventProcessorOptions()
                {
                    // TODO: reset back to utc now
                    // for now set time to 3 hours ago to see how long it takes to catch up

                    InitialOffsetProvider = partitionId => DateTime.UtcNow.AddHours(-3),
                    InvokeProcessorAfterReceiveTimeout = false,
                    PrefetchCount  = 50000,
                    MaxBatchSize   = 10000,
                    ReceiveTimeOut = TimeSpan.FromSeconds(120),
                };

                // Log exceptions received.
                options.ExceptionReceived      += (sender, e) => e.Exception.LogException("ProcessorSvc.ExceptionReceived", AdditionalLogProperties);
                kustoOptions.ExceptionReceived += (sender, e) => e.Exception.LogException("ProcessorSvc.ExceptionReceived", AdditionalLogProperties);

                // Load output settings.
                var esUri      = new Uri(settings.GetSettingValue("OutputElasticSearchUri"));
                var esUserName = settings.GetSettingValue("OutputElasticSearchUsername");
                var esPassword = settings.GetSettingValue("OutputElasticSearchPassword");

                /*
                 *              var awsEsUri = new Uri(settings.GetSettingValue("AWSElasticSearchUri"));
                 *              var awsEsUserName = settings.GetSettingValue("AWSElasticSearchUsername");
                 *              var awsEsPassword = settings.GetSettingValue("AWSElasticSearchPassword");
                 */

                var factory = new EsSinkEventProcessorFactory(esUri, esUserName, esPassword);

                /*var awsEsSink = new EsSinkEventProcessorFactory(awsEsUri, awsEsUserName, awsEsPassword);
                 * var kustoFactory = new KustoSinkEventProcessorFactory(kustoStorageAccountKeys,
                 * kustoTelemetryServiceEndpoint, kustoInstrumentationKey, true, schemaInfo, kustoBaseContainerName, kustoBlobMemoryBufferSizeInBytes, kustoCompressBlobs);
                 */

                // Register the event processor.
                await host.RegisterEventProcessorFactoryAsync(factory, options);

                //await awsHost.RegisterEventProcessorFactoryAsync(awsEsSink, options);
                //await kustoHost.RegisterEventProcessorFactoryAsync(kustoFactory, kustoOptions);

                cancellationToken.Register(() =>
                {
                    Log.Information("ProcessorSvc.RunAsync stopped. InstanceId={InstanceId}, PartitionId={PartitionId}, NodeId={NodeId}, NodeName={NodeName}", Context?.InstanceId, Context?.PartitionId, Context?.NodeContext?.NodeId, Context?.NodeContext?.NodeName);
                    host.UnregisterEventProcessorAsync().GetAwaiter().GetResult();
                    //awsHost.UnregisterEventProcessorAsync().GetAwaiter().GetResult();
                    //kustoHost.UnregisterEventProcessorAsync().GetAwaiter().GetResult();
                });
            }
            catch (Exception e)
            {
                e.LogException("ProcessorSvc.RunAsync", AdditionalLogProperties);
                throw;
            }
        }
Esempio n. 11
0
 public void Setup()
 {
     _mockProviderSettings = new Mock <IProvideSettings>();
     _appConfigSettings    = new AppConfigSettingsProvider(_mockProviderSettings.Object);
 }