private async Task Initialize() { var listener = new VisualRxEtwListener(); IObservable<Marble> listenStream = await listener.GetStreamAsync(); listenStream .Subscribe(marble => Tree.ToTree(marble)); }
public async Task ETW_Send_Receive_Test() { const int count = 4; // arrange using (var listener = new VisualRxEtwListener()) { // listen IObservable<Marble> listenStream = await listener.GetStreamAsync(); listenStream = listenStream.Replay().RefCount(); ITestableObserver<Marble> listenObserver = _scheduler.CreateObserver<Marble>(); listenStream .Subscribe(listenObserver); // publish var channel = new EtwVisualRxChannel(); await PublisherSetting.TryAddChannels(channel); PublisherSetting.AddFilter((key, provider) => true); // act var xs = Observable.Range(0, count, _scheduler) .Select(i => new Person(i)) .Monitor("Test", PublisherSetting); xs.Subscribe(v => { }); _scheduler.AdvanceBy(5); await listenStream //.Do(v => { },() => { }) .Take(count + 1); for (int i = 0; i < count; i++) { Assert.AreEqual(NotificationKind.OnNext, listenObserver.Messages[i].Value.Kind); var marble = listenObserver.Messages[i].Value.Value; var p = marble.GetValue<Person>(); Assert.AreEqual(i, p.Id); } Marble lastMarble = listenObserver.Messages[count].Value.Value; Assert.AreEqual(NotificationKind.OnCompleted, lastMarble.Kind); } }