public void DefaultWorkerId_IsMachineName() { var connectionStringResolver = new TestConnectionStringResolver(); var mockOptions = new OptionsWrapper <DurableTaskOptions>(new DurableTaskOptions()); var nameResolver = new Mock <INameResolver>().Object; var factory = new AzureStorageDurabilityProviderFactory( mockOptions, connectionStringResolver, nameResolver, NullLoggerFactory.Instance, TestHelpers.GetMockPlatformInformationService()); var settings = factory.GetAzureStorageOrchestrationServiceSettings(); Assert.Equal(Environment.MachineName, settings.WorkerId); }
public void EnvironmentIsVMSS_WorkerIdFromEnvironmentVariables() { var connectionStringResolver = new TestConnectionStringResolver(); var mockOptions = new OptionsWrapper <DurableTaskOptions>(new DurableTaskOptions()); var nameResolver = new SimpleNameResolver(new Dictionary <string, string>() { { "WEBSITE_CURRENT_STAMPNAME", "waws-prod-euapbn1-003" }, { "RoleInstanceId", "dw0SmallDedicatedWebWorkerRole_hr0HostRole-3-VM-13" }, }); var factory = new AzureStorageDurabilityProviderFactory(mockOptions, connectionStringResolver, nameResolver); var settings = factory.GetAzureStorageOrchestrationServiceSettings(); Assert.Equal("waws-prod-euapbn1-003:dw0SmallDedicatedWebWorkerRole_hr0HostRole-3-VM-13", settings.WorkerId); }
private static DurableTaskExtension GetDurableTaskConfig() { var options = new DurableTaskOptions(); options.HubName = "DurableTaskHub"; options.NotificationUrl = new Uri("https://sampleurl.net"); var wrappedOptions = new OptionsWrapper <DurableTaskOptions>(options); var connectionStringResolver = new TestConnectionStringResolver(); var serviceFactory = new AzureStorageDurabilityProviderFactory(wrappedOptions, connectionStringResolver); return(new DurableTaskExtension( wrappedOptions, new LoggerFactory(), TestHelpers.GetTestNameResolver(), serviceFactory, new DurableHttpMessageHandlerFactory())); }
public static JobHost CreateJobHost( IOptions <DurableTaskOptions> options, string storageProvider, ILoggerProvider loggerProvider, INameResolver nameResolver, IDurableHttpMessageHandlerFactory durableHttpMessageHandler, ILifeCycleNotificationHelper lifeCycleNotificationHelper, IMessageSerializerSettingsFactory serializerSettings) { var config = new JobHostConfiguration { HostId = "durable-task-host" }; config.TypeLocator = TestHelpers.GetTypeLocator(); var connectionResolver = new WebJobsConnectionStringProvider(); var loggerFactory = new LoggerFactory(); loggerFactory.AddProvider(loggerProvider); IDurabilityProviderFactory orchestrationServiceFactory = new AzureStorageDurabilityProviderFactory(options, connectionResolver); var extension = new DurableTaskExtension(options, loggerFactory, nameResolver, orchestrationServiceFactory, durableHttpMessageHandler, lifeCycleNotificationHelper, serializerSettings); config.UseDurableTask(extension); // Mock INameResolver for not setting EnvironmentVariables. if (nameResolver != null) { config.AddService(nameResolver); } // Performance is *significantly* worse when dashboard logging is enabled, at least // when running in the storage emulator. Disabling to keep tests running quickly. config.DashboardConnectionString = null; // Add test logger config.LoggerFactory = loggerFactory; var host = new JobHost(config); return(host); }
public void ConsumptionDefaultsForPythonAreApplied() { var connectionStringResolver = new TestConnectionStringResolver(); var mockOptions = new OptionsWrapper <DurableTaskOptions>(new DurableTaskOptions()); var nameResolver = new Mock <INameResolver>().Object; var factory = new AzureStorageDurabilityProviderFactory( mockOptions, connectionStringResolver, nameResolver, NullLoggerFactory.Instance, TestHelpers.GetMockPlatformInformationService(inConsumption: true, isPython: true)); var settings = factory.GetAzureStorageOrchestrationServiceSettings(); Assert.Equal(32, settings.ControlQueueBufferThreshold); Assert.Equal(5, settings.MaxConcurrentTaskOrchestrationWorkItems); Assert.Equal(10, settings.MaxConcurrentTaskActivityWorkItems); Assert.Equal(25, settings.MaxStorageOperationConcurrency); }
public void ConsumptionDefaultsAreNotAlwaysApplied() { var connectionStringResolver = new TestConnectionStringResolver(); var mockOptions = new OptionsWrapper <DurableTaskOptions>(new DurableTaskOptions()); var nameResolver = new Mock <INameResolver>().Object; var factory = new AzureStorageDurabilityProviderFactory( mockOptions, connectionStringResolver, nameResolver, NullLoggerFactory.Instance, TestHelpers.GetMockPlatformInformationService(inConsumption: false)); var settings = factory.GetAzureStorageOrchestrationServiceSettings(); // We want to make sure that the consumption defaults (listed below) // aren't applied on non-consumption plans. Assert.NotEqual(32, settings.ControlQueueBufferThreshold); Assert.NotEqual(5, settings.MaxConcurrentTaskOrchestrationWorkItems); Assert.NotEqual(10, settings.MaxConcurrentTaskActivityWorkItems); Assert.NotEqual(25, settings.MaxStorageOperationConcurrency); }
public static ITestHost CreateJobHost( IOptions <DurableTaskOptions> options, string storageProvider, ILoggerProvider loggerProvider, INameResolver nameResolver, IDurableHttpMessageHandlerFactory durableHttpMessageHandler, ILifeCycleNotificationHelper lifeCycleNotificationHelper, IMessageSerializerSettingsFactory serializerSettingsFactory, IApplicationLifetimeWrapper shutdownNotificationService = null, Action <ITelemetry> onSend = null, #pragma warning disable CS0612 // Type or member is obsolete IPlatformInformationService platformInformationService = null) #pragma warning restore CS0612 // Type or member is obsolete { var config = new JobHostConfiguration { HostId = "durable-task-host" }; config.TypeLocator = TestHelpers.GetTypeLocator(); var connectionResolver = new WebJobsConnectionStringProvider(); var loggerFactory = new LoggerFactory(); loggerFactory.AddProvider(loggerProvider); // Unless otherwise specified, use legacy partition management for tests as it makes the task hubs start up faster. // These tests run on a single task hub workers, so they don't test partition management anyways, and that is tested // in the DTFx repo. if (!options.Value.StorageProvider.ContainsKey(nameof(AzureStorageOptions.UseLegacyPartitionManagement))) { options.Value.StorageProvider.Add(nameof(AzureStorageOptions.UseLegacyPartitionManagement), true); } platformInformationService = platformInformationService ?? TestHelpers.GetMockPlatformInformationService(); IDurabilityProviderFactory orchestrationServiceFactory = new AzureStorageDurabilityProviderFactory( options, connectionResolver, nameResolver, loggerFactory, platformInformationService); var extension = new DurableTaskExtension( options, loggerFactory, nameResolver, new[] { orchestrationServiceFactory }, shutdownNotificationService ?? new TestHostShutdownNotificationService(), durableHttpMessageHandler, lifeCycleNotificationHelper, serializerSettingsFactory, platformInformationService); config.UseDurableTask(extension); // Mock INameResolver for not setting EnvironmentVariables. if (nameResolver != null) { config.AddService(nameResolver); } // Performance is *significantly* worse when dashboard logging is enabled, at least // when running in the storage emulator. Disabling to keep tests running quickly. config.DashboardConnectionString = null; // Add test logger config.LoggerFactory = loggerFactory; var host = new JobHost(config); return(new FunctionsV1HostWrapper(host, options, connectionResolver)); }