Example #1
0
        internal static ISpan StartSpan(
            ISpanContext context,
            SpanOptions options,
            string name,
            ISpanId parentSpanId,
            bool?hasRemoteParent,
            ITraceParams traceParams,
            IStartEndHandler startEndHandler,
            ITimestampConverter timestampConverter,
            IClock clock
            )
        {
            var span = new Span(
                context,
                options,
                name,
                parentSpanId,
                hasRemoteParent,
                traceParams,
                startEndHandler,
                timestampConverter,
                clock);

            // Call onStart here instead of calling in the constructor to make sure the span is completely
            // initialized.
            if (span.Options.HasFlag(SpanOptions.RECORD_EVENTS))
            {
                startEndHandler.OnStart(span);
            }
            return(span);
        }
Example #2
0
        internal static ISpan StartSpan(
            SpanContext context,
            SpanOptions options,
            string name,
            SpanKind spanKind,
            ISpanId parentSpanId,
            ITraceParams traceParams,
            IStartEndHandler startEndHandler,
            Timer timestampConverter)
        {
            var span = new Span(
                context,
                options,
                name,
                spanKind,
                parentSpanId,
                traceParams,
                startEndHandler,
                timestampConverter);

            // Call onStart here instead of calling in the constructor to make sure the span is completely
            // initialized.
            if (span.IsRecordingEvents)
            {
                startEndHandler.OnStart(span);
            }

            return(span);
        }
Example #3
0
 public Tracer(IRandomGenerator randomGenerator, IStartEndHandler startEndHandler, ITraceConfig traceConfig, IExportComponent exportComponent, IBinaryFormat binaryFormat, ITextFormat textFormat)
 {
     this.spanBuilderOptions = new SpanBuilderOptions(randomGenerator, startEndHandler, traceConfig);
     this.BinaryFormat       = binaryFormat ?? new BinaryFormat();
     this.TextFormat         = textFormat ?? new TraceContextFormat();
     this.exportComponent    = exportComponent;
 }
Example #4
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();
 }
Example #5
0
        //public virtual void AddMessageEvent(MessageEventBase messageEvent)
        //{
        // Default implementation by invoking addNetworkEvent() so that any existing derived classes,
        // including implementation and the mocked ones, do not need to override this method explicitly.
        //addNetworkEvent(BaseMessageEventUtil.asNetworkEvent(messageEvent));
        //}

        //public abstract void AddLink(LinkBase link);

        private Span(
            ISpanContext context,
            SpanOptions options,
            string name,
            ISpanId parentSpanId,
            bool?hasRemoteParent,
            ITraceParams traceParams,
            IStartEndHandler startEndHandler,
            ITimestampConverter timestampConverter,
            IClock clock)
            : base(context, options)
        {
            this.parentSpanId           = parentSpanId;
            this.hasRemoteParent        = hasRemoteParent;
            this.name                   = name;
            this.traceParams            = traceParams;
            this.startEndHandler        = startEndHandler;
            this.clock                  = clock;
            this.hasBeenEnded           = false;
            this.sampleToLocalSpanStore = false;
            if (options.HasFlag(SpanOptions.RECORD_EVENTS))
            {
                this.timestampConverter = timestampConverter != null ? timestampConverter : Census.Internal.TimestampConverter.Now(clock);
                startNanoTime           = clock.NowNanos;
            }
            else
            {
                this.startNanoTime      = 0;
                this.timestampConverter = timestampConverter;
            }
        }
        internal static ISpan StartSpan(
            Activity activity,
            Tracestate tracestate,
            SpanKind spanKind,
            ITraceParams traceParams,
            IStartEndHandler startEndHandler,
            bool ownsActivity = true)
        {
            var span = new Span(
                activity,
                tracestate,
                spanKind,
                traceParams,
                startEndHandler,
                ownsActivity);

            // Call onStart here instead of calling in the constructor to make sure the span is completely
            // initialized.
            if (span.IsRecordingEvents)
            {
                startEndHandler.OnStart(span);
            }

            return(span);
        }
Example #7
0
 private Span(
     ISpanContext context,
     SpanOptions options,
     string name,
     ISpanId parentSpanId,
     bool?hasRemoteParent,
     ITraceParams traceParams,
     IStartEndHandler startEndHandler,
     ITimestampConverter timestampConverter,
     IClock clock)
     : base(context, options)
 {
     this.parentSpanId           = parentSpanId;
     this.hasRemoteParent        = hasRemoteParent;
     this.Name                   = name;
     this.traceParams            = traceParams ?? throw new ArgumentNullException(nameof(traceParams));
     this.startEndHandler        = startEndHandler;
     this.clock                  = clock;
     this.hasBeenEnded           = false;
     this.sampleToLocalSpanStore = false;
     if (options.HasFlag(SpanOptions.RecordEvents))
     {
         this.timestampConverter = timestampConverter ?? OpenCensus.Internal.TimestampConverter.Now(clock);
         this.startNanoTime      = clock.NowNanos;
     }
     else
     {
         this.startNanoTime      = 0;
         this.timestampConverter = timestampConverter;
     }
 }
 internal SpanBuilderOptions(IRandomGenerator randomGenerator, IStartEndHandler startEndHandler, IClock clock, ITraceConfig traceConfig)
 {
     RandomHandler   = randomGenerator;
     StartEndHandler = startEndHandler;
     Clock           = clock;
     TraceConfig     = traceConfig;
 }
        public SpanExporterTest()
        {
            sampledSpanContext    = SpanContext.Create(TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Builder().SetIsSampled(true).Build(), Tracestate.Empty);
            notSampledSpanContext = SpanContext.Create(TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Default, Tracestate.Empty);
            startEndHandler       = new StartEndHandler(spanExporter, runningSpanStore, null, new SimpleEventQueue());

            spanExporter.RegisterHandler("test.service", serviceHandler);
        }
        public SpanExporterTest()
        {
            // TODO
            Activity.DefaultIdFormat      = ActivityIdFormat.W3C;
            Activity.ForceDefaultIdFormat = true;

            startEndHandler = new StartEndHandler(spanExporter, new SimpleEventQueue());
            spanExporter.RegisterHandler("test.service", serviceHandler);
        }
Example #11
0
 public InProcessSampledSpanStoreTest()
 {
     sampledSpanContext    = SpanContext.Create(TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Builder().SetIsSampled(true).Build(), Tracestate.Empty);
     notSampledSpanContext = SpanContext.Create(TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Default, Tracestate.Empty);
     parentSpanId          = SpanId.GenerateRandomId(random);
     startEndHandler       = new TestStartEndHandler(sampleStore);
     sampleStore.RegisterSpanNamesForCollection(new List <string>()
     {
         REGISTERED_SPAN_NAME
     });
 }
        public SpanBuilderTest()
        {
            // MockitoAnnotations.initMocks(this);
            spanBuilderOptions =
                new SpanBuilderOptions(startEndHandler, traceConfig);
            var configMock = Mock.Get <ITraceConfig>(traceConfig);

            configMock.Setup((c) => c.ActiveTraceParams).Returns(alwaysSampleTraceParams);

            startEndHandler = Mock.Of <IStartEndHandler>();
            tracer          = new Tracer(startEndHandler, traceConfig);
        }
Example #13
0
 public InProcessSampledSpanStoreTest()
 {
     timestamp             = Timestamp.FromDateTimeOffset(startTime);
     timestampConverter    = Timer.StartNew(startTime, () => interval);
     sampledSpanContext    = SpanContext.Create(TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Builder().SetIsSampled(true).Build(), Tracestate.Empty);
     notSampledSpanContext = SpanContext.Create(TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Default, Tracestate.Empty);
     parentSpanId          = SpanId.GenerateRandomId(random);
     startEndHandler       = new TestStartEndHandler(sampleStore);
     sampleStore.RegisterSpanNamesForCollection(new List <string>()
     {
         REGISTERED_SPAN_NAME
     });
 }
        public SpanBuilderTest()
        {
            // TODO: remove with next DiagnosticSource preview, switch to Activity setidformat
            Activity.DefaultIdFormat      = ActivityIdFormat.W3C;
            Activity.ForceDefaultIdFormat = true;

            // MockitoAnnotations.initMocks(this);
            spanBuilderOptions =
                new SpanBuilderOptions(startEndHandler, traceConfig);
            var configMock = Mock.Get <ITraceConfig>(traceConfig);

            configMock.Setup((c) => c.ActiveTraceParams).Returns(alwaysSampleTraceParams);

            startEndHandler = Mock.Of <IStartEndHandler>();
            tracer          = new Tracer(startEndHandler, traceConfig);
        }
 private Span(
     Activity activity,
     Tracestate tracestate,
     SpanKind spanKind,
     ITraceParams traceParams,
     IStartEndHandler startEndHandler,
     bool ownsActivity)
 {
     this.Activity    = activity;
     this.spanContext = new Lazy <SpanContext>(() => SpanContext.Create(
                                                   this.Activity.TraceId,
                                                   this.Activity.SpanId,
                                                   this.Activity.ActivityTraceFlags,
                                                   tracestate));
     this.Name              = this.Activity.OperationName;
     this.traceParams       = traceParams ?? throw new ArgumentNullException(nameof(traceParams));
     this.startEndHandler   = startEndHandler;
     this.Kind              = spanKind;
     this.OwnsActivity      = ownsActivity;
     this.IsRecordingEvents = this.Activity.Recorded;
 }
Example #16
0
 private Span(
     SpanContext context,
     SpanOptions options,
     string name,
     SpanKind spanKind,
     SpanId parentSpanId,
     ITraceParams traceParams,
     IStartEndHandler startEndHandler,
     Timer timestampConverter)
 {
     this.Context                = context;
     this.Options                = options;
     this.parentSpanId           = parentSpanId;
     this.Name                   = name;
     this.traceParams            = traceParams ?? throw new ArgumentNullException(nameof(traceParams));
     this.startEndHandler        = startEndHandler;
     this.hasBeenEnded           = false;
     this.sampleToLocalSpanStore = false;
     this.Kind                   = spanKind;
     if (this.IsRecordingEvents)
     {
         if (timestampConverter == null)
         {
             this.TimestampConverter = Timer.StartNew();
             this.startTime          = this.TimestampConverter.StartTime;
         }
         else
         {
             this.TimestampConverter = timestampConverter;
             this.startTime          = this.TimestampConverter.Now;
         }
     }
     else
     {
         this.startTime          = DateTimeOffset.MinValue;
         this.TimestampConverter = timestampConverter;
     }
 }
Example #17
0
 private Span(
     ISpanContext context,
     SpanOptions options,
     string name,
     ISpanId parentSpanId,
     bool?hasRemoteParent,
     ITraceParams traceParams,
     IStartEndHandler startEndHandler,
     Timer timestampConverter)
     : base(context, options)
 {
     this.parentSpanId           = parentSpanId;
     this.hasRemoteParent        = hasRemoteParent;
     this.Name                   = name;
     this.traceParams            = traceParams ?? throw new ArgumentNullException(nameof(traceParams));
     this.startEndHandler        = startEndHandler;
     this.hasBeenEnded           = false;
     this.sampleToLocalSpanStore = false;
     if (options.HasFlag(SpanOptions.RecordEvents))
     {
         if (timestampConverter == null)
         {
             this.timestampConverter = Timer.StartNew();
             this.startTime          = this.timestampConverter.StartTime;
         }
         else
         {
             this.timestampConverter = timestampConverter;
             this.startTime          = this.timestampConverter.Now;
         }
     }
     else
     {
         this.startTime          = DateTimeOffset.MinValue;
         this.timestampConverter = timestampConverter;
     }
 }
Example #18
0
 internal SpanBuilderOptions(IStartEndHandler startEndHandler, ITraceConfig traceConfig)
 {
     this.StartEndHandler = startEndHandler;
     this.TraceConfig     = traceConfig;
 }
Example #19
0
 public TracerTest()
 {
     startEndHandler = Mock.Of <IStartEndHandler>();
     traceConfig     = Mock.Of <ITraceConfig>();
     tracer          = new Tracer(new RandomGenerator(), startEndHandler, TestClock.Create(), traceConfig);
 }
Example #20
0
 public TracerTest()
 {
     startEndHandler = Mock.Of <IStartEndHandler>();
     traceConfig     = Mock.Of <ITraceConfig>();
     tracer          = new Tracer(new RandomGenerator(), startEndHandler, traceConfig, null);
 }
Example #21
0
 public Tracer(IRandomGenerator randomGenerator, IStartEndHandler startEndHandler, IClock clock, ITraceConfig traceConfig)
 {
     spanBuilderOptions = new SpanBuilderOptions(randomGenerator, startEndHandler, clock, traceConfig);
 }
Example #22
0
 public TracerTest()
 {
     startEndHandler = Mock.Of <IStartEndHandler>();
     traceConfig     = Mock.Of <ITraceConfig>();
     tracer          = new Tracer(startEndHandler, traceConfig);
 }
Example #23
0
 /// <summary>
 /// Creates an instance of <see cref="ITracer"/>.
 /// </summary>
 /// <param name="startEndHandler">Start/end event handler.</param>
 /// <param name="traceConfig">Trace configuration.</param>
 public Tracer(IStartEndHandler startEndHandler, ITraceConfig traceConfig)
     : this(startEndHandler, traceConfig, null, null, null)
 {
 }
 internal SpanBuilderOptions(IRandomGenerator randomGenerator, IStartEndHandler startEndHandler, ITraceConfig traceConfig)
 {
     this.RandomHandler   = randomGenerator;
     this.StartEndHandler = startEndHandler;
     this.TraceConfig     = traceConfig;
 }
Example #25
0
 public Tracer(IRandomGenerator randomGenerator, IStartEndHandler startEndHandler, ITraceConfig traceConfig, IExportComponent exportComponent)
 {
     this.spanBuilderOptions = new SpanBuilderOptions(randomGenerator, startEndHandler, traceConfig);
 }
Example #26
0
 public SpanExporterTest()
 {
     startEndHandler = new StartEndHandler(spanExporter, new SimpleEventQueue());
     spanExporter.RegisterHandler("test.service", serviceHandler);
 }
 public Tracer(IRandomGenerator randomGenerator, IStartEndHandler startEndHandler, ITraceConfig traceConfig, IExportComponent exportComponent)
     : this(randomGenerator, startEndHandler, traceConfig, exportComponent, null, null)
 {
 }