public EventHubTriggerAttributeBindingProviderTests() { var configuration = ConfigurationUtilities.CreateConfiguration( new KeyValuePair <string, string>("connection", "Endpoint=sb://test.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abc123=;"), new KeyValuePair <string, string>("Storage", "Endpoint=sb://test.blob.core.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abc123=")); var options = new EventHubOptions(); Mock <IConverterManager> convertManager = new Mock <IConverterManager>(MockBehavior.Default); // mock the BlobServiceClient and BlobContainerClient which are used for the checkpointing var blobServiceClient = new Mock <BlobServiceClient>(); blobServiceClient.Setup(client => client.GetBlobContainerClient(It.IsAny <string>())) .Returns(Mock.Of <BlobContainerClient>()); var componentFactory = new Mock <AzureComponentFactory>(); componentFactory.Setup( factory => factory.CreateClient( typeof(BlobServiceClient), It.IsAny <IConfiguration>(), It.IsAny <TokenCredential>(), It.IsAny <BlobClientOptions>())).Returns(blobServiceClient.Object); var factory = ConfigurationUtilities.CreateFactory(configuration, options, componentFactory.Object); _provider = new EventHubTriggerAttributeBindingProvider(convertManager.Object, Options.Create(options), NullLoggerFactory.Instance, factory); }
public void Initialize_PerformsExpectedRegistrations() { JobHostConfiguration config = new JobHostConfiguration(); config.AddService <INameResolver>(new RandomNameResolver()); TestLoggerProvider loggerProvider = new TestLoggerProvider(); ILoggerFactory loggerFactory = new LoggerFactory(); loggerFactory.AddProvider(loggerProvider); config.LoggerFactory = loggerFactory; EventHubConfiguration eventHubConfiguration = new EventHubConfiguration(); IExtensionRegistry extensions = config.GetService <IExtensionRegistry>(); ITriggerBindingProvider[] triggerBindingProviders = extensions.GetExtensions <ITriggerBindingProvider>().ToArray(); Assert.Empty(triggerBindingProviders); IBindingProvider[] bindingProviders = extensions.GetExtensions <IBindingProvider>().ToArray(); Assert.Empty(bindingProviders); ExtensionConfigContext context = new ExtensionConfigContext { Config = config, }; ((IExtensionConfigProvider)eventHubConfiguration).Initialize(context); // ensure the EventHubTriggerAttributeBindingProvider was registered triggerBindingProviders = extensions.GetExtensions <ITriggerBindingProvider>().ToArray(); EventHubTriggerAttributeBindingProvider triggerBindingProvider = (EventHubTriggerAttributeBindingProvider)triggerBindingProviders.Single(); Assert.NotNull(triggerBindingProvider); // ensure the EventProcessorOptions ExceptionReceived event is wired up var eventProcessorOptions = eventHubConfiguration.EventProcessorOptions; var ex = new EventHubsException(false, "Kaboom!"); var ctor = typeof(ExceptionReceivedEventArgs).GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance).Single(); var args = (ExceptionReceivedEventArgs)ctor.Invoke(new object[] { "TestHostName", "TestPartitionId", ex, "TestAction" }); var handler = (Action <ExceptionReceivedEventArgs>)eventProcessorOptions.GetType().GetField("exceptionHandler", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(eventProcessorOptions); handler.Method.Invoke(handler.Target, new object[] { args }); string expectedMessage = "EventProcessorHost error (Action=TestAction, HostName=TestHostName, PartitionId=TestPartitionId)"; var logMessage = loggerProvider.GetAllLogMessages().Single(); Assert.Equal(LogLevel.Error, logMessage.Level); Assert.Equal(expectedMessage, logMessage.FormattedMessage); Assert.Same(ex, logMessage.Exception); }
public void Initialize_PerformsExpectedRegistrations() { var host = new HostBuilder() .ConfigureDefaultTestHost(builder => { builder.AddEventHubs(); }) .ConfigureServices(c => { c.AddSingleton <INameResolver>(new RandomNameResolver()); }) .Build(); IExtensionRegistry extensions = host.Services.GetService <IExtensionRegistry>(); // ensure the EventHubTriggerAttributeBindingProvider was registered var triggerBindingProviders = extensions.GetExtensions <ITriggerBindingProvider>().ToArray(); EventHubTriggerAttributeBindingProvider triggerBindingProvider = triggerBindingProviders.OfType <EventHubTriggerAttributeBindingProvider>().Single(); Assert.NotNull(triggerBindingProvider); // ensure the EventProcessorOptions ExceptionReceived event is wired up var options = host.Services.GetService <IOptions <EventHubOptions> >().Value; var eventProcessorOptions = options.EventProcessorOptions; var ex = new EventHubsException(false, "Kaboom!"); var ctor = typeof(ExceptionReceivedEventArgs).GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance).Single(); var args = (ExceptionReceivedEventArgs)ctor.Invoke(new object[] { "TestHostName", "TestPartitionId", ex, "TestAction" }); var handler = (Action <ExceptionReceivedEventArgs>)eventProcessorOptions.GetType().GetField("exceptionHandler", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(eventProcessorOptions); handler.Method.Invoke(handler.Target, new object[] { args }); string expectedMessage = "EventProcessorHost error (Action=TestAction, HostName=TestHostName, PartitionId=TestPartitionId)"; var logMessage = host.GetTestLoggerProvider().GetAllLogMessages().Single(); Assert.Equal(LogLevel.Error, logMessage.Level); Assert.Equal(expectedMessage, logMessage.FormattedMessage); Assert.Same(ex, logMessage.Exception); }