public void ActivityIdsAreRecordedOnChildEvents() { var healthReporter = Mock.Of <IHealthReporter>(); var observer = new Mock <IObserver <EventData> >(); using (var input = new DiagnosticSourceInput(new[] { new DiagnosticSourceConfiguration { ProviderName = "test" } }, healthReporter)) { input.Subscribe(observer.Object); var parentActivity = new Activity("parent-activity"); var childActivity = new Activity("child-activity"); const string eventName = "event-name"; TestLog.StartActivity(parentActivity, null); TestLog.StartActivity(childActivity, null); TestLog.Write(eventName, null); TestLog.StopActivity(childActivity, null); TestLog.StopActivity(parentActivity, null); observer.Verify(o => o.OnNext(It.Is <EventData>(data => data.Payload["EventName"].Equals(eventName) && data.Payload["ActivityId"].Equals(childActivity.Id) && data.Payload["ActivityParentId"].Equals(parentActivity.Id) )), Times.Once); } }
public void ActivitiesAreRecorded() { var healthReporter = Mock.Of <IHealthReporter>(); var observer = new Mock <IObserver <EventData> >(); using (var input = new DiagnosticSourceInput(new[] { new DiagnosticSourceConfiguration { ProviderName = "test" } }, healthReporter)) { input.Subscribe(observer.Object); var activityArgs = new { one = "two" }; var activity = new Activity("activity-name"); activity.AddBaggage("baggage-name", "baggage-value"); activity.AddTag("tag-name", "tag-value"); TestLog.StartActivity(activity, activityArgs); TestLog.StopActivity(activity, activityArgs); observer.Verify(o => o.OnNext(It.Is <EventData>(data => data.Payload["EventName"].Equals("activity-name.Start") && data.Payload["Value"].Equals(activityArgs) && data.Payload["baggage-name"].Equals("baggage-value") && data.Payload["tag-name"].Equals("tag-value") )), Times.Once); observer.Verify(o => o.OnNext(It.Is <EventData>(data => data.Payload["EventName"].Equals("activity-name.Stop") && data.Payload["Value"].Equals(activityArgs) && data.Payload["baggage-name"].Equals("baggage-value") && data.Payload["tag-name"].Equals("tag-value") && (TimeSpan)data.Payload["Duration"] != TimeSpan.Zero )), Times.Once); } }
public void DiagnosticSourceCanBeCreatedAfterInput() { var providerName = Guid.NewGuid().ToString(); var healthReporter = Mock.Of <IHealthReporter>(); var observer = new Mock <IObserver <EventData> >(); using (var input = new DiagnosticSourceInput(new[] { new DiagnosticSourceConfiguration { ProviderName = providerName } }, healthReporter)) { input.Subscribe(observer.Object); new DiagnosticListener(providerName).Write("event-name", null); observer.Verify(o => o.OnNext(It.Is <EventData>(data => data.ProviderName.Equals(providerName))), Times.Once); } }
public void ProvidersAreFiltered() { var healthReporter = Mock.Of <IHealthReporter>(); var observer = new Mock <IObserver <EventData> >(); using (var input = new DiagnosticSourceInput(new[] { new DiagnosticSourceConfiguration { ProviderName = "not-test" } }, healthReporter)) { input.Subscribe(observer.Object); TestLog.Write("event-name", null); } observer.Verify(o => o.OnNext(It.IsAny <EventData>()), Times.Never); }
public void BagsTakePrecedenceOverTags() { var healthReporter = Mock.Of <IHealthReporter>(); var observer = new Mock <IObserver <EventData> >(); using (var input = new DiagnosticSourceInput(new[] { new DiagnosticSourceConfiguration { ProviderName = "test" } }, healthReporter)) { input.Subscribe(observer.Object); var activity = new Activity("activity-name"); activity.AddBaggage("key", "bag-value"); activity.AddTag("key", "tag-value"); TestLog.StartActivity(activity, null); observer.Verify(o => o.OnNext(It.Is <EventData>(data => data.Payload["key"].Equals("bag-value") && data.Payload["key_1"].Equals("tag-value") )), Times.Once); } }
public void EventsAreRecorded() { var healthReporter = Mock.Of <IHealthReporter>(); var observer = new Mock <IObserver <EventData> >(); using (var input = new DiagnosticSourceInput(new[] { new DiagnosticSourceConfiguration { ProviderName = "test" } }, healthReporter)) { input.Subscribe(observer.Object); const string eventName = "event-name"; var value = new { text = "Test" }; TestLog.Write(eventName, value); observer.Verify(o => o.OnNext(It.Is <EventData>(data => data.ProviderName.Equals("test") && data.Timestamp != default(DateTimeOffset) && data.Payload["EventName"].Equals(eventName) && data.Payload["Value"].Equals(value) )), Times.Once); } }