public EndpointBehaviorBuilder(IEndpointConfigurationFactory endpointConfigurationFactory) { behavior = new EndpointBehavior(endpointConfigurationFactory) { Whens = new List <IWhenDefinition>() }; }
public EndpointBehaviorBuilder(Type type) { behavior = new EndpointBehavior(type) { Whens = new List <IWhenDefinition>() }; }
public Result Initialize(RunDescriptor run, EndpointBehavior endpointBehavior, IDictionary <Type, string> routingTable, string endpointName) { try { behavior = endpointBehavior; scenarioContext = run.ScenarioContext; configuration = ((IEndpointConfigurationFactory)Activator.CreateInstance(endpointBehavior.EndpointBuilderType)) .Get(); configuration.EndpointName = endpointName; //apply custom config settings busConfiguration = configuration.GetConfiguration(run, routingTable); endpointBehavior.CustomConfig.ForEach(customAction => customAction(busConfiguration)); bus = configuration.GetBus() ?? Bus.Create(busConfiguration); var transportDefinition = ((UnicastBus)bus).Settings.Get <TransportDefinition>(); scenarioContext.HasNativePubSubSupport = transportDefinition.HasNativePubSubSupport; return(Result.Success()); } catch (Exception ex) { Logger.Error($"Failed to initialize endpoint {endpointName}", ex); return(Result.Failure(ex)); } }
static string GetEndpointNameForRun(RunDescriptor runDescriptor, EndpointBehavior endpointBehavior) { var endpointName = Conventions.EndpointNamingConvention(endpointBehavior.EndpointBuilderType) + "." + runDescriptor.Key; return(endpointName); }
public async Task Initialize(RunDescriptor run, EndpointBehavior endpointBehavior, IDictionary <Type, string> routingTable, string endpointName) { try { behavior = endpointBehavior; scenarioContext = run.ScenarioContext; runSettings = run.Settings; var endpointConfigurationFactory = (IEndpointConfigurationFactory)Activator.CreateInstance(endpointBehavior.EndpointBuilderType); endpointConfigurationFactory.ScenarioContext = run.ScenarioContext; configuration = endpointConfigurationFactory.Get(); configuration.EndpointName = endpointName; if (!string.IsNullOrEmpty(configuration.CustomMachineName)) { RuntimeEnvironment.MachineNameAction = () => configuration.CustomMachineName; } //apply custom config settings if (configuration.GetConfiguration == null) { throw new Exception($"Missing EndpointSetup<T> in the constructor of {endpointName} endpoint."); } endpointConfiguration = await configuration.GetConfiguration(run, routingTable).ConfigureAwait(false); RegisterInheritanceHierarchyOfContextInSettings(scenarioContext); endpointBehavior.CustomConfig.ForEach(customAction => customAction(endpointConfiguration, scenarioContext)); if (configuration.SendOnly) { endpointConfiguration.SendOnly(); } startable = await Endpoint.Create(endpointConfiguration).ConfigureAwait(false); if (!configuration.SendOnly) { var transportInfrastructure = endpointConfiguration.GetSettings().Get <TransportInfrastructure>(); scenarioContext.HasNativePubSubSupport = transportInfrastructure.OutboundRoutingPolicy.Publishes == OutboundRoutingType.Multicast; } } catch (Exception ex) { Logger.Error("Failed to initialize endpoint " + endpointName, ex); throw; } }
public async Task Initialize(RunDescriptor run, EndpointBehavior endpointBehavior, IDictionary<Type, string> routingTable, string endpointName) { try { behavior = endpointBehavior; scenarioContext = run.ScenarioContext; runSettings = run.Settings; var endpointConfigurationFactory = (IEndpointConfigurationFactory)Activator.CreateInstance(endpointBehavior.EndpointBuilderType); endpointConfigurationFactory.ScenarioContext = run.ScenarioContext; configuration = endpointConfigurationFactory.Get(); configuration.EndpointName = endpointName; if (!string.IsNullOrEmpty(configuration.CustomMachineName)) { RuntimeEnvironment.MachineNameAction = () => configuration.CustomMachineName; } //apply custom config settings if (configuration.GetConfiguration == null) { throw new Exception($"Missing EndpointSetup<T> in the constructor of {endpointName} endpoint."); } endpointConfiguration = await configuration.GetConfiguration(run, routingTable).ConfigureAwait(false); RegisterInheritanceHierarchyOfContextInSettings(scenarioContext); endpointBehavior.CustomConfig.ForEach(customAction => customAction(endpointConfiguration, scenarioContext)); if (configuration.SendOnly) { endpointConfiguration.SendOnly(); } startable = await Endpoint.Create(endpointConfiguration).ConfigureAwait(false); if (!configuration.SendOnly) { var transportInfrastructure = endpointConfiguration.GetSettings().Get<TransportInfrastructure>(); scenarioContext.HasNativePubSubSupport = transportInfrastructure.OutboundRoutingPolicy.Publishes == OutboundRoutingType.Multicast; } } catch (Exception ex) { Logger.Error("Failed to initialize endpoint " + endpointName, ex); throw; } }
public async Task Initialize(RunDescriptor run, EndpointBehavior endpointBehavior, string endpointName) { ScenarioContext.CurrentEndpoint = endpointName; try { behavior = endpointBehavior; scenarioContext = run.ScenarioContext; endpointBehavior.EndpointBuilder.ScenarioContext = run.ScenarioContext; configuration = endpointBehavior.EndpointBuilder.Get(); configuration.EndpointName = endpointName; if (!string.IsNullOrEmpty(configuration.CustomMachineName)) { RuntimeEnvironment.MachineNameAction = () => configuration.CustomMachineName; } //apply custom config settings if (configuration.GetConfiguration == null) { throw new Exception($"Missing EndpointSetup<T> in the constructor of {endpointName} endpoint."); } var endpointConfiguration = await configuration.GetConfiguration(run).ConfigureAwait(false); RegisterInheritanceHierarchyOfContextInSettings(scenarioContext, endpointConfiguration); TrackFailingMessages(endpointName, endpointConfiguration); endpointBehavior.CustomConfig.ForEach(customAction => customAction(endpointConfiguration, scenarioContext)); startable = await createCallback(endpointConfiguration).ConfigureAwait(false); var transportDefinition = endpointConfiguration.GetSettings().Get <TransportDefinition>(); scenarioContext.HasNativePubSubSupport = transportDefinition.SupportsPublishSubscribe; } catch (Exception ex) { Logger.Error("Failed to initialize endpoint " + endpointName, ex); throw; } }
static string GetEndpointNameForRun(EndpointBehavior endpointBehavior) { return(Conventions.EndpointNamingConvention(endpointBehavior.EndpointBuilderType)); }
public Result Initialize(RunDescriptor run, EndpointBehavior endpointBehavior, IDictionary<Type, string> routingTable, string endpointName) { try { runDescriptor = run; behavior = endpointBehavior; scenarioContext = run.ScenarioContext; configuration = ((IEndpointConfigurationFactory)Activator.CreateInstance(endpointBehavior.EndpointBuilderType)) .Get(); configuration.EndpointName = endpointName; if (!string.IsNullOrEmpty(configuration.CustomMachineName)) { RuntimeEnvironment.MachineNameAction = () => configuration.CustomMachineName; } //apply custom config settings var busConfiguration = configuration.GetConfiguration(run, routingTable); scenarioContext.ContextPropertyChanged += scenarioContext_ContextPropertyChanged; endpointBehavior.CustomConfig.ForEach(customAction => customAction(busConfiguration)); if (configuration.SendOnly) { sendOnlyBus = Bus.CreateSendOnly(busConfiguration); } else { bus = Bus.Create(busConfiguration); var transportDefinition = ((UnicastBus)bus).Settings.Get<TransportDefinition>(); scenarioContext.HasNativePubSubSupport = transportDefinition.HasNativePubSubSupport; } executeWhens = Task.Factory.StartNew(() => { while (!stopped) { //we spin around each 5s since the callback mechanism seems to be shaky contextChanged.Wait(TimeSpan.FromSeconds(5)); lock (behavior) { foreach (var when in behavior.Whens) { if (executedWhens.Contains(when.Id)) { continue; } if (when.ExecuteAction(scenarioContext, bus)) { executedWhens.Add(when.Id); } } } } }); return Result.Success(); } catch (Exception ex) { Logger.Error("Failed to initialize endpoint " + endpointName, ex); return Result.Failure(ex); } }
static string GetEndpointNameForRun(RunDescriptor runDescriptor, EndpointBehavior endpointBehavior) { var endpointName = Conventions.EndpointNamingConvention(endpointBehavior.EndpointBuilderType) + "." + runDescriptor.Key; return endpointName; }
public Result Initialize(RunDescriptor run, EndpointBehavior endpointBehavior, IDictionary <Type, string> routingTable, string endpointName) { try { runDescriptor = run; behavior = endpointBehavior; scenarioContext = run.ScenarioContext; configuration = ((IEndpointConfigurationFactory)Activator.CreateInstance(endpointBehavior.EndpointBuilderType)) .Get(); configuration.EndpointName = endpointName; if (!string.IsNullOrEmpty(configuration.CustomMachineName)) { RuntimeEnvironment.MachineNameAction = () => configuration.CustomMachineName; } //apply custom config settings var busConfiguration = configuration.GetConfiguration(run, routingTable); scenarioContext.ContextPropertyChanged += scenarioContext_ContextPropertyChanged; endpointBehavior.CustomConfig.ForEach(customAction => customAction(busConfiguration)); if (configuration.SendOnly) { sendOnlyBus = Bus.CreateSendOnly(busConfiguration); } else { bus = Bus.Create(busConfiguration); var transportDefinition = ((UnicastBus)bus).Settings.Get <TransportDefinition>(); scenarioContext.HasNativePubSubSupport = transportDefinition.HasNativePubSubSupport; } executeWhens = Task.Factory.StartNew(() => { while (!stopped) { //we spin around each 5s since the callback mechanism seems to be shaky contextChanged.Wait(TimeSpan.FromSeconds(5)); lock (behavior) { foreach (var when in behavior.Whens) { if (executedWhens.Contains(when.Id)) { continue; } if (when.ExecuteAction(scenarioContext, bus)) { executedWhens.Add(when.Id); } } } } }); return(Result.Success()); } catch (Exception ex) { Logger.Error("Failed to initialize endpoint " + endpointName, ex); return(Result.Failure(ex)); } }
public Result Initialize(RunDescriptor run, EndpointBehavior endpointBehavior, IDictionary<Type, string> routingTable, string endpointName) { try { behavior = endpointBehavior; scenarioContext = run.ScenarioContext; configuration = ((IEndpointConfigurationFactory) Activator.CreateInstance(endpointBehavior.EndpointBuilderType)) .Get(); configuration.EndpointName = endpointName; if (!string.IsNullOrEmpty(configuration.CustomMachineName)) { RuntimeEnvironment.MachineNameAction = () => configuration.CustomMachineName; } //apply custom config settings endpointBehavior.CustomConfig.ForEach(customAction => customAction(config)); config = configuration.GetConfiguration(run, routingTable); if (scenarioContext != null) { config.Configurer.RegisterSingleton(scenarioContext.GetType(), scenarioContext); scenarioContext.ContextPropertyChanged += scenarioContext_ContextPropertyChanged; } bus = config.CreateBus(); Configure.Instance.ForInstallationOn<Windows>().Install(); executeWhens = Task.Factory.StartNew(() => { while (!stopped) { if (!contextChanged.Wait(TimeSpan.FromSeconds(5))) //we spin around each 5s since the callback mechanism seems to be shaky { continue; } lock (behavior) { foreach (var when in behavior.Whens) { if (executedWhens.Contains(when.Id)) { continue; } if (when.ExecuteAction(scenarioContext, bus)) { executedWhens.Add(when.Id); } } } } }); return Result.Success(); } catch (Exception ex) { Logger.Error("Failed to initialize endpoint " + endpointName, ex); return Result.Failure(ex); } }
public Result Initialize(RunDescriptor run, EndpointBehavior endpointBehavior, IDictionary <Type, string> routingTable, string endpointName) { try { behavior = endpointBehavior; scenarioContext = run.ScenarioContext; configuration = ((IEndpointConfigurationFactory)Activator.CreateInstance(endpointBehavior.EndpointBuilderType)) .Get(); configuration.EndpointName = endpointName; if (!string.IsNullOrEmpty(configuration.CustomMachineName)) { RuntimeEnvironment.MachineNameAction = () => configuration.CustomMachineName; } //apply custom config settings endpointBehavior.CustomConfig.ForEach(customAction => customAction(config)); config = configuration.GetConfiguration(run, routingTable); if (scenarioContext != null) { config.Configurer.RegisterSingleton(scenarioContext.GetType(), scenarioContext); scenarioContext.ContextPropertyChanged += scenarioContext_ContextPropertyChanged; } bus = config.CreateBus(); Configure.Instance.ForInstallationOn <Windows>().Install(); executeWhens = Task.Factory.StartNew(() => { while (!stopped) { if (!contextChanged.Wait(TimeSpan.FromSeconds(5))) //we spin around each 5s since the callback mechanism seems to be shaky { continue; } lock (behavior) { foreach (var when in behavior.Whens) { if (executedWhens.Contains(when.Id)) { continue; } if (when.ExecuteAction(scenarioContext, bus)) { executedWhens.Add(when.Id); } } } } }); return(Result.Success()); } catch (Exception ex) { Logger.Error("Failed to initialize endpoint " + endpointName, ex); return(Result.Failure(ex)); } }
static string GetEndpointNameForRun(EndpointBehavior endpointBehavior) { return Conventions.EndpointNamingConvention(endpointBehavior.EndpointBuilderType); }