diff --git a/packages/opentelemetry-exporter-collector/test/helper.ts b/packages/opentelemetry-exporter-collector/test/helper.ts index 1cff15d01f..e15e0ba7d5 100644 --- a/packages/opentelemetry-exporter-collector/test/helper.ts +++ b/packages/opentelemetry-exporter-collector/test/helper.ts @@ -33,6 +33,7 @@ export const mockedReadableSpan: ReadableSpan = { parentSpanId: '78a8915098864388', startTime: [1574120165, 429803070], endTime: [1574120165, 438688070], + ended: true, status: { code: 0 }, attributes: { component: 'document-load' }, links: [ diff --git a/packages/opentelemetry-exporter-jaeger/test/jaeger.test.ts b/packages/opentelemetry-exporter-jaeger/test/jaeger.test.ts index 1df7889658..b24e6b4538 100644 --- a/packages/opentelemetry-exporter-jaeger/test/jaeger.test.ts +++ b/packages/opentelemetry-exporter-jaeger/test/jaeger.test.ts @@ -119,6 +119,7 @@ describe('JaegerExporter', () => { spanContext, startTime: [1566156729, 709], endTime: [1566156731, 709], + ended: true, status: { code: types.CanonicalCode.DATA_LOSS, }, diff --git a/packages/opentelemetry-exporter-jaeger/test/transform.test.ts b/packages/opentelemetry-exporter-jaeger/test/transform.test.ts index 719b1ed5de..5068ce7295 100644 --- a/packages/opentelemetry-exporter-jaeger/test/transform.test.ts +++ b/packages/opentelemetry-exporter-jaeger/test/transform.test.ts @@ -37,6 +37,7 @@ describe('transform', () => { spanContext, startTime: [1566156729, 709], endTime: [1566156731, 709], + ended: true, status: { code: types.CanonicalCode.OK, }, @@ -133,6 +134,7 @@ describe('transform', () => { spanContext, startTime: [1566156729, 709], endTime: [1566156731, 709], + ended: true, status: { code: types.CanonicalCode.DATA_LOSS, message: 'data loss', @@ -189,6 +191,7 @@ describe('transform', () => { spanContext, startTime: [1566156729, 709], endTime: [1566156731, 709], + ended: true, status: { code: types.CanonicalCode.OK, }, @@ -233,6 +236,7 @@ describe('transform', () => { }, startTime: [1566156729, 709], endTime: [1566156731, 709], + ended: true, status: { code: types.CanonicalCode.DATA_LOSS, message: 'data loss', diff --git a/packages/opentelemetry-exporter-stackdriver-trace/test/exporter.test.ts b/packages/opentelemetry-exporter-stackdriver-trace/test/exporter.test.ts index 69634563cf..211fd46f2e 100644 --- a/packages/opentelemetry-exporter-stackdriver-trace/test/exporter.test.ts +++ b/packages/opentelemetry-exporter-stackdriver-trace/test/exporter.test.ts @@ -109,6 +109,7 @@ describe('Stackdriver Trace Exporter', () => { duration: [32, 800000000], startTime: [1566156729, 709], endTime: [1566156731, 709], + ended: true, events: [], kind: types.SpanKind.CLIENT, links: [], @@ -142,6 +143,7 @@ describe('Stackdriver Trace Exporter', () => { duration: [32, 800000000], startTime: [1566156729, 709], endTime: [1566156731, 709], + ended: true, events: [], kind: types.SpanKind.CLIENT, links: [], @@ -174,6 +176,7 @@ describe('Stackdriver Trace Exporter', () => { duration: [32, 800000000], startTime: [1566156729, 709], endTime: [1566156731, 709], + ended: true, events: [], kind: types.SpanKind.CLIENT, links: [], @@ -204,6 +207,7 @@ describe('Stackdriver Trace Exporter', () => { duration: [32, 800000000], startTime: [1566156729, 709], endTime: [1566156731, 709], + ended: true, events: [], kind: types.SpanKind.CLIENT, links: [], diff --git a/packages/opentelemetry-exporter-stackdriver-trace/test/transform.test.ts b/packages/opentelemetry-exporter-stackdriver-trace/test/transform.test.ts index 4d52a8bac7..f79da9e353 100644 --- a/packages/opentelemetry-exporter-stackdriver-trace/test/transform.test.ts +++ b/packages/opentelemetry-exporter-stackdriver-trace/test/transform.test.ts @@ -43,6 +43,7 @@ describe('transform', () => { duration: [32, 800000000], startTime: [1566156729, 709], endTime: [1566156731, 709], + ended: true, events: [], kind: types.SpanKind.CLIENT, links: [], diff --git a/packages/opentelemetry-exporter-zipkin/test/zipkin.test.ts b/packages/opentelemetry-exporter-zipkin/test/zipkin.test.ts index b88dbab9b0..2cde0c5da8 100644 --- a/packages/opentelemetry-exporter-zipkin/test/zipkin.test.ts +++ b/packages/opentelemetry-exporter-zipkin/test/zipkin.test.ts @@ -40,6 +40,7 @@ function getReadableSpan() { }, startTime: [startTime, 0], endTime: [startTime + duration, 0], + ended: true, duration: [duration, 0], status: { code: types.CanonicalCode.OK, @@ -136,6 +137,7 @@ describe('ZipkinExporter', () => { }, startTime: [startTime, 0], endTime: [startTime + duration, 0], + ended: true, duration: [duration, 0], status: { code: types.CanonicalCode.OK, @@ -163,6 +165,7 @@ describe('ZipkinExporter', () => { }, startTime: [startTime, 0], endTime: [startTime + duration, 0], + ended: true, duration: [duration, 0], status: { code: types.CanonicalCode.OK, diff --git a/packages/opentelemetry-tracing/src/Span.ts b/packages/opentelemetry-tracing/src/Span.ts index 0ae73d8f93..7292cb43a6 100644 --- a/packages/opentelemetry-tracing/src/Span.ts +++ b/packages/opentelemetry-tracing/src/Span.ts @@ -180,6 +180,10 @@ export class Span implements types.Span, ReadableSpan { return this._duration; } + get ended(): boolean { + return this._ended; + } + private _isSpanEnded(): boolean { if (this._ended) { this._logger.warn( diff --git a/packages/opentelemetry-tracing/src/export/ReadableSpan.ts b/packages/opentelemetry-tracing/src/export/ReadableSpan.ts index 039752268d..3d461d285d 100644 --- a/packages/opentelemetry-tracing/src/export/ReadableSpan.ts +++ b/packages/opentelemetry-tracing/src/export/ReadableSpan.ts @@ -36,4 +36,5 @@ export interface ReadableSpan { readonly links: Link[]; readonly events: TimedEvent[]; readonly duration: HrTime; + readonly ended: boolean; } diff --git a/packages/opentelemetry-tracing/test/Span.test.ts b/packages/opentelemetry-tracing/test/Span.test.ts index 573d58a0fb..0eeeda7ab9 100644 --- a/packages/opentelemetry-tracing/test/Span.test.ts +++ b/packages/opentelemetry-tracing/test/Span.test.ts @@ -358,4 +358,11 @@ describe('Span', () => { span.updateName('bar-span'); assert.strictEqual(span.name, 'foo-span'); }); + + it('should have ended', () => { + const span = new Span(tracer, name, spanContext, SpanKind.SERVER); + assert.strictEqual(span.ended, false); + span.end(); + assert.strictEqual(span.ended, true); + }); });