Example #1
0
        public void Test_WriteEvent_ArgsCornerCases()
        {
            TestUtilities.CheckNoEventSourcesRunning("Start");
            using (var log = new EventSourceTest())
            {
                using (var el = new LoudListener(log))
                {
                    // coverage for EventSource.SendCommand()
                    var options = new Dictionary <string, string>()
                    {
                        { "arg", "val" }
                    };
                    EventSource.SendCommand(log, EventCommand.SendManifest, options);


                    log.EventWith7Strings("s0", "s1", "s2", "s3", "s4", "s5", "s6");
                    Assert.Equal(26, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(7, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal("s0", (string)LoudListener.t_lastEvent.Payload[0]);
                    Assert.Equal("s6", (string)LoudListener.t_lastEvent.Payload[6]);

                    log.EventWith9Strings("s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8");
                    Assert.Equal(27, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(9, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal("s0", (string)LoudListener.t_lastEvent.Payload[0]);
                    Assert.Equal("s8", (string)LoudListener.t_lastEvent.Payload[8]);

                    Test_WriteEvent_ArgsCornerCases_TestEtw(log);
                }
            }
            TestUtilities.CheckNoEventSourcesRunning("Stop");
        }
        static partial void Test_WriteEvent_ArgsCornerCases_TestEtw(EventSourceTest log)
        {
            Guid guid = Guid.NewGuid();

            log.EventWithManyTypeArgs("Hello", 0, 0, 0, 'a', 0, 0, 0, 0, (float)10.0, (double)11.0, guid);
            Assert.Equal(25, LoudListener.LastEvent.EventId);
            Assert.Equal(12, LoudListener.LastEvent.Payload.Count);
            Assert.Equal("Hello", (string)LoudListener.LastEvent.Payload[0]);
            Assert.Equal(0, (long)LoudListener.LastEvent.Payload[1]);
            Assert.Equal((uint)0, (uint)LoudListener.LastEvent.Payload[2]);
            Assert.Equal((ulong)0, (ulong)LoudListener.LastEvent.Payload[3]);
            Assert.Equal('a', (char)LoudListener.LastEvent.Payload[4]);
            Assert.Equal((byte)0, (byte)LoudListener.LastEvent.Payload[5]);
            Assert.Equal((sbyte)0, (sbyte)LoudListener.LastEvent.Payload[6]);
            Assert.Equal((short)0, (short)LoudListener.LastEvent.Payload[7]);
            Assert.Equal((ushort)0, (ushort)LoudListener.LastEvent.Payload[8]);
            Assert.Equal((float)10.0, (float)LoudListener.LastEvent.Payload[9]);
            Assert.Equal((double)11.0, (double)LoudListener.LastEvent.Payload[10]);
            Assert.Equal(guid, (Guid)LoudListener.LastEvent.Payload[11]);

            log.EventWithWeirdArgs(IntPtr.Zero, true, MyLongEnum.LongVal1 /*, 9999999999999999999999999999m*/);
            Assert.Equal(30, LoudListener.LastEvent.EventId);
            Assert.Equal(3 /*4*/, LoudListener.LastEvent.Payload.Count);
            Assert.Equal(IntPtr.Zero, (IntPtr)LoudListener.LastEvent.Payload[0]);
            Assert.True((bool)LoudListener.LastEvent.Payload[1]);
            Assert.Equal(MyLongEnum.LongVal1, (MyLongEnum)LoudListener.LastEvent.Payload[2]);
            // Assert.Equal(9999999999999999999999999999m, (decimal)LoudListener.LastEvent.Payload[3]);
        }
        public void TestBasicOperations_IsSupported_False()
        {
            RemoteInvokeOptions options = new RemoteInvokeOptions();

            options.RuntimeConfigurationOptions.Add("System.Diagnostics.Tracing.EventSource.IsSupported", false);

            RemoteExecutor.Invoke(() =>
            {
                using (var log = new EventSourceTest())
                {
                    using (var listener = new LoudListener(log))
                    {
                        IEnumerable <EventSource> sources = EventSource.GetSources();
                        Assert.Empty(sources);

                        Assert.Null(EventSource.GenerateManifest(typeof(SimpleEventSource), string.Empty, EventManifestOptions.OnlyIfNeededForRegistration));
                        Assert.Null(EventSource.GenerateManifest(typeof(EventSourceTest), string.Empty, EventManifestOptions.AllCultures));

                        log.Event0();
                        Assert.Null(LoudListener.LastEvent);

                        EventSource.SendCommand(log, EventCommand.Enable, commandArguments: null);
                        Assert.False(log.IsEnabled());
                    }
                }
            }, options).Dispose();
        }
        static partial void Test_WriteEvent_ArgsBasicTypes_Etw_Validate_DateTime(EventSourceTest log)
        {
            DateTime now = DateTime.Now;

            log.EventDateTime(now);
            Assert.Equal(24, LoudListener.LastEvent.EventId);
            Assert.Equal(1, LoudListener.LastEvent.Payload.Count);
            Assert.Equal((DateTime)LoudListener.LastEvent.Payload[0], now);
        }
Example #5
0
        public void Test_WriteEvent_ArgsCornerCases()
        {
            TestUtilities.CheckNoEventSourcesRunning("Start");
            using (var log = new EventSourceTest())
            {
                using (var el = new LoudListener())
                {
                    // coverage for EventSource.SendCommand()
                    var options = new Dictionary <string, string>()
                    {
                        { "arg", "val" }
                    };
                    EventSource.SendCommand(log, EventCommand.SendManifest, options);

                    Guid guid = Guid.NewGuid();
#if USE_ETW // TODO: Enable when TraceEvent is available on CoreCLR. GitHub issue #4864.
                    log.EventWithManyTypeArgs("Hello", 0, 0, 0, 'a', 0, 0, 0, 0, (float)10.0, (double)11.0, guid);
                    Assert.Equal(25, LoudListener.LastEvent.EventId);
                    Assert.Equal(12, LoudListener.LastEvent.Payload.Count);
                    Assert.Equal("Hello", (string)LoudListener.LastEvent.Payload[0]);
                    Assert.Equal(0, (long)LoudListener.LastEvent.Payload[1]);
                    Assert.Equal((uint)0, (uint)LoudListener.LastEvent.Payload[2]);
                    Assert.Equal((ulong)0, (ulong)LoudListener.LastEvent.Payload[3]);
                    Assert.Equal('a', (char)LoudListener.LastEvent.Payload[4]);
                    Assert.Equal((byte)0, (byte)LoudListener.LastEvent.Payload[5]);
                    Assert.Equal((sbyte)0, (sbyte)LoudListener.LastEvent.Payload[6]);
                    Assert.Equal((short)0, (short)LoudListener.LastEvent.Payload[7]);
                    Assert.Equal((ushort)0, (ushort)LoudListener.LastEvent.Payload[8]);
                    Assert.Equal((float)10.0, (float)LoudListener.LastEvent.Payload[9]);
                    Assert.Equal((double)11.0, (double)LoudListener.LastEvent.Payload[10]);
                    Assert.Equal(guid, (Guid)LoudListener.LastEvent.Payload[11]);
#endif // USE_ETW
                    log.EventWith7Strings("s0", "s1", "s2", "s3", "s4", "s5", "s6");
                    Assert.Equal(26, LoudListener.LastEvent.EventId);
                    Assert.Equal(7, LoudListener.LastEvent.Payload.Count);
                    Assert.Equal("s0", (string)LoudListener.LastEvent.Payload[0]);
                    Assert.Equal("s6", (string)LoudListener.LastEvent.Payload[6]);

                    log.EventWith9Strings("s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8");
                    Assert.Equal(27, LoudListener.LastEvent.EventId);
                    Assert.Equal(9, LoudListener.LastEvent.Payload.Count);
                    Assert.Equal("s0", (string)LoudListener.LastEvent.Payload[0]);
                    Assert.Equal("s8", (string)LoudListener.LastEvent.Payload[8]);
#if USE_ETW // TODO: Enable when TraceEvent is available on CoreCLR. GitHub issue #4864.
                    log.EventWithWeirdArgs(IntPtr.Zero, true, MyLongEnum.LongVal1 /*, 9999999999999999999999999999m*/);
                    Assert.Equal(30, LoudListener.LastEvent.EventId);
                    Assert.Equal(3 /*4*/, LoudListener.LastEvent.Payload.Count);
                    Assert.Equal(IntPtr.Zero, (IntPtr)LoudListener.LastEvent.Payload[0]);
                    Assert.Equal(true, (bool)LoudListener.LastEvent.Payload[1]);
                    Assert.Equal(MyLongEnum.LongVal1, (MyLongEnum)LoudListener.LastEvent.Payload[2]);
                    // Assert.Equal(9999999999999999999999999999m, (decimal)LoudListener.LastEvent.Payload[3]);
#endif // USE_ETW
                }
            }
            TestUtilities.CheckNoEventSourcesRunning("Stop");
        }
Example #6
0
        public void Test_WriteEvent_TransferEvents()
        {
            TestUtilities.CheckNoEventSourcesRunning("Start");
            using (var log = new EventSourceTest())
            {
                using (var el = new LoudListener())
                {
                    Guid actid = Guid.NewGuid();
                    log.LogTaskScheduled(actid, "Hello from a test");
                    Assert.Equal(17, LoudListener.LastEvent.EventId);
                    Assert.Equal(actid, LoudListener.LastEvent.RelatedActivityId);
                    Assert.Equal(1, LoudListener.LastEvent.Payload.Count);
                    Assert.Equal("Hello from a test", (string)LoudListener.LastEvent.Payload[0]);

                    actid = Guid.NewGuid();
                    log.LogTaskScheduledBad(actid, "Hello again");
                    Assert.Equal(23, LoudListener.LastEvent.EventId);
                    Assert.Equal(actid, LoudListener.LastEvent.RelatedActivityId);
                    Assert.Equal(1, LoudListener.LastEvent.Payload.Count);
                    Assert.Equal("Hello again", (string)LoudListener.LastEvent.Payload[0]);

                    actid = Guid.NewGuid();
                    Guid guid = Guid.NewGuid();
                    log.EventWithXferManyTypeArgs(actid, 0, 0, 0, 'a', 0, 0, 0, 0, (float)10.0, (double)11.0, guid);
                    Assert.Equal(29, LoudListener.LastEvent.EventId);
                    Assert.Equal(actid, LoudListener.LastEvent.RelatedActivityId);
                    Assert.Equal(11, LoudListener.LastEvent.Payload.Count);
                    Assert.Equal(0, (long)LoudListener.LastEvent.Payload[0]);
                    Assert.Equal((uint)0, (uint)LoudListener.LastEvent.Payload[1]);
                    Assert.Equal((ulong)0, (ulong)LoudListener.LastEvent.Payload[2]);
                    Assert.Equal('a', (char)LoudListener.LastEvent.Payload[3]);
                    Assert.Equal((byte)0, (byte)LoudListener.LastEvent.Payload[4]);
                    Assert.Equal((sbyte)0, (sbyte)LoudListener.LastEvent.Payload[5]);
                    Assert.Equal((short)0, (short)LoudListener.LastEvent.Payload[6]);
                    Assert.Equal((ushort)0, (ushort)LoudListener.LastEvent.Payload[7]);
                    Assert.Equal((float)10.0, (float)LoudListener.LastEvent.Payload[8]);
                    Assert.Equal((double)11.0, (double)LoudListener.LastEvent.Payload[9]);
                    Assert.Equal(guid, (Guid)LoudListener.LastEvent.Payload[10]);

                    actid = Guid.NewGuid();
                    log.EventWithXferWeirdArgs(actid, IntPtr.Zero, true, MyLongEnum.LongVal1 /*, 9999999999999999999999999999m*/);
                    Assert.Equal(31, LoudListener.LastEvent.EventId);
                    Assert.Equal(actid, LoudListener.LastEvent.RelatedActivityId);
                    Assert.Equal(3 /*4*/, LoudListener.LastEvent.Payload.Count);
                    Assert.Equal(IntPtr.Zero, (IntPtr)LoudListener.LastEvent.Payload[0]);
                    Assert.Equal(true, (bool)LoudListener.LastEvent.Payload[1]);
                    Assert.Equal(MyLongEnum.LongVal1, (MyLongEnum)LoudListener.LastEvent.Payload[2]);
                    // Assert.Equal(9999999999999999999999999999m, (decimal)LoudListener.LastEvent.Payload[3]);

                    actid = Guid.NewGuid();
                    Assert.Throws <EventSourceException>(() => log.LogTransferNoOpcode(actid));
                }
            }
            TestUtilities.CheckNoEventSourcesRunning("Stop");
        }
        static partial void Test_WriteEvent_AddEtwTests(List <SubTest> tests, EventSourceTest logger)
        {
            if (!IsProcessElevated)
            {
                return;
            }

            tests.Add(new SubTest("Write/Basic/EventWithManyTypeArgs",
                                  delegate()
            {
                logger.EventWithManyTypeArgs("Hello", 1, 2, 3, 'a', 4, 5, 6, 7,
                                             (float)10.0, (double)11.0, logger.Guid);
            },
                                  delegate(Event evt)
            {
                Assert.Equal(logger.Name, evt.ProviderName);
                Assert.Equal("EventWithManyTypeArgs", evt.EventName);
                Assert.Equal("Hello", evt.PayloadValue(0, "msg"));
                Assert.Equal((float)10.0, evt.PayloadValue(9, "f"));
                Assert.Equal((double)11.0, evt.PayloadValue(10, "d"));
                Assert.Equal(logger.Guid, evt.PayloadValue(11, "guid"));
            }));

            tests.Add(new SubTest("Write/Activity/EventWithXferWeirdArgs",
                                  delegate()
            {
                var actid = Guid.NewGuid();
                logger.EventWithXferWeirdArgs(actid,
                                              (IntPtr)128,
                                              true,
                                              SdtEventSources.MyLongEnum.LongVal1);
            },
                                  delegate(Event evt)
            {
                Assert.Equal(logger.Name, evt.ProviderName);

                // We log EventWithXferWeirdArgs in one case and
                // WorkWeirdArgs/Send in the other
                Assert.Contains("WeirdArgs", evt.EventName);

                Assert.Equal("128", evt.PayloadValue(0, "iptr").ToString());
                Assert.True((bool)evt.PayloadValue(1, "b"));
                Assert.Equal((long)SdtEventSources.MyLongEnum.LongVal1, ((IConvertible)evt.PayloadValue(2, "le")).ToInt64(null));
            }));
        }
Example #8
0
        public void Test_EventListenerThrows_ExceptionIsNotRethrownToCaller(bool setThrowOnEventWriteErrorsFlag)
        {
            TestUtilities.CheckNoEventSourcesRunning("Start");

            using (var log = new EventSourceTest(throwOnEventWriteErrors: setThrowOnEventWriteErrorsFlag))
            {
                using (var listener = new EventListenerListener())
                {
                    listener.EventSourceSynchronousEnable(log);

                    var    thrownException  = new Exception("Oops");
                    string outOfBandMessage = null;

                    listener.EventWritten += (_, e) =>
                    {
                        if (e.EventId == 0)
                        {
                            outOfBandMessage = e.Message;
                        }

                        throw thrownException;
                    };

                    try
                    {
                        log.Event0();
                        Assert.False(setThrowOnEventWriteErrorsFlag);
                    }
                    catch (EventSourceException ex)
                    {
                        Assert.True(setThrowOnEventWriteErrorsFlag);
                        Assert.Same(thrownException, ex.InnerException);
                    }

                    Assert.Contains(thrownException.Message, outOfBandMessage);
                }
            }

            TestUtilities.CheckNoEventSourcesRunning("Stop");
        }
Example #9
0
        public void Test_WriteEvent_ZeroKwds()
        {
            TestUtilities.CheckNoEventSourcesRunning("Start");

            using (var log = new EventSourceTest())
            {
                using (var el = new LoudListener(log))
                {
                    // match any kwds == 0
                    el.EnableEvents(log, 0, 0);

                    // Fire an event without a kwd: EventWithEscapingMessage

                    // 1. Validate that the event fires when ETW event method called unconditionally
                    log.EventWithEscapingMessage("Hello world!", 10);
                    Assert.NotNull(LoudListener.t_lastEvent);
                    Assert.Equal(2, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal("Hello world!", (string)LoudListener.t_lastEvent.Payload[0]);
                    Assert.Equal(10, (int)LoudListener.t_lastEvent.Payload[1]);

                    // reset LastEvent
                    LoudListener.t_lastEvent = null;

                    // 2. Validate that the event fires when ETW event method call is guarded by IsEnabled
                    if (log.IsEnabled(EventLevel.Informational, 0))
                    {
                        log.EventWithEscapingMessage("Goodbye skies!", 100);
                    }
                    Assert.NotNull(LoudListener.t_lastEvent);
                    Assert.Equal(2, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal("Goodbye skies!", (string)LoudListener.t_lastEvent.Payload[0]);
                    Assert.Equal(100, (int)LoudListener.t_lastEvent.Payload[1]);
                }
            }
            TestUtilities.CheckNoEventSourcesRunning("Stop");
        }
Example #10
0
 static partial void Test_WriteEvent_AddEtwTests(List <SubTest> tests, EventSourceTest logger);
Example #11
0
        /// <summary>
        /// Helper method for the two tests above.
        /// </summary>
        private void Test_WriteEvent(Listener listener, bool useSelfDescribingEvents, bool isEtwListener = false)
        {
            using (var logger = new EventSourceTest(useSelfDescribingEvents))
            {
                var tests = new List <SubTest>();

                /*************************************************************************/
                tests.Add(new SubTest("WriteEvent/Basic/EventII",
                                      delegate()
                                      { logger.EventII(10, 11); },
                                      delegate(Event evt)
                {
                    Assert.Equal(logger.Name, evt.ProviderName);
                    Assert.Equal("EventII", evt.EventName);
                    Assert.Equal(10, evt.PayloadValue(0, "arg1"));
                    Assert.Equal(11, evt.PayloadValue(1, "arg2"));
                }));
                /*************************************************************************/
                tests.Add(new SubTest("WriteEvent/Basic/EventSS",
                                      delegate()
                                      { logger.EventSS("one", "two"); },
                                      delegate(Event evt)
                {
                    Assert.Equal(logger.Name, evt.ProviderName);
                    Assert.Equal("EventSS", evt.EventName);
                    Assert.Equal("one", evt.PayloadValue(0, "arg1"));
                    Assert.Equal("two", evt.PayloadValue(1, "arg2"));
                }));
                /*************************************************************************/
                tests.Add(new SubTest("Write/Basic/EventWith7Strings",
                                      delegate()
                {
                    logger.EventWith7Strings("s0", "s1", "s2", "s3", "s4", "s5", "s6");
                },
                                      delegate(Event evt)
                {
                    Assert.Equal(logger.Name, evt.ProviderName);
                    Assert.Equal("EventWith7Strings", evt.EventName);
                    Assert.Equal("s0", (string)evt.PayloadValue(0, "s0"));
                    Assert.Equal("s6", (string)evt.PayloadValue(6, "s6"));
                }));
                /*************************************************************************/
                tests.Add(new SubTest("Write/Basic/EventWith9Strings",
                                      delegate()
                {
                    logger.EventWith9Strings("s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8");
                },
                                      delegate(Event evt)
                {
                    Assert.Equal(logger.Name, evt.ProviderName);
                    Assert.Equal("EventWith9Strings", evt.EventName);
                    Assert.Equal("s0", (string)evt.PayloadValue(0, "s0"));
                    Assert.Equal("s8", (string)evt.PayloadValue(8, "s8"));
                }));
                /*************************************************************************/
                Test_WriteEvent_AddEtwTests(tests, logger);

                /*************************************************************************/
                /*************************** ENUM TESTING *******************************/
                /*************************************************************************/

                /*************************************************************************/
                tests.Add(new SubTest("WriteEvent/Enum/EventEnum",
                                      delegate()
                {
                    logger.EventEnum(SdtEventSources.MyColor.Blue);
                },
                                      delegate(Event evt)
                {
                    Assert.Equal(logger.Name, evt.ProviderName);
                    Assert.Equal("EventEnum", evt.EventName);

                    Assert.Equal(1, ((IConvertible)evt.PayloadValue(0, "x")).ToInt32(null));
                    if (evt.IsEtw && !useSelfDescribingEvents)
                    {
                        Assert.Equal("Blue", evt.PayloadString(0, "x"));
                    }
                }));

                tests.Add(new SubTest("WriteEvent/Enum/EventEnum1",
                                      delegate()
                {
                    logger.EventEnum1(MyColor.Blue);
                },
                                      delegate(Event evt)
                {
                    Assert.Equal(logger.Name, evt.ProviderName);
                    Assert.Equal("EventEnum1", evt.EventName);

                    Assert.Equal(1, ((IConvertible)evt.PayloadValue(0, "x")).ToInt32(null));
                    if (evt.IsEtw && !useSelfDescribingEvents)
                    {
                        Assert.Equal("Blue", evt.PayloadString(0, "x"));
                    }
                }));

                tests.Add(new SubTest("WriteEvent/Basic/EventWithIntIntString",
                                      delegate()
                                      { logger.EventWithIntIntString(10, 11, "test"); },
                                      delegate(Event evt)
                {
                    Assert.Equal(logger.Name, evt.ProviderName);
                    Assert.Equal("EventWithIntIntString", evt.EventName);
                    Assert.Equal(10, evt.PayloadValue(0, "i1"));
                    Assert.Equal(11, evt.PayloadValue(1, "i2"));
                    Assert.Equal("test", evt.PayloadValue(2, "str"));
                }));

                tests.Add(new SubTest("WriteEvent/Basic/EventWithIntLongString",
                                      delegate()
                                      { logger.EventWithIntLongString(10, (long)11, "test"); },
                                      delegate(Event evt)
                {
                    Assert.Equal(logger.Name, evt.ProviderName);
                    Assert.Equal("EventWithIntLongString", evt.EventName);
                    Assert.Equal(10, evt.PayloadValue(0, "i1"));
                    Assert.Equal(evt.PayloadValue(1, "l1"), (long)11);
                    Assert.Equal("test", evt.PayloadValue(2, "str"));
                }));

                tests.Add(new SubTest("WriteEvent/Basic/EventWithString",
                                      delegate()
                                      { logger.EventWithString(null); },
                                      delegate(Event evt)
                {
                    Assert.Equal(logger.Name, evt.ProviderName);
                    Assert.Equal(1, evt.PayloadCount);
                    Assert.Equal("", evt.PayloadValue(0, null));
                }));


                tests.Add(new SubTest("WriteEvent/Basic/EventWithIntAndString",
                                      delegate()
                                      { logger.EventWithIntAndString(12, null); },
                                      delegate(Event evt)
                {
                    Assert.Equal(logger.Name, evt.ProviderName);
                    Assert.Equal(2, evt.PayloadCount);
                    Assert.Equal(12, evt.PayloadValue(0, null));
                    Assert.Equal("", evt.PayloadValue(1, null));
                }));

                tests.Add(new SubTest("WriteEvent/Basic/EventWithLongAndString",
                                      delegate()
                                      { logger.EventWithLongAndString(120L, null); },
                                      delegate(Event evt)
                {
                    Assert.Equal(logger.Name, evt.ProviderName);
                    Assert.Equal(2, evt.PayloadCount);
                    Assert.Equal(120L, evt.PayloadValue(0, null));
                    Assert.Equal("", evt.PayloadValue(1, null));
                }));

                tests.Add(new SubTest("WriteEvent/Basic/EventWithStringAndInt",
                                      delegate()
                                      { logger.EventWithStringAndInt(null, 12); },
                                      delegate(Event evt)
                {
                    Assert.Equal(logger.Name, evt.ProviderName);
                    Assert.Equal(2, evt.PayloadCount);
                    Assert.Equal("", evt.PayloadValue(0, null));
                    Assert.Equal(12, evt.PayloadValue(1, null));
                }));

                tests.Add(new SubTest("WriteEvent/Basic/EventWithStringAndIntAndInt",
                                      delegate()
                                      { logger.EventWithStringAndIntAndInt(null, 12, 13); },
                                      delegate(Event evt)
                {
                    Assert.Equal(logger.Name, evt.ProviderName);
                    Assert.Equal(3, evt.PayloadCount);
                    Assert.Equal("", evt.PayloadValue(0, null));
                    Assert.Equal(12, evt.PayloadValue(1, null));
                    Assert.Equal(13, evt.PayloadValue(2, null));
                }));

                tests.Add(new SubTest("WriteEvent/Basic/EventWithStringAndLong",
                                      delegate()
                                      { logger.EventWithStringAndLong(null, 120L); },
                                      delegate(Event evt)
                {
                    Assert.Equal(logger.Name, evt.ProviderName);
                    Assert.Equal(2, evt.PayloadCount);
                    Assert.Equal("", evt.PayloadValue(0, null));
                    Assert.Equal(120L, evt.PayloadValue(1, null));
                }));

                tests.Add(new SubTest("WriteEvent/Basic/EventWithStringAndString",
                                      delegate()
                                      { logger.EventWithStringAndString(null, null); },
                                      delegate(Event evt)
                {
                    Assert.Equal(logger.Name, evt.ProviderName);
                    Assert.Equal(2, evt.PayloadCount);
                    Assert.Equal("", evt.PayloadValue(0, null));
                    Assert.Equal("", evt.PayloadValue(1, null));
                }));

                tests.Add(new SubTest("WriteEvent/Basic/EventWithStringAndStringAndString",
                                      delegate()
                                      { logger.EventWithStringAndStringAndString(null, null, null); },
                                      delegate(Event evt)
                {
                    Assert.Equal(logger.Name, evt.ProviderName);
                    Assert.Equal(3, evt.PayloadCount);
                    Assert.Equal("", evt.PayloadValue(0, null));
                    Assert.Equal("", evt.PayloadValue(1, null));
                    Assert.Equal("", evt.PayloadValue(2, null));
                }));

                // Self-describing ETW does not support NULL arguments.
                if (useSelfDescribingEvents && !(isEtwListener))
                {
                    tests.Add(new SubTest("WriteEvent/Basic/EventVarArgsWithString",
                                          delegate()
                                          { logger.EventVarArgsWithString(1, 2, 12, null); },
                                          delegate(Event evt)
                    {
                        Assert.Equal(logger.Name, evt.ProviderName);
                        Assert.Equal(4, evt.PayloadCount);
                        Assert.Equal(1, evt.PayloadValue(0, null));
                        Assert.Equal(2, evt.PayloadValue(1, null));
                        Assert.Equal(12, evt.PayloadValue(2, null));
                        Assert.Equal("", evt.PayloadValue(3, null));
                    }));
                }

                // Probably belongs in the user TestUsersErrors.cs.
                if (!useSelfDescribingEvents)
                {
                    tests.Add(new SubTest("WriteEvent/Basic/EventWithIncorrectNumberOfParameters",
                                          delegate()
                    {
                        logger.EventWithIncorrectNumberOfParameters("TestMessage", "TestPath", 10);
                    },
                                          delegate(List <Event> evts)
                    {
                        Assert.True(0 < evts.Count);

                        // We give an error message in EventListener case but not the ETW case.
                        if (1 < evts.Count)
                        {
                            Assert.Equal(2, evts.Count);
                            Assert.Equal(logger.Name, evts[0].ProviderName);
                            Assert.Equal("EventSourceMessage", evts[0].EventName);
                            string errorMsg = evts[0].PayloadString(0, "message");
                            Assert.Matches("called with 1.*defined with 3", errorMsg);
                        }

                        int eventIdx = evts.Count - 1;
                        Assert.Equal(logger.Name, evts[eventIdx].ProviderName);
                        Assert.Equal("EventWithIncorrectNumberOfParameters", evts[eventIdx].EventName);
                        Assert.Equal("{TestPath:10}TestMessage", evts[eventIdx].PayloadString(0, "message"));
                    }));
                }

                // If you only wish to run one or several of the tests you can filter them here by
                // Uncommenting the following line.
                // tests = tests.FindAll(test => Regex.IsMatch(test.Name, "ventWithByteArray"));

                // Next run the same tests with the TraceLogging path.
                EventTestHarness.RunTests(tests, listener, logger);
            }
        }
Example #12
0
        public void Test_WriteEvent_ArgsBasicTypes()
        {
            TestUtilities.CheckNoEventSourcesRunning("Start");

            using (var log = new EventSourceTest())
            {
                using (var el = new LoudListener(log))
                {
                    var sources = EventSource.GetSources();
                    Assert.Contains(log, sources);

                    Assert.NotNull(EventSource.GenerateManifest(typeof(SimpleEventSource), string.Empty, EventManifestOptions.OnlyIfNeededForRegistration));
                    Assert.Null(EventSource.GenerateManifest(typeof(EventSourceTest), string.Empty, EventManifestOptions.OnlyIfNeededForRegistration));

                    log.Event0();
                    Assert.Equal(1, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(0, LoudListener.t_lastEvent.Payload.Count);

                    #region Validate "int" arguments

                    log.EventI(10);
                    Assert.Equal(2, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(1, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal(10, (int)LoudListener.t_lastEvent.Payload[0]);

                    log.EventII(10, 11);
                    Assert.Equal(3, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(2, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal(10, (int)LoudListener.t_lastEvent.Payload[0]);
                    Assert.Equal(11, (int)LoudListener.t_lastEvent.Payload[1]);

                    log.EventIII(10, 11, 12);
                    Assert.Equal(4, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(3, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal(10, (int)LoudListener.t_lastEvent.Payload[0]);
                    Assert.Equal(11, (int)LoudListener.t_lastEvent.Payload[1]);
                    Assert.Equal(12, (int)LoudListener.t_lastEvent.Payload[2]);

                    #endregion

                    #region Validate "long" arguments

                    log.EventL(10);
                    Assert.Equal(5, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(1, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal(10, (long)LoudListener.t_lastEvent.Payload[0]);

                    log.EventLL(10, 11);
                    Assert.Equal(6, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(2, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal(10, (long)LoudListener.t_lastEvent.Payload[0]);
                    Assert.Equal(11, (long)LoudListener.t_lastEvent.Payload[1]);

                    log.EventLLL(10, 11, 12);
                    Assert.Equal(7, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(3, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal(10, (long)LoudListener.t_lastEvent.Payload[0]);
                    Assert.Equal(11, (long)LoudListener.t_lastEvent.Payload[1]);
                    Assert.Equal(12, (long)LoudListener.t_lastEvent.Payload[2]);

                    #endregion

                    #region Validate "string" arguments

                    log.EventS("10");
                    Assert.Equal(8, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(1, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal("10", (string)LoudListener.t_lastEvent.Payload[0]);

                    log.EventSS("10", "11");
                    Assert.Equal(9, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(2, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal("10", (string)LoudListener.t_lastEvent.Payload[0]);
                    Assert.Equal("11", (string)LoudListener.t_lastEvent.Payload[1]);

                    log.EventSSS("10", "11", "12");
                    Assert.Equal(10, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(3, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal("10", (string)LoudListener.t_lastEvent.Payload[0]);
                    Assert.Equal("11", (string)LoudListener.t_lastEvent.Payload[1]);
                    Assert.Equal("12", (string)LoudListener.t_lastEvent.Payload[2]);

                    #endregion

                    #region Validate byte array arguments

                    byte[] arr = new byte[20];
                    log.EventWithByteArray(arr);
                    Assert.Equal(52, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(1, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal(arr.Length, ((byte[])LoudListener.t_lastEvent.Payload[0]).Length);

                    #endregion

                    #region Validate mixed type arguments

                    log.EventSI("10", 11);
                    Assert.Equal(11, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(2, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal("10", (string)LoudListener.t_lastEvent.Payload[0]);
                    Assert.Equal(11, (int)LoudListener.t_lastEvent.Payload[1]);

                    log.EventSL("10", 11);
                    Assert.Equal(12, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(2, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal("10", (string)LoudListener.t_lastEvent.Payload[0]);
                    Assert.Equal(11, (long)LoudListener.t_lastEvent.Payload[1]);

                    log.EventSII("10", 11, 12);
                    Assert.Equal(13, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(3, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal("10", (string)LoudListener.t_lastEvent.Payload[0]);
                    Assert.Equal(11, (int)LoudListener.t_lastEvent.Payload[1]);
                    Assert.Equal(12, (int)LoudListener.t_lastEvent.Payload[2]);

                    #endregion

                    #region Validate enums/flags

                    log.EventEnum(MyColor.Blue);
                    Assert.Equal(19, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(1, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal(MyColor.Blue, (MyColor)LoudListener.t_lastEvent.Payload[0]);

                    log.EventEnum1(MyColor.Green);
                    Assert.Equal(20, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(1, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal(MyColor.Green, (MyColor)LoudListener.t_lastEvent.Payload[0]);

                    log.EventFlags(MyFlags.Flag1);
                    Assert.Equal(21, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(1, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal(MyFlags.Flag1, (MyFlags)LoudListener.t_lastEvent.Payload[0]);

                    log.EventFlags1(MyFlags.Flag1);
                    Assert.Equal(22, LoudListener.t_lastEvent.EventId);
                    Assert.Equal(1, LoudListener.t_lastEvent.Payload.Count);
                    Assert.Equal(MyFlags.Flag1, (MyFlags)LoudListener.t_lastEvent.Payload[0]);

                    #endregion

                    #region Validate DateTime
                    Test_WriteEvent_ArgsBasicTypes_Etw_Validate_DateTime(log);
                    #endregion
                }
            }

            TestUtilities.CheckNoEventSourcesRunning("Stop");
        }
Example #13
0
 public void MethodsAreImplementedConsistentlyWithTheirAttributes()
 {
     EventSourceTest.MethodsAreImplementedConsistentlyWithTheirAttributes(DependencyCollectorEventSource.Log);
 }
Example #14
0
 static partial void Test_WriteEvent_ArgsBasicTypes_Etw_Validate_DateTime(EventSourceTest log);
 public void MethodsAreImplementedConsistentlyWithTheirAttributes()
 {
     EventSourceTest.MethodsAreImplementedConsistentlyWithTheirAttributes(WindowsServerEventSource.Log);
 }
 public void MethodsAreImplementedConsistentlyWithTheirAttributes()
 {
     EventSourceTest.MethodsAreImplementedConsistentlyWithTheirAttributes(TelemetryChannelEventSource.Log);
 }
Example #17
0
 static partial void Test_WriteEvent_ArgsCornerCases_TestEtw(EventSourceTest log);