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(); } }
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>(); }
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); }
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(); } }
// 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 }
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) { } }
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; } }
public void Setup() { _mockProviderSettings = new Mock <IProvideSettings>(); _appConfigSettings = new AppConfigSettingsProvider(_mockProviderSettings.Object); }