public static ITestHost CreateJobHost( IOptions <DurableTaskOptions> options, string storageProvider, Type durabilityProviderFactoryType, ILoggerProvider loggerProvider, INameResolver nameResolver, IDurableHttpMessageHandlerFactory durableHttpMessageHandler, ILifeCycleNotificationHelper lifeCycleNotificationHelper, IMessageSerializerSettingsFactory serializerSettingsFactory, Action <ITelemetry> onSend) { IHost host = new HostBuilder() .ConfigureLogging( loggingBuilder => { loggingBuilder.AddProvider(loggerProvider); }) .ConfigureWebJobs( webJobsBuilder => { webJobsBuilder.AddDurableTask(options, storageProvider, durabilityProviderFactoryType); webJobsBuilder.AddAzureStorage(); }) .ConfigureServices( serviceCollection => { ITypeLocator typeLocator = TestHelpers.GetTypeLocator(); serviceCollection.AddSingleton(typeLocator); serviceCollection.AddSingleton(nameResolver); serviceCollection.AddSingleton(durableHttpMessageHandler); if (lifeCycleNotificationHelper != null) { serviceCollection.AddSingleton(lifeCycleNotificationHelper); } if (serializerSettingsFactory != null) { serviceCollection.AddSingleton(serializerSettingsFactory); } if (onSend != null) { serviceCollection.AddSingleton <ITelemetryActivator>(serviceProvider => { var durableTaskOptions = serviceProvider.GetService <IOptions <DurableTaskOptions> >(); var telemetryActivator = new TelemetryActivator(durableTaskOptions) { OnSend = onSend, }; return(telemetryActivator); }); } }) .Build(); return(new FunctionsV2HostWrapper(host, options, nameResolver)); }
public static ITestHost CreateJobHost( IOptions <DurableTaskOptions> options, string storageProvider, Type durabilityProviderFactoryType, ILoggerProvider loggerProvider, INameResolver nameResolver, IDurableHttpMessageHandlerFactory durableHttpMessageHandler, ILifeCycleNotificationHelper lifeCycleNotificationHelper, IMessageSerializerSettingsFactory serializerSettingsFactory, Action <ITelemetry> onSend, bool addDurableClientFactory) { // 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); } IHost host = new HostBuilder() .ConfigureLogging( loggingBuilder => { loggingBuilder.AddProvider(loggerProvider); }) .ConfigureWebJobs( webJobsBuilder => { if (addDurableClientFactory) { webJobsBuilder.AddDurableClientFactoryDurableTask(options); } else { webJobsBuilder.AddDurableTask(options, storageProvider, durabilityProviderFactoryType); } webJobsBuilder.AddAzureStorage(); }) .ConfigureServices( serviceCollection => { ITypeLocator typeLocator = TestHelpers.GetTypeLocator(); serviceCollection.AddSingleton(typeLocator); serviceCollection.AddSingleton(nameResolver); serviceCollection.AddSingleton(durableHttpMessageHandler); if (lifeCycleNotificationHelper != null) { serviceCollection.AddSingleton(lifeCycleNotificationHelper); } if (serializerSettingsFactory != null) { serviceCollection.AddSingleton(serializerSettingsFactory); } if (onSend != null) { serviceCollection.AddSingleton <ITelemetryActivator>(serviceProvider => { var durableTaskOptions = serviceProvider.GetService <IOptions <DurableTaskOptions> >(); var telemetryActivator = new TelemetryActivator(durableTaskOptions) { OnSend = onSend, }; return(telemetryActivator); }); } }) .Build(); return(new FunctionsV2HostWrapper(host, options, nameResolver)); }