static int Main(string[] args) { bool pass = false; using (var listener = new SimpleEventListener("SimpleEventSource", EventLevel.Verbose)) { SimpleEventSource eventSource = new SimpleEventSource(); Console.WriteLine("\tStart: Messaging."); // Send messages // Use random numbers and addition as a simple, human readble checksum Random generator = new Random(); for (int i = 0; i < messageIterations; i++) { int x = generator.Next(1, 1000); int y = generator.Next(1, 1000); string formula = String.Format("{0} + {1} = {2}", x, y, x + y); eventSource.MathResult(x, y, x + y, formula); } Console.WriteLine("\tEnd: Messaging.\n"); Console.WriteLine($"\tEventListener received {listener.EventCount} event(s)\n"); pass = listener.EventCount == messageIterations; } return(pass ? 100 : -1); }
static int Main(string[] args) { SimpleEventListener.EnableKeywords = (EventKeywords)0; using (SimpleEventListener noEventsListener = new SimpleEventListener("NoEvents")) { // Create an EventListener. SimpleEventListener.EnableKeywords = (EventKeywords)0x4c14fccbd; using (SimpleEventListener listener = new SimpleEventListener("Simple")) { // Trigger the allocator task. System.Threading.Tasks.Task.Run(new Action(Allocator)); // Wait for events. Thread.Sleep(1000); // Generate some GC events. GC.Collect(2, GCCollectionMode.Forced); // Wait for more events. Thread.Sleep(1000); // Ensure that we've seen some events. Assert.True("listener.EventCount > 0", listener.EventCount > 0); } // Generate some more GC events. GC.Collect(2, GCCollectionMode.Forced); // Ensure that we've seen no events. Assert.True("noEventsListener.EventCount == 0", noEventsListener.EventCount == 0); } return(100); }
static int Main(string[] args) { SimpleEventListener.EnableKeywords = (EventKeywords)0; using (SimpleEventListener noEventsListener = new SimpleEventListener("NoEvents")) { // Create an EventListener. SimpleEventListener.EnableKeywords = (EventKeywords)0x4c14fccbd; using (SimpleEventListener listener = new SimpleEventListener("Simple")) { // Trigger the allocator task. Task.Run(new Action(Allocator)); // If on Windows, attempt some Overlapped IO (triggers ThreadPool events) if (OperatingSystem.IsWindows()) { DoOverlappedIO(); } // Generate some GC events. GC.Collect(2, GCCollectionMode.Forced); Stopwatch sw = Stopwatch.StartNew(); while (sw.Elapsed <= TimeSpan.FromMinutes(1)) { Thread.Sleep(100); if ((OperatingSystem.IsWindows() && listener.SeenProvidersAndEvents.Contains("Microsoft-Windows-DotNETRuntime/EVENTID(65)")) || (!OperatingSystem.IsWindows() && listener.EventCount > 0)) { break; } } // Ensure that we've seen some events. foreach (string s in listener.SeenProvidersAndEvents) { Console.WriteLine(s); } Assert.True("listener.EventCount > 0", listener.EventCount > 0); if (OperatingSystem.IsWindows()) { Assert.True("Saw the ThreadPoolIOPack event", listener.SeenProvidersAndEvents.Contains("Microsoft-Windows-DotNETRuntime/EVENTID(65)")); } } // Generate some more GC events. GC.Collect(2, GCCollectionMode.Forced); // Ensure that we've seen no events. Assert.True("noEventsListener.EventCount == 0", noEventsListener.EventCount == 0); } return(100); }
static int Main(string[] args) { // Get the RuntimeEventSource. EventSource eventSource = RuntimeEventSource.Log; using (SimpleEventListener noEventsListener = new SimpleEventListener("NoEvents")) { // Enable the provider, but not any keywords, so we should get no events as long as no rundown occurs. noEventsListener.EnableEvents(eventSource, EventLevel.Critical, (EventKeywords)(0)); // Create an EventListener. using (SimpleEventListener listener = new SimpleEventListener("Simple")) { // Trigger the allocator task. System.Threading.Tasks.Task.Run(new Action(Allocator)); // Enable events. listener.EnableEvents(eventSource, EventLevel.Verbose, (EventKeywords)(0x4c14fccbd)); // Wait for events. Thread.Sleep(1000); // Generate some GC events. GC.Collect(2, GCCollectionMode.Forced); // Wait for more events. Thread.Sleep(1000); // Ensure that we've seen some events. Assert.True("listener.EventCount > 0", listener.EventCount > 0); } // Generate some more GC events. GC.Collect(2, GCCollectionMode.Forced); // Ensure that we've seen no events. Assert.True("noEventsListener.EventCount == 0", noEventsListener.EventCount == 0); } return(100); }