public void Setup() { allocator = new BufferAllocator(); context = new ParseTdhContext(); formatProvider = CultureInfo.InvariantCulture; nativeFormatter = new NativeTdhFormatter(); var record = new EventRecordBuilder(allocator); record.AddArg(32); var info = new TraceEventInfoBuilder(allocator); info.EventMessage = "Foo %1 Bar"; info.PropertyCount = 1; info.TopLevelPropertyCount = 1; info.EventPropertyInfos = new[] { new EVENT_PROPERTY_INFO { InType = TDH_IN_TYPE.INT32, OutType = TDH_OUT_TYPE.INT, countAndCountPropertyIndex = 1, lengthAndLengthPropertyIndex = 4 } }; recordPtr = record.Build(); infoPtr = info.Build(); }
public unsafe void GetMessageForEventRecord() { var allocator = new BufferAllocator(); var record = new EventRecordBuilder(allocator); record.AddArg(32); var recordPtr = record.Build(); var info = new TraceEventInfoBuilder(allocator); info.EventMessage = "Foo %1 Bar"; info.PropertyCount = 1; info.TopLevelPropertyCount = 1; info.EventPropertyInfos = new[] { new EVENT_PROPERTY_INFO { InType = TDH_IN_TYPE.INT32, OutType = TDH_OUT_TYPE.INT, countAndCountPropertyIndex = 1, lengthAndLengthPropertyIndex = 4 } }; var infoPtr = info.Build(); var context = new ParseTdhContext(); var formatProvider = CultureInfo.InvariantCulture; string message; var sw = new Stopwatch(); var formatter = new NativeTdhFormatter(); sw.Restart(); for (int i = 0; i < 100000; ++i) { var eventInfo = new EventInfo { EventRecord = (IntPtr)recordPtr.Ptr, TraceEventInfo = (IntPtr)infoPtr.Ptr, TraceEventInfoSize = (UIntPtr)infoPtr.Size }; message = formatter.GetMessageForEvent( eventInfo, context, formatProvider); Assert.Equal("Foo 32 Bar", message); } sw.Stop(); output.WriteLine("EMF: {0}", sw.ElapsedMilliseconds); allocator.Dispose(); }