forked from open-telemetry/opentelemetry-js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
api.test.ts
104 lines (95 loc) · 2.69 KB
/
api.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/*!
* Copyright 2019, OpenTelemetry Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import * as assert from 'assert';
import api, {
TraceFlags,
NoopSpan,
NoopTracerProvider,
NoopTracer,
SpanOptions,
Span,
} from '../../src';
describe('API', () => {
const functions = [
'getCurrentSpan',
'startSpan',
'withSpan',
'getBinaryFormat',
'getHttpTextFormat',
];
it('should expose a tracer provider via getTracerProvider', () => {
const tracer = api.trace.getTracerProvider();
assert.ok(tracer);
assert.strictEqual(typeof tracer, 'object');
});
describe('GlobalTracerProvider', () => {
const spanContext = {
traceId: new Uint8Array([
0xd4,
0xcd,
0xa9,
0x5b,
0x65,
0x2f,
0x4a,
0x15,
0x92,
0xb4,
0x49,
0xd5,
0x92,
0x9f,
0xda,
0x1b,
]),
spanId: new Uint8Array([0x6e, 0x0c, 0x63, 0x25, 0x7d, 0xe3, 0x4c, 0x92]),
traceFlags: TraceFlags.UNSAMPLED,
};
const dummySpan = new NoopSpan(spanContext);
afterEach(() => {
api.trace.initGlobalTracerProvider(new NoopTracerProvider());
});
it('should not crash', () => {
functions.forEach(fn => {
const tracer = api.trace.getTracerProvider();
try {
((tracer as unknown) as { [fn: string]: Function })[fn](); // Try to run the function
assert.ok(true, fn);
} catch (err) {
if (err.message !== 'Method not implemented.') {
assert.ok(true, fn);
}
}
});
});
it('should use the global tracer provider', () => {
api.trace.initGlobalTracerProvider(new TestTracerProvider());
const tracer = api.trace.getTracerProvider().getTracer('name');
const span = tracer.startSpan('test');
assert.deepStrictEqual(span, dummySpan);
});
class TestTracer extends NoopTracer {
startSpan(name: string, options?: SpanOptions): Span {
return dummySpan;
}
}
class TestTracerProvider extends NoopTracerProvider {
getTracer(_name: string, version?: string) {
return new TestTracer();
}
}
});
});