Esempio n. 1
0
        private static IHost CreateConfiguration <TResult>(StorageAccount storageAccount, Type programType,
                                                           IJobActivator activator, TaskCompletionSource <TResult> taskSource,
                                                           IFunctionInstanceLogger functionInstanceLogger, IExtensionRegistry extensions = null)
        {
            StorageAccountProvider storageAccountProvider = null; //  new FakeStorageAccountProvider(storageAccount); $$$

            IWebJobsExceptionHandler exceptionHandler = new TaskBackgroundExceptionHandler <TResult>(taskSource);

            return(new HostBuilder()
                   .ConfigureDefaultTestHost(b =>
            {
                b.UseHostId(Guid.NewGuid().ToString("N"))
                .AddAzureStorage();
            }, programType)
                   .ConfigureServices(services =>
            {
                // services.AddSingleton<IOptionsFactory<JobHostQueuesOptions>, FakeQueuesOptionsFactory>(); $$$ ???

                services.AddSingletonIfNotNull(storageAccountProvider);
                services.AddSingletonIfNotNull(activator);
                services.AddSingletonIfNotNull(exceptionHandler);
                services.AddSingletonIfNotNull(extensions);

                services.AddSingleton <IFunctionInstanceLoggerProvider>(new NullFunctionInstanceLoggerProvider(functionInstanceLogger));
                services.AddSingleton <IHostInstanceLoggerProvider>(new NullHostInstanceLoggerProvider());
                services.AddSingleton <IFunctionOutputLoggerProvider>(new NullFunctionOutputLoggerProvider());
            })
                   .Build());
        }
Esempio n. 2
0
        private static JobHostConfiguration CreateConfiguration <TResult>(IStorageAccount storageAccount, Type programType,
                                                                          IExtensionTypeLocator extensionTypeLocator, IJobActivator activator,
                                                                          TaskCompletionSource <TResult> taskSource, IFunctionInstanceLogger functionInstanceLogger, IExtensionRegistry extensions = null)
        {
            IStorageAccountProvider storageAccountProvider = new FakeStorageAccountProvider
            {
                StorageAccount = storageAccount
            };
            IHostIdProvider          hostIdProvider   = new FakeHostIdProvider();
            IWebJobsExceptionHandler exceptionHandler = new TaskBackgroundExceptionHandler <TResult>(taskSource);

            return(TestHelpers.NewConfig(
                       programType,
                       new FakeQueueConfiguration(storageAccountProvider),
                       storageAccountProvider,
                       extensionTypeLocator,
                       activator,
                       extensions,
                       exceptionHandler,
                       new NullFunctionInstanceLoggerProvider(functionInstanceLogger),
                       new NullHostInstanceLoggerProvider(),
                       new NullFunctionOutputLoggerProvider()
                       ));
        }
Esempio n. 3
0
        private static IServiceProvider CreateServiceProvider <TResult>(IStorageAccount storageAccount, Type programType,
                                                                        IExtensionTypeLocator extensionTypeLocator, IJobActivator activator,
                                                                        TaskCompletionSource <TResult> taskSource, IFunctionInstanceLogger functionInstanceLogger, IExtensionRegistry extensions = null)
        {
            IStorageAccountProvider storageAccountProvider = new FakeStorageAccountProvider
            {
                StorageAccount = storageAccount
            };
            IHostIdProvider          hostIdProvider     = new FakeHostIdProvider();
            INameResolver            nameResolver       = null;
            IQueueConfiguration      queueConfiguration = new FakeQueueConfiguration(storageAccountProvider);
            IWebJobsExceptionHandler exceptionHandler   =
                new TaskBackgroundExceptionHandler <TResult>(taskSource);
            ContextAccessor <IMessageEnqueuedWatcher> messageEnqueuedWatcherAccessor =
                new ContextAccessor <IMessageEnqueuedWatcher>();
            ContextAccessor <IBlobWrittenWatcher> blobWrittenWatcherAccessor =
                new ContextAccessor <IBlobWrittenWatcher>();
            ISharedContextProvider sharedContextProvider = new SharedContextProvider();

            SingletonConfiguration singletonConfig  = new SingletonConfiguration();
            TestTraceWriter        trace            = new TestTraceWriter(TraceLevel.Verbose);
            SingletonManager       singletonManager = new SingletonManager(storageAccountProvider, exceptionHandler, singletonConfig, trace, hostIdProvider);

            if (extensions == null)
            {
                extensions = new DefaultExtensionRegistry();
            }

            ITriggerBindingProvider triggerBindingProvider = DefaultTriggerBindingProvider.Create(nameResolver,
                                                                                                  storageAccountProvider, extensionTypeLocator, hostIdProvider,
                                                                                                  queueConfiguration, exceptionHandler, messageEnqueuedWatcherAccessor,
                                                                                                  blobWrittenWatcherAccessor, sharedContextProvider, extensions, singletonManager, new TestTraceWriter(TraceLevel.Verbose));
            IBindingProvider bindingProvider = DefaultBindingProvider.Create(nameResolver, storageAccountProvider,
                                                                             extensionTypeLocator, messageEnqueuedWatcherAccessor,
                                                                             blobWrittenWatcherAccessor, extensions);

            IFunctionInstanceLoggerProvider functionInstanceLoggerProvider = new NullFunctionInstanceLoggerProvider();
            IFunctionOutputLoggerProvider   functionOutputLoggerProvider   = new NullFunctionOutputLoggerProvider();
            IFunctionOutputLogger           functionOutputLogger           = functionOutputLoggerProvider.GetAsync(CancellationToken.None).Result;

            FunctionExecutor executor = new FunctionExecutor(functionInstanceLogger, functionOutputLogger, exceptionHandler, new TestTraceWriter(TraceLevel.Verbose));

            ITypeLocator          typeLocator           = new FakeTypeLocator(programType);
            FunctionIndexProvider functionIndexProvider = new FunctionIndexProvider(
                typeLocator, triggerBindingProvider, bindingProvider,
                activator, executor, extensions, singletonManager, trace);

            IJobHostContextFactory contextFactory = new FakeJobHostContextFactory
            {
                TypeLocator                    = typeLocator,
                FunctionIndexProvider          = functionIndexProvider,
                StorageAccountProvider         = storageAccountProvider,
                BackgroundExceptionDispatcher  = exceptionHandler,
                BindingProvider                = bindingProvider,
                ConsoleProvider                = new NullConsoleProvider(),
                HostInstanceLoggerProvider     = new NullHostInstanceLoggerProvider(),
                FunctionExecutor               = executor,
                FunctionInstanceLoggerProvider = functionInstanceLoggerProvider,
                FunctionOutputLoggerProvider   = functionOutputLoggerProvider,
                HostIdProvider                 = hostIdProvider,
                QueueConfiguration             = queueConfiguration
            };

            return(new FakeServiceProvider
            {
                ContextFactory = contextFactory
            });
        }