diff --git a/benchmark/README.md b/benchmark/README.md index 0f1e81a9fa..ca9147c895 100644 --- a/benchmark/README.md +++ b/benchmark/README.md @@ -16,7 +16,7 @@ The minimum sample size is set to 10 to perform statistical analysis on benchmar ### `v0.3.3` release ``` -Beginning NoopTracerRegistry Benchmark... +Beginning NoopTracerProvider Benchmark... 5 tests completed. #startSpan x 731,516,636 ops/sec ±2.57% (20 runs sampled) @@ -25,7 +25,7 @@ Beginning NoopTracerRegistry Benchmark... #startSpan with 30 attributes x 1,658,688 ops/sec ±1.23% (20 runs sampled) #startSpan with 100 attributes x 535,082 ops/sec ±1.55% (20 runs sampled) -Beginning BasicTracerRegistry Benchmark... +Beginning BasicTracerProvider Benchmark... 5 tests completed. #startSpan x 80,633 ops/sec ±3.57% (20 runs sampled) @@ -34,7 +34,7 @@ Beginning BasicTracerRegistry Benchmark... #startSpan with 30 attributes x 36,331 ops/sec ±1.29% (20 runs sampled) #startSpan with 100 attributes x 3,549 ops/sec ±3.59% (20 runs sampled) -Beginning BasicTracerRegistry with SimpleSpanProcessor Benchmark... +Beginning BasicTracerProvider with SimpleSpanProcessor Benchmark... 5 tests completed. #startSpan x 74,539 ops/sec ±4.49% (20 runs sampled) @@ -43,7 +43,7 @@ Beginning BasicTracerRegistry with SimpleSpanProcessor Benchmark... #startSpan with 30 attributes x 26,491 ops/sec ±13.68% (20 runs sampled) #startSpan with 100 attributes x 2,464 ops/sec ±19.64% (20 runs sampled) -Beginning BasicTracerRegistry with BatchSpanProcessor Benchmark... +Beginning BasicTracerProvider with BatchSpanProcessor Benchmark... 5 tests completed. #startSpan x 74,974 ops/sec ±3.57% (20 runs sampled) diff --git a/benchmark/tracer.js b/benchmark/tracer.js index a1a6c360cd..f90ea2465e 100644 --- a/benchmark/tracer.js +++ b/benchmark/tracer.js @@ -2,32 +2,32 @@ const benchmark = require('./benchmark'); const opentelemetry = require('../packages/opentelemetry-core'); -const { BasicTracerRegistry, BatchSpanProcessor, InMemorySpanExporter, SimpleSpanProcessor } = require('../packages/opentelemetry-tracing'); +const { BasicTracerProvider, BatchSpanProcessor, InMemorySpanExporter, SimpleSpanProcessor } = require('../packages/opentelemetry-tracing'); const logger = new opentelemetry.NoopLogger(); const setups = [ { - name: 'NoopTracerRegistry', - registry: opentelemetry.getTracerRegistry() + name: 'NoopTracerProvider', + provider: opentelemetry.getTracerProvider() }, { - name: 'BasicTracerRegistry', - registry: new BasicTracerRegistry({ logger }) + name: 'BasicTracerProvider', + provider: new BasicTracerProvider({ logger }) }, { - name: 'BasicTracerRegistry with SimpleSpanProcessor', - registry: getRegistry(new SimpleSpanProcessor(new InMemorySpanExporter())) + name: 'BasicTracerProvider with SimpleSpanProcessor', + provider: getProvider(new SimpleSpanProcessor(new InMemorySpanExporter())) }, { - name: 'BasicTracerRegistry with BatchSpanProcessor', - registry: getRegistry(new BatchSpanProcessor(new InMemorySpanExporter())) + name: 'BasicTracerProvider with BatchSpanProcessor', + provider: getProvider(new BatchSpanProcessor(new InMemorySpanExporter())) } ]; for (const setup of setups) { console.log(`Beginning ${setup.name} Benchmark...`); - const tracer = setup.registry.getTracer("benchmark"); + const tracer = setup.provider.getTracer("benchmark"); const suite = benchmark(20) .add('#startSpan', function () { const span = tracer.startSpan('op'); @@ -62,9 +62,9 @@ for (const setup of setups) { // run async suite.run({ async: false }); } -function getRegistry(processor) { - const registry = new BasicTracerRegistry({ logger }); - registry.addSpanProcessor(processor); - return registry; +function getProvider(processor) { + const provider = new BasicTracerProvider({ logger }); + provider.addSpanProcessor(processor); + return provider; } diff --git a/packages/opentelemetry-api/README.md b/packages/opentelemetry-api/README.md index c58af54e75..a000ae98fc 100644 --- a/packages/opentelemetry-api/README.md +++ b/packages/opentelemetry-api/README.md @@ -19,18 +19,18 @@ API entry points are defined as global singleton objects `trace` and `metrics` w ```javascript const api = require("@opentelemetry/api") -/* Initialize TraceRegistry */ -api.trace.initGlobalTracerRegistry(traceRegistry); -/* returns traceRegistry (no-op if a working registry has not been initialized) */ -api.trace.getTracerRegistry(); -/* returns a tracer from the registered global tracer registry (no-op if a working registry has not been initialized); */ +/* Initialize TraceProvider */ +api.trace.initGlobalTracerProvider(traceProvider); +/* returns traceProvider (no-op if a working provider has not been initialized) */ +api.trace.getTracerProvider(); +/* returns a tracer from the registered global tracer provider (no-op if a working provider has not been initialized); */ api.trace.getTracer(name, version); -/* Initialize MeterRegistry */ -api.metrics.initGlobalMeterRegistry(meterRegistry); -/* returns meterRegistry (no-op if a working registry has not been initialized) */ -api.metrics.getMeterRegistry(); -/* returns a meter from the registered global meter registry (no-op if a working registry has not been initialized); */ +/* Initialize MeterProvider */ +api.metrics.initGlobalMeterProvider(meterProvider); +/* returns meterProvider (no-op if a working provider has not been initialized) */ +api.metrics.getMeterProvider(); +/* returns a meter from the registered global meter provider (no-op if a working provider has not been initialized); */ api.metrics.getMeter(name, version); ``` @@ -40,7 +40,7 @@ Application owners will also need a working OpenTelemetry SDK implementation. Op #### Simple NodeJS Example -Before any other module in your application is loaded, you must initialize the global tracer and meter registries. If you fail to initialize a registry, no-op implementations will be provided to any library which acquires them from the API. +Before any other module in your application is loaded, you must initialize the global tracer and meter registries. If you fail to initialize a provider, no-op implementations will be provided to any library which acquires them from the API. ```javascript const api = require("@opentelemetry/api"); @@ -54,14 +54,14 @@ const exporter = new JaegerExporter({ serviceName: 'basic-service' }); -// Create a registry which we will configure as the global tracer registry -const registry = new sdk.NodeTracerRegistry(); +// Create a provider which we will configure as the global tracer provider +const provider = new sdk.NodeTracerProvider(); // Configure span processor to send spans to the exporter -registry.addSpanProcessor(new SimpleSpanProcessor(exporter)); +provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); -// Initialize the OpenTelemetry APIs to use the NodeTracerRegistry bindings -api.trace.initGlobalTracerRegistry(registry); +// Initialize the OpenTelemetry APIs to use the NodeTracerProvider bindings +api.trace.initGlobalTracerProvider(provider); // your application code below this line ``` diff --git a/packages/opentelemetry-api/src/api/metrics.ts b/packages/opentelemetry-api/src/api/metrics.ts index 80a1bf1c23..67b63256df 100644 --- a/packages/opentelemetry-api/src/api/metrics.ts +++ b/packages/opentelemetry-api/src/api/metrics.ts @@ -15,15 +15,15 @@ */ import { Meter } from '../metrics/Meter'; -import { MeterRegistry } from '../metrics/MeterRegistry'; -import { NOOP_METER_REGISTRY } from '../metrics/NoopMeterRegistry'; +import { MeterProvider } from '../metrics/MeterProvider'; +import { NOOP_METER_PROVIDER } from '../metrics/NoopMeterProvider'; /** * Singleton object which represents the entry point to the OpenTelemetry Metrics API */ export class MetricsAPI { private static _instance?: MetricsAPI; - private _meterRegistry: MeterRegistry = NOOP_METER_REGISTRY; + private _meterProvider: MeterProvider = NOOP_METER_PROVIDER; /** Empty private constructor prevents end users from constructing a new instance of the API */ private constructor() {} @@ -38,24 +38,24 @@ export class MetricsAPI { } /** - * Set the current global meter. Returns the initialized global meter registry. + * Set the current global meter. Returns the initialized global meter provider. */ - public initGlobalMeterRegistry(registry: MeterRegistry): MeterRegistry { - this._meterRegistry = registry; - return registry; + public initGlobalMeterProvider(provider: MeterProvider): MeterProvider { + this._meterProvider = provider; + return provider; } /** - * Returns the global meter registry. + * Returns the global meter provider. */ - public getMeterRegistry(): MeterRegistry { - return this._meterRegistry; + public getMeterProvider(): MeterProvider { + return this._meterProvider; } /** - * Returns a meter from the global meter registry. + * Returns a meter from the global meter provider. */ public getMeter(name: string, version?: string): Meter { - return this.getMeterRegistry().getMeter(name, version); + return this.getMeterProvider().getMeter(name, version); } } diff --git a/packages/opentelemetry-api/src/api/trace.ts b/packages/opentelemetry-api/src/api/trace.ts index 60b1a30c97..18b344acb2 100644 --- a/packages/opentelemetry-api/src/api/trace.ts +++ b/packages/opentelemetry-api/src/api/trace.ts @@ -14,8 +14,8 @@ * limitations under the License. */ -import { NOOP_TRACER_REGISTRY } from '../trace/NoopTracerRegistry'; -import { TracerRegistry } from '../trace/tracer_registry'; +import { NOOP_TRACER_PROVIDER } from '../trace/NoopTracerProvider'; +import { TracerProvider } from '../trace/tracer_provider'; import { Tracer } from '../trace/tracer'; /** @@ -23,7 +23,7 @@ import { Tracer } from '../trace/tracer'; */ export class TraceAPI { private static _instance?: TraceAPI; - private _tracerRegistry: TracerRegistry = NOOP_TRACER_REGISTRY; + private _tracerProvider: TracerProvider = NOOP_TRACER_PROVIDER; /** Empty private constructor prevents end users from constructing a new instance of the API */ private constructor() {} @@ -38,24 +38,24 @@ export class TraceAPI { } /** - * Set the current global tracer. Returns the initialized global tracer registry + * Set the current global tracer. Returns the initialized global tracer provider */ - public initGlobalTracerRegistry(registry: TracerRegistry): TracerRegistry { - this._tracerRegistry = registry; - return registry; + public initGlobalTracerProvider(provider: TracerProvider): TracerProvider { + this._tracerProvider = provider; + return provider; } /** - * Returns the global tracer registry. + * Returns the global tracer provider. */ - public getTracerRegistry(): TracerRegistry { - return this._tracerRegistry; + public getTracerProvider(): TracerProvider { + return this._tracerProvider; } /** - * Returns a tracer from the global tracer registry. + * Returns a tracer from the global tracer provider. */ public getTracer(name: string, version?: string): Tracer { - return this.getTracerRegistry().getTracer(name, version); + return this.getTracerProvider().getTracer(name, version); } } diff --git a/packages/opentelemetry-api/src/index.ts b/packages/opentelemetry-api/src/index.ts index d73844a715..ab10bb7ed4 100644 --- a/packages/opentelemetry-api/src/index.ts +++ b/packages/opentelemetry-api/src/index.ts @@ -22,7 +22,7 @@ export * from './distributed_context/DistributedContext'; export * from './distributed_context/EntryValue'; export * from './metrics/BoundInstrument'; export * from './metrics/Meter'; -export * from './metrics/MeterRegistry'; +export * from './metrics/MeterProvider'; export * from './metrics/Metric'; export * from './trace/attributes'; export * from './trace/Event'; @@ -36,13 +36,13 @@ export * from './trace/span_kind'; export * from './trace/status'; export * from './trace/TimedEvent'; export * from './trace/tracer'; -export * from './trace/tracer_registry'; +export * from './trace/tracer_provider'; export * from './trace/trace_flags'; export * from './trace/trace_state'; export * from './trace/NoopSpan'; export * from './trace/NoopTracer'; -export * from './trace/NoopTracerRegistry'; -export * from './metrics/NoopMeterRegistry'; +export * from './trace/NoopTracerProvider'; +export * from './metrics/NoopMeterProvider'; export * from './metrics/NoopMeter'; import { TraceAPI } from './api/trace'; diff --git a/packages/opentelemetry-api/src/metrics/MeterRegistry.ts b/packages/opentelemetry-api/src/metrics/MeterProvider.ts similarity index 90% rename from packages/opentelemetry-api/src/metrics/MeterRegistry.ts rename to packages/opentelemetry-api/src/metrics/MeterProvider.ts index 75a36272da..ac682e238d 100644 --- a/packages/opentelemetry-api/src/metrics/MeterRegistry.ts +++ b/packages/opentelemetry-api/src/metrics/MeterProvider.ts @@ -17,9 +17,9 @@ import { Meter } from './Meter'; /** - * MeterRegistry provides an interface for creating {@link Meter}s + * MeterProvider provides an interface for creating {@link Meter}s */ -export interface MeterRegistry { +export interface MeterProvider { /** * Returns a Meter, creating one if one with the given name and version is not already created * diff --git a/packages/opentelemetry-api/src/metrics/NoopMeterRegistry.ts b/packages/opentelemetry-api/src/metrics/NoopMeterProvider.ts similarity index 78% rename from packages/opentelemetry-api/src/metrics/NoopMeterRegistry.ts rename to packages/opentelemetry-api/src/metrics/NoopMeterProvider.ts index 81911dd733..182463611c 100644 --- a/packages/opentelemetry-api/src/metrics/NoopMeterRegistry.ts +++ b/packages/opentelemetry-api/src/metrics/NoopMeterProvider.ts @@ -15,17 +15,17 @@ */ import { Meter } from './Meter'; -import { MeterRegistry } from './MeterRegistry'; +import { MeterProvider } from './MeterProvider'; import { NOOP_METER } from './NoopMeter'; /** - * An implementation of the {@link MeterRegistry} which returns an impotent Meter + * An implementation of the {@link MeterProvider} which returns an impotent Meter * for all calls to `getMeter` */ -export class NoopMeterRegistry implements MeterRegistry { +export class NoopMeterProvider implements MeterProvider { getMeter(_name?: string, _version?: string): Meter { return NOOP_METER; } } -export const NOOP_METER_REGISTRY = new NoopMeterRegistry(); +export const NOOP_METER_PROVIDER = new NoopMeterProvider(); diff --git a/packages/opentelemetry-api/src/trace/NoopTracerRegistry.ts b/packages/opentelemetry-api/src/trace/NoopTracerProvider.ts similarity index 77% rename from packages/opentelemetry-api/src/trace/NoopTracerRegistry.ts rename to packages/opentelemetry-api/src/trace/NoopTracerProvider.ts index c28e99af89..9398d51608 100644 --- a/packages/opentelemetry-api/src/trace/NoopTracerRegistry.ts +++ b/packages/opentelemetry-api/src/trace/NoopTracerProvider.ts @@ -16,16 +16,16 @@ import { NOOP_TRACER } from './NoopTracer'; import { Tracer } from './tracer'; -import { TracerRegistry } from './tracer_registry'; +import { TracerProvider } from './tracer_provider'; /** - * An implementation of the {@link TracerRegistry} which returns an impotent Tracer + * An implementation of the {@link TracerProvider} which returns an impotent Tracer * for all calls to `getTracer` */ -export class NoopTracerRegistry implements TracerRegistry { +export class NoopTracerProvider implements TracerProvider { getTracer(_name?: string, _version?: string): Tracer { return NOOP_TRACER; } } -export const NOOP_TRACER_REGISTRY = new NoopTracerRegistry(); +export const NOOP_TRACER_PROVIDER = new NoopTracerProvider(); diff --git a/packages/opentelemetry-api/src/trace/instrumentation/Plugin.ts b/packages/opentelemetry-api/src/trace/instrumentation/Plugin.ts index 3462a5df09..67a54f3fef 100644 --- a/packages/opentelemetry-api/src/trace/instrumentation/Plugin.ts +++ b/packages/opentelemetry-api/src/trace/instrumentation/Plugin.ts @@ -15,7 +15,7 @@ */ import { Logger } from '../../common/Logger'; -import { TracerRegistry } from '../tracer_registry'; +import { TracerProvider } from '../tracer_provider'; /** Interface Plugin to apply patch. */ // tslint:disable-next-line:no-any @@ -32,13 +32,13 @@ export interface Plugin { * Method that enables the instrumentation patch. * @param moduleExports The value of the `module.exports` property that would * normally be exposed by the required module. ex: `http`, `https` etc. - * @param TracerRegistry a tracer registry. + * @param TracerProvider a tracer provider. * @param logger a logger instance. * @param [config] an object to configure the plugin. */ enable( moduleExports: T, - TracerRegistry: TracerRegistry, + TracerProvider: TracerProvider, logger: Logger, config?: PluginConfig ): T; diff --git a/packages/opentelemetry-api/src/trace/tracer_registry.ts b/packages/opentelemetry-api/src/trace/tracer_provider.ts similarity index 90% rename from packages/opentelemetry-api/src/trace/tracer_registry.ts rename to packages/opentelemetry-api/src/trace/tracer_provider.ts index ce2c36cdb1..1093210ae4 100644 --- a/packages/opentelemetry-api/src/trace/tracer_registry.ts +++ b/packages/opentelemetry-api/src/trace/tracer_provider.ts @@ -17,9 +17,9 @@ import { Tracer } from './tracer'; /** - * TracerRegistry provides an interface for creating {@link Tracer}s + * TracerProvider provides an interface for creating {@link Tracer}s */ -export interface TracerRegistry { +export interface TracerProvider { /** * Returns a Tracer, creating one if one with the given name and version is not already created * diff --git a/packages/opentelemetry-api/test/api/api.test.ts b/packages/opentelemetry-api/test/api/api.test.ts index d77b252cf7..c0ecb9baf9 100644 --- a/packages/opentelemetry-api/test/api/api.test.ts +++ b/packages/opentelemetry-api/test/api/api.test.ts @@ -15,7 +15,7 @@ */ import * as assert from 'assert'; -import api, { TraceFlags, NoopSpan, NoopTracerRegistry, NoopTracer, SpanOptions, Span } from '../../src'; +import api, { TraceFlags, NoopSpan, NoopTracerProvider, NoopTracer, SpanOptions, Span } from '../../src'; describe('API', () => { const functions = [ @@ -26,13 +26,13 @@ describe('API', () => { 'getHttpTextFormat', ]; - it('should expose a tracer registry via getTracerRegistry', () => { - const tracer = api.trace.getTracerRegistry(); + it('should expose a tracer provider via getTracerProvider', () => { + const tracer = api.trace.getTracerProvider(); assert.ok(tracer); assert.strictEqual(typeof tracer, 'object'); }); - describe('GlobalTracerRegistry', () => { + describe('GlobalTracerProvider', () => { const spanContext = { traceId: 'd4cda95b652f4a1592b449d5929fda1b', spanId: '6e0c63257de34c92', @@ -41,12 +41,12 @@ describe('API', () => { const dummySpan = new NoopSpan(spanContext); afterEach(() => { - api.trace.initGlobalTracerRegistry(new NoopTracerRegistry()); + api.trace.initGlobalTracerProvider(new NoopTracerProvider()); }); it('should not crash', () => { functions.forEach(fn => { - const tracer = api.trace.getTracerRegistry(); + const tracer = api.trace.getTracerProvider(); try { ((tracer as unknown) as { [fn: string]: Function })[fn](); // Try to run the function assert.ok(true, fn); @@ -58,9 +58,9 @@ describe('API', () => { }); }); - it('should use the global tracer registry', () => { - api.trace.initGlobalTracerRegistry(new TestTracerRegistry()); - const tracer = api.trace.getTracerRegistry().getTracer('name'); + 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); }); @@ -74,7 +74,7 @@ describe('API', () => { } } - class TestTracerRegistry extends NoopTracerRegistry { + class TestTracerProvider extends NoopTracerProvider { getTracer(_name: string, version?: string) { return new TestTracer(); } diff --git a/packages/opentelemetry-api/test/noop-implementations/noop-meter.test.ts b/packages/opentelemetry-api/test/noop-implementations/noop-meter.test.ts index a8a0a189c5..052854e82b 100644 --- a/packages/opentelemetry-api/test/noop-implementations/noop-meter.test.ts +++ b/packages/opentelemetry-api/test/noop-implementations/noop-meter.test.ts @@ -17,7 +17,7 @@ import * as assert from 'assert'; import { Labels, - NoopMeterRegistry, + NoopMeterProvider, NOOP_BOUND_COUNTER, NOOP_BOUND_GAUGE, NOOP_BOUND_MEASURE, @@ -29,7 +29,7 @@ import { describe('NoopMeter', () => { it('should not crash', () => { - const meter = new NoopMeterRegistry().getMeter('test-noop'); + const meter = new NoopMeterProvider().getMeter('test-noop'); const counter = meter.createCounter('some-name'); const labels = {} as Labels; const labelSet = meter.labels(labels); diff --git a/packages/opentelemetry-core/src/trace/instrumentation/BasePlugin.ts b/packages/opentelemetry-core/src/trace/instrumentation/BasePlugin.ts index af3749b58d..16cb0dfbf6 100644 --- a/packages/opentelemetry-core/src/trace/instrumentation/BasePlugin.ts +++ b/packages/opentelemetry-core/src/trace/instrumentation/BasePlugin.ts @@ -21,7 +21,7 @@ import { PluginConfig, PluginInternalFiles, PluginInternalFilesVersion, - TracerRegistry, + TracerProvider, } from '@opentelemetry/api'; import * as semver from 'semver'; import * as path from 'path'; @@ -47,12 +47,12 @@ export abstract class BasePlugin implements Plugin { enable( moduleExports: T, - tracerRegistry: TracerRegistry, + tracerProvider: TracerProvider, logger: Logger, config?: PluginConfig ): T { this._moduleExports = moduleExports; - this._tracer = tracerRegistry.getTracer( + this._tracer = tracerProvider.getTracer( this._tracerName, this._tracerVersion ); diff --git a/packages/opentelemetry-core/test/trace/BasePlugin.test.ts b/packages/opentelemetry-core/test/trace/BasePlugin.test.ts index 7a83452831..643b7562dd 100644 --- a/packages/opentelemetry-core/test/trace/BasePlugin.test.ts +++ b/packages/opentelemetry-core/test/trace/BasePlugin.test.ts @@ -14,13 +14,13 @@ * limitations under the License. */ -import { NoopTracerRegistry } from '@opentelemetry/api'; +import { NoopTracerProvider } from '@opentelemetry/api'; import * as assert from 'assert'; import * as path from 'path'; import { BasePlugin, NoopLogger } from '../../src'; import * as types from './fixtures/test-package/foo/bar/internal'; -const registry = new NoopTracerRegistry(); +const provider = new NoopTracerProvider(); const logger = new NoopLogger(); describe('BasePlugin', () => { @@ -29,7 +29,7 @@ describe('BasePlugin', () => { const testPackage = require('./fixtures/test-package'); const plugin = new TestPlugin(); assert.doesNotThrow(() => { - plugin.enable(testPackage, registry, logger); + plugin.enable(testPackage, provider, logger); }); // @TODO: https://github.com/open-telemetry/opentelemetry-js/issues/285 diff --git a/packages/opentelemetry-exporter-collector/README.md b/packages/opentelemetry-exporter-collector/README.md index 594584162a..d1496d148f 100644 --- a/packages/opentelemetry-exporter-collector/README.md +++ b/packages/opentelemetry-exporter-collector/README.md @@ -17,36 +17,36 @@ npm install --save @opentelemetry/exporter-collector ```js import * as opentelemetry from '@opentelemetry/api'; import { SimpleSpanProcessor } from '@opentelemetry/tracing'; -import { WebTracerRegistry } from '@opentelemetry/web'; +import { WebTracerProvider } from '@opentelemetry/web'; import { CollectorExporter } from '@opentelemetry/exporter-collector' const collectorOptions = { url: '' // url is optional and can be omitted - default is http://localhost:55678/v1/trace }; -const registry = new WebTracerRegistry(); +const provider = new WebTracerProvider(); const exporter = new CollectorExporter(collectorOptions); -registry.addSpanProcessor(new SimpleSpanProcessor(exporter)); +provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); -opentelemetry.trace.initGlobalTracerRegistry(registry); +opentelemetry.trace.initGlobalTracerProvider(provider); ``` ## Usage in Node ```js const opentelemetry = require('@opentelemetry/api'); -const { BasicTracerRegistry, SimpleSpanProcessor } = require('@opentelemetry/tracing'); +const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/tracing'); const { CollectorExporter } = require('@opentelemetry/exporter-collector'); const collectorOptions = { url: '' // url is optional and can be omitted - default is http://localhost:55678/v1/trace }; -const registry = new BasicTracerRegistry(); +const provider = new BasicTracerProvider(); const exporter = new CollectorExporter(collectorOptions); -registry.addSpanProcessor(new SimpleSpanProcessor(exporter)); +provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); -opentelemetry.trace.initGlobalTracerRegistry(registry); +opentelemetry.trace.initGlobalTracerProvider(provider); ``` diff --git a/packages/opentelemetry-exporter-prometheus/README.md b/packages/opentelemetry-exporter-prometheus/README.md index 0fddcd8bfc..812c407ae9 100644 --- a/packages/opentelemetry-exporter-prometheus/README.md +++ b/packages/opentelemetry-exporter-prometheus/README.md @@ -22,14 +22,14 @@ Create & register the exporter on your application. ```js const { PrometheusExporter } = require('@opentelemetry/exporter-prometheus'); -const { MeterRegistry } = require('@opentelemetry/metrics'); +const { MeterProvider } = require('@opentelemetry/metrics'); // Add your port and startServer to the Prometheus options const options = {port: 9464, startServer: true}; const exporter = new PrometheusExporter(options); // Register the exporter -const meter = new MeterRegistry().getMeter('exporter-prometheus'); +const meter = new MeterProvider().getMeter('exporter-prometheus'); meter.addExporter(exporter); // Now, start recording data diff --git a/packages/opentelemetry-exporter-prometheus/test/prometheus.test.ts b/packages/opentelemetry-exporter-prometheus/test/prometheus.test.ts index a019dc8420..1edd1fb136 100644 --- a/packages/opentelemetry-exporter-prometheus/test/prometheus.test.ts +++ b/packages/opentelemetry-exporter-prometheus/test/prometheus.test.ts @@ -18,7 +18,7 @@ import { CounterMetric, GaugeMetric, Meter, - MeterRegistry, + MeterProvider, } from '@opentelemetry/metrics'; import * as assert from 'assert'; import * as http from 'http'; @@ -171,7 +171,7 @@ describe('PrometheusExporter', () => { beforeEach(done => { exporter = new PrometheusExporter(); - meter = new MeterRegistry().getMeter('test-prometheus'); + meter = new MeterProvider().getMeter('test-prometheus'); exporter.startServer(done); }); @@ -387,7 +387,7 @@ describe('PrometheusExporter', () => { let exporter: PrometheusExporter | undefined; beforeEach(() => { - meter = new MeterRegistry().getMeter('test-prometheus'); + meter = new MeterProvider().getMeter('test-prometheus'); gauge = meter.createGauge('gauge') as GaugeMetric; gauge.bind(meter.labels({ key1: 'labelValue1' })).set(10); }); diff --git a/packages/opentelemetry-exporter-zipkin/test/transform.test.ts b/packages/opentelemetry-exporter-zipkin/test/transform.test.ts index 70c4ac1695..f32512003f 100644 --- a/packages/opentelemetry-exporter-zipkin/test/transform.test.ts +++ b/packages/opentelemetry-exporter-zipkin/test/transform.test.ts @@ -16,7 +16,7 @@ import * as assert from 'assert'; import * as types from '@opentelemetry/api'; -import { Span, BasicTracerRegistry } from '@opentelemetry/tracing'; +import { Span, BasicTracerProvider } from '@opentelemetry/tracing'; import { NoopLogger, hrTimeToMicroseconds, @@ -32,7 +32,7 @@ import { import * as zipkinTypes from '../src/types'; const logger = new NoopLogger(); -const tracer = new BasicTracerRegistry({ +const tracer = new BasicTracerProvider({ logger, }).getTracer('default'); const parentId = '5c1c63257de34c67'; diff --git a/packages/opentelemetry-metrics/README.md b/packages/opentelemetry-metrics/README.md index c48868ced6..d652e89be3 100644 --- a/packages/opentelemetry-metrics/README.md +++ b/packages/opentelemetry-metrics/README.md @@ -19,10 +19,10 @@ npm install --save @opentelemetry/metrics Choose this kind of metric when the value is a quantity, the sum is of primary interest, and the event count and value distribution are not of primary interest. Counters are defined as `Monotonic = true` by default, meaning that positive values are expected. ```js -const { MeterRegistry } = require('@opentelemetry/metrics'); +const { MeterProvider } = require('@opentelemetry/metrics'); // Initialize the Meter to capture measurements in various ways. -const meter = new MeterRegistry().getMeter('your-meter-name'); +const meter = new MeterProvider().getMeter('your-meter-name'); const counter = meter.createCounter('metric_name', { labelKeys: ["pid"], @@ -40,10 +40,10 @@ boundCounter.add(10); Gauge metrics express a pre-calculated value. Generally, this kind of metric should be used when the metric cannot be expressed as a sum or because the measurement interval is arbitrary. Use this kind of metric when the measurement is not a quantity, and the sum and event count are not of interest. Gauges are defined as `Monotonic = false` by default, meaning that new values are permitted to make positive or negative changes to the gauge. There is no restriction on the sign of the input for gauges. ```js -const { MeterRegistry } = require('@opentelemetry/metrics'); +const { MeterProvider } = require('@opentelemetry/metrics'); // Initialize the Meter to capture measurements in various ways. -const meter = new MeterRegistry().getMeter('your-meter-name'); +const meter = new MeterProvider().getMeter('your-meter-name'); const gauge = meter.createGauge('metric_name', { labelKeys: ["pid"], diff --git a/packages/opentelemetry-metrics/src/MeterRegistry.ts b/packages/opentelemetry-metrics/src/MeterProvider.ts similarity index 92% rename from packages/opentelemetry-metrics/src/MeterRegistry.ts rename to packages/opentelemetry-metrics/src/MeterProvider.ts index d4c5b2b6e5..bb4410bb17 100644 --- a/packages/opentelemetry-metrics/src/MeterRegistry.ts +++ b/packages/opentelemetry-metrics/src/MeterProvider.ts @@ -20,9 +20,9 @@ import { Meter } from '.'; import { DEFAULT_CONFIG, MeterConfig } from './types'; /** - * This class represents a meter registry which platform libraries can extend + * This class represents a meter provider which platform libraries can extend */ -export class MeterRegistry implements types.MeterRegistry { +export class MeterProvider implements types.MeterProvider { private readonly _meters: Map = new Map(); readonly logger: types.Logger; diff --git a/packages/opentelemetry-metrics/src/index.ts b/packages/opentelemetry-metrics/src/index.ts index 9a8b7f26d2..2f61a985cb 100644 --- a/packages/opentelemetry-metrics/src/index.ts +++ b/packages/opentelemetry-metrics/src/index.ts @@ -17,6 +17,6 @@ export * from './BoundInstrument'; export * from './Meter'; export * from './Metric'; -export * from './MeterRegistry'; +export * from './MeterProvider'; export * from './export/ConsoleMetricExporter'; export * from './export/types'; diff --git a/packages/opentelemetry-metrics/test/Meter.test.ts b/packages/opentelemetry-metrics/test/Meter.test.ts index ab26ebff92..822a83d24f 100644 --- a/packages/opentelemetry-metrics/test/Meter.test.ts +++ b/packages/opentelemetry-metrics/test/Meter.test.ts @@ -26,7 +26,7 @@ import * as types from '@opentelemetry/api'; import { LabelSet } from '../src/LabelSet'; import { NoopLogger, hrTime, hrTimeToMilliseconds } from '@opentelemetry/core'; import { NoopExporter } from './mocks/Exporter'; -import { MeterRegistry } from '../src/MeterRegistry'; +import { MeterProvider } from '../src/MeterProvider'; const performanceTimeOrigin = hrTime(); @@ -39,7 +39,7 @@ describe('Meter', () => { const hrTime: types.HrTime = [22, 400000000]; beforeEach(() => { - meter = new MeterRegistry({ + meter = new MeterProvider({ logger: new NoopLogger(), }).getMeter('test-meter'); labelSet = meter.labels(labels); diff --git a/packages/opentelemetry-metrics/test/MeterRegistry.test.ts b/packages/opentelemetry-metrics/test/MeterProvider.test.ts similarity index 62% rename from packages/opentelemetry-metrics/test/MeterRegistry.test.ts rename to packages/opentelemetry-metrics/test/MeterProvider.test.ts index e90b6c9baa..552b3d4fee 100644 --- a/packages/opentelemetry-metrics/test/MeterRegistry.test.ts +++ b/packages/opentelemetry-metrics/test/MeterProvider.test.ts @@ -16,52 +16,52 @@ import { NoopLogger } from '@opentelemetry/core'; import * as assert from 'assert'; -import { MeterRegistry, Meter } from '../src'; +import { MeterProvider, Meter } from '../src'; -describe('MeterRegistry', () => { +describe('MeterProvider', () => { describe('constructor', () => { it('should construct an instance without any options', () => { - const registry = new MeterRegistry(); - assert.ok(registry instanceof MeterRegistry); + const provider = new MeterProvider(); + assert.ok(provider instanceof MeterProvider); }); it('should construct an instance with logger', () => { - const registry = new MeterRegistry({ + const provider = new MeterProvider({ logger: new NoopLogger(), }); - assert.ok(registry instanceof MeterRegistry); + assert.ok(provider instanceof MeterProvider); }); }); describe('getMeter', () => { it('should return an instance of Meter', () => { - const meter = new MeterRegistry().getMeter('test-meter-registry'); + const meter = new MeterProvider().getMeter('test-meter-provider'); assert.ok(meter instanceof Meter); }); it('should return the meter with default version without a version option', () => { - const registry = new MeterRegistry(); - const meter1 = registry.getMeter('default'); - const meter2 = registry.getMeter('default', '*'); + const provider = new MeterProvider(); + const meter1 = provider.getMeter('default'); + const meter2 = provider.getMeter('default', '*'); assert.deepEqual(meter1, meter2); }); it('should return the same Meter instance with same name & version', () => { - const registry = new MeterRegistry(); - const meter1 = registry.getMeter('meter1', 'ver1'); - const meter2 = registry.getMeter('meter1', 'ver1'); + const provider = new MeterProvider(); + const meter1 = provider.getMeter('meter1', 'ver1'); + const meter2 = provider.getMeter('meter1', 'ver1'); assert.deepEqual(meter1, meter2); }); it('should return different Meter instance with different name or version', () => { - const registry = new MeterRegistry(); + const provider = new MeterProvider(); - const meter1 = registry.getMeter('meter1', 'ver1'); - const meter2 = registry.getMeter('meter1'); + const meter1 = provider.getMeter('meter1', 'ver1'); + const meter2 = provider.getMeter('meter1'); assert.notEqual(meter1, meter2); - const meter3 = registry.getMeter('meter2', 'ver2'); - const meter4 = registry.getMeter('meter3', 'ver2'); + const meter3 = provider.getMeter('meter2', 'ver2'); + const meter4 = provider.getMeter('meter3', 'ver2'); assert.notEqual(meter3, meter4); }); }); diff --git a/packages/opentelemetry-metrics/test/export/ConsoleMetricExporter.test.ts b/packages/opentelemetry-metrics/test/export/ConsoleMetricExporter.test.ts index 4c9e17e001..1652baad07 100644 --- a/packages/opentelemetry-metrics/test/export/ConsoleMetricExporter.test.ts +++ b/packages/opentelemetry-metrics/test/export/ConsoleMetricExporter.test.ts @@ -17,7 +17,7 @@ import * as assert from 'assert'; import * as sinon from 'sinon'; import { ConsoleMetricExporter } from '../../src'; -import { MeterRegistry } from '../../src/MeterRegistry'; +import { MeterProvider } from '../../src/MeterProvider'; describe('ConsoleMetricExporter', () => { let consoleExporter: ConsoleMetricExporter; @@ -37,7 +37,7 @@ describe('ConsoleMetricExporter', () => { it('should export information about metrics', () => { const spyConsole = sinon.spy(console, 'log'); - const meter = new MeterRegistry().getMeter( + const meter = new MeterProvider().getMeter( 'test-console-metric-exporter' ); meter.addExporter(consoleExporter); diff --git a/packages/opentelemetry-node/README.md b/packages/opentelemetry-node/README.md index 38487bec66..92c011d6e9 100644 --- a/packages/opentelemetry-node/README.md +++ b/packages/opentelemetry-node/README.md @@ -11,14 +11,14 @@ For manual instrumentation see the [@opentelemetry/tracing](https://github.com/open-telemetry/opentelemetry-js/tree/master/packages/opentelemetry-tracing) package. ## How does automated instrumentation work? -This package exposes a `NodeTracerRegistry` that will automatically hook into the module loader of Node.js. +This package exposes a `NodeTracerProvider` that will automatically hook into the module loader of Node.js. -For this to work, please make sure that `NodeTracerRegistry` is initialized before any other module of your application, (like `http` or `express`) is loaded. +For this to work, please make sure that `NodeTracerProvider` is initialized before any other module of your application, (like `http` or `express`) is loaded. OpenTelemetry comes with a growing number of instrumentation plugins for well know modules (see [supported modules](https://github.com/open-telemetry/opentelemetry-js#plugins)) and an API to create custom plugins (see [the plugin developer guide](https://github.com/open-telemetry/opentelemetry-js/blob/master/doc/plugin-guide.md)). -Whenever a module is loaded `NodeTracerRegistry` will check if a matching instrumentation plugin has been installed. +Whenever a module is loaded `NodeTracerProvider` will check if a matching instrumentation plugin has been installed. > **Please note:** This module does *not* bundle any plugins. They need to be installed separately. @@ -34,7 +34,7 @@ This instrumentation code will automatically In short, this means that this module will use provided plugins to automatically instrument your application to produce spans and provide end-to-end tracing by just adding a few lines of code. ## Creating custom spans on top of auto-instrumentation -Additionally to automated instrumentation, `NodeTracerRegistry` exposes the same API as [@opentelemetry/tracing](https://github.com/open-telemetry/opentelemetry-js/tree/master/packages/opentelemetry-tracing), allowing creating custom spans if needed. +Additionally to automated instrumentation, `NodeTracerProvider` exposes the same API as [@opentelemetry/tracing](https://github.com/open-telemetry/opentelemetry-js/tree/master/packages/opentelemetry-tracing), allowing creating custom spans if needed. ## Installation @@ -50,14 +50,14 @@ npm install --save @opentelemetry/plugin-https ## Usage -The following code will configure the `NodeTracerRegistry` to instrument `http` using `@opentelemetry/plugin-http`. +The following code will configure the `NodeTracerProvider` to instrument `http` using `@opentelemetry/plugin-http`. ```js const opentelemetry = require('@opentelemetry/core'); -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -// Create and configure NodeTracerRegistry -const registry = new NodeTracerRegistry({ +// Create and configure NodeTracerProvider +const provider = new NodeTracerProvider({ plugins: { http: { enabled: true, @@ -68,25 +68,25 @@ const registry = new NodeTracerRegistry({ } }); -// Initialize the registry -opentelemetry.trace.initGlobalTracerRegistry(registry); +// Initialize the provider +opentelemetry.initGlobalTracerProvider(provider); // Your application code - http will automatically be instrumented if // @opentelemetry/plugin-http is present const http = require('http'); ``` -To enable instrumentation for all [supported modules](https://github.com/open-telemetry/opentelemetry-js#plugins), create an instance of `NodeTracerRegistry` without providing any plugin configuration to the constructor. +To enable instrumentation for all [supported modules](https://github.com/open-telemetry/opentelemetry-js#plugins), create an instance of `NodeTracerProvider` without providing any plugin configuration to the constructor. ```js const opentelemetry = require('@opentelemetry/core'); -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -// Create and initialize NodeTracerRegistry -const registry = new NodeTracerRegistry(); +// Create and initialize NodeTracerProvider +const provider = new NodeTracerProvider(); -// Initialize the registry -opentelemetry.trace.initGlobalTracerRegistry(registry); +// Initialize the provider +opentelemetry.trace.initGlobalTracerProvider(provider); // Your application code // ... diff --git a/packages/opentelemetry-node/src/NodeTracerRegistry.ts b/packages/opentelemetry-node/src/NodeTracerProvider.ts similarity index 92% rename from packages/opentelemetry-node/src/NodeTracerRegistry.ts rename to packages/opentelemetry-node/src/NodeTracerProvider.ts index d2aac35236..b326a978d7 100644 --- a/packages/opentelemetry-node/src/NodeTracerRegistry.ts +++ b/packages/opentelemetry-node/src/NodeTracerProvider.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { BasicTracerRegistry } from '@opentelemetry/tracing'; +import { BasicTracerProvider } from '@opentelemetry/tracing'; import { AsyncHooksScopeManager } from '@opentelemetry/scope-async-hooks'; import { PluginLoader } from './instrumentation/PluginLoader'; import { NodeTracerConfig, DEFAULT_INSTRUMENTATION_PLUGINS } from './config'; @@ -22,7 +22,7 @@ import { NodeTracerConfig, DEFAULT_INSTRUMENTATION_PLUGINS } from './config'; /** * This class represents a node tracer with `async_hooks` module. */ -export class NodeTracerRegistry extends BasicTracerRegistry { +export class NodeTracerProvider extends BasicTracerProvider { private readonly _pluginLoader: PluginLoader; /** diff --git a/packages/opentelemetry-node/src/index.ts b/packages/opentelemetry-node/src/index.ts index 2ba218e18d..665900aefb 100644 --- a/packages/opentelemetry-node/src/index.ts +++ b/packages/opentelemetry-node/src/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export * from './NodeTracerRegistry'; +export * from './NodeTracerProvider'; diff --git a/packages/opentelemetry-node/src/instrumentation/PluginLoader.ts b/packages/opentelemetry-node/src/instrumentation/PluginLoader.ts index 7f4bfc0345..d9d271acfc 100644 --- a/packages/opentelemetry-node/src/instrumentation/PluginLoader.ts +++ b/packages/opentelemetry-node/src/instrumentation/PluginLoader.ts @@ -18,7 +18,7 @@ import { Logger, Plugin, PluginConfig, - TracerRegistry, + TracerProvider, } from '@opentelemetry/api'; import * as hook from 'require-in-the-middle'; import * as utils from './utils'; @@ -60,7 +60,7 @@ export class PluginLoader { private _hookState = HookState.UNINITIALIZED; /** Constructs a new PluginLoader instance. */ - constructor(readonly registry: TracerRegistry, readonly logger: Logger) {} + constructor(readonly provider: TracerProvider, readonly logger: Logger) {} /** * Loads a list of plugins. Each plugin module should implement the core @@ -120,7 +120,7 @@ export class PluginLoader { this._plugins.push(plugin); // Enable each supported plugin. - return plugin.enable(exports, this.registry, this.logger, config); + return plugin.enable(exports, this.provider, this.logger, config); } catch (e) { this.logger.error( `PluginLoader#load: could not load plugin ${modulePath} of module ${name}. Error: ${e.message}` diff --git a/packages/opentelemetry-node/test/NodeTracer.test.ts b/packages/opentelemetry-node/test/NodeTracer.test.ts index d44ff9a3b4..38ba91ff92 100644 --- a/packages/opentelemetry-node/test/NodeTracer.test.ts +++ b/packages/opentelemetry-node/test/NodeTracer.test.ts @@ -23,7 +23,7 @@ import { NoopLogger, NoRecordingSpan, } from '@opentelemetry/core'; -import { NodeTracerRegistry } from '../src/NodeTracerRegistry'; +import { NodeTracerProvider } from '../src/NodeTracerProvider'; import { TraceFlags } from '@opentelemetry/api'; import { Span } from '@opentelemetry/tracing'; import * as path from 'path'; @@ -39,8 +39,8 @@ const INSTALLED_PLUGINS_PATH = path.join( 'node_modules' ); -describe('NodeTracerRegistry', () => { - let registry: NodeTracerRegistry; +describe('NodeTracerProvider', () => { + let provider: NodeTracerProvider; before(() => { module.paths.push(INSTALLED_PLUGINS_PATH); }); @@ -48,45 +48,45 @@ describe('NodeTracerRegistry', () => { afterEach(() => { // clear require cache Object.keys(require.cache).forEach(key => delete require.cache[key]); - registry.stop(); + provider.stop(); }); describe('constructor', () => { it('should construct an instance with required only options', () => { - registry = new NodeTracerRegistry(); - assert.ok(registry instanceof NodeTracerRegistry); + provider = new NodeTracerProvider(); + assert.ok(provider instanceof NodeTracerProvider); }); it('should construct an instance with binary format', () => { - registry = new NodeTracerRegistry({ + provider = new NodeTracerProvider({ binaryFormat: new BinaryTraceContext(), }); - assert.ok(registry instanceof NodeTracerRegistry); + assert.ok(provider instanceof NodeTracerProvider); }); it('should construct an instance with http text format', () => { - registry = new NodeTracerRegistry({ + provider = new NodeTracerProvider({ httpTextFormat: new HttpTraceContext(), }); - assert.ok(registry instanceof NodeTracerRegistry); + assert.ok(provider instanceof NodeTracerProvider); }); it('should construct an instance with logger', () => { - registry = new NodeTracerRegistry({ + provider = new NodeTracerProvider({ logger: new NoopLogger(), }); - assert.ok(registry instanceof NodeTracerRegistry); + assert.ok(provider instanceof NodeTracerProvider); }); it('should construct an instance with sampler', () => { - registry = new NodeTracerRegistry({ + provider = new NodeTracerProvider({ sampler: ALWAYS_SAMPLER, }); - assert.ok(registry instanceof NodeTracerRegistry); + assert.ok(provider instanceof NodeTracerProvider); }); it('should load user configured plugins', () => { - registry = new NodeTracerRegistry({ + provider = new NodeTracerProvider({ logger: new NoopLogger(), plugins: { 'simple-module': { @@ -102,7 +102,7 @@ describe('NodeTracerRegistry', () => { }, }, }); - const pluginLoader = registry['_pluginLoader']; + const pluginLoader = provider['_pluginLoader']; assert.strictEqual(pluginLoader['_plugins'].length, 0); require('simple-module'); assert.strictEqual(pluginLoader['_plugins'].length, 1); @@ -111,39 +111,39 @@ describe('NodeTracerRegistry', () => { }); it('should construct an instance with default attributes', () => { - registry = new NodeTracerRegistry({ + provider = new NodeTracerProvider({ defaultAttributes: { region: 'eu-west', asg: 'my-asg', }, }); - assert.ok(registry instanceof NodeTracerRegistry); + assert.ok(provider instanceof NodeTracerProvider); }); }); describe('.startSpan()', () => { it('should start a span with name only', () => { - registry = new NodeTracerRegistry({ + provider = new NodeTracerProvider({ logger: new NoopLogger(), }); - const span = registry.getTracer('default').startSpan('my-span'); + const span = provider.getTracer('default').startSpan('my-span'); assert.ok(span); }); it('should start a span with name and options', () => { - registry = new NodeTracerRegistry({ + provider = new NodeTracerProvider({ logger: new NoopLogger(), }); - const span = registry.getTracer('default').startSpan('my-span', {}); + const span = provider.getTracer('default').startSpan('my-span', {}); assert.ok(span); }); it('should return a default span with no sampling', () => { - registry = new NodeTracerRegistry({ + provider = new NodeTracerProvider({ sampler: NEVER_SAMPLER, logger: new NoopLogger(), }); - const span = registry.getTracer('default').startSpan('my-span'); + const span = provider.getTracer('default').startSpan('my-span'); assert.ok(span instanceof NoRecordingSpan); assert.strictEqual(span.context().traceFlags, TraceFlags.UNSAMPLED); assert.strictEqual(span.isRecording(), false); @@ -156,11 +156,11 @@ describe('NodeTracerRegistry', () => { const defaultAttributes = { foo: 'bar', }; - registry = new NodeTracerRegistry({ + provider = new NodeTracerProvider({ defaultAttributes, }); - const span = registry.getTracer('default').startSpan('my-span') as Span; + const span = provider.getTracer('default').startSpan('my-span') as Span; assert.ok(span instanceof Span); assert.deepStrictEqual(span.attributes, defaultAttributes); }); @@ -168,9 +168,9 @@ describe('NodeTracerRegistry', () => { describe('.getCurrentSpan()', () => { it('should return undefined with AsyncHooksScopeManager when no span started', () => { - registry = new NodeTracerRegistry({}); + provider = new NodeTracerProvider({}); assert.deepStrictEqual( - registry.getTracer('default').getCurrentSpan(), + provider.getTracer('default').getCurrentSpan(), undefined ); }); @@ -178,36 +178,36 @@ describe('NodeTracerRegistry', () => { describe('.withSpan()', () => { it('should run scope with AsyncHooksScopeManager scope manager', done => { - registry = new NodeTracerRegistry({}); - const span = registry.getTracer('default').startSpan('my-span'); - registry.getTracer('default').withSpan(span, () => { + provider = new NodeTracerProvider({}); + const span = provider.getTracer('default').startSpan('my-span'); + provider.getTracer('default').withSpan(span, () => { assert.deepStrictEqual( - registry.getTracer('default').getCurrentSpan(), + provider.getTracer('default').getCurrentSpan(), span ); return done(); }); assert.deepStrictEqual( - registry.getTracer('default').getCurrentSpan(), + provider.getTracer('default').getCurrentSpan(), undefined ); }); it('should run scope with AsyncHooksScopeManager scope manager with multiple spans', done => { - registry = new NodeTracerRegistry({}); - const span = registry.getTracer('default').startSpan('my-span'); - registry.getTracer('default').withSpan(span, () => { + provider = new NodeTracerProvider({}); + const span = provider.getTracer('default').startSpan('my-span'); + provider.getTracer('default').withSpan(span, () => { assert.deepStrictEqual( - registry.getTracer('default').getCurrentSpan(), + provider.getTracer('default').getCurrentSpan(), span ); - const span1 = registry + const span1 = provider .getTracer('default') .startSpan('my-span1', { parent: span }); - registry.getTracer('default').withSpan(span1, () => { + provider.getTracer('default').withSpan(span1, () => { assert.deepStrictEqual( - registry.getTracer('default').getCurrentSpan(), + provider.getTracer('default').getCurrentSpan(), span1 ); assert.deepStrictEqual( @@ -220,19 +220,19 @@ describe('NodeTracerRegistry', () => { // when span ended. // @todo: below check is not running. assert.deepStrictEqual( - registry.getTracer('default').getCurrentSpan(), + provider.getTracer('default').getCurrentSpan(), undefined ); }); it('should find correct scope with promises', done => { - registry = new NodeTracerRegistry({}); - const span = registry.getTracer('default').startSpan('my-span'); - registry.getTracer('default').withSpan(span, async () => { + provider = new NodeTracerProvider({}); + const span = provider.getTracer('default').startSpan('my-span'); + provider.getTracer('default').withSpan(span, async () => { for (let i = 0; i < 3; i++) { await sleep(5).then(() => { assert.deepStrictEqual( - registry.getTracer('default').getCurrentSpan(), + provider.getTracer('default').getCurrentSpan(), span ); }); @@ -240,7 +240,7 @@ describe('NodeTracerRegistry', () => { return done(); }); assert.deepStrictEqual( - registry.getTracer('default').getCurrentSpan(), + provider.getTracer('default').getCurrentSpan(), undefined ); }); @@ -248,25 +248,25 @@ describe('NodeTracerRegistry', () => { describe('.bind()', () => { it('should bind scope with AsyncHooksScopeManager scope manager', done => { - const registry = new NodeTracerRegistry({}); - const span = registry.getTracer('default').startSpan('my-span'); + const provider = new NodeTracerProvider({}); + const span = provider.getTracer('default').startSpan('my-span'); const fn = () => { assert.deepStrictEqual( - registry.getTracer('default').getCurrentSpan(), + provider.getTracer('default').getCurrentSpan(), span ); return done(); }; - const patchedFn = registry.getTracer('default').bind(fn, span); + const patchedFn = provider.getTracer('default').bind(fn, span); return patchedFn(); }); }); describe('.getBinaryFormat()', () => { it('should get default binary formatter', () => { - registry = new NodeTracerRegistry({}); + provider = new NodeTracerProvider({}); assert.ok( - registry.getTracer('default').getBinaryFormat() instanceof + provider.getTracer('default').getBinaryFormat() instanceof BinaryTraceContext ); }); @@ -274,9 +274,9 @@ describe('NodeTracerRegistry', () => { describe('.getHttpTextFormat()', () => { it('should get default HTTP text formatter', () => { - registry = new NodeTracerRegistry({}); + provider = new NodeTracerProvider({}); assert.ok( - registry.getTracer('default').getHttpTextFormat() instanceof + provider.getTracer('default').getHttpTextFormat() instanceof HttpTraceContext ); }); diff --git a/packages/opentelemetry-node/test/instrumentation/PluginLoader.test.ts b/packages/opentelemetry-node/test/instrumentation/PluginLoader.test.ts index b493870ef9..ad4edb7863 100644 --- a/packages/opentelemetry-node/test/instrumentation/PluginLoader.test.ts +++ b/packages/opentelemetry-node/test/instrumentation/PluginLoader.test.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { NoopTracerRegistry } from '@opentelemetry/api'; +import { NoopTracerProvider } from '@opentelemetry/api'; import { NoopLogger } from '@opentelemetry/core'; import * as assert from 'assert'; import * as path from 'path'; @@ -87,7 +87,7 @@ const notSupportedVersionPlugins: Plugins = { }; describe('PluginLoader', () => { - const registry = new NoopTracerRegistry(); + const provider = new NoopTracerProvider(); const logger = new NoopLogger(); before(() => { @@ -102,19 +102,19 @@ describe('PluginLoader', () => { describe('.state()', () => { it('returns UNINITIALIZED when first called', () => { - const pluginLoader = new PluginLoader(registry, logger); + const pluginLoader = new PluginLoader(provider, logger); assert.strictEqual(pluginLoader['_hookState'], HookState.UNINITIALIZED); }); it('transitions from UNINITIALIZED to ENABLED', () => { - const pluginLoader = new PluginLoader(registry, logger); + const pluginLoader = new PluginLoader(provider, logger); pluginLoader.load(simplePlugins); assert.strictEqual(pluginLoader['_hookState'], HookState.ENABLED); pluginLoader.unload(); }); it('transitions from ENABLED to DISABLED', () => { - const pluginLoader = new PluginLoader(registry, logger); + const pluginLoader = new PluginLoader(provider, logger); pluginLoader.load(simplePlugins).unload(); assert.strictEqual(pluginLoader['_hookState'], HookState.DISABLED); }); @@ -139,7 +139,7 @@ describe('PluginLoader', () => { }); it('should load a plugin and patch the target modules', () => { - const pluginLoader = new PluginLoader(registry, logger); + const pluginLoader = new PluginLoader(provider, logger); assert.strictEqual(pluginLoader['_plugins'].length, 0); pluginLoader.load(simplePlugins); // The hook is only called the first time the module is loaded. @@ -151,7 +151,7 @@ describe('PluginLoader', () => { }); it('should load a plugin and patch the core module', () => { - const pluginLoader = new PluginLoader(registry, logger); + const pluginLoader = new PluginLoader(provider, logger); assert.strictEqual(pluginLoader['_plugins'].length, 0); pluginLoader.load(httpPlugins); // The hook is only called the first time the module is loaded. @@ -162,7 +162,7 @@ describe('PluginLoader', () => { }); // @TODO: simplify this test once we can load module with custom path it('should not load the plugin when supported versions does not match', () => { - const pluginLoader = new PluginLoader(registry, logger); + const pluginLoader = new PluginLoader(provider, logger); assert.strictEqual(pluginLoader['_plugins'].length, 0); pluginLoader.load(notSupportedVersionPlugins); // The hook is only called the first time the module is loaded. @@ -172,7 +172,7 @@ describe('PluginLoader', () => { }); // @TODO: simplify this test once we can load module with custom path it('should load a plugin and patch the target modules when supported versions match', () => { - const pluginLoader = new PluginLoader(registry, logger); + const pluginLoader = new PluginLoader(provider, logger); assert.strictEqual(pluginLoader['_plugins'].length, 0); pluginLoader.load(supportedVersionPlugins); // The hook is only called the first time the module is loaded. @@ -184,7 +184,7 @@ describe('PluginLoader', () => { }); it('should not load a plugin when value is false', () => { - const pluginLoader = new PluginLoader(registry, logger); + const pluginLoader = new PluginLoader(provider, logger); assert.strictEqual(pluginLoader['_plugins'].length, 0); pluginLoader.load(disablePlugins); const simpleModule = require('simple-module'); @@ -195,7 +195,7 @@ describe('PluginLoader', () => { }); it('should not load a plugin when value is true but path is missing', () => { - const pluginLoader = new PluginLoader(registry, logger); + const pluginLoader = new PluginLoader(provider, logger); assert.strictEqual(pluginLoader['_plugins'].length, 0); pluginLoader.load(missingPathPlugins); const simpleModule = require('simple-module'); @@ -206,7 +206,7 @@ describe('PluginLoader', () => { }); it('should not load a non existing plugin', () => { - const pluginLoader = new PluginLoader(registry, logger); + const pluginLoader = new PluginLoader(provider, logger); assert.strictEqual(pluginLoader['_plugins'].length, 0); pluginLoader.load(nonexistentPlugins); assert.strictEqual(pluginLoader['_plugins'].length, 0); @@ -214,7 +214,7 @@ describe('PluginLoader', () => { }); it(`doesn't patch modules for which plugins aren't specified`, () => { - const pluginLoader = new PluginLoader(registry, logger); + const pluginLoader = new PluginLoader(provider, logger); pluginLoader.load({}); assert.strictEqual(require('simple-module').value(), 0); pluginLoader.unload(); @@ -223,7 +223,7 @@ describe('PluginLoader', () => { describe('.unload()', () => { it('should unload the plugins and unpatch the target module when unloads', () => { - const pluginLoader = new PluginLoader(registry, logger); + const pluginLoader = new PluginLoader(provider, logger); assert.strictEqual(pluginLoader['_plugins'].length, 0); pluginLoader.load(simplePlugins); // The hook is only called the first time the module is loaded. diff --git a/packages/opentelemetry-plugin-dns/README.md b/packages/opentelemetry-plugin-dns/README.md index 3cac446759..3e01f0130b 100644 --- a/packages/opentelemetry-plugin-dns/README.md +++ b/packages/opentelemetry-plugin-dns/README.md @@ -18,9 +18,9 @@ npm install --save @opentelemetry/plugin-dns ## Usage ```js -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry({ +const provider = new NodeTracerProvider({ plugins: { dns: { enabled: true, @@ -37,7 +37,7 @@ const registry = new NodeTracerRegistry({ If you use Zipkin, you must use `ignoreHostnames` in order to not trace those calls. If the server is local. You can set : ``` -const registry = new NodeTracerRegistry({ +const provider = new NodeTracerProvider({ plugins: { dns: { enabled: true, diff --git a/packages/opentelemetry-plugin-dns/test/functionals/dns-disable.test.ts b/packages/opentelemetry-plugin-dns/test/functionals/dns-disable.test.ts index 8fcfb36f4d..0572f76a39 100644 --- a/packages/opentelemetry-plugin-dns/test/functionals/dns-disable.test.ts +++ b/packages/opentelemetry-plugin-dns/test/functionals/dns-disable.test.ts @@ -20,20 +20,20 @@ import { } from '@opentelemetry/tracing'; import * as assert from 'assert'; import { NoopLogger } from '@opentelemetry/core'; -import { NodeTracerRegistry } from '@opentelemetry/node'; +import { NodeTracerProvider } from '@opentelemetry/node'; import { plugin } from '../../src/dns'; import * as sinon from 'sinon'; import * as dns from 'dns'; const memoryExporter = new InMemorySpanExporter(); const logger = new NoopLogger(); -const registry = new NodeTracerRegistry({ logger }); -const tracer = registry.getTracer('default'); -registry.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); +const provider = new NodeTracerProvider({ logger }); +const tracer = provider.getTracer('default'); +provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); describe('DnsPlugin', () => { before(() => { - plugin.enable(dns, registry, tracer.logger); + plugin.enable(dns, provider, tracer.logger); assert.strictEqual(dns.lookup.__wrapped, true); }); diff --git a/packages/opentelemetry-plugin-dns/test/functionals/dns-enable.test.ts b/packages/opentelemetry-plugin-dns/test/functionals/dns-enable.test.ts index cb59bcb133..4049eeeff1 100644 --- a/packages/opentelemetry-plugin-dns/test/functionals/dns-enable.test.ts +++ b/packages/opentelemetry-plugin-dns/test/functionals/dns-enable.test.ts @@ -20,18 +20,18 @@ import { } from '@opentelemetry/tracing'; import * as assert from 'assert'; import { NoopLogger } from '@opentelemetry/core'; -import { NodeTracerRegistry } from '@opentelemetry/node'; +import { NodeTracerProvider } from '@opentelemetry/node'; import { plugin, DnsPlugin } from '../../src/dns'; import * as dns from 'dns'; const memoryExporter = new InMemorySpanExporter(); const logger = new NoopLogger(); -const registry = new NodeTracerRegistry({ logger }); -registry.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); +const provider = new NodeTracerProvider({ logger }); +provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); describe('DnsPlugin', () => { before(() => { - plugin.enable(dns, registry, registry.logger); + plugin.enable(dns, provider, provider.logger); }); after(() => { diff --git a/packages/opentelemetry-plugin-dns/test/functionals/utils.test.ts b/packages/opentelemetry-plugin-dns/test/functionals/utils.test.ts index 6355cd73e1..cc35f6ec61 100644 --- a/packages/opentelemetry-plugin-dns/test/functionals/utils.test.ts +++ b/packages/opentelemetry-plugin-dns/test/functionals/utils.test.ts @@ -15,7 +15,7 @@ */ import { NoopLogger } from '@opentelemetry/core'; -import { BasicTracerRegistry, Span } from '@opentelemetry/tracing'; +import { BasicTracerProvider, Span } from '@opentelemetry/tracing'; import { CanonicalCode, SpanKind } from '@opentelemetry/api'; import * as assert from 'assert'; import * as sinon from 'sinon'; @@ -162,7 +162,7 @@ describe('Utility', () => { it('should have error attributes', () => { const errorMessage = 'test error'; const span = new Span( - new BasicTracerRegistry().getTracer('default'), + new BasicTracerProvider().getTracer('default'), 'test', { spanId: '', traceId: '' }, SpanKind.INTERNAL diff --git a/packages/opentelemetry-plugin-dns/test/integrations/dns-lookup.test.ts b/packages/opentelemetry-plugin-dns/test/integrations/dns-lookup.test.ts index 27b4f0a148..6eeb17d98d 100644 --- a/packages/opentelemetry-plugin-dns/test/integrations/dns-lookup.test.ts +++ b/packages/opentelemetry-plugin-dns/test/integrations/dns-lookup.test.ts @@ -20,7 +20,7 @@ import { } from '@opentelemetry/tracing'; import * as assert from 'assert'; import { NoopLogger } from '@opentelemetry/core'; -import { NodeTracerRegistry } from '@opentelemetry/node'; +import { NodeTracerProvider } from '@opentelemetry/node'; import { plugin } from '../../src/dns'; import * as dns from 'dns'; import * as utils from '../utils/utils'; @@ -29,14 +29,14 @@ import { CanonicalCode } from '@opentelemetry/api'; const memoryExporter = new InMemorySpanExporter(); const logger = new NoopLogger(); -const registry = new NodeTracerRegistry({ logger }); -registry.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); +const provider = new NodeTracerProvider({ logger }); +provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); describe('dns.lookup()', () => { before(function(done) { // mandatory if (process.env.CI) { - plugin.enable(dns, registry, registry.logger); + plugin.enable(dns, provider, provider.logger); done(); return; } @@ -48,7 +48,7 @@ describe('dns.lookup()', () => { } done(); }); - plugin.enable(dns, registry, registry.logger); + plugin.enable(dns, provider, provider.logger); }); afterEach(() => { diff --git a/packages/opentelemetry-plugin-dns/test/integrations/dnspromise-lookup.test.ts b/packages/opentelemetry-plugin-dns/test/integrations/dnspromise-lookup.test.ts index ad3782613d..40f501891d 100644 --- a/packages/opentelemetry-plugin-dns/test/integrations/dnspromise-lookup.test.ts +++ b/packages/opentelemetry-plugin-dns/test/integrations/dnspromise-lookup.test.ts @@ -20,7 +20,7 @@ import { } from '@opentelemetry/tracing'; import * as assert from 'assert'; import { NoopLogger } from '@opentelemetry/core'; -import { NodeTracerRegistry } from '@opentelemetry/node'; +import { NodeTracerProvider } from '@opentelemetry/node'; import { plugin } from '../../src/dns'; import * as dns from 'dns'; import * as utils from '../utils/utils'; @@ -30,8 +30,8 @@ import { CanonicalCode } from '@opentelemetry/api'; const memoryExporter = new InMemorySpanExporter(); const logger = new NoopLogger(); -const registry = new NodeTracerRegistry({ logger }); -registry.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); +const provider = new NodeTracerProvider({ logger }); +provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); describe('dns.promises.lookup()', () => { before(function(done) { @@ -42,7 +42,7 @@ describe('dns.promises.lookup()', () => { // if node version is supported, it's mandatory for CI if (process.env.CI) { - plugin.enable(dns, registry, registry.logger); + plugin.enable(dns, provider, provider.logger); done(); return; } @@ -54,7 +54,7 @@ describe('dns.promises.lookup()', () => { } done(); }); - plugin.enable(dns, registry, registry.logger); + plugin.enable(dns, provider, provider.logger); }); afterEach(() => { diff --git a/packages/opentelemetry-plugin-document-load/test/documentLoad.test.ts b/packages/opentelemetry-plugin-document-load/test/documentLoad.test.ts index b2a0469956..541044e05a 100644 --- a/packages/opentelemetry-plugin-document-load/test/documentLoad.test.ts +++ b/packages/opentelemetry-plugin-document-load/test/documentLoad.test.ts @@ -20,7 +20,7 @@ import { ConsoleLogger, TRACE_PARENT_HEADER } from '@opentelemetry/core'; import { - BasicTracerRegistry, + BasicTracerProvider, ReadableSpan, SimpleSpanProcessor, SpanExporter, @@ -191,7 +191,7 @@ function ensureNetworkEventsExists(events: TimedEvent[]) { describe('DocumentLoad Plugin', () => { let plugin: DocumentLoad; let moduleExports: any; - let registry: BasicTracerRegistry; + let provider: BasicTracerProvider; let logger: Logger; let config: PluginConfig; let spanProcessor: SimpleSpanProcessor; @@ -203,13 +203,13 @@ describe('DocumentLoad Plugin', () => { value: 'complete', }); moduleExports = {}; - registry = new BasicTracerRegistry(); + provider = new BasicTracerProvider(); logger = new ConsoleLogger(); config = {}; plugin = new DocumentLoad(); dummyExporter = new DummyExporter(); spanProcessor = new SimpleSpanProcessor(dummyExporter); - registry.addSpanProcessor(spanProcessor); + provider.addSpanProcessor(spanProcessor); }); afterEach(() => { @@ -237,7 +237,7 @@ describe('DocumentLoad Plugin', () => { spyEntries.restore(); }); it('should start collecting the performance immediately', done => { - plugin.enable(moduleExports, registry, logger, config); + plugin.enable(moduleExports, provider, logger, config); setTimeout(() => { assert.strictEqual(window.document.readyState, 'complete'); assert.strictEqual(spyEntries.callCount, 2); @@ -264,7 +264,7 @@ describe('DocumentLoad Plugin', () => { it('should collect performance after document load event', done => { const spy = sinon.spy(window, 'addEventListener'); - plugin.enable(moduleExports, registry, logger, config); + plugin.enable(moduleExports, provider, logger, config); const args = spy.args[0]; const name = args[0]; assert.strictEqual(name, 'load'); @@ -299,7 +299,7 @@ describe('DocumentLoad Plugin', () => { it('should export correct span with events', done => { const spyOnEnd = sinon.spy(dummyExporter, 'export'); - plugin.enable(moduleExports, registry, logger, config); + plugin.enable(moduleExports, provider, logger, config); setTimeout(() => { const rootSpan = spyOnEnd.args[0][0][0] as ReadableSpan; @@ -356,7 +356,7 @@ describe('DocumentLoad Plugin', () => { it('should create a root span with server context traceId', done => { const spyOnEnd = sinon.spy(dummyExporter, 'export'); - plugin.enable(moduleExports, registry, logger, config); + plugin.enable(moduleExports, provider, logger, config); setTimeout(() => { const rootSpan = spyOnEnd.args[0][0][0] as ReadableSpan; const fetchSpan = spyOnEnd.args[1][0][0] as ReadableSpan; @@ -392,7 +392,7 @@ describe('DocumentLoad Plugin', () => { it('should create span for each of the resource', done => { const spyOnEnd = sinon.spy(dummyExporter, 'export'); - plugin.enable(moduleExports, registry, logger, config); + plugin.enable(moduleExports, provider, logger, config); setTimeout(() => { const spanResource1 = spyOnEnd.args[1][0][0] as ReadableSpan; const spanResource2 = spyOnEnd.args[2][0][0] as ReadableSpan; @@ -430,7 +430,7 @@ describe('DocumentLoad Plugin', () => { it('should create span for each of the resource', done => { const spyOnEnd = sinon.spy(dummyExporter, 'export'); - plugin.enable(moduleExports, registry, logger, config); + plugin.enable(moduleExports, provider, logger, config); setTimeout(() => { const spanResource1 = spyOnEnd.args[1][0][0] as ReadableSpan; @@ -471,7 +471,7 @@ describe('DocumentLoad Plugin', () => { it('should still export rootSpan and fetchSpan', done => { const spyOnEnd = sinon.spy(dummyExporter, 'export'); - plugin.enable(moduleExports, registry, logger, config); + plugin.enable(moduleExports, provider, logger, config); setTimeout(() => { const rootSpan = spyOnEnd.args[0][0][0] as ReadableSpan; @@ -503,7 +503,7 @@ describe('DocumentLoad Plugin', () => { it('should export correct span with events', done => { const spyOnEnd = sinon.spy(dummyExporter, 'export'); - plugin.enable(moduleExports, registry, logger, config); + plugin.enable(moduleExports, provider, logger, config); setTimeout(() => { const rootSpan = spyOnEnd.args[0][0][0] as ReadableSpan; const fetchSpan = spyOnEnd.args[1][0][0] as ReadableSpan; @@ -551,7 +551,7 @@ describe('DocumentLoad Plugin', () => { it('should not create any span', done => { const spyOnEnd = sinon.spy(dummyExporter, 'export'); - plugin.enable(moduleExports, registry, logger, config); + plugin.enable(moduleExports, provider, logger, config); setTimeout(() => { assert.ok(spyOnEnd.callCount === 0); done(); diff --git a/packages/opentelemetry-plugin-grpc/README.md b/packages/opentelemetry-plugin-grpc/README.md index acd3871178..7376811dd8 100644 --- a/packages/opentelemetry-plugin-grpc/README.md +++ b/packages/opentelemetry-plugin-grpc/README.md @@ -22,9 +22,9 @@ OpenTelemetry gRPC Instrumentation allows the user to automatically collect trac To load a specific plugin (**gRPC** in this case), specify it in the Node Tracer's configuration. ```javascript -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry({ +const provider = new NodeTracerProvider({ plugins: { grpc: { enabled: true, @@ -37,9 +37,9 @@ const registry = new NodeTracerRegistry({ To load all of the [supported plugins](https://github.com/open-telemetry/opentelemetry-js#plugins), use below approach. Each plugin is only loaded when the module that it patches is loaded; in other words, there is no computational overhead for listing plugins for unused modules. ```javascript -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry(); +const provider = new NodeTracerProvider(); ``` See [examples/grpc](https://github.com/open-telemetry/opentelemetry-js/tree/master/examples/grpc) for a short example. diff --git a/packages/opentelemetry-plugin-grpc/test/grpc.test.ts b/packages/opentelemetry-plugin-grpc/test/grpc.test.ts index 1a0adf6eff..0cd3b67669 100644 --- a/packages/opentelemetry-plugin-grpc/test/grpc.test.ts +++ b/packages/opentelemetry-plugin-grpc/test/grpc.test.ts @@ -14,9 +14,9 @@ * limitations under the License. */ -import { NoopTracerRegistry, SpanKind } from '@opentelemetry/api'; +import { NoopTracerProvider, SpanKind } from '@opentelemetry/api'; import { NoopLogger } from '@opentelemetry/core'; -import { NodeTracerRegistry } from '@opentelemetry/node'; +import { NodeTracerProvider } from '@opentelemetry/node'; import { InMemorySpanExporter, SimpleSpanProcessor, @@ -316,7 +316,7 @@ describe('GrpcPlugin', () => { }); it('should patch client constructor makeClientConstructor() and makeGenericClientConstructor()', () => { - plugin.enable(grpc, new NoopTracerRegistry(), new NoopLogger()); + plugin.enable(grpc, new NoopTracerProvider(), new NoopLogger()); (plugin['_moduleExports'] as any).makeGenericClientConstructor({}); assert.strictEqual(clientPatchStub.callCount, 1); }); @@ -368,7 +368,7 @@ describe('GrpcPlugin', () => { const runTest = ( method: typeof methodList[0], - registry: NodeTracerRegistry, + provider: NodeTracerProvider, checkSpans = true ) => { it(`should ${ @@ -408,11 +408,11 @@ describe('GrpcPlugin', () => { const expectEmpty = memoryExporter.getFinishedSpans(); assert.strictEqual(expectEmpty.length, 0); - const span = registry + const span = provider .getTracer('default') .startSpan('TestSpan', { kind: SpanKind.PRODUCER }); - return registry.getTracer('default').withSpan(span, async () => { - const rootSpan = registry.getTracer('default').getCurrentSpan(); + return provider.getTracer('default').withSpan(span, async () => { + const rootSpan = provider.getTracer('default').getCurrentSpan(); if (!rootSpan) { assert.ok(false); return; // return so typechecking passes for rootSpan.end() @@ -465,7 +465,7 @@ describe('GrpcPlugin', () => { method: typeof methodList[0], key: string, errorCode: number, - registry: NodeTracerRegistry + provider: NodeTracerProvider ) => { it(`should raise an error for client/server rootSpans: method=${method.methodName}, status=${key}`, async () => { const expectEmpty = memoryExporter.getFinishedSpans(); @@ -503,11 +503,11 @@ describe('GrpcPlugin', () => { const expectEmpty = memoryExporter.getFinishedSpans(); assert.strictEqual(expectEmpty.length, 0); - const span = registry + const span = provider .getTracer('default') .startSpan('TestSpan', { kind: SpanKind.PRODUCER }); - return registry.getTracer('default').withSpan(span, async () => { - const rootSpan = registry.getTracer('default').getCurrentSpan(); + return provider.getTracer('default').withSpan(span, async () => { + const rootSpan = provider.getTracer('default').getCurrentSpan(); if (!rootSpan) { assert.ok(false); return; // return so typechecking passes for rootSpan.end() @@ -554,8 +554,8 @@ describe('GrpcPlugin', () => { describe('enable()', () => { const logger = new NoopLogger(); - const registry = new NodeTracerRegistry({ logger }); - registry.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); + const provider = new NodeTracerProvider({ logger }); + provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); beforeEach(() => { memoryExporter.reset(); }); @@ -564,7 +564,7 @@ describe('GrpcPlugin', () => { const config = { // TODO: add plugin options here once supported }; - plugin.enable(grpc, registry, logger, config); + plugin.enable(grpc, provider, logger, config); const proto = grpc.load(PROTO_PATH).pkg_test; server = startServer(grpc, proto); @@ -581,7 +581,7 @@ describe('GrpcPlugin', () => { methodList.forEach(method => { describe(`Test automatic tracing for grpc remote method ${method.description}`, () => { - runTest(method, registry); + runTest(method, provider); }); }); @@ -591,7 +591,7 @@ describe('GrpcPlugin', () => { // tslint:disable-next-line:no-any const errorCode = Number(grpc.status[statusKey as any]); if (errorCode > grpc.status.OK) { - runErrorTest(method, statusKey, errorCode, registry); + runErrorTest(method, statusKey, errorCode, provider); } }); }); @@ -600,14 +600,14 @@ describe('GrpcPlugin', () => { describe('disable()', () => { const logger = new NoopLogger(); - const registry = new NodeTracerRegistry({ logger }); - registry.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); + const provider = new NodeTracerProvider({ logger }); + provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); beforeEach(() => { memoryExporter.reset(); }); before(() => { - plugin.enable(grpc, registry, logger); + plugin.enable(grpc, provider, logger); plugin.disable(); const proto = grpc.load(PROTO_PATH).pkg_test; @@ -624,7 +624,7 @@ describe('GrpcPlugin', () => { methodList.map(method => { describe(`Test automatic tracing for grpc remote method ${method.description}`, () => { - runTest(method, registry, false); + runTest(method, provider, false); }); }); }); diff --git a/packages/opentelemetry-plugin-http/README.md b/packages/opentelemetry-plugin-http/README.md index 375619266f..8daf06f844 100644 --- a/packages/opentelemetry-plugin-http/README.md +++ b/packages/opentelemetry-plugin-http/README.md @@ -22,9 +22,9 @@ OpenTelemetry HTTP Instrumentation allows the user to automatically collect trac To load a specific plugin (HTTP in this case), specify it in the Node Tracer's configuration. ```js -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry({ +const provider = new NodeTracerProvider({ plugins: { http: { enabled: true, @@ -38,9 +38,9 @@ const registry = new NodeTracerRegistry({ To load all of the [supported plugins](https://github.com/open-telemetry/opentelemetry-js#plugins), use below approach. Each plugin is only loaded when the module that it patches is loaded; in other words, there is no computational overhead for listing plugins for unused modules. ```js -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry(); +const provider = new NodeTracerProvider(); ``` See [examples/http](https://github.com/open-telemetry/opentelemetry-js/tree/master/examples/http) for a short example. diff --git a/packages/opentelemetry-plugin-http/test/functionals/http-disable.test.ts b/packages/opentelemetry-plugin-http/test/functionals/http-disable.test.ts index 33de9db58d..996992a61d 100644 --- a/packages/opentelemetry-plugin-http/test/functionals/http-disable.test.ts +++ b/packages/opentelemetry-plugin-http/test/functionals/http-disable.test.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { NoopTracerRegistry, NOOP_TRACER } from '@opentelemetry/api'; +import { NoopTracerProvider, NOOP_TRACER } from '@opentelemetry/api'; import { NoopLogger } from '@opentelemetry/core'; import * as assert from 'assert'; import * as http from 'http'; @@ -30,12 +30,12 @@ describe('HttpPlugin', () => { describe('disable()', () => { const logger = new NoopLogger(); - const registry = new NoopTracerRegistry(); + const provider = new NoopTracerProvider(); before(() => { nock.cleanAll(); nock.enableNetConnect(); - plugin.enable(http, registry, logger); + plugin.enable(http, provider, logger); // Ensure that http module is patched. assert.strictEqual(http.Server.prototype.emit.__wrapped, true); server = http.createServer((request, response) => { @@ -61,7 +61,7 @@ describe('HttpPlugin', () => { server.close(); }); describe('unpatch()', () => { - it('should not call registry methods for creating span', async () => { + it('should not call provider methods for creating span', async () => { plugin.disable(); const testPath = '/incoming/unpatch/'; diff --git a/packages/opentelemetry-plugin-http/test/functionals/http-enable.test.ts b/packages/opentelemetry-plugin-http/test/functionals/http-enable.test.ts index e623ebce52..32042d66d1 100644 --- a/packages/opentelemetry-plugin-http/test/functionals/http-enable.test.ts +++ b/packages/opentelemetry-plugin-http/test/functionals/http-enable.test.ts @@ -19,7 +19,7 @@ import { SimpleSpanProcessor, } from '@opentelemetry/tracing'; import { NoopLogger } from '@opentelemetry/core'; -import { NodeTracerRegistry } from '@opentelemetry/node'; +import { NodeTracerProvider } from '@opentelemetry/node'; import { CanonicalCode, Span as ISpan, SpanKind } from '@opentelemetry/api'; import * as assert from 'assert'; import * as http from 'http'; @@ -45,11 +45,11 @@ const serverName = 'my.server.name'; const memoryExporter = new InMemorySpanExporter(); const httpTextFormat = new DummyPropagation(); const logger = new NoopLogger(); -const registry = new NodeTracerRegistry({ +const provider = new NodeTracerProvider({ logger, httpTextFormat, }); -registry.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); +provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); function doNock( hostname: string, @@ -109,7 +109,7 @@ describe('HttpPlugin', () => { plugin.component, process.versions.node ); - pluginWithBadOptions.enable(http, registry, registry.logger, config); + pluginWithBadOptions.enable(http, provider, provider.logger, config); server = http.createServer((request, response) => { response.end('Test Server Response'); }); @@ -187,7 +187,7 @@ describe('HttpPlugin', () => { applyCustomAttributesOnSpan: customAttributeFunction, serverName, }; - plugin.enable(http, registry, registry.logger, config); + plugin.enable(http, provider, provider.logger, config); server = http.createServer((request, response) => { response.end('Test Server Response'); }); @@ -208,7 +208,7 @@ describe('HttpPlugin', () => { const httpNotPatched = new HttpPlugin( plugin.component, process.versions.node - ).enable({} as Http, registry, registry.logger, {}); + ).enable({} as Http, provider, provider.logger, {}); assert.strictEqual(Object.keys(httpNotPatched).length, 0); }); @@ -335,8 +335,8 @@ describe('HttpPlugin', () => { const testPath = '/outgoing/rootSpan/childs/1'; doNock(hostname, testPath, 200, 'Ok'); const name = 'TestRootSpan'; - const span = registry.getTracer('default').startSpan(name); - return registry.getTracer('default').withSpan(span, async () => { + const span = provider.getTracer('default').startSpan(name); + return provider.getTracer('default').withSpan(span, async () => { const result = await httpRequest.get( `${protocol}://${hostname}${testPath}` ); @@ -378,8 +378,8 @@ describe('HttpPlugin', () => { httpErrorCodes[i].toString() ); const name = 'TestRootSpan'; - const span = registry.getTracer('default').startSpan(name); - return registry.getTracer('default').withSpan(span, async () => { + const span = provider.getTracer('default').startSpan(name); + return provider.getTracer('default').withSpan(span, async () => { const result = await httpRequest.get( `${protocol}://${hostname}${testPath}` ); @@ -417,8 +417,8 @@ describe('HttpPlugin', () => { const num = 5; doNock(hostname, testPath, 200, 'Ok', num); const name = 'TestRootSpan'; - const span = registry.getTracer('default').startSpan(name); - await registry.getTracer('default').withSpan(span, async () => { + const span = provider.getTracer('default').startSpan(name); + await provider.getTracer('default').withSpan(span, async () => { for (let i = 0; i < num; i++) { await httpRequest.get(`${protocol}://${hostname}${testPath}`); const spans = memoryExporter.getFinishedSpans(); diff --git a/packages/opentelemetry-plugin-http/test/functionals/http-package.test.ts b/packages/opentelemetry-plugin-http/test/functionals/http-package.test.ts index bf32608c60..4f00515562 100644 --- a/packages/opentelemetry-plugin-http/test/functionals/http-package.test.ts +++ b/packages/opentelemetry-plugin-http/test/functionals/http-package.test.ts @@ -28,7 +28,7 @@ import * as superagent from 'superagent'; import * as got from 'got'; import * as request from 'request-promise-native'; import * as path from 'path'; -import { NodeTracerRegistry } from '@opentelemetry/node'; +import { NodeTracerProvider } from '@opentelemetry/node'; import { InMemorySpanExporter, SimpleSpanProcessor, @@ -45,11 +45,11 @@ describe('Packages', () => { const httpTextFormat = new DummyPropagation(); const logger = new NoopLogger(); - const registry = new NodeTracerRegistry({ + const provider = new NodeTracerProvider({ logger, httpTextFormat, }); - registry.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); + provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); beforeEach(() => { memoryExporter.reset(); }); @@ -58,7 +58,7 @@ describe('Packages', () => { const config: HttpPluginConfig = { applyCustomAttributesOnSpan: customAttributeFunction, }; - plugin.enable(http, registry, registry.logger, config); + plugin.enable(http, provider, provider.logger, config); }); after(() => { diff --git a/packages/opentelemetry-plugin-http/test/functionals/utils.test.ts b/packages/opentelemetry-plugin-http/test/functionals/utils.test.ts index 8278d6dd25..32cca55d05 100644 --- a/packages/opentelemetry-plugin-http/test/functionals/utils.test.ts +++ b/packages/opentelemetry-plugin-http/test/functionals/utils.test.ts @@ -16,7 +16,7 @@ import { NoopLogger } from '@opentelemetry/core'; import { NoopScopeManager } from '@opentelemetry/scope-base'; -import { BasicTracerRegistry, Span } from '@opentelemetry/tracing'; +import { BasicTracerProvider, Span } from '@opentelemetry/tracing'; import { CanonicalCode, SpanKind } from '@opentelemetry/api'; import * as assert from 'assert'; import * as http from 'http'; @@ -255,7 +255,7 @@ describe('Utility', () => { const errorMessage = 'test error'; for (const obj of [undefined, { statusCode: 400 }]) { const span = new Span( - new BasicTracerRegistry({ + new BasicTracerProvider({ scopeManager: new NoopScopeManager(), }).getTracer('default'), 'test', diff --git a/packages/opentelemetry-plugin-http/test/integrations/http-enable.test.ts b/packages/opentelemetry-plugin-http/test/integrations/http-enable.test.ts index 1452012675..6f95768ef3 100644 --- a/packages/opentelemetry-plugin-http/test/integrations/http-enable.test.ts +++ b/packages/opentelemetry-plugin-http/test/integrations/http-enable.test.ts @@ -24,7 +24,7 @@ import { DummyPropagation } from '../utils/DummyPropagation'; import { httpRequest } from '../utils/httpRequest'; import * as url from 'url'; import * as utils from '../utils/utils'; -import { NodeTracerRegistry } from '@opentelemetry/node'; +import { NodeTracerProvider } from '@opentelemetry/node'; import { InMemorySpanExporter, SimpleSpanProcessor, @@ -60,11 +60,11 @@ describe('HttpPlugin Integration tests', () => { const httpTextFormat = new DummyPropagation(); const logger = new NoopLogger(); - const registry = new NodeTracerRegistry({ + const provider = new NodeTracerProvider({ logger, httpTextFormat, }); - registry.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); + provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); beforeEach(() => { memoryExporter.reset(); }); @@ -83,7 +83,7 @@ describe('HttpPlugin Integration tests', () => { try { plugin.disable(); } catch (e) {} - plugin.enable(http, registry, registry.logger, config); + plugin.enable(http, provider, provider.logger, config); }); after(() => { diff --git a/packages/opentelemetry-plugin-https/README.md b/packages/opentelemetry-plugin-https/README.md index 3271ff2ba8..63bf5fa101 100644 --- a/packages/opentelemetry-plugin-https/README.md +++ b/packages/opentelemetry-plugin-https/README.md @@ -22,9 +22,9 @@ OpenTelemetry HTTPS Instrumentation allows the user to automatically collect tra To load a specific plugin (HTTPS in this case), specify it in the Node Tracer's configuration. ```js -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry({ +const provider = new NodeTracerProvider({ plugins: { https: { enabled: true, @@ -38,9 +38,9 @@ const registry = new NodeTracerRegistry({ To load all of the [supported plugins](https://github.com/open-telemetry/opentelemetry-js#plugins), use below approach. Each plugin is only loaded when the module that it patches is loaded; in other words, there is no computational overhead for listing plugins for unused modules. ```js -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry(); +const provider = new NodeTracerProvider(); ``` See [examples/https](https://github.com/open-telemetry/opentelemetry-js/tree/master/examples/https) for a short example. diff --git a/packages/opentelemetry-plugin-https/test/functionals/https-disable.test.ts b/packages/opentelemetry-plugin-https/test/functionals/https-disable.test.ts index 0dbe79d2ef..4f7e92339d 100644 --- a/packages/opentelemetry-plugin-https/test/functionals/https-disable.test.ts +++ b/packages/opentelemetry-plugin-https/test/functionals/https-disable.test.ts @@ -25,7 +25,7 @@ import * as sinon from 'sinon'; import { plugin } from '../../src/https'; import { DummyPropagation } from '../utils/DummyPropagation'; import { httpsRequest } from '../utils/httpsRequest'; -import { NodeTracerRegistry } from '@opentelemetry/node'; +import { NodeTracerProvider } from '@opentelemetry/node'; import * as types from '@opentelemetry/api'; describe('HttpsPlugin', () => { @@ -35,17 +35,17 @@ describe('HttpsPlugin', () => { describe('disable()', () => { const httpTextFormat = new DummyPropagation(); const logger = new NoopLogger(); - const registry = new NodeTracerRegistry({ + const provider = new NodeTracerProvider({ logger, httpTextFormat, }); - // const tracer = registry.getTracer('test-https') + // const tracer = provider.getTracer('test-https') let tracer: types.Tracer; before(() => { nock.cleanAll(); nock.enableNetConnect(); - plugin.enable((https as unknown) as Http, registry, registry.logger); + plugin.enable((https as unknown) as Http, provider, provider.logger); tracer = plugin['_tracer']; // Ensure that https module is patched. assert.strictEqual(https.Server.prototype.emit.__wrapped, true); diff --git a/packages/opentelemetry-plugin-https/test/functionals/https-enable.test.ts b/packages/opentelemetry-plugin-https/test/functionals/https-enable.test.ts index 4d5b261de8..5cd755a0e4 100644 --- a/packages/opentelemetry-plugin-https/test/functionals/https-enable.test.ts +++ b/packages/opentelemetry-plugin-https/test/functionals/https-enable.test.ts @@ -19,7 +19,7 @@ import { SimpleSpanProcessor, } from '@opentelemetry/tracing'; import { NoopLogger } from '@opentelemetry/core'; -import { NodeTracerRegistry } from '@opentelemetry/node'; +import { NodeTracerProvider } from '@opentelemetry/node'; import { Http, HttpPluginConfig, @@ -50,12 +50,12 @@ const pathname = '/test'; const memoryExporter = new InMemorySpanExporter(); const httpTextFormat = new DummyPropagation(); const logger = new NoopLogger(); -const registry = new NodeTracerRegistry({ +const provider = new NodeTracerProvider({ logger, httpTextFormat, }); -const tracer = registry.getTracer('test-https'); -registry.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); +const tracer = provider.getTracer('test-https'); +provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); function doNock( hostname: string, @@ -114,7 +114,7 @@ describe('HttpsPlugin', () => { pluginWithBadOptions = new HttpsPlugin(process.versions.node); pluginWithBadOptions.enable( (https as unknown) as Http, - registry, + provider, tracer.logger, config ); @@ -203,7 +203,7 @@ describe('HttpsPlugin', () => { }; plugin.enable( (https as unknown) as Http, - registry, + provider, tracer.logger, config ); @@ -232,7 +232,7 @@ describe('HttpsPlugin', () => { it(`should not patch if it's not a ${protocol} module`, () => { const httpsNotPatched = new HttpsPlugin(process.versions.node).enable( {} as Http, - registry, + provider, tracer.logger, {} ); diff --git a/packages/opentelemetry-plugin-https/test/functionals/https-package.test.ts b/packages/opentelemetry-plugin-https/test/functionals/https-package.test.ts index 23ec98232c..bf4d0e67c0 100644 --- a/packages/opentelemetry-plugin-https/test/functionals/https-package.test.ts +++ b/packages/opentelemetry-plugin-https/test/functionals/https-package.test.ts @@ -34,7 +34,7 @@ import { SimpleSpanProcessor, } from '@opentelemetry/tracing'; import { Http } from '@opentelemetry/plugin-http'; -import { NodeTracerRegistry } from '@opentelemetry/node'; +import { NodeTracerProvider } from '@opentelemetry/node'; const memoryExporter = new InMemorySpanExporter(); @@ -47,17 +47,17 @@ describe('Packages', () => { const httpTextFormat = new DummyPropagation(); const logger = new NoopLogger(); - const registry = new NodeTracerRegistry({ + const provider = new NodeTracerProvider({ logger, httpTextFormat, }); - registry.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); + provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); beforeEach(() => { memoryExporter.reset(); }); before(() => { - plugin.enable((https as unknown) as Http, registry, registry.logger); + plugin.enable((https as unknown) as Http, provider, provider.logger); }); after(() => { diff --git a/packages/opentelemetry-plugin-https/test/integrations/https-enable.test.ts b/packages/opentelemetry-plugin-https/test/integrations/https-enable.test.ts index be0d7ae4ed..47bb93c03e 100644 --- a/packages/opentelemetry-plugin-https/test/integrations/https-enable.test.ts +++ b/packages/opentelemetry-plugin-https/test/integrations/https-enable.test.ts @@ -30,7 +30,7 @@ import { DummyPropagation } from '../utils/DummyPropagation'; import { httpsRequest } from '../utils/httpsRequest'; import * as url from 'url'; import * as utils from '../utils/utils'; -import { NodeTracerRegistry } from '@opentelemetry/node'; +import { NodeTracerProvider } from '@opentelemetry/node'; import { InMemorySpanExporter, SimpleSpanProcessor, @@ -65,11 +65,11 @@ describe('HttpsPlugin Integration tests', () => { const httpTextFormat = new DummyPropagation(); const logger = new NoopLogger(); - const registry = new NodeTracerRegistry({ + const provider = new NodeTracerProvider({ logger, httpTextFormat, }); - registry.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); + provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); beforeEach(() => { memoryExporter.reset(); }); @@ -90,8 +90,8 @@ describe('HttpsPlugin Integration tests', () => { } catch (e) {} plugin.enable( (https as unknown) as Http, - registry, - registry.logger, + provider, + provider.logger, config ); }); diff --git a/packages/opentelemetry-plugin-ioredis/README.md b/packages/opentelemetry-plugin-ioredis/README.md index 9ccd46aca3..69508b71ae 100644 --- a/packages/opentelemetry-plugin-ioredis/README.md +++ b/packages/opentelemetry-plugin-ioredis/README.md @@ -22,9 +22,9 @@ npm install --save @opentelemetry/plugin-ioredis To load a specific plugin (**ioredis** in this case), specify it in the Node Tracer's configuration ```js -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry({ +const provider = new NodeTracerProvider({ plugins: { ioredis: { enabled: true, @@ -37,9 +37,9 @@ const registry = new NodeTracerRegistry({ To load all of the [supported plugins](https://github.com/open-telemetry/opentelemetry-js#plugins), use below approach. Each plugin is only loaded when the module that it patches is loaded; in other words, there is no computational overhead for listing plugins for unused modules. ```javascript -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry(); +const provider = new NodeTracerProvider(); ``` ## Useful links diff --git a/packages/opentelemetry-plugin-ioredis/test/ioredis.test.ts b/packages/opentelemetry-plugin-ioredis/test/ioredis.test.ts index 1aad4e2246..5dca23af19 100644 --- a/packages/opentelemetry-plugin-ioredis/test/ioredis.test.ts +++ b/packages/opentelemetry-plugin-ioredis/test/ioredis.test.ts @@ -19,7 +19,7 @@ import { InMemorySpanExporter, SimpleSpanProcessor, } from '@opentelemetry/tracing'; -import { NodeTracerRegistry } from '@opentelemetry/node'; +import { NodeTracerProvider } from '@opentelemetry/node'; import { plugin, IORedisPlugin } from '../src'; import * as ioredisTypes from 'ioredis'; import { NoopLogger } from '@opentelemetry/core'; @@ -49,7 +49,7 @@ const okStatus: Status = { }; describe('ioredis', () => { - const registry = new NodeTracerRegistry(); + const provider = new NodeTracerProvider(); let ioredis: typeof ioredisTypes; const shouldTestLocal = process.env.RUN_REDIS_TESTS_LOCAL; const shouldTest = process.env.RUN_REDIS_TESTS || shouldTestLocal; @@ -68,8 +68,8 @@ describe('ioredis', () => { } ioredis = require('ioredis'); - registry.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); - plugin.enable(ioredis, registry, new NoopLogger()); + provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); + plugin.enable(ioredis, provider, new NoopLogger()); }); after(() => { @@ -84,7 +84,7 @@ describe('ioredis', () => { describe('#createClient()', () => { it('should propagate the current span to event handlers', done => { - const span = registry.getTracer('ioredis-test').startSpan('test span'); + const span = provider.getTracer('ioredis-test').startSpan('test span'); let client: ioredisTypes.Redis; const attributes = { ...DEFAULT_ATTRIBUTES, @@ -94,7 +94,7 @@ describe('ioredis', () => { const endedSpans = memoryExporter.getFinishedSpans(); assert.strictEqual( - registry.getTracer('ioredis-test').getCurrentSpan(), + provider.getTracer('ioredis-test').getCurrentSpan(), span ); assert.strictEqual(endedSpans.length, 2); @@ -122,7 +122,7 @@ describe('ioredis', () => { client.quit(done); }; - registry.getTracer('ioredis-test').withSpan(span, () => { + provider.getTracer('ioredis-test').withSpan(span, () => { client = new ioredis(URL); client.on('ready', readyHandler); client.on('error', errorHandler); @@ -186,10 +186,10 @@ describe('ioredis', () => { ' ' )}`, }; - const span = registry + const span = provider .getTracer('ioredis-test') .startSpan('test span'); - registry.getTracer('ioredis-test').withSpan(span, () => { + provider.getTracer('ioredis-test').withSpan(span, () => { command.method((err, _result) => { assert.ifError(err); assert.strictEqual(memoryExporter.getFinishedSpans().length, 1); @@ -216,8 +216,8 @@ describe('ioredis', () => { ...DEFAULT_ATTRIBUTES, [AttributeNames.DB_STATEMENT]: 'hset hash random random', }; - const span = registry.getTracer('ioredis-test').startSpan('test span'); - await registry.getTracer('ioredis-test').withSpan(span, async () => { + const span = provider.getTracer('ioredis-test').startSpan('test span'); + await provider.getTracer('ioredis-test').withSpan(span, async () => { try { await client.hset('hash', 'random', 'random'); assert.strictEqual(memoryExporter.getFinishedSpans().length, 1); @@ -244,8 +244,8 @@ describe('ioredis', () => { ...DEFAULT_ATTRIBUTES, [AttributeNames.DB_STATEMENT]: 'scan 0', }; - const span = registry.getTracer('ioredis-test').startSpan('test span'); - registry.getTracer('ioredis-test').withSpan(span, () => { + const span = provider.getTracer('ioredis-test').startSpan('test span'); + provider.getTracer('ioredis-test').withSpan(span, () => { const stream = client.scanStream(); stream .on('data', resultKeys => { @@ -280,8 +280,8 @@ describe('ioredis', () => { }); it('should create a child span for pubsub', async () => { - const span = registry.getTracer('ioredis-test').startSpan('test span'); - await registry.getTracer('ioredis-test').withSpan(span, async () => { + const span = provider.getTracer('ioredis-test').startSpan('test span'); + await provider.getTracer('ioredis-test').withSpan(span, async () => { try { const pub = new ioredis(URL); const sub = new ioredis(URL); @@ -339,8 +339,8 @@ describe('ioredis', () => { [AttributeNames.DB_STATEMENT]: 'eval return {KEYS[1],ARGV[1]} 1 test', }; - const span = registry.getTracer('ioredis-test').startSpan('test span'); - registry.getTracer('ioredis-test').withSpan(span, () => { + const span = provider.getTracer('ioredis-test').startSpan('test span'); + provider.getTracer('ioredis-test').withSpan(span, () => { // This will define a command echo: client.defineCommand('echo', { numberOfKeys: 1, @@ -377,8 +377,8 @@ describe('ioredis', () => { [AttributeNames.DB_STATEMENT]: 'multi', }; - const span = registry.getTracer('ioredis-test').startSpan('test span'); - registry.getTracer('ioredis-test').withSpan(span, () => { + const span = provider.getTracer('ioredis-test').startSpan('test span'); + provider.getTracer('ioredis-test').withSpan(span, () => { client .multi() .set('foo', 'bar') @@ -413,8 +413,8 @@ describe('ioredis', () => { [AttributeNames.DB_STATEMENT]: 'set foo bar', }; - const span = registry.getTracer('ioredis-test').startSpan('test span'); - registry.getTracer('ioredis-test').withSpan(span, () => { + const span = provider.getTracer('ioredis-test').startSpan('test span'); + provider.getTracer('ioredis-test').withSpan(span, () => { const pipeline = client.pipeline(); pipeline.set('foo', 'bar'); pipeline.del('cc'); @@ -446,8 +446,8 @@ describe('ioredis', () => { ...DEFAULT_ATTRIBUTES, [AttributeNames.DB_STATEMENT]: 'get test', }; - const span = registry.getTracer('ioredis-test').startSpan('test span'); - await registry.getTracer('ioredis-test').withSpan(span, async () => { + const span = provider.getTracer('ioredis-test').startSpan('test span'); + await provider.getTracer('ioredis-test').withSpan(span, async () => { try { const value = await client.get('test'); assert.strictEqual(value, 'data'); @@ -475,8 +475,8 @@ describe('ioredis', () => { ...DEFAULT_ATTRIBUTES, [AttributeNames.DB_STATEMENT]: 'del test', }; - const span = registry.getTracer('ioredis-test').startSpan('test span'); - await registry.getTracer('ioredis-test').withSpan(span, async () => { + const span = provider.getTracer('ioredis-test').startSpan('test span'); + await provider.getTracer('ioredis-test').withSpan(span, async () => { try { const result = await client.del('test'); assert.strictEqual(result, 1); @@ -507,10 +507,10 @@ describe('ioredis', () => { IOREDIS_CALLBACK_OPERATIONS.forEach(operation => { it(`should not create a child span for cb style ${operation.description}`, done => { - const span = registry + const span = provider .getTracer('ioredis-test') .startSpan('test span'); - registry.getTracer('ioredis-test').withSpan(span, () => { + provider.getTracer('ioredis-test').withSpan(span, () => { operation.method((err, _) => { assert.ifError(err); assert.strictEqual(memoryExporter.getFinishedSpans().length, 0); @@ -525,8 +525,8 @@ describe('ioredis', () => { }); it('should not create a child span for hset promise upon error', async () => { - const span = registry.getTracer('ioredis-test').startSpan('test span'); - await registry.getTracer('ioredis-test').withSpan(span, async () => { + const span = provider.getTracer('ioredis-test').startSpan('test span'); + await provider.getTracer('ioredis-test').withSpan(span, async () => { try { await client.hset('hash', 'random', 'random'); assert.strictEqual(memoryExporter.getFinishedSpans().length, 0); diff --git a/packages/opentelemetry-plugin-mongodb/README.md b/packages/opentelemetry-plugin-mongodb/README.md index ecccac7fc7..d10ba0c68a 100644 --- a/packages/opentelemetry-plugin-mongodb/README.md +++ b/packages/opentelemetry-plugin-mongodb/README.md @@ -23,9 +23,9 @@ OpenTelemetry Mongodb Instrumentation allows the user to automatically collect t To load a specific plugin (mongodb in this case), specify it in the Node Tracer's configuration. ```js -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry({ +const provider = new NodeTracerProvider({ plugins: { mongodb: { enabled: true, @@ -38,9 +38,9 @@ const registry = new NodeTracerRegistry({ To load all of the [supported plugins](https://github.com/open-telemetry/opentelemetry-js#plugins), use below approach. Each plugin is only loaded when the module that it patches is loaded; in other words, there is no computational overhead for listing plugins for unused modules. ```js -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry(); +const provider = new NodeTracerProvider(); ``` See [examples/mongodb](https://github.com/open-telemetry/opentelemetry-js/tree/master/examples/mongodb) for a short example. diff --git a/packages/opentelemetry-plugin-mongodb/test/mongodb.test.ts b/packages/opentelemetry-plugin-mongodb/test/mongodb.test.ts index 26c90213eb..8ad83efe58 100644 --- a/packages/opentelemetry-plugin-mongodb/test/mongodb.test.ts +++ b/packages/opentelemetry-plugin-mongodb/test/mongodb.test.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { NodeTracerRegistry } from '@opentelemetry/node'; +import { NodeTracerProvider } from '@opentelemetry/node'; import * as assert from 'assert'; import * as mongodb from 'mongodb'; import { plugin } from '../src'; @@ -105,13 +105,13 @@ describe('MongoDBPlugin', () => { let client: mongodb.MongoClient; let collection: mongodb.Collection; const logger = new NoopLogger(); - const registry = new NodeTracerRegistry(); + const provider = new NodeTracerProvider(); const memoryExporter = new InMemorySpanExporter(); const spanProcessor = new SimpleSpanProcessor(memoryExporter); - registry.addSpanProcessor(spanProcessor); + provider.addSpanProcessor(spanProcessor); before(done => { - plugin.enable(mongodb, registry, logger); + plugin.enable(mongodb, provider, logger); accessCollection(URL, DB_NAME, COLLECTION_NAME) .then(result => { client = result.client; @@ -157,8 +157,8 @@ describe('MongoDBPlugin', () => { it('should create a child span for insert', done => { const insertData = [{ a: 1 }, { a: 2 }, { a: 3 }]; - const span = registry.getTracer('default').startSpan(`insertRootSpan`); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan(`insertRootSpan`); + provider.getTracer('default').withSpan(span, () => { collection.insertMany(insertData, (err, result) => { span.end(); assert.ifError(err); @@ -173,8 +173,8 @@ describe('MongoDBPlugin', () => { }); it('should create a child span for update', done => { - const span = registry.getTracer('default').startSpan('updateRootSpan'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('updateRootSpan'); + provider.getTracer('default').withSpan(span, () => { collection.updateOne({ a: 2 }, { $set: { b: 1 } }, (err, result) => { span.end(); assert.ifError(err); @@ -189,8 +189,8 @@ describe('MongoDBPlugin', () => { }); it('should create a child span for remove', done => { - const span = registry.getTracer('default').startSpan('removeRootSpan'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('removeRootSpan'); + provider.getTracer('default').withSpan(span, () => { collection.deleteOne({ a: 3 }, (err, result) => { span.end(); assert.ifError(err); @@ -208,8 +208,8 @@ describe('MongoDBPlugin', () => { /** Should intercept cursor */ describe('Instrumenting cursor operations', () => { it('should create a child span for find', done => { - const span = registry.getTracer('default').startSpan('findRootSpan'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('findRootSpan'); + provider.getTracer('default').withSpan(span, () => { collection.find({}).toArray((err, result) => { span.end(); assert.ifError(err); @@ -227,8 +227,8 @@ describe('MongoDBPlugin', () => { /** Should intercept command */ describe('Instrumenting command operations', () => { it('should create a child span for create index', done => { - const span = registry.getTracer('default').startSpan('indexRootSpan'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('indexRootSpan'); + provider.getTracer('default').withSpan(span, () => { collection.createIndex({ a: 1 }, (err, result) => { span.end(); assert.ifError(err); @@ -254,7 +254,7 @@ describe('MongoDBPlugin', () => { it('should not create a child span for query', done => { const insertData = [{ a: 1 }, { a: 2 }, { a: 3 }]; - const span = registry.getTracer('default').startSpan('insertRootSpan'); + const span = provider.getTracer('default').startSpan('insertRootSpan'); collection.insertMany(insertData, (err, result) => { span.end(); assert.ifError(err); @@ -264,7 +264,7 @@ describe('MongoDBPlugin', () => { }); it('should not create a child span for cursor', done => { - const span = registry.getTracer('default').startSpan('findRootSpan'); + const span = provider.getTracer('default').startSpan('findRootSpan'); collection.find({}).toArray((err, result) => { span.end(); assert.ifError(err); @@ -274,7 +274,7 @@ describe('MongoDBPlugin', () => { }); it('should not create a child span for command', done => { - const span = registry.getTracer('default').startSpan('indexRootSpan'); + const span = provider.getTracer('default').startSpan('indexRootSpan'); collection.createIndex({ a: 1 }, (err, result) => { span.end(); assert.ifError(err); diff --git a/packages/opentelemetry-plugin-mysql/README.md b/packages/opentelemetry-plugin-mysql/README.md index 5aba3e68a3..915c549c15 100644 --- a/packages/opentelemetry-plugin-mysql/README.md +++ b/packages/opentelemetry-plugin-mysql/README.md @@ -24,9 +24,9 @@ OpenTelemetry MySQL Instrumentation allows the user to automatically collect tra To load a specific plugin (**MySQL** in this case), specify it in the Node Tracer's configuration ```js -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry({ +const provider = new NodeTracerProvider({ plugins: { mysql: { enabled: true, @@ -39,9 +39,9 @@ const registry = new NodeTracerRegistry({ To load all of the [supported plugins](https://github.com/open-telemetry/opentelemetry-js#plugins), use below approach. Each plugin is only loaded when the module that it patches is loaded; in other words, there is no computational overhead for listing plugins for unused modules. ```js -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry(); +const provider = new NodeTracerProvider(); ``` See [examples/mysql](https://github.com/open-telemetry/opentelemetry-js/tree/master/examples/mysql) for a short example. diff --git a/packages/opentelemetry-plugin-mysql/test/mysql.test.ts b/packages/opentelemetry-plugin-mysql/test/mysql.test.ts index 394f65a602..42683793f5 100644 --- a/packages/opentelemetry-plugin-mysql/test/mysql.test.ts +++ b/packages/opentelemetry-plugin-mysql/test/mysql.test.ts @@ -15,7 +15,7 @@ */ import { NoopLogger } from '@opentelemetry/core'; -import { NodeTracerRegistry } from '@opentelemetry/node'; +import { NodeTracerProvider } from '@opentelemetry/node'; import { InMemorySpanExporter, SimpleSpanProcessor, @@ -38,7 +38,7 @@ describe('mysql@2.x', () => { let connection: mysql.Connection; let pool: mysql.Pool; let poolCluster: mysql.PoolCluster; - const registry = new NodeTracerRegistry({ plugins: {} }); + const provider = new NodeTracerProvider({ plugins: {} }); const logger = new NoopLogger(); const testMysql = process.env.RUN_MYSQL_TESTS; // For CI: assumes local mysql db is already available const testMysqlLocally = process.env.RUN_MYSQL_TESTS_LOCAL; // For local: spins up local mysql db via docker @@ -52,7 +52,7 @@ describe('mysql@2.x', () => { this.test!.parent!.pending = true; this.skip(); } - registry.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); + provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); if (testMysqlLocally) { testUtils.startDocker('mysql'); // wait 15 seconds for docker container to start @@ -71,7 +71,7 @@ describe('mysql@2.x', () => { }); beforeEach(function() { - plugin.enable(mysql, registry, logger); + plugin.enable(mysql, provider, logger); connection = mysql.createConnection({ port, user, @@ -118,8 +118,8 @@ describe('mysql@2.x', () => { describe('#Connection', () => { it('should intercept connection.query(text: string)', done => { - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT 1+1 as solution'; const query = connection.query(statement); let rows = 0; @@ -140,8 +140,8 @@ describe('mysql@2.x', () => { }); it('should intercept connection.query(text: string, callback)', done => { - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT 1+1 as solution'; connection.query(statement, (err, res) => { assert.ifError(err); @@ -156,8 +156,8 @@ describe('mysql@2.x', () => { }); it('should intercept connection.query(text: options, callback)', done => { - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT 1+? as solution'; connection.query({ sql: statement, values: [1] }, (err, res) => { assert.ifError(err); @@ -172,8 +172,8 @@ describe('mysql@2.x', () => { }); it('should intercept connection.query(text: options, values: [], callback)', done => { - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT 1+? as solution'; // @ts-ignore this is documented https://github.com/mysqljs/mysql#performing-queries // but does not match the typings @@ -190,8 +190,8 @@ describe('mysql@2.x', () => { }); it('should intercept connection.query(text: string, values: [], callback)', done => { - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT ? as solution'; connection.query(statement, [1], (err, res) => { assert.ifError(err); @@ -206,8 +206,8 @@ describe('mysql@2.x', () => { }); it('should intercept connection.query(text: string, value: any, callback)', done => { - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT ? as solution'; connection.query(statement, 1, (err, res) => { assert.ifError(err); @@ -222,8 +222,8 @@ describe('mysql@2.x', () => { }); it('should attach error messages to spans', done => { - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT ? as solution'; connection.query(statement, (err, res) => { assert.ok(err); @@ -238,8 +238,8 @@ describe('mysql@2.x', () => { describe('#Pool', () => { it('should intercept pool.query(text: string)', done => { - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT 1+1 as solution'; const query = pool.query(statement); let rows = 0; @@ -260,8 +260,8 @@ describe('mysql@2.x', () => { }); it('should intercept pool.getConnection().query(text: string)', done => { - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT 1+1 as solution'; pool.getConnection((err, conn) => { const query = conn.query(statement); @@ -284,8 +284,8 @@ describe('mysql@2.x', () => { }); it('should intercept pool.query(text: string, callback)', done => { - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT 1+1 as solution'; pool.query(statement, (err, res) => { assert.ifError(err); @@ -300,8 +300,8 @@ describe('mysql@2.x', () => { }); it('should intercept pool.getConnection().query(text: string, callback)', done => { - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT 1+1 as solution'; pool.getConnection((err, conn) => { conn.query(statement, (err, res) => { @@ -318,8 +318,8 @@ describe('mysql@2.x', () => { }); it('should intercept pool.query(text: options, callback)', done => { - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT 1+? as solution'; pool.query({ sql: statement, values: [1] }, (err, res) => { assert.ifError(err); @@ -334,8 +334,8 @@ describe('mysql@2.x', () => { }); it('should intercept pool.query(text: options, values: [], callback)', done => { - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT 1+? as solution'; // @ts-ignore this is documented https://github.com/mysqljs/mysql#performing-queries // but does not match the typings @@ -352,8 +352,8 @@ describe('mysql@2.x', () => { }); it('should intercept pool.query(text: string, values: [], callback)', done => { - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT ? as solution'; pool.query(statement, [1], (err, res) => { assert.ifError(err); @@ -368,8 +368,8 @@ describe('mysql@2.x', () => { }); it('should intercept pool.query(text: string, value: any, callback)', done => { - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT ? as solution'; pool.query(statement, 1, (err, res) => { assert.ifError(err); @@ -384,8 +384,8 @@ describe('mysql@2.x', () => { }); it('should attach error messages to spans', done => { - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT ? as solution'; pool.query(statement, (err, res) => { assert.ok(err); @@ -402,8 +402,8 @@ describe('mysql@2.x', () => { it('should intercept poolClusterConnection.query(text: string)', done => { poolCluster.getConnection((err, poolClusterConnection) => { assert.ifError(err); - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT 1+1 as solution'; const query = poolClusterConnection.query(statement); let rows = 0; @@ -427,8 +427,8 @@ describe('mysql@2.x', () => { it('should intercept poolClusterConnection.query(text: string, callback)', done => { poolCluster.getConnection((err, poolClusterConnection) => { assert.ifError(err); - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT 1+1 as solution'; poolClusterConnection.query(statement, (err, res) => { assert.ifError(err); @@ -446,8 +446,8 @@ describe('mysql@2.x', () => { it('should intercept poolClusterConnection.query(text: options, callback)', done => { poolCluster.getConnection((err, poolClusterConnection) => { assert.ifError(err); - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT 1+? as solution'; poolClusterConnection.query( { sql: statement, values: [1] }, @@ -468,8 +468,8 @@ describe('mysql@2.x', () => { it('should intercept poolClusterConnection.query(text: options, values: [], callback)', done => { poolCluster.getConnection((err, poolClusterConnection) => { assert.ifError(err); - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT 1+? as solution'; // @ts-ignore this is documented https://github.com/mysqljs/mysql#performing-queries // but does not match the typings @@ -489,8 +489,8 @@ describe('mysql@2.x', () => { it('should intercept poolClusterConnection.query(text: string, values: [], callback)', done => { poolCluster.getConnection((err, poolClusterConnection) => { assert.ifError(err); - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT ? as solution'; poolClusterConnection.query(statement, [1], (err, res) => { assert.ifError(err); @@ -508,8 +508,8 @@ describe('mysql@2.x', () => { it('should intercept poolClusterConnection.query(text: string, value: any, callback)', done => { poolCluster.getConnection((err, poolClusterConnection) => { assert.ifError(err); - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT ? as solution'; poolClusterConnection.query(statement, 1, (err, res) => { assert.ifError(err); @@ -527,8 +527,8 @@ describe('mysql@2.x', () => { it('should attach error messages to spans', done => { poolCluster.getConnection((err, poolClusterConnection) => { assert.ifError(err); - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT ? as solution'; poolClusterConnection.query(statement, (err, res) => { assert.ok(err); @@ -544,8 +544,8 @@ describe('mysql@2.x', () => { it('should get connection by name', done => { poolCluster.getConnection('name', (err, poolClusterConnection) => { assert.ifError(err); - const span = registry.getTracer('default').startSpan('test span'); - registry.getTracer('default').withSpan(span, () => { + const span = provider.getTracer('default').startSpan('test span'); + provider.getTracer('default').withSpan(span, () => { const statement = 'SELECT 1 as solution'; poolClusterConnection.query(statement, (err, res) => { assert.ifError(err); diff --git a/packages/opentelemetry-plugin-postgres/opentelemetry-plugin-pg-pool/README.md b/packages/opentelemetry-plugin-postgres/opentelemetry-plugin-pg-pool/README.md index d831db00b0..7f17dbfc82 100644 --- a/packages/opentelemetry-plugin-postgres/opentelemetry-plugin-pg-pool/README.md +++ b/packages/opentelemetry-plugin-postgres/opentelemetry-plugin-pg-pool/README.md @@ -21,17 +21,17 @@ npm install --save @opentelemetry/plugin-pg-pool To load all of the [default supported plugins](https://github.com/open-telemetry/opentelemetry-js#plugins), use the below approach. Each plugin is only loaded when the module that it patches is loaded; in other words, there is no computational overhead for listing plugins for unused modules. ```js -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry(); // All default plugins will be used +const provider = new NodeTracerProvider(); // All default plugins will be used ``` If instead you would just want to load a specific plugin (**pg** and **pg-pool** in this case), specify it in the `NodeTracer` configuration. You'll need to install both plugins for full functionality. ```js -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry({ +const provider = new NodeTracerProvider({ plugins: { pg: { enabled: true, diff --git a/packages/opentelemetry-plugin-postgres/opentelemetry-plugin-pg-pool/test/pg-pool.test.ts b/packages/opentelemetry-plugin-postgres/opentelemetry-plugin-pg-pool/test/pg-pool.test.ts index 8fa8fb9396..7da3cfd58f 100644 --- a/packages/opentelemetry-plugin-postgres/opentelemetry-plugin-pg-pool/test/pg-pool.test.ts +++ b/packages/opentelemetry-plugin-postgres/opentelemetry-plugin-pg-pool/test/pg-pool.test.ts @@ -15,7 +15,7 @@ */ import { NoopLogger } from '@opentelemetry/core'; -import { NodeTracerRegistry } from '@opentelemetry/node'; +import { NodeTracerProvider } from '@opentelemetry/node'; import { InMemorySpanExporter, SimpleSpanProcessor, @@ -92,7 +92,7 @@ const runCallbackTest = ( describe('pg-pool@2.x', () => { let pool: pgPool; - const registry = new NodeTracerRegistry(); + const provider = new NodeTracerProvider(); const logger = new NoopLogger(); const testPostgres = process.env.RUN_POSTGRES_TESTS; // For CI: assumes local postgres db is already available const testPostgresLocally = process.env.RUN_POSTGRES_TESTS_LOCAL; // For local: spins up local postgres db via docker @@ -106,7 +106,7 @@ describe('pg-pool@2.x', () => { this.skip(); } pool = new pgPool(CONFIG); - registry.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); + provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); if (testPostgresLocally) { testUtils.startDocker('postgres'); } @@ -123,8 +123,8 @@ describe('pg-pool@2.x', () => { }); beforeEach(function() { - plugin.enable(pgPool, registry, logger); - pgPlugin.enable(pg, registry, logger); + plugin.enable(pgPool, provider, logger); + pgPlugin.enable(pg, provider, logger); }); afterEach(() => { @@ -152,8 +152,8 @@ describe('pg-pool@2.x', () => { [AttributeNames.DB_STATEMENT]: 'SELECT NOW()', }; const events: TimedEvent[] = []; - const span = registry.getTracer('test-pg-pool').startSpan('test span'); - await registry.getTracer('test-pg-pool').withSpan(span, async () => { + const span = provider.getTracer('test-pg-pool').startSpan('test span'); + await provider.getTracer('test-pg-pool').withSpan(span, async () => { const client = await pool.connect(); runCallbackTest(span, pgPoolattributes, events, okStatus, 1, 0); assert.ok(client, 'pool.connect() returns a promise'); @@ -178,10 +178,10 @@ describe('pg-pool@2.x', () => { [AttributeNames.DB_STATEMENT]: 'SELECT NOW()', }; const events: TimedEvent[] = []; - const parentSpan = registry + const parentSpan = provider .getTracer('test-pg-pool') .startSpan('test span'); - registry.getTracer('test-pg-pool').withSpan(parentSpan, () => { + provider.getTracer('test-pg-pool').withSpan(parentSpan, () => { const resNoPromise = pool.connect((err, client, release) => { if (err) { return done(err); @@ -220,8 +220,8 @@ describe('pg-pool@2.x', () => { [AttributeNames.DB_STATEMENT]: 'SELECT NOW()', }; const events: TimedEvent[] = []; - const span = registry.getTracer('test-pg-pool').startSpan('test span'); - await registry.getTracer('test-pg-pool').withSpan(span, async () => { + const span = provider.getTracer('test-pg-pool').startSpan('test span'); + await provider.getTracer('test-pg-pool').withSpan(span, async () => { try { const result = await pool.query('SELECT NOW()'); runCallbackTest(span, pgPoolattributes, events, okStatus, 2, 0); @@ -243,10 +243,10 @@ describe('pg-pool@2.x', () => { [AttributeNames.DB_STATEMENT]: 'SELECT NOW()', }; const events: TimedEvent[] = []; - const parentSpan = registry + const parentSpan = provider .getTracer('test-pg-pool') .startSpan('test span'); - registry.getTracer('test-pg-pool').withSpan(parentSpan, () => { + provider.getTracer('test-pg-pool').withSpan(parentSpan, () => { const resNoPromise = pool.query('SELECT NOW()', (err, result) => { if (err) { return done(err); diff --git a/packages/opentelemetry-plugin-postgres/opentelemetry-plugin-pg/README.md b/packages/opentelemetry-plugin-postgres/opentelemetry-plugin-pg/README.md index 88cc40c2e7..7c8118be63 100644 --- a/packages/opentelemetry-plugin-postgres/opentelemetry-plugin-pg/README.md +++ b/packages/opentelemetry-plugin-postgres/opentelemetry-plugin-pg/README.md @@ -21,17 +21,17 @@ npm install --save @opentelemetry/plugin-pg-pool To load all of the [default supported plugins](https://github.com/open-telemetry/opentelemetry-js#plugins), use the below approach. Each plugin is only loaded when the module that it patches is loaded; in other words, there is no computational overhead for listing plugins for unused modules. ```js -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry(); // All default plugins will be used +const provider = new NodeTracerProvider(); // All default plugins will be used ``` If instead you would just want to load a specific plugin (**pg** in this case), specify it in the `NodeTracer` configuration. ```js -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry({ +const provider = new NodeTracerProvider({ plugins: { pg: { enabled: true, @@ -45,9 +45,9 @@ const registry = new NodeTracerRegistry({ If you are using any of the [`pg.Pool`](https://node-postgres.com/api/pool) APIs, you will also need to include the [`pg-pool` plugin](../opentelemetry-plugin-pg-pool). ```js -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry({ +const provider = new NodeTracerProvider({ plugins: { pg: { enabled: true, diff --git a/packages/opentelemetry-plugin-postgres/opentelemetry-plugin-pg/test/pg.test.ts b/packages/opentelemetry-plugin-postgres/opentelemetry-plugin-pg/test/pg.test.ts index a4ad66d5fa..d4ff201de2 100644 --- a/packages/opentelemetry-plugin-postgres/opentelemetry-plugin-pg/test/pg.test.ts +++ b/packages/opentelemetry-plugin-postgres/opentelemetry-plugin-pg/test/pg.test.ts @@ -15,7 +15,7 @@ */ import { NoopLogger } from '@opentelemetry/core'; -import { NodeTracerRegistry } from '@opentelemetry/node'; +import { NodeTracerProvider } from '@opentelemetry/node'; import { InMemorySpanExporter, SimpleSpanProcessor, @@ -81,8 +81,8 @@ const runCallbackTest = ( describe('pg@7.x', () => { let client: pg.Client; - const registry = new NodeTracerRegistry(); - const tracer = registry.getTracer('external'); + const provider = new NodeTracerProvider(); + const tracer = provider.getTracer('external'); const logger = new NoopLogger(); const testPostgres = process.env.RUN_POSTGRES_TESTS; // For CI: assumes local postgres db is already available const testPostgresLocally = process.env.RUN_POSTGRES_TESTS_LOCAL; // For local: spins up local postgres db via docker @@ -95,7 +95,7 @@ describe('pg@7.x', () => { this.test!.parent!.pending = true; this.skip(); } - registry.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); + provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); if (testPostgresLocally) { testUtils.startDocker('postgres'); } @@ -116,7 +116,7 @@ describe('pg@7.x', () => { }); beforeEach(function() { - plugin.enable(pg, registry, logger); + plugin.enable(pg, provider, logger); }); afterEach(() => { diff --git a/packages/opentelemetry-plugin-redis/README.md b/packages/opentelemetry-plugin-redis/README.md index bfb2d1e478..c40bad47f6 100644 --- a/packages/opentelemetry-plugin-redis/README.md +++ b/packages/opentelemetry-plugin-redis/README.md @@ -24,9 +24,9 @@ OpenTelemetry Redis Instrumentation allows the user to automatically collect tra To load a specific plugin (**redis** in this case), specify it in the Node Tracer's configuration ```js -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry({ +const provider = new NodeTracerProvider({ plugins: { redis: { enabled: true, @@ -39,9 +39,9 @@ const registry = new NodeTracerRegistry({ To load all of the [supported plugins](https://github.com/open-telemetry/opentelemetry-js#plugins), use below approach. Each plugin is only loaded when the module that it patches is loaded; in other words, there is no computational overhead for listing plugins for unused modules. ```javascript -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); -const registry = new NodeTracerRegistry(); +const provider = new NodeTracerProvider(); ``` See [examples/redis](https://github.com/open-telemetry/opentelemetry-js/tree/master/examples/redis) for a short example. diff --git a/packages/opentelemetry-plugin-redis/test/redis.test.ts b/packages/opentelemetry-plugin-redis/test/redis.test.ts index 297fe99a58..e991c733a0 100644 --- a/packages/opentelemetry-plugin-redis/test/redis.test.ts +++ b/packages/opentelemetry-plugin-redis/test/redis.test.ts @@ -19,7 +19,7 @@ import { InMemorySpanExporter, SimpleSpanProcessor, } from '@opentelemetry/tracing'; -import { NodeTracerRegistry } from '@opentelemetry/node'; +import { NodeTracerProvider } from '@opentelemetry/node'; import { plugin, RedisPlugin } from '../src'; import * as redisTypes from 'redis'; import { NoopLogger } from '@opentelemetry/core'; @@ -48,8 +48,8 @@ const okStatus: Status = { }; describe('redis@2.x', () => { - const registry = new NodeTracerRegistry(); - const tracer = registry.getTracer('external'); + const provider = new NodeTracerProvider(); + const tracer = provider.getTracer('external'); let redis: typeof redisTypes; const shouldTestLocal = process.env.RUN_REDIS_TESTS_LOCAL; const shouldTest = process.env.RUN_REDIS_TESTS || shouldTestLocal; @@ -68,8 +68,8 @@ describe('redis@2.x', () => { } redis = require('redis'); - registry.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); - plugin.enable(redis, registry, new NoopLogger()); + provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); + plugin.enable(redis, provider, new NoopLogger()); }); after(() => { diff --git a/packages/opentelemetry-plugin-xml-http-request/test/xhr.test.ts b/packages/opentelemetry-plugin-xml-http-request/test/xhr.test.ts index 3fd7d5eb3c..97a28908c0 100644 --- a/packages/opentelemetry-plugin-xml-http-request/test/xhr.test.ts +++ b/packages/opentelemetry-plugin-xml-http-request/test/xhr.test.ts @@ -29,7 +29,7 @@ import * as tracing from '@opentelemetry/tracing'; import * as types from '@opentelemetry/api'; import { PerformanceTimingNames as PTN, - WebTracerRegistry, + WebTracerProvider, } from '@opentelemetry/web'; import { AttributeNames } from '../src/enums/AttributeNames'; import { EventNames } from '../src/enums/EventNames'; @@ -101,7 +101,7 @@ describe('xhr', () => { describe('when request is successful', () => { let webTracerWithZone: types.Tracer; - let webTracerRegistryWithZone: WebTracerRegistry; + let webTracerProviderWithZone: WebTracerProvider; let dummySpanExporter: DummySpanExporter; let exportSpy: any; let rootSpan: types.Span; @@ -140,7 +140,7 @@ describe('xhr', () => { spyEntries = sandbox.stub(performance, 'getEntriesByType'); spyEntries.withArgs('resource').returns(resources); - webTracerRegistryWithZone = new WebTracerRegistry({ + webTracerProviderWithZone = new WebTracerProvider({ logLevel: LogLevel.ERROR, httpTextFormat: new B3Format(), scopeManager: new ZoneScopeManager(), @@ -150,10 +150,10 @@ describe('xhr', () => { }), ], }); - webTracerWithZone = webTracerRegistryWithZone.getTracer('xhr-test'); + webTracerWithZone = webTracerProviderWithZone.getTracer('xhr-test'); dummySpanExporter = new DummySpanExporter(); exportSpy = sinon.stub(dummySpanExporter, 'export'); - webTracerRegistryWithZone.addSpanProcessor( + webTracerProviderWithZone.addSpanProcessor( new tracing.SimpleSpanProcessor(dummySpanExporter) ); @@ -408,7 +408,7 @@ describe('xhr', () => { }); describe('when request is NOT successful', () => { - let webTracerWithZoneRegistry: WebTracerRegistry; + let webTracerWithZoneProvider: WebTracerProvider; let webTracerWithZone: types.Tracer; let dummySpanExporter: DummySpanExporter; let exportSpy: any; @@ -440,17 +440,17 @@ describe('xhr', () => { spyEntries = sandbox.stub(performance, 'getEntriesByType'); spyEntries.withArgs('resource').returns(resources); - webTracerWithZoneRegistry = new WebTracerRegistry({ + webTracerWithZoneProvider = new WebTracerProvider({ logLevel: LogLevel.ERROR, scopeManager: new ZoneScopeManager(), plugins: [new XMLHttpRequestPlugin()], }); dummySpanExporter = new DummySpanExporter(); exportSpy = sinon.stub(dummySpanExporter, 'export'); - webTracerWithZoneRegistry.addSpanProcessor( + webTracerWithZoneProvider.addSpanProcessor( new tracing.SimpleSpanProcessor(dummySpanExporter) ); - webTracerWithZone = webTracerWithZoneRegistry.getTracer('xhr-test'); + webTracerWithZone = webTracerWithZoneProvider.getTracer('xhr-test'); rootSpan = webTracerWithZone.startSpan('root'); diff --git a/packages/opentelemetry-propagator-jaeger/README.md b/packages/opentelemetry-propagator-jaeger/README.md index 5c6771c3a3..90203cd9d1 100644 --- a/packages/opentelemetry-propagator-jaeger/README.md +++ b/packages/opentelemetry-propagator-jaeger/README.md @@ -25,10 +25,10 @@ Format: Example of usage: ```javascript -const { NodeTracerRegistry } = require('@opentelemetry/node'); +const { NodeTracerProvider } = require('@opentelemetry/node'); const { JaegerHttpTraceFormat } = require('@opentelemetry/propagator-jaeger'); -const registry = new NodeTracerRegistry({ +const provider = new NodeTracerProvider({ httpTextFormat: new JaegerHttpTraceFormat() }); ``` diff --git a/packages/opentelemetry-shim-opentracing/test/Shim.test.ts b/packages/opentelemetry-shim-opentracing/test/Shim.test.ts index 67434be058..fbecde28f4 100644 --- a/packages/opentelemetry-shim-opentracing/test/Shim.test.ts +++ b/packages/opentelemetry-shim-opentracing/test/Shim.test.ts @@ -16,15 +16,15 @@ import * as assert from 'assert'; import * as opentracing from 'opentracing'; -import { BasicTracerRegistry, Span } from '@opentelemetry/tracing'; +import { BasicTracerProvider, Span } from '@opentelemetry/tracing'; import { TracerShim, SpanShim, SpanContextShim } from '../src/shim'; import { INVALID_SPAN_CONTEXT, timeInputToHrTime } from '@opentelemetry/core'; import { performance } from 'perf_hooks'; describe('OpenTracing Shim', () => { - const registry = new BasicTracerRegistry(); + const provider = new BasicTracerProvider(); const shimTracer: opentracing.Tracer = new TracerShim( - registry.getTracer('default') + provider.getTracer('default') ); opentracing.initGlobalTracer(shimTracer); diff --git a/packages/opentelemetry-tracing/README.md b/packages/opentelemetry-tracing/README.md index b6aa054bd7..c98cd8fe9c 100644 --- a/packages/opentelemetry-tracing/README.md +++ b/packages/opentelemetry-tracing/README.md @@ -25,14 +25,14 @@ npm install --save @opentelemetry/tracing ```js const opentelemetry = require('@opentelemetry/api'); -const { BasicTracerRegistry } = require('@opentelemetry/tracing'); +const { BasicTracerProvider } = require('@opentelemetry/tracing'); -// To start a trace, you first need to initialize the Tracer registry. -// NOTE: the default OpenTelemetry tracer registry does not record any tracing information. -opentelemetry.trace.initGlobalTracerRegistry(new BasicTracerRegistry()); +// To start a trace, you first need to initialize the Tracer provider. +// NOTE: the default OpenTelemetry tracer provider does not record any tracing information. +opentelemetry.trace.initGlobalTracerProvider(new BasicTracerProvider()); // To create a span in a trace, we used the global singleton tracer to start a new span. -const span = opentelemetry.getTracer('default').startSpan('foo'); +const span = opentelemetry.trace.getTracer('default').startSpan('foo'); // Set a span attribute span.setAttribute('key', 'value'); diff --git a/packages/opentelemetry-tracing/src/BasicTracerRegistry.ts b/packages/opentelemetry-tracing/src/BasicTracerProvider.ts similarity index 94% rename from packages/opentelemetry-tracing/src/BasicTracerRegistry.ts rename to packages/opentelemetry-tracing/src/BasicTracerProvider.ts index 4c8bb3e494..218ada5b48 100644 --- a/packages/opentelemetry-tracing/src/BasicTracerRegistry.ts +++ b/packages/opentelemetry-tracing/src/BasicTracerProvider.ts @@ -23,9 +23,9 @@ import { NoopSpanProcessor } from './NoopSpanProcessor'; import { TracerConfig } from './types'; /** - * This class represents a basic tracer registry which platform libraries can extend + * This class represents a basic tracer provider which platform libraries can extend */ -export class BasicTracerRegistry implements types.TracerRegistry { +export class BasicTracerProvider implements types.TracerProvider { private readonly _registeredSpanProcessors: SpanProcessor[] = []; private readonly _tracers: Map = new Map(); diff --git a/packages/opentelemetry-tracing/src/Tracer.ts b/packages/opentelemetry-tracing/src/Tracer.ts index 5b899e9c37..baf4a375b3 100644 --- a/packages/opentelemetry-tracing/src/Tracer.ts +++ b/packages/opentelemetry-tracing/src/Tracer.ts @@ -27,7 +27,7 @@ import { ScopeManager } from '@opentelemetry/scope-base'; import { Span } from './Span'; import { mergeConfig } from './utility'; import { DEFAULT_CONFIG } from './config'; -import { BasicTracerRegistry } from './BasicTracerRegistry'; +import { BasicTracerProvider } from './BasicTracerProvider'; /** * This class represents a basic tracer. @@ -46,7 +46,7 @@ export class Tracer implements types.Tracer { */ constructor( config: TracerConfig = DEFAULT_CONFIG, - private _tracerRegistry: BasicTracerRegistry + private _tracerProvider: BasicTracerProvider ) { const localConfig = mergeConfig(config); this._binaryFormat = localConfig.binaryFormat; @@ -156,7 +156,7 @@ export class Tracer implements types.Tracer { } getActiveSpanProcessor() { - return this._tracerRegistry.getActiveSpanProcessor(); + return this._tracerProvider.getActiveSpanProcessor(); } private _getParentSpanContext( diff --git a/packages/opentelemetry-tracing/src/index.ts b/packages/opentelemetry-tracing/src/index.ts index d6fb9fb54b..6fdcfce454 100644 --- a/packages/opentelemetry-tracing/src/index.ts +++ b/packages/opentelemetry-tracing/src/index.ts @@ -15,7 +15,7 @@ */ export * from './Tracer'; -export * from './BasicTracerRegistry'; +export * from './BasicTracerProvider'; export * from './export/ConsoleSpanExporter'; export * from './export/BatchSpanProcessor'; export * from './export/InMemorySpanExporter'; diff --git a/packages/opentelemetry-tracing/test/BasicTracerRegistry.test.ts b/packages/opentelemetry-tracing/test/BasicTracerRegistry.test.ts index 5a612fb04e..ad29673636 100644 --- a/packages/opentelemetry-tracing/test/BasicTracerRegistry.test.ts +++ b/packages/opentelemetry-tracing/test/BasicTracerRegistry.test.ts @@ -26,48 +26,48 @@ import { import { NoopScopeManager, ScopeManager } from '@opentelemetry/scope-base'; import { TraceFlags } from '@opentelemetry/api'; import * as assert from 'assert'; -import { BasicTracerRegistry, Span } from '../src'; +import { BasicTracerProvider, Span } from '../src'; -describe('BasicTracerRegistry', () => { +describe('BasicTracerProvider', () => { describe('constructor', () => { it('should construct an instance without any options', () => { - const registry = new BasicTracerRegistry(); - assert.ok(registry instanceof BasicTracerRegistry); + const provider = new BasicTracerProvider(); + assert.ok(provider instanceof BasicTracerProvider); }); it('should construct an instance with binary format', () => { - const registry = new BasicTracerRegistry({ + const provider = new BasicTracerProvider({ binaryFormat: new BinaryTraceContext(), }); - assert.ok(registry instanceof BasicTracerRegistry); + assert.ok(provider instanceof BasicTracerProvider); }); it('should construct an instance with http text format', () => { - const registry = new BasicTracerRegistry({ + const provider = new BasicTracerProvider({ httpTextFormat: new HttpTraceContext(), scopeManager: new NoopScopeManager(), }); - assert.ok(registry instanceof BasicTracerRegistry); + assert.ok(provider instanceof BasicTracerProvider); }); it('should construct an instance with logger', () => { - const registry = new BasicTracerRegistry({ + const provider = new BasicTracerProvider({ logger: new NoopLogger(), scopeManager: new NoopScopeManager(), }); - assert.ok(registry instanceof BasicTracerRegistry); + assert.ok(provider instanceof BasicTracerProvider); }); it('should construct an instance with sampler', () => { - const registry = new BasicTracerRegistry({ + const provider = new BasicTracerProvider({ scopeManager: new NoopScopeManager(), sampler: ALWAYS_SAMPLER, }); - assert.ok(registry instanceof BasicTracerRegistry); + assert.ok(provider instanceof BasicTracerProvider); }); it('should construct an instance with default trace params', () => { - const tracer = new BasicTracerRegistry({ + const tracer = new BasicTracerProvider({ scopeManager: new NoopScopeManager(), }).getTracer('default'); assert.deepStrictEqual(tracer.getActiveTraceParams(), { @@ -78,7 +78,7 @@ describe('BasicTracerRegistry', () => { }); it('should construct an instance with customized numberOfAttributesPerSpan trace params', () => { - const tracer = new BasicTracerRegistry({ + const tracer = new BasicTracerProvider({ scopeManager: new NoopScopeManager(), traceParams: { numberOfAttributesPerSpan: 100, @@ -92,7 +92,7 @@ describe('BasicTracerRegistry', () => { }); it('should construct an instance with customized numberOfEventsPerSpan trace params', () => { - const tracer = new BasicTracerRegistry({ + const tracer = new BasicTracerProvider({ scopeManager: new NoopScopeManager(), traceParams: { numberOfEventsPerSpan: 300, @@ -106,7 +106,7 @@ describe('BasicTracerRegistry', () => { }); it('should construct an instance with customized numberOfLinksPerSpan trace params', () => { - const tracer = new BasicTracerRegistry({ + const tracer = new BasicTracerProvider({ scopeManager: new NoopScopeManager(), traceParams: { numberOfLinksPerSpan: 10, @@ -120,26 +120,26 @@ describe('BasicTracerRegistry', () => { }); it('should construct an instance with default attributes', () => { - const tracer = new BasicTracerRegistry({ + const tracer = new BasicTracerProvider({ defaultAttributes: { region: 'eu-west', asg: 'my-asg', }, }); - assert.ok(tracer instanceof BasicTracerRegistry); + assert.ok(tracer instanceof BasicTracerProvider); }); }); describe('.startSpan()', () => { it('should start a span with name only', () => { - const tracer = new BasicTracerRegistry().getTracer('default'); + const tracer = new BasicTracerProvider().getTracer('default'); const span = tracer.startSpan('my-span'); assert.ok(span); assert.ok(span instanceof Span); }); it('should start a span with name and options', () => { - const tracer = new BasicTracerRegistry().getTracer('default'); + const tracer = new BasicTracerProvider().getTracer('default'); const span = tracer.startSpan('my-span', {}); assert.ok(span); assert.ok(span instanceof Span); @@ -152,7 +152,7 @@ describe('BasicTracerRegistry', () => { }); it('should start a span with defaultAttributes and spanoptions->attributes', () => { - const tracer = new BasicTracerRegistry({ + const tracer = new BasicTracerProvider({ defaultAttributes: { foo: 'bar' }, }).getTracer('default'); const span = tracer.startSpan('my-span', { @@ -163,7 +163,7 @@ describe('BasicTracerRegistry', () => { }); it('should start a span with defaultAttributes and undefined spanoptions->attributes', () => { - const tracer = new BasicTracerRegistry({ + const tracer = new BasicTracerProvider({ defaultAttributes: { foo: 'bar' }, }).getTracer('default'); const span = tracer.startSpan('my-span', {}) as Span; @@ -172,7 +172,7 @@ describe('BasicTracerRegistry', () => { }); it('should start a span with spanoptions->attributes', () => { - const tracer = new BasicTracerRegistry().getTracer('default'); + const tracer = new BasicTracerProvider().getTracer('default'); const span = tracer.startSpan('my-span', { attributes: { foo: 'foo', bar: 'bar' }, }) as Span; @@ -181,7 +181,7 @@ describe('BasicTracerRegistry', () => { }); it('should start a span with name and parent spancontext', () => { - const tracer = new BasicTracerRegistry().getTracer('default'); + const tracer = new BasicTracerProvider().getTracer('default'); const state = new TraceState('a=1,b=2'); const span = tracer.startSpan('my-span', { parent: { @@ -199,7 +199,7 @@ describe('BasicTracerRegistry', () => { }); it('should start a span with name and parent span', () => { - const tracer = new BasicTracerRegistry().getTracer('default'); + const tracer = new BasicTracerProvider().getTracer('default'); const span = tracer.startSpan('my-span'); const childSpan = tracer.startSpan('child-span', { parent: span, @@ -212,7 +212,7 @@ describe('BasicTracerRegistry', () => { }); it('should start a span with name and with invalid parent span', () => { - const tracer = new BasicTracerRegistry().getTracer('default'); + const tracer = new BasicTracerProvider().getTracer('default'); const span = tracer.startSpan('my-span', { parent: ('invalid-parent' as unknown) as undefined, }) as Span; @@ -220,7 +220,7 @@ describe('BasicTracerRegistry', () => { }); it('should start a span with name and with invalid spancontext', () => { - const tracer = new BasicTracerRegistry().getTracer('default'); + const tracer = new BasicTracerProvider().getTracer('default'); const span = tracer.startSpan('my-span', { parent: { traceId: '0', spanId: '0' }, }); @@ -233,7 +233,7 @@ describe('BasicTracerRegistry', () => { }); it('should return a no recording span when never sampling', () => { - const tracer = new BasicTracerRegistry({ + const tracer = new BasicTracerProvider({ sampler: NEVER_SAMPLER, logger: new NoopLogger(), }).getTracer('default'); @@ -248,7 +248,7 @@ describe('BasicTracerRegistry', () => { }); it('should create real span when not sampled but recording events true', () => { - const tracer = new BasicTracerRegistry({ + const tracer = new BasicTracerProvider({ sampler: NEVER_SAMPLER, }).getTracer('default'); const span = tracer.startSpan('my-span', { isRecording: true }); @@ -258,7 +258,7 @@ describe('BasicTracerRegistry', () => { }); it('should not create real span when not sampled and recording events false', () => { - const tracer = new BasicTracerRegistry({ + const tracer = new BasicTracerProvider({ sampler: NEVER_SAMPLER, logger: new NoopLogger(), }).getTracer('default'); @@ -269,7 +269,7 @@ describe('BasicTracerRegistry', () => { }); it('should not create real span when not sampled and no recording events configured', () => { - const tracer = new BasicTracerRegistry({ + const tracer = new BasicTracerProvider({ sampler: NEVER_SAMPLER, logger: new NoopLogger(), }).getTracer('default'); @@ -280,7 +280,7 @@ describe('BasicTracerRegistry', () => { }); it('should create real span when sampled and recording events true', () => { - const tracer = new BasicTracerRegistry({ + const tracer = new BasicTracerProvider({ sampler: ALWAYS_SAMPLER, scopeManager: new NoopScopeManager(), }).getTracer('default'); @@ -294,7 +294,7 @@ describe('BasicTracerRegistry', () => { const defaultAttributes = { foo: 'bar', }; - const tracer = new BasicTracerRegistry({ + const tracer = new BasicTracerProvider({ scopeManager: new NoopScopeManager(), defaultAttributes, }).getTracer('default'); @@ -307,13 +307,13 @@ describe('BasicTracerRegistry', () => { describe('.getCurrentSpan()', () => { it('should return null with NoopScopeManager', () => { - const tracer = new BasicTracerRegistry().getTracer('default'); + const tracer = new BasicTracerProvider().getTracer('default'); const currentSpan = tracer.getCurrentSpan(); assert.deepStrictEqual(currentSpan, undefined); }); it('should return current span when it exists', () => { - const tracer = new BasicTracerRegistry({ + const tracer = new BasicTracerProvider({ scopeManager: { active: () => 'foo', } as ScopeManager, @@ -324,7 +324,7 @@ describe('BasicTracerRegistry', () => { describe('.withSpan()', () => { it('should run scope with NoopScopeManager scope manager', done => { - const tracer = new BasicTracerRegistry().getTracer('default'); + const tracer = new BasicTracerProvider().getTracer('default'); const span = tracer.startSpan('my-span'); tracer.withSpan(span, () => { assert.deepStrictEqual(tracer.getCurrentSpan(), undefined); @@ -335,7 +335,7 @@ describe('BasicTracerRegistry', () => { describe('.bind()', () => { it('should bind scope with NoopScopeManager scope manager', done => { - const tracer = new BasicTracerRegistry().getTracer('default'); + const tracer = new BasicTracerProvider().getTracer('default'); const span = tracer.startSpan('my-span'); const fn = () => { assert.deepStrictEqual(tracer.getCurrentSpan(), undefined); @@ -348,14 +348,14 @@ describe('BasicTracerRegistry', () => { describe('.getBinaryFormat()', () => { it('should get default binary formatter', () => { - const tracer = new BasicTracerRegistry().getTracer('default'); + const tracer = new BasicTracerProvider().getTracer('default'); assert.ok(tracer.getBinaryFormat() instanceof BinaryTraceContext); }); }); describe('.getHttpTextFormat()', () => { it('should get default HTTP text formatter', () => { - const tracer = new BasicTracerRegistry().getTracer('default'); + const tracer = new BasicTracerProvider().getTracer('default'); assert.ok(tracer.getHttpTextFormat() instanceof HttpTraceContext); }); }); diff --git a/packages/opentelemetry-tracing/test/MultiSpanProcessor.test.ts b/packages/opentelemetry-tracing/test/MultiSpanProcessor.test.ts index 7464273e8f..66b0165255 100644 --- a/packages/opentelemetry-tracing/test/MultiSpanProcessor.test.ts +++ b/packages/opentelemetry-tracing/test/MultiSpanProcessor.test.ts @@ -16,7 +16,7 @@ import * as assert from 'assert'; import { MultiSpanProcessor } from '../src/MultiSpanProcessor'; -import { SpanProcessor, Span, BasicTracerRegistry } from '../src'; +import { SpanProcessor, Span, BasicTracerProvider } from '../src'; class TestProcessor implements SpanProcessor { spans: Span[] = []; @@ -30,7 +30,7 @@ class TestProcessor implements SpanProcessor { } describe('MultiSpanProcessor', () => { - const tracer = new BasicTracerRegistry().getTracer('default'); + const tracer = new BasicTracerProvider().getTracer('default'); const span = tracer.startSpan('one'); it('should handle empty span processor', () => { diff --git a/packages/opentelemetry-tracing/test/Span.test.ts b/packages/opentelemetry-tracing/test/Span.test.ts index 802311122f..7c56dc5e71 100644 --- a/packages/opentelemetry-tracing/test/Span.test.ts +++ b/packages/opentelemetry-tracing/test/Span.test.ts @@ -21,7 +21,7 @@ import { TraceFlags, SpanContext, } from '@opentelemetry/api'; -import { BasicTracerRegistry, Span } from '../src'; +import { BasicTracerProvider, Span } from '../src'; import { hrTime, hrTimeToNanoseconds, @@ -33,7 +33,7 @@ import { const performanceTimeOrigin = hrTime(); describe('Span', () => { - const tracer = new BasicTracerRegistry({ + const tracer = new BasicTracerProvider({ logger: new NoopLogger(), }).getTracer('default'); const name = 'span1'; diff --git a/packages/opentelemetry-tracing/test/export/BatchSpanProcessor.test.ts b/packages/opentelemetry-tracing/test/export/BatchSpanProcessor.test.ts index a12a045392..2fbb7d8754 100644 --- a/packages/opentelemetry-tracing/test/export/BatchSpanProcessor.test.ts +++ b/packages/opentelemetry-tracing/test/export/BatchSpanProcessor.test.ts @@ -18,14 +18,14 @@ import * as assert from 'assert'; import * as sinon from 'sinon'; import { Span, - BasicTracerRegistry, + BasicTracerProvider, InMemorySpanExporter, BatchSpanProcessor, } from '../../src'; import { NEVER_SAMPLER, ALWAYS_SAMPLER, NoopLogger } from '@opentelemetry/core'; function createSampledSpan(spanName: string): Span { - const tracer = new BasicTracerRegistry({ + const tracer = new BasicTracerProvider({ sampler: ALWAYS_SAMPLER, }).getTracer('default'); const span = tracer.startSpan(spanName); @@ -34,7 +34,7 @@ function createSampledSpan(spanName: string): Span { } function createUnSampledSpan(spanName: string): Span { - const tracer = new BasicTracerRegistry({ + const tracer = new BasicTracerProvider({ sampler: NEVER_SAMPLER, logger: new NoopLogger(), }).getTracer('default'); diff --git a/packages/opentelemetry-tracing/test/export/ConsoleSpanExporter.test.ts b/packages/opentelemetry-tracing/test/export/ConsoleSpanExporter.test.ts index c0224d85ca..dde733b5a9 100644 --- a/packages/opentelemetry-tracing/test/export/ConsoleSpanExporter.test.ts +++ b/packages/opentelemetry-tracing/test/export/ConsoleSpanExporter.test.ts @@ -17,7 +17,7 @@ import * as assert from 'assert'; import * as sinon from 'sinon'; import { - BasicTracerRegistry, + BasicTracerProvider, ConsoleSpanExporter, SimpleSpanProcessor, } from '../../src'; @@ -39,17 +39,17 @@ describe('ConsoleSpanExporter', () => { describe('.export()', () => { it('should export information about span', () => { assert.doesNotThrow(() => { - const basicTracerRegistry = new BasicTracerRegistry(); + const basicTracerProvider = new BasicTracerProvider(); consoleExporter = new ConsoleSpanExporter(); const spyConsole = sinon.spy(console, 'log'); const spyExport = sinon.spy(consoleExporter, 'export'); - basicTracerRegistry.addSpanProcessor( + basicTracerProvider.addSpanProcessor( new SimpleSpanProcessor(consoleExporter) ); - const span = basicTracerRegistry.getTracer('default').startSpan('foo'); + const span = basicTracerProvider.getTracer('default').startSpan('foo'); span.addEvent('foobar'); span.end(); diff --git a/packages/opentelemetry-tracing/test/export/InMemorySpanExporter.test.ts b/packages/opentelemetry-tracing/test/export/InMemorySpanExporter.test.ts index 4eca595acd..e0e3766c8d 100644 --- a/packages/opentelemetry-tracing/test/export/InMemorySpanExporter.test.ts +++ b/packages/opentelemetry-tracing/test/export/InMemorySpanExporter.test.ts @@ -18,14 +18,14 @@ import * as assert from 'assert'; import { InMemorySpanExporter, SimpleSpanProcessor, - BasicTracerRegistry, + BasicTracerProvider, } from '../../src'; import { ExportResult } from '@opentelemetry/base'; describe('InMemorySpanExporter', () => { const memoryExporter = new InMemorySpanExporter(); - const registry = new BasicTracerRegistry(); - registry.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); + const provider = new BasicTracerProvider(); + provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); afterEach(() => { // reset spans in memory. @@ -33,11 +33,11 @@ describe('InMemorySpanExporter', () => { }); it('should get finished spans', () => { - const root = registry.getTracer('default').startSpan('root'); - const child = registry + const root = provider.getTracer('default').startSpan('root'); + const child = provider .getTracer('default') .startSpan('child', { parent: root }); - const grandChild = registry + const grandChild = provider .getTracer('default') .startSpan('grand-child', { parent: child }); @@ -60,8 +60,8 @@ describe('InMemorySpanExporter', () => { }); it('should shutdown the exorter', () => { - const root = registry.getTracer('default').startSpan('root'); - registry + const root = provider.getTracer('default').startSpan('root'); + provider .getTracer('default') .startSpan('child', { parent: root }) .end(); @@ -71,7 +71,7 @@ describe('InMemorySpanExporter', () => { assert.strictEqual(memoryExporter.getFinishedSpans().length, 0); // after shutdown no new spans are accepted - registry + provider .getTracer('default') .startSpan('child1', { parent: root }) .end(); diff --git a/packages/opentelemetry-tracing/test/export/SimpleSpanProcessor.test.ts b/packages/opentelemetry-tracing/test/export/SimpleSpanProcessor.test.ts index 6254fb5ca4..ad4b3f6d51 100644 --- a/packages/opentelemetry-tracing/test/export/SimpleSpanProcessor.test.ts +++ b/packages/opentelemetry-tracing/test/export/SimpleSpanProcessor.test.ts @@ -17,14 +17,14 @@ import * as assert from 'assert'; import { Span, - BasicTracerRegistry, + BasicTracerProvider, InMemorySpanExporter, SimpleSpanProcessor, } from '../../src'; import { SpanContext, SpanKind, TraceFlags } from '@opentelemetry/api'; describe('SimpleSpanProcessor', () => { - const registry = new BasicTracerRegistry(); + const provider = new BasicTracerProvider(); const exporter = new InMemorySpanExporter(); describe('constructor', () => { @@ -43,7 +43,7 @@ describe('SimpleSpanProcessor', () => { traceFlags: TraceFlags.SAMPLED, }; const span = new Span( - registry.getTracer('default'), + provider.getTracer('default'), 'span-name', spanContext, SpanKind.CLIENT @@ -66,7 +66,7 @@ describe('SimpleSpanProcessor', () => { traceFlags: TraceFlags.UNSAMPLED, }; const span = new Span( - registry.getTracer('default'), + provider.getTracer('default'), 'span-name', spanContext, SpanKind.CLIENT diff --git a/packages/opentelemetry-web/src/WebTracerRegistry.ts b/packages/opentelemetry-web/src/WebTracerProvider.ts similarity index 92% rename from packages/opentelemetry-web/src/WebTracerRegistry.ts rename to packages/opentelemetry-web/src/WebTracerProvider.ts index cf4db8114b..831fbc475f 100644 --- a/packages/opentelemetry-web/src/WebTracerRegistry.ts +++ b/packages/opentelemetry-web/src/WebTracerProvider.ts @@ -15,7 +15,7 @@ */ import { BasePlugin } from '@opentelemetry/core'; -import { BasicTracerRegistry, TracerConfig } from '@opentelemetry/tracing'; +import { BasicTracerProvider, TracerConfig } from '@opentelemetry/tracing'; import { StackScopeManager } from './StackScopeManager'; /** @@ -31,7 +31,7 @@ export interface WebTracerConfig extends TracerConfig { /** * This class represents a web tracer with {@link StackScopeManager} */ -export class WebTracerRegistry extends BasicTracerRegistry { +export class WebTracerProvider extends BasicTracerProvider { /** * Constructs a new Tracer instance. * @param config Web Tracer config diff --git a/packages/opentelemetry-web/src/index.ts b/packages/opentelemetry-web/src/index.ts index a06fb3cfa1..c49b666cb9 100644 --- a/packages/opentelemetry-web/src/index.ts +++ b/packages/opentelemetry-web/src/index.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -export * from './WebTracerRegistry'; +export * from './WebTracerProvider'; export * from './StackScopeManager'; export * from './enums/PerformanceTimingNames'; export * from './types'; diff --git a/packages/opentelemetry-web/test/WebTracer.test.ts b/packages/opentelemetry-web/test/WebTracer.test.ts index 140571405c..308dec1165 100644 --- a/packages/opentelemetry-web/test/WebTracer.test.ts +++ b/packages/opentelemetry-web/test/WebTracer.test.ts @@ -21,7 +21,7 @@ import * as assert from 'assert'; import * as sinon from 'sinon'; import { WebTracerConfig } from '../src'; import { StackScopeManager } from '../src/StackScopeManager'; -import { WebTracerRegistry } from '../src/WebTracerRegistry'; +import { WebTracerProvider } from '../src/WebTracerProvider'; class DummyPlugin extends BasePlugin { constructor() { @@ -42,7 +42,7 @@ describe('WebTracer', () => { }); it('should construct an instance with required only options', () => { - const tracer = new WebTracerRegistry( + const tracer = new WebTracerProvider( Object.assign({}, defaultOptions) ).getTracer('default'); assert.ok(tracer instanceof Tracer); @@ -54,7 +54,7 @@ describe('WebTracer', () => { options = { scopeManager }; const spy = sinon.spy(scopeManager, 'enable'); - new WebTracerRegistry(options); + new WebTracerProvider(options); assert.ok(spy.calledOnce === true); }); @@ -71,7 +71,7 @@ describe('WebTracer', () => { const plugins = [dummyPlugin1, dummyPlugin2]; options = { plugins, scopeManager }; - new WebTracerRegistry(options); + new WebTracerProvider(options); assert.ok(spyEnable1.calledOnce === true); assert.ok(spyEnable2.calledOnce === true); @@ -79,13 +79,13 @@ describe('WebTracer', () => { it('should work without default scope manager', () => { assert.doesNotThrow(() => { - new WebTracerRegistry({}); + new WebTracerProvider({}); }); }); describe('when scopeManager is "ZoneScopeManager"', () => { it('should correctly return the scopes for 2 parallel actions', () => { - const webTracerWithZone = new WebTracerRegistry({ + const webTracerWithZone = new WebTracerProvider({ scopeManager: new ZoneScopeManager(), }).getTracer('default');