public void SequenceOfEventsIsRightAndMessageContextIsAvailableAsItShouldBe() { var done = new ManualResetEvent(false); builtinContainerAdapter.HandleAsync <string>(async str => { WriteEvent(string.Format("context before doing anything: {0}, tx: {1}, current thread: {2}", MessageContext.HasCurrent, TransactionContext.Current, Thread.CurrentThread.Name)); await Task.Delay(TimeSpan.FromSeconds(3)); WriteEvent(string.Format("context after first await: {0}, tx: {1}, current thread: {2}", MessageContext.HasCurrent, TransactionContext.Current, Thread.CurrentThread.Name)); await Task.Delay(TimeSpan.FromSeconds(3)).ConfigureAwait(false); WriteEvent(string.Format("context after ConfigureAwait(false): {0}, tx: {1}, current thread: {2}", MessageContext.HasCurrent, TransactionContext.Current, Thread.CurrentThread.Name)); done.Set(); }); builtinContainerAdapter.Bus.SendLocal("hej med dig!"); done.WaitUntilSetOrDie(TimeSpan.FromSeconds(10)); Thread.Sleep(TimeSpan.FromSeconds(1)); var eventsArray = events.ToArray(); Console.WriteLine(@" ------------------------------------------------------------------ Got events: {0} ------------------------------------------------------------------ ", string.Join(Environment.NewLine, eventsArray)); Assert.That(eventsArray, Is.EqualTo(new[] { "msg context established", "uow started", "context before doing anything: True, tx: handler tx on thread 'Rebus 1 worker 1', current thread: Rebus 1 worker 1", "context after first await: True, tx: handler tx on thread 'Rebus 1 worker 1', current thread: Rebus 1 worker 1", "context after ConfigureAwait(false): True, tx: handler tx on thread 'Rebus 1 worker 1', current thread: ", "uow commit", "uow dispose", "msg context disposed" })); }
public void PeekLockRenewalJustWorks() { var done = new ManualResetEvent(false); adapter.HandleAsync(async(string str) => { LogEvent("entered!"); await Task.Delay(TimeSpan.FromMinutes(1)); LogEvent("waited one minute"); await Task.Delay(TimeSpan.FromMinutes(1)); LogEvent("waited two minutes"); await Task.Delay(TimeSpan.FromMinutes(1)); LogEvent("waited three minutes"); LogEvent("done!"); done.Set(); }); Console.WriteLine("Starting!"); adapter.Bus.SendLocal("hej"); done.WaitUntilSetOrDie(TimeSpan.FromMinutes(5)); Console.WriteLine("Done!"); Console.WriteLine(); Console.WriteLine(@"LOG--------------------------------------------------------------------- {0} ------------------------------------------------------------------------", string.Join(Environment.NewLine, events)); }