public async Task 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; ServiceBusConfiguration serviceBusConfig = new ServiceBusConfiguration(); ServiceBusExtensionConfig serviceBusExtensionConfig = new ServiceBusExtensionConfig(serviceBusConfig); 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, }; serviceBusExtensionConfig.Initialize(context); // ensure the ServiceBusTriggerAttributeBindingProvider was registered triggerBindingProviders = extensions.GetExtensions <ITriggerBindingProvider>().ToArray(); Assert.Single(triggerBindingProviders); ServiceBusTriggerAttributeBindingProvider triggerBindingProvider = (ServiceBusTriggerAttributeBindingProvider)triggerBindingProviders[0]; Assert.NotNull(triggerBindingProvider); // ensure the ServiceBusAttributeBindingProvider was registered bindingProviders = extensions.GetExtensions <IBindingProvider>().ToArray(); Assert.Single(bindingProviders); ServiceBusAttributeBindingProvider bindingProvider = (ServiceBusAttributeBindingProvider)bindingProviders[0]; Assert.NotNull(bindingProvider); // ensure the default MessageOptions exception handler is wired up var messageOptions = serviceBusConfig.MessageOptions; var ex = new ServiceBusException(false); var args = new ExceptionReceivedEventArgs(ex, "TestAction", "TestEndpoint", "TestEntityPath", "TestClientId"); Assert.NotNull(serviceBusConfig.ExceptionHandler); // invoke the handler and make sure it logs await serviceBusConfig.MessageOptions.ExceptionReceivedHandler(args); string expectedMessage = "MessageReceiver error (Action=TestAction, ClientId=TestClientId, EntityPath=TestEntityPath, Endpoint=TestEndpoint)"; var logMessage = loggerProvider.GetAllLogMessages().Single(); Assert.Equal(LogLevel.Error, logMessage.Level); Assert.Equal(expectedMessage, logMessage.FormattedMessage); Assert.Same(ex, logMessage.Exception); }
public void UseServiceBus_NoServiceBusConfiguration_PerformsExpectedRegistration() { JobHostConfiguration config = new JobHostConfiguration(); string serviceBusConnection = "test service bus connection"; #pragma warning disable 0618 config.ServiceBusConnectionString = serviceBusConnection; #pragma warning restore 0618 IExtensionRegistry extensions = config.GetService <IExtensionRegistry>(); IExtensionConfigProvider[] configProviders = extensions.GetExtensions <IExtensionConfigProvider>().ToArray(); Assert.Equal(0, configProviders.Length); config.UseServiceBus(); // verify that the service bus config provider was registered configProviders = extensions.GetExtensions <IExtensionConfigProvider>().ToArray(); Assert.Equal(1, configProviders.Length); ServiceBusExtensionConfig serviceBusExtensionConfig = (ServiceBusExtensionConfig)configProviders.Single(); // verify that a default ServiceBusConfiguration was created, with the host (obsolete) // service bus connection string propagated #pragma warning disable 0618 Assert.Equal(serviceBusConnection, serviceBusExtensionConfig.Config.ConnectionString); #pragma warning restore 0618 }
public void LogExceptionReceivedEvent_NonMessagingException_LoggedAsError() { var ex = new MissingMethodException("What method??"); ExceptionReceivedEventArgs e = new ExceptionReceivedEventArgs(ex, "TestAction", "TestEndpoint", "TestEntity", "TestClient"); ServiceBusExtensionConfig.LogExceptionReceivedEvent(e, _loggerFactory); var expectedMessage = $"MessageReceiver error (Action=TestAction, ClientId=TestClient, EntityPath=TestEntity, Endpoint=TestEndpoint)"; var logMessage = _loggerProvider.GetAllLogMessages().Single(); Assert.Equal(LogLevel.Error, logMessage.Level); Assert.Same(ex, logMessage.Exception); Assert.Equal(expectedMessage, logMessage.FormattedMessage); }
public void LogExceptionReceivedEvent_TransientEvent_LoggedAsVerbose() { var ex = new ServiceBusException(true); Assert.True(ex.IsTransient); ExceptionReceivedEventArgs e = new ExceptionReceivedEventArgs(ex, "TestAction", "TestEndpoint", "TestEntity", "TestClient"); ServiceBusExtensionConfig.LogExceptionReceivedEvent(e, _loggerFactory); var expectedMessage = $"MessageReceiver error (Action=TestAction, ClientId=TestClient, EntityPath=TestEntity, Endpoint=TestEndpoint)"; var logMessage = _loggerProvider.GetAllLogMessages().Single(); Assert.Equal(LogLevel.Debug, logMessage.Level); Assert.Same(ex, logMessage.Exception); Assert.Equal(expectedMessage, logMessage.FormattedMessage); }
/// <summary> /// Enables use of ServiceBus job extensions /// </summary> /// <param name="config">The <see cref="JobHostConfiguration"/> to configure.</param> /// <param name="serviceBusConfig">The <see cref="ServiceBusConfiguration"></see> to use./></param> public static void UseServiceBus(this JobHostConfiguration config, ServiceBusConfiguration serviceBusConfig) { if (config == null) { throw new ArgumentNullException("config"); } if (serviceBusConfig == null) { throw new ArgumentNullException("serviceBusConfig"); } ServiceBusExtensionConfig extensionConfig = new ServiceBusExtensionConfig(serviceBusConfig); IExtensionRegistry extensions = config.GetService <IExtensionRegistry>(); extensions.RegisterExtension <IExtensionConfigProvider>(extensionConfig); }
public void Initialize_PerformsExpectedRegistrations() { JobHostConfiguration config = new JobHostConfiguration(); config.AddService <INameResolver>(new RandomNameResolver()); ServiceBusConfiguration serviceBusConfig = new ServiceBusConfiguration(); ServiceBusExtensionConfig serviceBusExtensionConfig = new ServiceBusExtensionConfig(serviceBusConfig); IExtensionRegistry extensions = config.GetService <IExtensionRegistry>(); ITriggerBindingProvider[] triggerBindingProviders = extensions.GetExtensions <ITriggerBindingProvider>().ToArray(); Assert.Equal(0, triggerBindingProviders.Length); IBindingProvider[] bindingProviders = extensions.GetExtensions <IBindingProvider>().ToArray(); Assert.Equal(0, bindingProviders.Length); ExtensionConfigContext context = new ExtensionConfigContext { Config = config, Trace = new TestTraceWriter(TraceLevel.Verbose) }; serviceBusExtensionConfig.Initialize(context); // ensure the ServiceBusTriggerAttributeBindingProvider was registered triggerBindingProviders = extensions.GetExtensions <ITriggerBindingProvider>().ToArray(); Assert.Equal(1, triggerBindingProviders.Length); ServiceBusTriggerAttributeBindingProvider triggerBindingProvider = (ServiceBusTriggerAttributeBindingProvider)triggerBindingProviders[0]; Assert.NotNull(triggerBindingProvider); // ensure the ServiceBusAttributeBindingProvider was registered bindingProviders = extensions.GetExtensions <IBindingProvider>().ToArray(); Assert.Equal(1, bindingProviders.Length); ServiceBusAttributeBindingProvider bindingProvider = (ServiceBusAttributeBindingProvider)bindingProviders[0]; Assert.NotNull(bindingProvider); }
public void UseServiceBus_NoServiceBusConfiguration_PerformsExpectedRegistration() { JobHostConfiguration config = new JobHostConfiguration(); IExtensionRegistry extensions = config.GetService <IExtensionRegistry>(); IExtensionConfigProvider[] configProviders = extensions.GetExtensions <IExtensionConfigProvider>().ToArray(); Assert.Empty(configProviders); config.UseServiceBus(); // verify that the service bus config provider was registered configProviders = extensions.GetExtensions <IExtensionConfigProvider>().ToArray(); Assert.Single(configProviders); ServiceBusExtensionConfig serviceBusExtensionConfig = (ServiceBusExtensionConfig)configProviders.Single(); // verify that a default ServiceBusConfiguration was created, with the host (obsolete) // service bus connection string propagated string serviceBusConnection = Environment.GetEnvironmentVariable("AzureWebJobsServiceBus"); Assert.Equal(serviceBusConnection, serviceBusExtensionConfig.Config.ConnectionString); }
public void UseServiceBus_ServiceBusConfigurationProvided_PerformsExpectedRegistration() { JobHostConfiguration config = new JobHostConfiguration(); IExtensionRegistry extensions = config.GetService <IExtensionRegistry>(); IExtensionConfigProvider[] configProviders = extensions.GetExtensions <IExtensionConfigProvider>().ToArray(); Assert.Empty(configProviders); ServiceBusConfiguration serviceBusConfig = new ServiceBusConfiguration { ConnectionString = "test service bus connection" }; config.UseServiceBus(serviceBusConfig); // verify that the service bus config provider was registered configProviders = extensions.GetExtensions <IExtensionConfigProvider>().ToArray(); Assert.Single(configProviders); ServiceBusExtensionConfig serviceBusExtensionConfig = (ServiceBusExtensionConfig)configProviders.Single(); Assert.Same(serviceBusConfig, serviceBusExtensionConfig.Config); }