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); }
//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; } }
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 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); }
private ISpan StartSpanInternal( SpanContext parent, string name, ISampler sampler, IEnumerable <ISpan> parentLinks, bool recordEvents, Timer timestampConverter) { ITraceParams activeTraceParams = this.Options.TraceConfig.ActiveTraceParams; IRandomGenerator random = this.Options.RandomHandler; ITraceId traceId; ISpanId spanId = SpanId.GenerateRandomId(random); ISpanId parentSpanId = null; TraceOptionsBuilder traceOptionsBuilder; if (parent == null || !parent.IsValid) { // New root span. traceId = TraceId.GenerateRandomId(random); traceOptionsBuilder = TraceOptions.Builder(); } else { // New child span. traceId = parent.TraceId; parentSpanId = parent.SpanId; traceOptionsBuilder = TraceOptions.Builder(parent.TraceOptions); } traceOptionsBuilder.SetIsSampled( MakeSamplingDecision( parent, name, sampler, parentLinks, traceId, spanId, activeTraceParams)); TraceOptions traceOptions = traceOptionsBuilder.Build(); SpanOptions spanOptions = SpanOptions.None; if (traceOptions.IsSampled || recordEvents) { spanOptions = SpanOptions.RecordEvents; } ISpan span = Span.StartSpan( SpanContext.Create(traceId, spanId, traceOptions, parent?.Tracestate ?? Tracestate.Empty), spanOptions, name, this.Kind, parentSpanId, activeTraceParams, this.Options.StartEndHandler, timestampConverter); LinkSpans(span, parentLinks); return(span); }
protected SpanBase(ISpanContext context, SpanOptions options = SpanOptions.NONE) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (context.TraceOptions.IsSampled && !options.HasFlag(SpanOptions.RECORD_EVENTS)) { throw new ArgumentOutOfRangeException("Span is sampled, but does not have RECORD_EVENTS set."); } Context = context; Options = options; }
public SpanBaseTest() { random = new RandomGenerator(1234); spanContext = SpanContext.Create( TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Builder().SetIsSampled(true).Build()); notSampledSpanContext = SpanContext.Create( TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.DEFAULT); spanOptions = SpanOptions.RECORD_EVENTS; }
public SpanBaseTest() { random = new RandomGenerator(1234); spanContext = 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); spanOptions = SpanOptions.RecordEvents; }
public CurrentSpanUtilsTest() { random = new RandomGenerator(1234); spanContext = SpanContext.Create( TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Builder().SetIsSampled(true).Build()); spanOptions = SpanOptions.RECORD_EVENTS; var mockSpan = new Mock <NoopSpan>(spanContext, spanOptions) { CallBase = true }; span = mockSpan.Object; }
public CurrentSpanUtilsTest() { random = new RandomGenerator(1234); spanContext = SpanContext.Create( TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Builder().SetIsSampled(true).Build(), Tracestate.Empty); spanOptions = SpanOptions.RecordEvents; var mockSpan = new Mock <TestSpan>() { CallBase = true }; span = mockSpan.Object; }
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; } }
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; } }
public NoopSpan(ISpanContext context, SpanOptions options) : base(context, options) { }
private ISpan StartSpanInternal( ISpanContext parent, bool hasRemoteParent, string name, ISampler sampler, IList <ISpan> parentLinks, bool recordEvents, ITimestampConverter timestampConverter) { ITraceParams activeTraceParams = Options.TraceConfig.ActiveTraceParams; IRandomGenerator random = Options.RandomHandler; ITraceId traceId; ISpanId spanId = SpanId.GenerateRandomId(random); ISpanId parentSpanId = null; TraceOptionsBuilder traceOptionsBuilder; if (parent == null || !parent.IsValid) { // New root span. traceId = TraceId.GenerateRandomId(random); traceOptionsBuilder = TraceOptions.Builder(); // This is a root span so no remote or local parent. //hasRemoteParent = null; hasRemoteParent = false; } else { // New child span. traceId = parent.TraceId; parentSpanId = parent.SpanId; traceOptionsBuilder = TraceOptions.Builder(parent.TraceOptions); } traceOptionsBuilder.SetIsSampled( MakeSamplingDecision( parent, hasRemoteParent, name, sampler, parentLinks, traceId, spanId, activeTraceParams)); TraceOptions traceOptions = traceOptionsBuilder.Build(); SpanOptions spanOptions = SpanOptions.NONE; if (traceOptions.IsSampled || recordEvents) { spanOptions = SpanOptions.RECORD_EVENTS; } ISpan span = Span.StartSpan( SpanContext.Create(traceId, spanId, traceOptions), spanOptions, name, parentSpanId, hasRemoteParent, activeTraceParams, Options.StartEndHandler, timestampConverter, Options.Clock); LinkSpans(span, parentLinks); return(span); }
public TestSpan(SpanContext context, SpanOptions options) : base(context, options) { }