Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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());
        }
Ejemplo n.º 6
0
        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());
        }