Beispiel #1
0
            public void should_close_connection_on_channel_failure()
            {
                var bus = this.ConfigureBus("Test", cfg => { });
                var tcs = new TaskCompletionSource <bool>();

                var connection = new RabbitConnection(new Endpoint("test"), bus.Configuration.ConnectionString, bus);

                connection.Closed += (sender, args) => tcs.SetResult(true);

                connection.Open(CancellationToken.None);
                var channel = connection.OpenChannel();

                channel.Abort();
                channel.Bind(Queue.Named("q").Instance, Exchange.Named("e").Instance, "key");

                Assert.IsTrue(tcs.Task.Result);
            }
            public void should_not_close_connection_on_channel_failure()
            {
                var bus = this.ConfigureBus("Test", cfg => { });
                var tcs = new TaskCompletionSource <bool>(true);

                var connection = new RabbitConnection(new Endpoint("test"), bus.Configuration.ConnectionString, bus);

                connection.Closed += (sender, args) => tcs.SetResult(false);

                var tokenSource = new CancellationTokenSource();

                connection.Open(tokenSource.Token);
                var channel = connection.OpenChannel(tokenSource.Token);

                channel.Abort();
                Assert.Throws <AlreadyClosedException>(
                    () => channel.Bind(Queue.Named("q").Instance, Exchange.Named("e").Instance, "key"));

                Assert.True(!tcs.Task.IsCompleted);
            }