private async Task ClearMeABus(IConfigurationScenario<TransportConfiguration> scenario) { using (var instance = scenario.CreateInstance()) { // We want a namespace that doesn't exist here so that all the queues and topics are removed. var typeProvider = new TestHarnessTypeProvider(new[] {GetType().Assembly}, new[] {"Some.Namespace.That.Does.Not.Exist"}); var transportConfiguration = instance.Configuration; var busBuilder = new BusBuilder().Configure() .WithTransport(transportConfiguration) .WithRouter(new DestinationPerMessageTypeRouter()) .WithSerializer(new JsonSerializer()) .WithDeliveryRetryStrategy(new ImmediateRetryDeliveryStrategy()) .WithDependencyResolver(new DependencyResolver(typeProvider)) .WithNames("MyTestSuite", Environment.MachineName) .WithTypesFrom(typeProvider) .WithDefaultTimeout(TimeSpan.FromSeconds(TimeoutSeconds)) .WithHeartbeatInterval(TimeSpan.MaxValue) .WithLogger(_logger) .WithDebugOptions( dc => dc.RemoveAllExistingNamespaceElementsOnStartup( "I understand this will delete EVERYTHING in my namespace. I promise to only use this for test suites.")) ; using (var bus = busBuilder.Build()) { await bus.Start(); await bus.Stop(); } } }
private async Task ClearMeABus(IConfigurationScenario <TransportConfiguration> scenario) { using (var instance = scenario.CreateInstance()) { // We want a namespace that doesn't exist here so that all the queues and topics are removed. var typeProvider = new TestHarnessTypeProvider(new[] { GetType().Assembly }, new[] { "Some.Namespace.That.Does.Not.Exist" }); var transportConfiguration = instance.Configuration; var busBuilder = new BusBuilder().Configure() .WithTransport(transportConfiguration) .WithRouter(new DestinationPerMessageTypeRouter()) .WithSerializer(new JsonSerializer()) .WithDeliveryRetryStrategy(new ImmediateRetryDeliveryStrategy()) .WithDependencyResolver(new DependencyResolver(typeProvider)) .WithNames("MyTestSuite", Environment.MachineName) .WithTypesFrom(typeProvider) .WithDefaultTimeout(TimeSpan.FromSeconds(TimeoutSeconds)) .WithHeartbeatInterval(TimeSpan.MaxValue) .WithLogger(_logger) .WithDebugOptions( dc => dc.RemoveAllExistingNamespaceElementsOnStartup( "I understand this will delete EVERYTHING in my namespace. I promise to only use this for test suites.")) ; using (var bus = busBuilder.Build()) { await bus.Start(); await bus.Stop(); } } }
private async Task<Bus> BuildMeABus(IConfigurationScenario<TransportConfiguration> scenario) { var typeProvider = new TestHarnessTypeProvider(new[] {GetType().Assembly}, new[] {GetType().Namespace}); using (var instance = scenario.CreateInstance()) { var transportConfiguration = instance.Configuration; var configuration = new BusBuilder().Configure() .WithTransport(transportConfiguration) .WithRouter(new DestinationPerMessageTypeRouter()) .WithSerializer(new JsonSerializer()) .WithDeliveryRetryStrategy(new ImmediateRetryDeliveryStrategy()) .WithDependencyResolver(new DependencyResolver(typeProvider)) .WithNames("MyTestSuite", Environment.MachineName) .WithTypesFrom(typeProvider) .WithDefaultTimeout(TimeSpan.FromSeconds(10)) .WithHeartbeatInterval(TimeSpan.MaxValue) .WithLogger(_logger) ; var bus = configuration.Build(); await bus.Start(); await bus.Stop(); return bus; } }
public async Task Run(string testName, IConfigurationScenario <BusBuilderConfiguration> scenario) { await Given(scenario); await When(); _messagesPerSecond = StressTestMessageHandler.ActualNumMessagesReceived / _sendingAndReceivingStopwatch.Elapsed.TotalSeconds; _averageOneWayLatency = StressTestMessageHandler.Messages .Select(m => m.WhenReceived - m.WhenSent) .Select(ts => ts.TotalMilliseconds) .Average(); _averageRequestResponseLatency = StressTestMessageHandler.ResponseMessages.Any() ? StressTestMessageHandler.ResponseMessages .Select(m => m.WhenReceived - m.RequestSentAt) .Select(ts => ts.TotalMilliseconds) .Average() : default(double?); Log.Information("Total of {NumMessagesSent} messages processed in {Elapsed}", _numMessagesSent, _sendingAndReceivingStopwatch.Elapsed); Log.Information("Average throughput: {MessagesPerSecond} messages/second", _messagesPerSecond); Log.Information("Average one-way latency: {AverageOneWayLatency}", TimeSpan.FromMilliseconds(_averageOneWayLatency)); Log.Information("Average request/response latency: {AverageRequestResponseLatency}", _averageRequestResponseLatency.HasValue ? (object)TimeSpan.FromMilliseconds(_averageRequestResponseLatency.Value) : "N/A"); RecordTeamCityStatistic(testName, "TotalMessages", _numMessagesSent); RecordTeamCityStatistic(testName, "TotalElapsedMilliseconds", _sendingAndReceivingStopwatch.ElapsedMilliseconds); RecordTeamCityStatistic(testName, "MessagesPerSecond", _messagesPerSecond); RecordTeamCityStatistic(testName, "AverageOneWayLatencyInMilliseconds", _averageOneWayLatency); RecordTeamCityStatistic(testName, "AverageRequestResponseLatencyInMilliseconds", _averageRequestResponseLatency); }
protected override Task Given(IConfigurationScenario <BusBuilderConfiguration> scenario) { _response = null; _exception = null; return(base.Given(scenario)); }
private async Task <Bus> BuildMeABus(IConfigurationScenario <TransportConfiguration> scenario) { var typeProvider = new TestHarnessTypeProvider(new[] { GetType().Assembly }, new[] { GetType().Namespace }); using (var instance = scenario.CreateInstance()) { var transportConfiguration = instance.Configuration; var configuration = new BusBuilder().Configure() .WithTransport(transportConfiguration) .WithRouter(new DestinationPerMessageTypeRouter()) .WithSerializer(new JsonSerializer()) .WithDeliveryRetryStrategy(new ImmediateRetryDeliveryStrategy()) .WithDependencyResolver(new DependencyResolver(typeProvider)) .WithNames("MyTestSuite", Environment.MachineName) .WithTypesFrom(typeProvider) .WithDefaultTimeout(TimeSpan.FromSeconds(10)) .WithHeartbeatInterval(TimeSpan.MaxValue) .WithLogger(_logger) ; var bus = configuration.Build(); await bus.Start(); await bus.Stop(); return(bus); } }
protected override Task Given(IConfigurationScenario<BusBuilderConfiguration> scenario) { _response = null; _exception = null; return base.Given(scenario); }
public async Task NoneOfThemShouldGoBang(string testName, IConfigurationScenario <TransportConfiguration> scenario) { await ClearMeABus(scenario); _buses = await Enumerable.Range(0, 10) .Select(i => Task.Run(async() => await BuildMeABus(scenario))) .SelectResultsAsync(); }
public async Task NoneOfThemShouldGoBang(string testName, IConfigurationScenario<TransportConfiguration> scenario) { await ClearMeABus(scenario); _buses = await Enumerable.Range(0, 10) .Select(i => Task.Run(async () => await BuildMeABus(scenario))) .SelectResultsAsync(); }
protected virtual async Task Given(IConfigurationScenario<BusBuilderConfiguration> scenario) { Instance = scenario.CreateInstance(); Reconfigure(); Bus = Instance.Configuration.Build(); MethodCallCounter = MethodCallCounter.CreateInstance(Bus.InstanceId); await Bus.Start(); }
protected virtual async Task Given(IConfigurationScenario <BusBuilderConfiguration> scenario) { Instance = scenario.CreateInstance(); Reconfigure(); Bus = Instance.Configuration.Build(); MethodCallCounter = MethodCallCounter.CreateInstance(Bus.InstanceId); await Bus.Start(); }
public static TestCaseData BuildTestCase <T>(this IConfigurationScenario <T> scenario) { var testCaseData = new TestCaseData(scenario.Name, scenario); scenario.Categories .Do(category => testCaseData.SetCategory(category)) .Done(); return(testCaseData); }
private bool ShouldInclude(IConfigurationScenario scenario) { var composedOfTypes = scenario.ComposedOf .Select(c => c.GetType()) .ToArray(); return(composedOfTypes .Where(component => _largeMessageScenarioTypes.Contains(component)) .Any()); }
protected virtual async Task Given(IConfigurationScenario<BusBuilderConfiguration> scenario) { _instance = scenario.CreateInstance(); _numMessagesSent = 0; var busBuilderConfiguration = _instance.Configuration; if (!Debugger.IsAttached) { busBuilderConfiguration.WithLogger(new NullLogger()); } Bus = busBuilderConfiguration.Build(); Log.Debug("Starting bus..."); await Bus.Start(); Log.Debug("Bus started."); }
protected virtual async Task Given(IConfigurationScenario<BusBuilderConfiguration> scenario) { _instance = scenario.CreateInstance(); _numMessagesSent = 0; var busBuilderConfiguration = _instance.Configuration; var logger = Debugger.IsAttached ? TestHarnessLoggerFactory.Create(Guid.NewGuid(), GetType().FullName) : new NullLogger(); busBuilderConfiguration.WithLogger(logger); Bus = busBuilderConfiguration.Build(); Log.Debug("Starting bus..."); await Bus.Start(); Log.Debug("Bus started."); }
public BusBuilderScenario(TestHarnessTypeProvider typeProvider, ILogger logger, IConfigurationScenario <TransportConfiguration> transport, IConfigurationScenario <IRouter> router, IConfigurationScenario <ISerializer> serializer, IConfigurationScenario <ICompressor> compressor, IConfigurationScenario <ContainerConfiguration> iocContainer, IConfigurationScenario <SyncContextConfiguration> syncContext) : base(transport, router, serializer, compressor, iocContainer, syncContext) { _typeProvider = typeProvider; _logger = logger; _transport = transport; _router = router; _serializer = serializer; _compressor = compressor; _iocContainer = iocContainer; _syncContext = syncContext; }
protected virtual async Task Given(IConfigurationScenario <BusBuilderConfiguration> scenario) { _instance = scenario.CreateInstance(); _numMessagesSent = 0; var busBuilderConfiguration = _instance.Configuration; if (!Debugger.IsAttached) { busBuilderConfiguration.WithLogger(new NullLogger()); } Bus = busBuilderConfiguration.Build(); Log.Debug("Starting bus..."); await Bus.Start(); Log.Debug("Bus started."); }
protected virtual async Task Given(IConfigurationScenario <BusBuilderConfiguration> scenario) { _instance = scenario.CreateInstance(); _numMessagesSent = 0; var busBuilderConfiguration = _instance.Configuration; var logger = Debugger.IsAttached ? TestHarnessLoggerFactory.Create(Guid.NewGuid(), GetType().FullName) : new NullLogger(); busBuilderConfiguration.WithLogger(logger); Bus = busBuilderConfiguration.Build(); Log.Debug("Starting bus..."); await Bus.Start(); Log.Debug("Bus started."); }
public async Task Run(string testName, IConfigurationScenario<BusBuilderConfiguration> scenario) { await Given(scenario); await When(); await Then(); }
protected override Task Given(IConfigurationScenario<BusBuilderConfiguration> scenario) { TestInterceptor.Clear(); return base.Given(scenario); }
public WindowsServiceBus() { _largeMessageScenario = null; }
public WindowsServiceBus(IConfigurationScenario <LargeMessageStorageConfiguration> largeMessageScenario) : base(largeMessageScenario) { _largeMessageScenario = largeMessageScenario; }
private static int ComposedOfHowManyUnseenScenarios <T>(HashSet <Type> previouslySeenScenarioTypes, IConfigurationScenario <T> s) { return(s.ComposedOf .Where(c => !previouslySeenScenarioTypes.Contains(c.GetType())) .Count()); }
protected override async Task Given(IConfigurationScenario <BusBuilderConfiguration> scenario) { await base.Given(scenario); _maxDeliveryAttempts = Instance.Configuration.MaxDeliveryAttempts; }
protected override Task Given(IConfigurationScenario <BusBuilderConfiguration> scenario) { TestInterceptor.Clear(); return(base.Given(scenario)); }
protected override async Task Given(IConfigurationScenario<BusBuilderConfiguration> scenario) { await base.Given(scenario); _maxDeliveryAttempts = Instance.Configuration.MaxDeliveryAttempts; }
public async Task Run(string testName, IConfigurationScenario <BusBuilderConfiguration> scenario) { await Given(scenario); await When(); await Then(); }
public async Task Run(string testName, IConfigurationScenario<BusBuilderConfiguration> scenario) { await Given(scenario); await When(); _messagesPerSecond = StressTestMessageHandler.ActualNumMessagesReceived/_sendingAndReceivingStopwatch.Elapsed.TotalSeconds; _averageOneWayLatency = StressTestMessageHandler.Messages .Select(m => m.WhenReceived - m.WhenSent) .Select(ts => ts.TotalMilliseconds) .Average(); _averageRequestResponseLatency = StressTestMessageHandler.ResponseMessages.Any() ? StressTestMessageHandler.ResponseMessages .Select(m => m.WhenReceived - m.RequestSentAt) .Select(ts => ts.TotalMilliseconds) .Average() : default(double?); Log.Information("Total of {NumMessagesSent} messages processed in {Elapsed}", _numMessagesSent, _sendingAndReceivingStopwatch.Elapsed); Log.Information("Average throughput: {MessagesPerSecond} messages/second", _messagesPerSecond); Log.Information("Average one-way latency: {AverageOneWayLatency}", TimeSpan.FromMilliseconds(_averageOneWayLatency)); Log.Information("Average request/response latency: {AverageRequestResponseLatency}", _averageRequestResponseLatency.HasValue ? (object) TimeSpan.FromMilliseconds(_averageRequestResponseLatency.Value) : "N/A"); RecordTeamCityStatistic(testName, "TotalMessages", _numMessagesSent); RecordTeamCityStatistic(testName, "TotalElapsedMilliseconds", _sendingAndReceivingStopwatch.ElapsedMilliseconds); RecordTeamCityStatistic(testName, "MessagesPerSecond", _messagesPerSecond); RecordTeamCityStatistic(testName, "AverageOneWayLatencyInMilliseconds", _averageOneWayLatency); RecordTeamCityStatistic(testName, "AverageRequestResponseLatencyInMilliseconds", _averageRequestResponseLatency); }