示例#1
0
        public async Task ExportAsyncCallsAllHandlers()
        {
            var exporter = SpanExporter.Create(4, Duration.Create(1, 0));

            var handler1 = new Mock <IHandler>();
            var handler2 = new Mock <IHandler>();


            exporter.RegisterHandler("first", handler1.Object);
            exporter.RegisterHandler("second", handler2.Object);

            var span1 = new Mock <ISpanData>();
            var span2 = new Mock <ISpanData>();

            await exporter.ExportAsync(new ISpanData[] { span1.Object, span2.Object }, CancellationToken.None);

            Assert.Single(handler1.Invocations);
            var args = (IEnumerable <ISpanData>)handler1.Invocations.First().Arguments.First();


            handler1.Verify(c => c.Export(It.Is <IEnumerable <ISpanData> >(
                                              (x) => x.Where((s) => s == span1.Object).Count() > 0 &&
                                              x.Where((s) => s == span2.Object).Count() > 0 &&
                                              x.Count() == 2)));

            handler2.Verify(c => c.Export(It.Is <IEnumerable <ISpanData> >(
                                              (x) => x.Where((s) => s == span1.Object).Count() > 0 &&
                                              x.Where((s) => s == span2.Object).Count() > 0 &&
                                              x.Count() == 2)));
        }
        private TracerFactory(TracerBuilder builder)
        {
            this.sampler = builder.Sampler ?? Samplers.AlwaysSample;

            // TODO separate sampler from options
            this.configurationOptions =
                builder.TracerConfigurationOptions ?? new TracerConfiguration(this.sampler);

            // TODO log warning (or throw?) if there is no exporter
            this.exporter = builder.SpanExporter ?? new NoopSpanExporter();

            this.spanProcessor = builder.ProcessorFactory != null?
                                 builder.ProcessorFactory(this.exporter) :
                                     new BatchingSpanProcessor(this.exporter);

            this.binaryFormat = builder.BinaryFormat ?? new BinaryFormat();
            this.textFormat   = builder.TextFormat ?? new TraceContextFormat();

            this.defaultTracer = new Tracer(
                this.spanProcessor,
                this.configurationOptions,
                this.binaryFormat,
                this.textFormat,
                Resource.Empty);
        }
示例#3
0
 /// <summary>
 /// Creates an instance of <see cref="ITracer"/>.
 /// </summary>
 /// <param name="startEndHandler">Start/end event handler.</param>
 /// <param name="traceConfig">Trace configuration.</param>
 /// <param name="spanExporter">Exporter for span.</param>
 /// <param name="binaryFormat">Binary format context propagator.</param>
 /// <param name="textFormat">Text format context propagator.</param>
 public Tracer(IStartEndHandler startEndHandler, ITraceConfig traceConfig, SpanExporter spanExporter, IBinaryFormat binaryFormat, ITextFormat textFormat)
 {
     this.spanBuilderOptions = new SpanBuilderOptions(startEndHandler, traceConfig);
     this.spanExporter       = spanExporter ?? (SpanExporter)SpanExporter.Create(ExporterBufferSize, ExporterScheduleDelay);
     this.BinaryFormat       = binaryFormat ?? new BinaryFormat();
     this.TextFormat         = textFormat ?? new TraceContextFormat();
 }
示例#4
0
        public async Task StartStopExporter()
        {
            var config = new TelemetryConfiguration {
                TelemetryChannel = new StubTelemetryChannel(),
            };
            var exporter = new ApplicationInsightsExporter(SpanExporter.Create(), Stats.Stats.ViewManager, config);

            exporter.Start();
            await Task.Delay(100);

            var sw = Stopwatch.StartNew();

            exporter.Stop();
            sw.Stop();

            Assert.InRange(sw.ElapsedMilliseconds, 0, 1000);
        }
        public async Task ExportAsyncCallsAllHandlers()
        {
            var exporter = SpanExporter.Create(4, TimeSpan.FromSeconds(1));

            var handler1 = new Mock <IHandler>();

            exporter.RegisterHandler("first", handler1.Object);

            var span1 = CreateSampledEndedSpan(SpanName1).ToSpanData();

            await exporter.ExportAsync(span1, CancellationToken.None);

            Assert.Single(handler1.Invocations);
            var args = (IEnumerable <SpanData>)handler1.Invocations.First().Arguments.First();

            handler1.Verify(c => c.ExportAsync(It.Is <IEnumerable <SpanData> >(
                                                   (x) => x.Any(s => s == span1) && x.Count() == 1)));
        }
示例#6
0
        public async Task ExportAsyncCallsAllHandlers()
        {
            var exporter = SpanExporter.Create(4, Duration.Create(1, 0));

            var handler1 = new Mock <IHandler>();

            exporter.RegisterHandler("first", handler1.Object);

            var span1 = CreateNotSampledEndedSpan(SPAN_NAME_1).ToSpanData();

            await exporter.ExportAsync(span1, CancellationToken.None);

            Assert.Single(handler1.Invocations);
            var args = (IEnumerable <SpanData>)handler1.Invocations.First().Arguments.First();

            handler1.Verify(c => c.ExportAsync(It.Is <IEnumerable <SpanData> >(
                                                   (x) => x.Where((s) => s == span1).Count() > 0 &&
                                                   x.Count() == 1)));
        }
示例#7
0
 public TestProcessor(SpanExporter exporter)
 {
     this.exporter = exporter;
     this.onEnd    = null;
 }
示例#8
0
 public TestProcessor(Action <SpanData> onEnd)
 {
     this.exporter = null;
     this.onEnd    = onEnd;
 }
 /// <summary>
 /// Configures exporter.
 /// </summary>
 /// <param name="exporter">Exporter instance.</param>
 public SpanProcessorPipelineBuilder SetExporter(SpanExporter exporter)
 {
     this.Exporter = exporter ?? throw new ArgumentNullException(nameof(exporter));
     return(this);
 }
示例#10
0
 public TracerBuilder SetExporter(SpanExporter spanExporter)
 {
     this.SpanExporter = spanExporter ?? throw new ArgumentNullException(nameof(spanExporter));
     return(this);
 }
 public TestProcessor(SpanExporter exporter) : base(exporter)
 {
 }