Esempio n. 1
0
        public async Task ReportsHierarchicalActivities()
        {
            using (var module = new EtwTelemetryModule())
            {
                var listeningRequest = new EtwListeningRequest();
                listeningRequest.ProviderName = TestProvider.ProviderName;
                module.Sources.Add(listeningRequest);

                module.Initialize(GetTestTelemetryConfiguration());

                for (int i = 0; i < 6; i += 2)
                {
                    Parallel.For(0, 2, (idx) =>
                    {
                        PerformActivityAsync(i + idx).GetAwaiter().GetResult();
                    });
                }

                await this.WaitForItems(this.adapterHelper.Channel, 12).ConfigureAwait(false);

                ITelemetry[]   capturedItems    = this.adapterHelper.Channel.SentItems;
                TraceTelemetry requestStopEvent = capturedItems.OfType <TraceTelemetry>().FirstOrDefault((i) =>
                                                                                                         i.Properties.TryGetValue("EventName", out string eventName) &&
                                                                                                         string.Equals(eventName, "Request/Stop", StringComparison.Ordinal));
                Assert.IsNotNull(requestStopEvent, "Request/Stop event not found");
                Assert.IsTrue(requestStopEvent.Properties.TryGetValue("ActivityID", out string activityID), "Event does not have ActivityID property");
                Assert.IsTrue(activityID.StartsWith("//", StringComparison.Ordinal), "The activity ID is not a hierarchical one");
            }
        }
Esempio n. 2
0
        public async Task ReactsToConfigurationChanges()
        {
            using (var module = new EtwTelemetryModule())
            {
                var listeningRequest = new EtwListeningRequest();
                listeningRequest.ProviderName = TestProvider.ProviderName;
                module.Sources.Add(listeningRequest);

                module.Initialize(GetTestTelemetryConfiguration());

                TestProvider.Log.Info("Hey!");
                TestProvider.Log.Warning(1, 2);
                await this.WaitForItems(this.adapterHelper.Channel, 3).ConfigureAwait(false);

                // Now request reporting events only with certain keywords
                listeningRequest.Keywords = (ulong)TestProvider.Keywords.NonRoutine;
                module.Initialize(GetTestTelemetryConfiguration(resetChannel: false));
                await Task.Delay(500).ConfigureAwait(false);

                TestProvider.Log.Info("Hey again!");
                TestProvider.Log.Warning(3, 4);
                await this.WaitForItems(this.adapterHelper.Channel, 5).ConfigureAwait(false);

                List <TraceTelemetry> expectedTelemetry = new List <TraceTelemetry>();
                TraceTelemetry        traceTelemetry    = new TraceTelemetry("Hey!", SeverityLevel.Information);
                traceTelemetry.Properties["information"] = "Hey!";
                expectedTelemetry.Add(traceTelemetry);
                traceTelemetry = new TraceTelemetry("Warning!", SeverityLevel.Warning);
                traceTelemetry.Properties["i1"] = 1.ToString(InvariantCulture);
                traceTelemetry.Properties["i2"] = 2.ToString(InvariantCulture);
                expectedTelemetry.Add(traceTelemetry);
                // Note that second informational event is not expected
                traceTelemetry = new TraceTelemetry("Warning!", SeverityLevel.Warning);
                traceTelemetry.Properties["i1"] = 3.ToString(InvariantCulture);
                traceTelemetry.Properties["i2"] = 4.ToString(InvariantCulture);
                expectedTelemetry.Add(traceTelemetry);

                CollectionAssert.AreEqual(
                    expectedTelemetry,
                    this.adapterHelper.Channel.SentItems.Where(item => !((TraceTelemetry)item).Properties["EventId"].Equals("65534", StringComparison.Ordinal)).ToList(),
                    new TraceTelemetryComparer(),
                    "Reported events are not what was expected");
            }
        }