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();
                }
            }
        }
コード例 #2
0
        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;
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        protected override Task Given(IConfigurationScenario <BusBuilderConfiguration> scenario)
        {
            _response  = null;
            _exception = null;

            return(base.Given(scenario));
        }
コード例 #6
0
        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);
            }
        }
コード例 #7
0
        protected override Task Given(IConfigurationScenario<BusBuilderConfiguration> scenario)
        {
            _response = null;
            _exception = null;

            return base.Given(scenario);
        }
コード例 #8
0
        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();
        }
コード例 #10
0
ファイル: TestForBus.cs プロジェクト: NimbusAPI/Nimbus
        protected virtual async Task Given(IConfigurationScenario<BusBuilderConfiguration> scenario)
        {
            Instance = scenario.CreateInstance();
            Reconfigure();

            Bus = Instance.Configuration.Build();
            MethodCallCounter = MethodCallCounter.CreateInstance(Bus.InstanceId);
            await Bus.Start();
        }
コード例 #11
0
ファイル: TestForBus.cs プロジェクト: DamianMac/Nimbus
        protected virtual async Task Given(IConfigurationScenario <BusBuilderConfiguration> scenario)
        {
            Instance = scenario.CreateInstance();
            Reconfigure();

            Bus = Instance.Configuration.Build();
            MethodCallCounter = MethodCallCounter.CreateInstance(Bus.InstanceId);
            await Bus.Start();
        }
コード例 #12
0
        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);
        }
コード例 #13
0
        private bool ShouldInclude(IConfigurationScenario scenario)
        {
            var composedOfTypes = scenario.ComposedOf
                                  .Select(c => c.GetType())
                                  .ToArray();

            return(composedOfTypes
                   .Where(component => _largeMessageScenarioTypes.Contains(component))
                   .Any());
        }
コード例 #14
0
        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.");
        }
コード例 #15
0
        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.");
        }
コード例 #16
0
 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;
 }
コード例 #17
0
        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.");
        }
コード例 #18
0
        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();
 }
コード例 #20
0
        protected override Task Given(IConfigurationScenario<BusBuilderConfiguration> scenario)
        {
            TestInterceptor.Clear();

            return base.Given(scenario);
        }
コード例 #21
0
ファイル: WindowsServiceBus.cs プロジェクト: ybdev/Nimbus
 public WindowsServiceBus()
 {
     _largeMessageScenario = null;
 }
コード例 #22
0
ファイル: WindowsServiceBus.cs プロジェクト: KodrAus/Nimbus
 public WindowsServiceBus(IConfigurationScenario <LargeMessageStorageConfiguration> largeMessageScenario)
     : base(largeMessageScenario)
 {
     _largeMessageScenario = largeMessageScenario;
 }
コード例 #23
0
 private static int ComposedOfHowManyUnseenScenarios <T>(HashSet <Type> previouslySeenScenarioTypes, IConfigurationScenario <T> s)
 {
     return(s.ComposedOf
            .Where(c => !previouslySeenScenarioTypes.Contains(c.GetType()))
            .Count());
 }
コード例 #24
0
        protected override async Task Given(IConfigurationScenario <BusBuilderConfiguration> scenario)
        {
            await base.Given(scenario);

            _maxDeliveryAttempts = Instance.Configuration.MaxDeliveryAttempts;
        }
コード例 #25
0
        protected override Task Given(IConfigurationScenario <BusBuilderConfiguration> scenario)
        {
            TestInterceptor.Clear();

            return(base.Given(scenario));
        }
コード例 #26
0
 protected override async Task Given(IConfigurationScenario<BusBuilderConfiguration> scenario)
 {
     await base.Given(scenario);
     _maxDeliveryAttempts = Instance.Configuration.MaxDeliveryAttempts;
 }
コード例 #27
0
 public async Task Run(string testName, IConfigurationScenario <BusBuilderConfiguration> scenario)
 {
     await Given(scenario);
     await When();
     await Then();
 }
コード例 #28
0
        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);
        }