예제 #1
0
    public async Task DoesNotLogTaskCancelledException()
    {
        var topic    = _brokerFactory.GetNewTopic();
        var producer = _brokerFactory.ConfigureProducer().Create();

        Using(producer);

        var logs = new ListLoggerFactory();
        var weAreInTheHandler = new ManualResetEvent(initialState: false);

        var consumer = _brokerFactory.ConfigureConsumer("default-group")
                       .Logging(l => l.Use(logs))
                       .Handle(async(messages, context, token) =>
        {
            weAreInTheHandler.Set();
            await Task.Delay(TimeSpan.FromSeconds(100), token);
        })
                       .Topics(t => t.Subscribe(topic))
                       .Positions(p => p.StoreInMemory())
                       .Start();

        Using(consumer);

        await producer.Send(topic, new ToposMessage("wazzup my mayn?!"));

        weAreInTheHandler.WaitOrDie(timeoutSeconds: 15);

        // force everything to shut down now
        CleanUpDisposables();

        logs.DumpLogs();

        // check that we didn't get that silly TaskCancelledException in the logs
        var logLineWithException = logs.FirstOrDefault(l => l.Exception != null);

        Assert.That(logLineWithException, Is.Null,
                    $"Didn't expect any exceptions, but we got this: {logLineWithException?.Exception}");
    }