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); }
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]); } }
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)]); } }
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); }
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)]); } }
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++; } }
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); }
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); }
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]); } }
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); } }