public void Overflow() { var buffer = new Ci.Agent.Payloads.EventsBuffer <Ci.IEvent>(10, Ci.Agent.MessagePack.CIFormatterResolver.Instance); Assert.False(buffer.IsFull); var spanEvent = new SpanEvent(new Span(new SpanContext(1, 1), DateTimeOffset.UtcNow)); var result = buffer.TryWrite(spanEvent); Assert.False(result); Assert.Equal(0, buffer.Count); Assert.True(buffer.IsFull); buffer.Lock(); var innerBuffer = buffer.Data; var actualBuffer = innerBuffer.Skip(innerBuffer.Offset).Take(innerBuffer.Count).ToArray(); Assert.True(actualBuffer.Skip(Ci.Agent.Payloads.EventsBuffer <Ci.IEvent> .HeaderSize).All(b => b == 0x0), "No data should have been written to the buffer"); buffer.Clear(); Assert.False(buffer.IsFull); }
public void EventsBufferTest() { int headerSize = Ci.Agent.Payloads.EventsBuffer <Ci.IEvent> .HeaderSize; var span = new Span(new SpanContext(TraceId.CreateFromUlong(1), 1), DateTimeOffset.UtcNow); var spanEvent = new SpanEvent(span); var individualType = MessagePackSerializer.Serialize <Ci.IEvent>(spanEvent, Ci.Agent.MessagePack.CIFormatterResolver.Instance); int bufferSize = 256; int maxBufferSize = (int)(4.5 * 1024 * 1024); while (bufferSize < maxBufferSize) { var eventBuffer = new Ci.Agent.Payloads.EventsBuffer <Ci.IEvent>(bufferSize, Ci.Agent.MessagePack.CIFormatterResolver.Instance); while (eventBuffer.TryWrite(spanEvent)) { // . } // The number of items in the events should be the same as the num calculated // without decimals (items that doesn't fit doesn't get added) var numItemsTrunc = (bufferSize - headerSize) / individualType.Length; Assert.Equal(numItemsTrunc, eventBuffer.Count); bufferSize *= 2; } }
public void LockingBuffer() { var buffer = new Ci.Agent.Payloads.EventsBuffer <Ci.IEvent>(10 * 1024 * 1024, Ci.Agent.MessagePack.CIFormatterResolver.Instance); var spanEvent = new SpanEvent(new Span(new SpanContext(1, 1), DateTimeOffset.UtcNow)); Assert.True(buffer.TryWrite(spanEvent)); buffer.Lock(); Assert.False(buffer.TryWrite(spanEvent)); buffer.Clear(); Assert.True(buffer.TryWrite(spanEvent)); }
public void ClearingBuffer() { var buffer = new Ci.Agent.Payloads.EventsBuffer <Ci.IEvent>(10 * 1024 * 1024, Ci.Agent.MessagePack.CIFormatterResolver.Instance); var spanEvent = new SpanEvent(new Span(new SpanContext(1, 1), DateTimeOffset.UtcNow)); Assert.True(buffer.TryWrite(spanEvent)); Assert.Equal(1, buffer.Count); buffer.Clear(); Assert.Equal(0, buffer.Count); buffer.Lock(); var innerBuffer = buffer.Data; Assert.Equal(Ci.Agent.Payloads.EventsBuffer <Ci.IEvent> .HeaderSize, innerBuffer.Count); }
public static void SpanEventDoesNotHaveAttributes(IEnumerable <string> unexpectedAttributes, SpanEventAttributeType attributeType, SpanEvent spanEvent) { var succeeded = true; var builder = new StringBuilder(); var actualAttributes = spanEvent.GetByType(attributeType); foreach (var unexpectedAttribute in unexpectedAttributes) { if (actualAttributes.ContainsKey(unexpectedAttribute)) { builder.AppendFormat("Attribute named {0} was found in the span event but it should not have been.", unexpectedAttribute); builder.AppendLine(); succeeded = false; } } Assert.True(succeeded, builder.ToString()); }
public static void SpanEventHasAttributes(IEnumerable <string> expectedAttributes, SpanEventAttributeType attributeType, SpanEvent spanEvent) { var succeeded = true; var builder = new StringBuilder(); var actualAttributes = spanEvent.GetByType(attributeType); foreach (var expectedAttribute in expectedAttributes) { if (!actualAttributes.ContainsKey(expectedAttribute)) { builder.AppendFormat("Attribute named {0} was not found in the span event.", expectedAttribute); builder.AppendLine(); succeeded = false; } } Assert.True(succeeded, builder.ToString()); }