private void ProbeEvent(EventSchema eventSchema, EventSource source) { using (var listener = new ProbeEventListener(eventSchema, this)) { try { listener.EnableEvents(source, eventSchema.Level, eventSchema.Keywords); MethodInfo method; if (this.TryInvokeMethod(eventSchema, source, listener, out method)) { if (listener.EventData == null) { throw new EventSourceAnalyzerException(string.Format(CultureInfo.CurrentCulture, Resources.EventSourceAnalyzerMissingWriteEventCallError, method.Name)); } if (listener.Error != null) { throw listener.Error; } } } finally { listener.DisableEvents(source); } } }
public void Enqueue() { using (ProbeEventListener listener = new ProbeEventListener()) { // arrange listener.EnableEvents(ProbeEventListenerEventSource.Log, EventLevel.Verbose); listener.EventSourceCreated += (sender, eventArgs) => _output.WriteLine($"Created event source: {eventArgs.EventSource.Name}"); // act ProbeEventListenerEventSource.Log.Foo("1"); ProbeEventListenerEventSource.Log.Bar("2"); ProbeEventListenerEventSource.Log.Foo("3"); // assert Assert.Collection(listener.OrderedEvents, e => { Assert.Equal("Foo", e.EventName); Assert.Equal("1", e.Payload.Single()); }, e => { Assert.Equal("Bar", e.EventName); Assert.Equal("2", e.Payload.Single()); }, e => { Assert.Equal("Foo", e.EventName); Assert.Equal("3", e.Payload.Single()); }); } }
private void CheckEnableEvents(EventSource eventSource) { using (var listener = new ProbeEventListener()) { //// EnableEvents will do a general validation pass listener.EnableEvents(eventSource, EventLevel.LogAlways); //// Restore source listener.DisableEvents(eventSource); } }
public void RunProcessDisabled() { using (var listener = new ProbeEventListener()) { // act TestEventSource.Log.RunProcess(333); // assert Assert.Empty(listener.OrderedEvents); }; }
public void ActivatingDisabled() { using (ProbeEventListener listener = new ProbeEventListener()) { // act ProviderActivationEventSource.Log.Activating("Activating-Disabled"); // assert Assert.Empty(listener.OrderedEvents); }; }
public void NoInstanceDisabled() { using (ProbeEventListener listener = new ProbeEventListener()) { // act ProviderActivationEventSource.Log.NoInstance("NoInstance-Disabled"); // assert Assert.Empty(listener.OrderedEvents); }; }
public void CriticalFormatDisabled() { using (ProbeEventListener listener = new ProbeEventListener()) { // act DefaultEventSource.Log.Critical("Critical-Format-{0}", "Disabled"); // assert Assert.Empty(listener.OrderedEvents); }; }
public void WarningDisabled() { using (ProbeEventListener listener = new ProbeEventListener()) { // act DefaultEventSource.Log.Warning("Warning-Message-Disabled"); // assert Assert.Empty(listener.OrderedEvents); }; }
public void VerboseFormatDisabled() { using (ProbeEventListener listener = new ProbeEventListener()) { // act DefaultEventSource.Log.Verbose("Verbose-Format-{0}", "Disabled"); // assert Assert.Empty(listener.OrderedEvents); }; }
private bool TryInvokeMethod(EventSchema eventSchema, EventSource source, ProbeEventListener listener, out MethodInfo method) { //// Find the method that matches event id or task name method = this.GetMethodFromSchema(source, eventSchema); if (method != null) { try { // Call with default values to perform all checks but order ParameterInfo[] parameters = method.GetParameters(); object[] defaultValues = parameters.Select(p => p.ParameterType.Default()).ToArray(); method.Invoke(source, defaultValues); if (listener.Error == null && !this.ExcludeWriteEventTypeOrder) { // Invoke the method at most N-1 times, where N == params count. for (int i = 0; i < parameters.Length - 1; i++) { listener.TypeOrderOffset = i; defaultValues[i] = parameters[i].ParameterType.NotDefault(); method.Invoke(source, defaultValues); if (listener.Error != null) { break; } } } return(true); } catch (ArgumentException e) { throw new EventSourceAnalyzerException(string.Format(CultureInfo.CurrentCulture, Resources.EventSourceAnalyzerMethodCallError, method.Name), e); } } return(false); }
private bool TryInvokeMethod(EventSchema eventSchema, EventSource source, ProbeEventListener listener, out MethodInfo method) { //// Find the method that matches event id or task name method = this.GetMethodFromSchema(source, eventSchema); if (method != null) { try { // Call with default values to perform all checks but order ParameterInfo[] parameters = method.GetParameters(); object[] defaultValues = parameters.Select(p => p.ParameterType.Default()).ToArray(); method.Invoke(source, defaultValues); if (listener.Error == null && !this.ExcludeWriteEventTypeOrder) { // Invoke the method at most N-1 times, where N == params count. for (int i = 0; i < parameters.Length - 1; i++) { listener.TypeOrderOffset = i; defaultValues[i] = parameters[i].ParameterType.NotDefault(); method.Invoke(source, defaultValues); if (listener.Error != null) { break; } } } return true; } catch (ArgumentException e) { throw new EventSourceAnalyzerException(string.Format(CultureInfo.CurrentCulture, Properties.Resources.EventSourceAnalyzerMethodCallError, method.Name), e); } } return false; }
private void ProbeEvent(EventSchema eventSchema, EventSource source) { using (var listener = new ProbeEventListener(eventSchema, this)) { try { listener.EnableEvents(source, eventSchema.Level, eventSchema.Keywords); MethodInfo method; if (this.TryInvokeMethod(eventSchema, source, listener, out method)) { if (listener.EventData == null) { throw new EventSourceAnalyzerException(string.Format(CultureInfo.CurrentCulture, Properties.Resources.EventSourceAnalyzerMissingWriteEventCallError, method.Name)); } if (listener.Error != null) { throw listener.Error; } } } finally { listener.DisableEvents(source); } } }