Exemple #1
0
        private static TraceResult TraceTest(int width, int height, Scene scene, Camera camera, out Stopwatch stopwatch)
        {
            GC.Collect(int.MaxValue, GCCollectionMode.Forced, true, true); // Clean up heap from baking
            stopwatch = Stopwatch.StartNew();
            TraceParams parameters = new TraceParams()
            {
                ambientLight       = new Vector3(.75f, .75f, .75f),
                camera             = camera,
                height             = height,
                width              = width,
                samplesPerPixel    = 256,
                scene              = scene,
                maxBounces         = 6,
                maxDepth           = float.PositiveInfinity,
                traceTileDimension = 16,
                tracingProcessor   = TracingProcessors <MultithreadedCPUProcessor> .instance
            };
            var result = Tracer.Render(parameters, (count, processed) =>
            {
                if (processed % 25 == 0)
                {
                    Console.WriteLine(string.Format("Completed {0} tiles of {1} ({2} %)", processed.ToString(), count.ToString(), ((processed / (float)count) * 100f).ToString("0.00")));
                }
            });

            stopwatch.Stop();
            return(result);
        }
Exemple #2
0
        public void DroppingAndAddingAttributes()
        {
            int         maxNumberOfAttributes = 8;
            TraceParams traceParams           =
                TraceParams.DEFAULT.ToBuilder().SetMaxNumberOfAttributes(maxNumberOfAttributes).Build();
            ISpan span =
                Span.StartSpan(
                    spanContext,
                    recordSpanOptions,
                    SPAN_NAME,
                    parentSpanId,
                    false,
                    traceParams,
                    startEndHandler,
                    timestampConverter,
                    testClock);

            for (int i = 0; i < 2 * maxNumberOfAttributes; i++)
            {
                IDictionary <String, IAttributeValue> attributes = new Dictionary <String, IAttributeValue>();
                attributes.Add("MyStringAttributeKey" + i, AttributeValue.LongAttributeValue(i));
                span.PutAttributes(attributes);
            }
            ISpanData spanData = ((Span)span).ToSpanData();

            Assert.Equal(maxNumberOfAttributes, spanData.Attributes.DroppedAttributesCount);
            Assert.Equal(maxNumberOfAttributes, spanData.Attributes.AttributeMap.Count);
            for (int i = 0; i < maxNumberOfAttributes; i++)
            {
                Assert.Equal(
                    AttributeValue.LongAttributeValue(i + maxNumberOfAttributes),
                    spanData
                    .Attributes
                    .AttributeMap["MyStringAttributeKey" + (i + maxNumberOfAttributes)]);
            }
            for (int i = 0; i < maxNumberOfAttributes / 2; i++)
            {
                IDictionary <String, IAttributeValue> attributes = new Dictionary <String, IAttributeValue>();
                attributes.Add("MyStringAttributeKey" + i, AttributeValue.LongAttributeValue(i));
                span.PutAttributes(attributes);
            }
            spanData = ((Span)span).ToSpanData();
            Assert.Equal(maxNumberOfAttributes * 3 / 2, spanData.Attributes.DroppedAttributesCount);
            Assert.Equal(maxNumberOfAttributes, spanData.Attributes.AttributeMap.Count);
            // Test that we still have in the attributes map the latest maxNumberOfAttributes / 2 entries.
            for (int i = 0; i < maxNumberOfAttributes / 2; i++)
            {
                Assert.Equal(
                    AttributeValue.LongAttributeValue(i + maxNumberOfAttributes * 3 / 2),
                    spanData
                    .Attributes
                    .AttributeMap["MyStringAttributeKey" + (i + maxNumberOfAttributes * 3 / 2)]);
            }
            // Test that we have the newest re-added initial entries.
            for (int i = 0; i < maxNumberOfAttributes / 2; i++)
            {
                Assert.Equal(AttributeValue.LongAttributeValue(i), spanData.Attributes.AttributeMap["MyStringAttributeKey" + i]);
            }
        }
Exemple #3
0
        public void DroppingAttributes()
        {
            int         maxNumberOfAttributes = 8;
            TraceParams traceParams           =
                TraceParams.Default.ToBuilder().SetMaxNumberOfAttributes(maxNumberOfAttributes).Build();
            ISpan span =
                Span.StartSpan(
                    spanContext,
                    recordSpanOptions,
                    SPAN_NAME,
                    SpanKind.Internal,
                    parentSpanId,
                    traceParams,
                    startEndHandler,
                    timestampConverter);

            for (int i = 0; i < 2 * maxNumberOfAttributes; i++)
            {
                IDictionary <String, IAttributeValue> attributes = new Dictionary <String, IAttributeValue>();
                attributes.Add("MyStringAttributeKey" + i, AttributeValue.LongAttributeValue(i));
                foreach (var attribute in attributes)
                {
                    span.SetAttribute(attribute.Key, attribute.Value);
                }
            }
            SpanData spanData = ((Span)span).ToSpanData();

            Assert.Equal(maxNumberOfAttributes, spanData.Attributes.DroppedAttributesCount);
            Assert.Equal(maxNumberOfAttributes, spanData.Attributes.AttributeMap.Count);
            for (int i = 0; i < maxNumberOfAttributes; i++)
            {
                Assert.Equal(
                    AttributeValue.LongAttributeValue(i + maxNumberOfAttributes),
                    spanData
                    .Attributes
                    .AttributeMap["MyStringAttributeKey" + (i + maxNumberOfAttributes)]);
            }
            span.End();
            spanData = ((Span)span).ToSpanData();
            Assert.Equal(maxNumberOfAttributes, spanData.Attributes.DroppedAttributesCount);
            Assert.Equal(maxNumberOfAttributes, spanData.Attributes.AttributeMap.Count);
            for (int i = 0; i < maxNumberOfAttributes; i++)
            {
                Assert.Equal(
                    AttributeValue.LongAttributeValue(i + maxNumberOfAttributes),
                    spanData
                    .Attributes
                    .AttributeMap["MyStringAttributeKey" + (i + maxNumberOfAttributes)]);
            }
        }
Exemple #4
0
        public void DroppingNetworkEvents()
        {
            int         maxNumberOfNetworkEvents = 8;
            TraceParams traceParams =
                TraceParams.Default
                .ToBuilder()
                .SetMaxNumberOfMessageEvents(maxNumberOfNetworkEvents)
                .Build();
            ISpan span =
                Span.StartSpan(
                    spanContext,
                    recordSpanOptions,
                    SPAN_NAME,
                    parentSpanId,
                    false,
                    traceParams,
                    startEndHandler,
                    timestampConverter,
                    testClock);
            IMessageEvent networkEvent =
                MessageEvent.Builder(MessageEventType.Received, 1).SetUncompressedMessageSize(3).Build();

            for (int i = 0; i < 2 * maxNumberOfNetworkEvents; i++)
            {
                span.AddMessageEvent(networkEvent);
                testClock.AdvanceTime(Duration.Create(0, 100));
            }
            ISpanData spanData = ((Span)span).ToSpanData();

            Assert.Equal(maxNumberOfNetworkEvents, spanData.MessageEvents.DroppedEventsCount);
            Assert.Equal(maxNumberOfNetworkEvents, spanData.MessageEvents.Events.Count());
            var list = spanData.MessageEvents.Events.ToList();

            for (int i = 0; i < maxNumberOfNetworkEvents; i++)
            {
                Assert.Equal(timestamp.AddNanos(100 * (maxNumberOfNetworkEvents + i)), list[i].Timestamp);
                Assert.Equal(networkEvent, list[i].Event);
            }
            span.End();
            spanData = ((Span)span).ToSpanData();
            Assert.Equal(maxNumberOfNetworkEvents, spanData.MessageEvents.DroppedEventsCount);
            Assert.Equal(maxNumberOfNetworkEvents, spanData.MessageEvents.Events.Count());
            list = spanData.MessageEvents.Events.ToList();
            for (int i = 0; i < maxNumberOfNetworkEvents; i++)
            {
                Assert.Equal(timestamp.AddNanos(100 * (maxNumberOfNetworkEvents + i)), list[i].Timestamp);
                Assert.Equal(networkEvent, list[i].Event);
            }
        }
        public void UpdateActiveTraceParams_NoOpImplementation()
        {
            TraceParams traceParams =
                TraceParams.Default
                .ToBuilder()
                .SetSampler(Samplers.AlwaysSample)
                .SetMaxNumberOfAttributes(8)
                .SetMaxNumberOfAnnotations(9)
                .SetMaxNumberOfMessageEvents(10)
                .SetMaxNumberOfLinks(11)
                .Build();

            traceConfig.UpdateActiveTraceParams(traceParams);
            Assert.Equal(TraceParams.Default, traceConfig.ActiveTraceParams);
        }
Exemple #6
0
        public void DroppingAttributes()
        {
            int         maxNumberOfAttributes = 8;
            TraceParams traceParams           =
                TraceParams.DEFAULT.ToBuilder().SetMaxNumberOfAttributes(maxNumberOfAttributes).Build();
            ISpan span =
                Span.StartSpan(
                    spanContext,
                    recordSpanOptions,
                    SPAN_NAME,
                    parentSpanId,
                    false,
                    traceParams,
                    startEndHandler,
                    timestampConverter,
                    testClock);

            for (int i = 0; i < 2 * maxNumberOfAttributes; i++)
            {
                IDictionary <string, IAttributeValue> attributes = new Dictionary <string, IAttributeValue>
                {
                    { "MyStringAttributeKey" + i, AttributeValue.LongAttributeValue(i) }
                };
                span.PutAttributes(attributes);
            }

            ISpanData spanData = ((Span)span).ToSpanData();

            Assert.Equal(maxNumberOfAttributes, spanData.Attributes.DroppedAttributesCount);
            Assert.Equal(maxNumberOfAttributes, spanData.Attributes.AttributeMap.Count);
            for (int i = 0; i < maxNumberOfAttributes; i++)
            {
                Assert.Equal(
                    AttributeValue.LongAttributeValue(i + maxNumberOfAttributes),
                    spanData.Attributes.AttributeMap["MyStringAttributeKey" + (i + maxNumberOfAttributes)]);
            }

            span.End();
            spanData = ((Span)span).ToSpanData();
            Assert.Equal(maxNumberOfAttributes, spanData.Attributes.DroppedAttributesCount);
            Assert.Equal(maxNumberOfAttributes, spanData.Attributes.AttributeMap.Count);
            for (int i = 0; i < maxNumberOfAttributes; i++)
            {
                Assert.Equal(
                    AttributeValue.LongAttributeValue(i + maxNumberOfAttributes),
                    spanData.Attributes.AttributeMap["MyStringAttributeKey" + (i + maxNumberOfAttributes)]);
            }
        }
Exemple #7
0
        public void DroppingAnnotations()
        {
            int         maxNumberOfAnnotations = 8;
            TraceParams traceParams            =
                TraceParams.Default.ToBuilder().SetMaxNumberOfAnnotations(maxNumberOfAnnotations).Build();
            ISpan span =
                Span.StartSpan(
                    spanContext,
                    recordSpanOptions,
                    SPAN_NAME,
                    parentSpanId,
                    false,
                    traceParams,
                    startEndHandler,
                    timestampConverter,
                    testClock);
            IAnnotation annotation = Annotation.FromDescription(ANNOTATION_DESCRIPTION);
            int         i          = 0;

            for (i = 0; i < 2 * maxNumberOfAnnotations; i++)
            {
                span.AddAnnotation(annotation);
                testClock.AdvanceTime(Duration.Create(0, 100));
            }
            ISpanData spanData = ((Span)span).ToSpanData();

            Assert.Equal(maxNumberOfAnnotations, spanData.Annotations.DroppedEventsCount);
            Assert.Equal(maxNumberOfAnnotations, spanData.Annotations.Events.Count());
            i = 0;
            foreach (var te in spanData.Annotations.Events)
            {
                Assert.Equal(timestamp.AddNanos(100 * (maxNumberOfAnnotations + i)), te.Timestamp);
                Assert.Equal(annotation, te.Event);
                i++;
            }
            span.End();
            spanData = ((Span)span).ToSpanData();
            Assert.Equal(maxNumberOfAnnotations, spanData.Annotations.DroppedEventsCount);
            Assert.Equal(maxNumberOfAnnotations, spanData.Annotations.Events.Count());
            i = 0;
            foreach (var te in spanData.Annotations.Events)
            {
                Assert.Equal(timestamp.AddNanos(100 * (maxNumberOfAnnotations + i)), te.Timestamp);
                Assert.Equal(annotation, te.Event);
                i++;
            }
        }
Exemple #8
0
        public void UpdateTraceParams()
        {
            TraceParams traceParams =
                TraceParams.Default
                .ToBuilder()
                .SetSampler(Samplers.AlwaysSample)
                .SetMaxNumberOfAttributes(8)
                .SetMaxNumberOfEvents(9)
                // .SetMaxNumberOfNetworkEvents(10)
                .SetMaxNumberOfLinks(11)
                .Build();

            traceConfig.UpdateActiveTraceParams(traceParams);
            Assert.Equal(traceParams, traceConfig.ActiveTraceParams);
            traceConfig.UpdateActiveTraceParams(TraceParams.Default);
            Assert.Equal(TraceParams.Default, traceConfig.ActiveTraceParams);
        }
Exemple #9
0
        public void DroppingEvents()
        {
            int         maxNumberOfEvents = 8;
            TraceParams traceParams       =
                TraceParams.Default.ToBuilder().SetMaxNumberOfEvents(maxNumberOfEvents).Build();
            ISpan span =
                Span.StartSpan(
                    spanContext,
                    recordSpanOptions,
                    SPAN_NAME,
                    SpanKind.Internal,
                    parentSpanId,
                    traceParams,
                    startEndHandler,
                    timestampConverter);
            IEvent testEvent = Event.Create(EVENT_DESCRIPTION);
            int    i         = 0;

            for (i = 0; i < 2 * maxNumberOfEvents; i++)
            {
                span.AddEvent(testEvent);
                interval += TimeSpan.FromMilliseconds(100);
            }
            SpanData spanData = ((Span)span).ToSpanData();

            Assert.Equal(maxNumberOfEvents, spanData.Events.DroppedEventsCount);
            Assert.Equal(maxNumberOfEvents, spanData.Events.Events.Count());
            i = 0;
            foreach (var te in spanData.Events.Events)
            {
                Assert.Equal(timestamp.AddDuration(Duration.Create(TimeSpan.FromMilliseconds(100 * (maxNumberOfEvents + i)))), te.Timestamp);
                Assert.Equal(testEvent, te.Event);
                i++;
            }
            span.End();
            spanData = ((Span)span).ToSpanData();
            Assert.Equal(maxNumberOfEvents, spanData.Events.DroppedEventsCount);
            Assert.Equal(maxNumberOfEvents, spanData.Events.Events.Count());
            i = 0;
            foreach (var te in spanData.Events.Events)
            {
                Assert.Equal(timestamp.AddDuration(Duration.Create(TimeSpan.FromMilliseconds(100 * (maxNumberOfEvents + i)))), te.Timestamp);
                Assert.Equal(testEvent, te.Event);
                i++;
            }
        }
        public void UpdateTraceParams_All()
        {
            TraceParams traceParams =
                TraceParams.Default
                .ToBuilder()
                .SetSampler(Samplers.AlwaysSample)
                .SetMaxNumberOfAttributes(8)
                .SetMaxNumberOfAnnotations(9)
                .SetMaxNumberOfMessageEvents(10)
                .SetMaxNumberOfLinks(11)
                .Build();

            Assert.Equal(Samplers.AlwaysSample, traceParams.Sampler);
            Assert.Equal(8, traceParams.MaxNumberOfAttributes);
            Assert.Equal(9, traceParams.MaxNumberOfAnnotations);
            // test maxNumberOfNetworkEvent can be set via maxNumberOfMessageEvent
            Assert.Equal(10, traceParams.MaxNumberOfMessageEvents);
            Assert.Equal(11, traceParams.MaxNumberOfLinks);
        }
Exemple #11
0
        public void DroppingLinks()
        {
            int         maxNumberOfLinks = 8;
            TraceParams traceParams      =
                TraceParams.DEFAULT.ToBuilder().SetMaxNumberOfLinks(maxNumberOfLinks).Build();
            ISpan span =
                Span.StartSpan(
                    spanContext,
                    recordSpanOptions,
                    SPAN_NAME,
                    parentSpanId,
                    false,
                    traceParams,
                    startEndHandler,
                    timestampConverter,
                    testClock);
            ILink link = Link.FromSpanContext(spanContext, LinkType.CHILD_LINKED_SPAN);

            for (int i = 0; i < 2 * maxNumberOfLinks; i++)
            {
                span.AddLink(link);
            }

            ISpanData spanData = ((Span)span).ToSpanData();

            Assert.Equal(maxNumberOfLinks, spanData.Links.DroppedLinksCount);
            Assert.Equal(maxNumberOfLinks, spanData.Links.Links.Count);
            for (int i = 0; i < maxNumberOfLinks; i++)
            {
                Assert.Equal(link, spanData.Links.Links[i]);
            }

            span.End();
            spanData = ((Span)span).ToSpanData();
            Assert.Equal(maxNumberOfLinks, spanData.Links.DroppedLinksCount);
            Assert.Equal(maxNumberOfLinks, spanData.Links.Links.Count);
            for (int i = 0; i < maxNumberOfLinks; i++)
            {
                Assert.Equal(link, spanData.Links.Links[i]);
            }
        }
Exemple #12
0
        public void DroppingLinks()
        {
            int         maxNumberOfLinks = 8;
            TraceParams traceParams      =
                TraceParams.Default.ToBuilder().SetMaxNumberOfLinks(maxNumberOfLinks).Build();
            ISpan span =
                Span.StartSpan(
                    spanContext,
                    recordSpanOptions,
                    SPAN_NAME,
                    SpanKind.Internal,
                    parentSpanId,
                    traceParams,
                    startEndHandler,
                    timestampConverter);
            ILink link = Link.FromSpanContext(spanContext);

            for (int i = 0; i < 2 * maxNumberOfLinks; i++)
            {
                span.AddLink(link);
            }
            SpanData spanData = ((Span)span).ToSpanData();

            Assert.Equal(maxNumberOfLinks, spanData.Links.DroppedLinksCount);
            Assert.Equal(maxNumberOfLinks, spanData.Links.Links.Count());
            foreach (var actualLink in spanData.Links.Links)
            {
                Assert.Equal(link, actualLink);
            }
            span.End();
            spanData = ((Span)span).ToSpanData();
            Assert.Equal(maxNumberOfLinks, spanData.Links.DroppedLinksCount);
            Assert.Equal(maxNumberOfLinks, spanData.Links.Links.Count());
            foreach (var actualLink in spanData.Links.Links)
            {
                Assert.Equal(link, actualLink);
            }
        }