Skip to content

Commit 4e311bd

Browse files
legendecasdyladan
andauthored
feat(sdk-metrics-base): remove per-meter config on MeterProvider.getMeter (#2563)
Co-authored-by: Daniel Dyla <[email protected]>
1 parent 61cf8c5 commit 4e311bd

File tree

4 files changed

+41
-46
lines changed

4 files changed

+41
-46
lines changed

experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusExporter.test.ts

+7-18
Original file line numberDiff line numberDiff line change
@@ -227,10 +227,9 @@ describe('PrometheusExporter', () => {
227227
exporter = new PrometheusExporter({}, () => {
228228
meterProvider = new MeterProvider({
229229
interval: Math.pow(2, 31) - 1,
230-
});
231-
meter = meterProvider.getMeter('test-prometheus', '1', {
232230
exporter,
233231
});
232+
meter = meterProvider.getMeter('test-prometheus', '1');
234233
done();
235234
});
236235
});
@@ -363,25 +362,15 @@ describe('PrometheusExporter', () => {
363362
counter.bind({ counterKey1: 'labelValue2' }).add(20);
364363
counter.bind({ counterKey1: 'labelValue3' }).add(30);
365364
meterProvider.shutdown().then(() => {
365+
// exporter has been shut down along with meter provider.
366366
http
367367
.get('http://localhost:9464/metrics', res => {
368-
res.on('data', chunk => {
369-
const body = chunk.toString();
370-
const lines = body.split('\n');
371-
372-
assert.deepStrictEqual(lines, [
373-
'# HELP counter_total a test description',
374-
'# TYPE counter_total counter',
375-
`counter_total{counterKey1="labelValue1"} 10 ${mockedHrTimeMs}`,
376-
`counter_total{counterKey1="labelValue2"} 20 ${mockedHrTimeMs}`,
377-
`counter_total{counterKey1="labelValue3"} 30 ${mockedHrTimeMs}`,
378-
'',
379-
]);
380-
381-
done();
382-
});
368+
errorHandler(done)(new Error('unreachable'));
383369
})
384-
.on('error', errorHandler(done));
370+
.on('error', err => {
371+
assert(`${err}`.match('ECONNREFUSED'));
372+
done();
373+
});
385374
});
386375
});
387376

experimental/packages/opentelemetry-sdk-metrics-base/src/MeterProvider.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -48,17 +48,17 @@ export class MeterProvider implements api.MeterProvider {
4848
*
4949
* @returns Meter A Meter with the given name and version
5050
*/
51-
getMeter(name: string, version?: string, config?: MeterConfig): Meter {
52-
const key = `${name}@${version ?? ''}:${config?.schemaUrl ?? ''}`;
51+
getMeter(name: string, version?: string, options?: api.MeterOptions): Meter {
52+
const key = `${name}@${version ?? ''}:${options?.schemaUrl ?? ''}`;
5353
if (!this._meters.has(key)) {
5454
this._meters.set(
5555
key,
5656
new Meter({
5757
name,
5858
version,
5959
// @ts-expect-error ts(2345) TODO: upgrade @opentelemetry/core InstrumentationLibrary definition
60-
schemaUrl: config?.schemaUrl
61-
}, Object.assign({}, this._config, config))
60+
schemaUrl: options?.schemaUrl
61+
}, this._config)
6262
);
6363
}
6464

experimental/packages/opentelemetry-sdk-metrics-base/test/Meter.test.ts

-23
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,13 @@ import { Resource } from '@opentelemetry/resources';
2121
import * as assert from 'assert';
2222
import * as sinon from 'sinon';
2323
import {
24-
Aggregator,
2524
CounterMetric,
2625
Histogram,
2726
LastValue,
2827
LastValueAggregator,
2928
Meter,
3029
MeterProvider,
3130
Metric,
32-
MetricDescriptor,
3331
MetricKind,
3432
MetricRecord,
3533
Sum,
@@ -40,7 +38,6 @@ import {
4038
import { BatchObserver } from '../src/BatchObserver';
4139
import { BatchObserverResult } from '../src/BatchObserverResult';
4240
import { SumAggregator } from '../src/export/aggregators';
43-
import { Processor } from '../src/export/Processor';
4441
import { ObservableCounterMetric } from '../src/ObservableCounterMetric';
4542
import { ObservableUpDownCounterMetric } from '../src/ObservableUpDownCounterMetric';
4643
import { hashLabels } from '../src/Utils';
@@ -1364,28 +1361,8 @@ describe('Meter', () => {
13641361
assert.strictEqual(value, 10);
13651362
});
13661363
});
1367-
1368-
it('should allow custom processor', () => {
1369-
const customMeter = new MeterProvider().getMeter('custom-processor', '*', {
1370-
processor: new CustomProcessor(),
1371-
});
1372-
assert.throws(() => {
1373-
const histogram = customMeter.createHistogram('myHistogram');
1374-
histogram.bind({}).record(1);
1375-
}, /aggregatorFor method not implemented/);
1376-
});
13771364
});
13781365

1379-
class CustomProcessor extends Processor {
1380-
process(record: MetricRecord): void {
1381-
throw new Error('process method not implemented.');
1382-
}
1383-
1384-
aggregatorFor(metricKind: MetricDescriptor): Aggregator {
1385-
throw new Error('aggregatorFor method not implemented.');
1386-
}
1387-
}
1388-
13891366
function ensureMetric(metric: MetricRecord, name?: string, value?: LastValue) {
13901367
assert.ok(metric.aggregator instanceof LastValueAggregator);
13911368
const lastValue = metric.aggregator.toPoint().value;

experimental/packages/opentelemetry-sdk-metrics-base/test/MeterProvider.test.ts

+30-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,15 @@
1616

1717
import * as assert from 'assert';
1818
import * as sinon from 'sinon';
19-
import { MeterProvider, Meter, CounterMetric } from '../src';
19+
import {
20+
MeterProvider,
21+
Meter,
22+
CounterMetric,
23+
MetricRecord,
24+
MetricDescriptor,
25+
Aggregator,
26+
Processor,
27+
} from '../src';
2028

2129
describe('MeterProvider', () => {
2230
afterEach(() => {
@@ -74,6 +82,27 @@ describe('MeterProvider', () => {
7482
const meter4 = provider.getMeter('meter3', 'ver2');
7583
assert.notEqual(meter3, meter4);
7684
});
85+
86+
it('should allow custom processor', () => {
87+
class CustomProcessor extends Processor {
88+
process(record: MetricRecord): void {
89+
throw new Error('process method not implemented.');
90+
}
91+
92+
aggregatorFor(metricKind: MetricDescriptor): Aggregator {
93+
throw new Error('aggregatorFor method not implemented.');
94+
}
95+
}
96+
97+
const meter = new MeterProvider({
98+
processor: new CustomProcessor(),
99+
}).getMeter('custom-processor', '*');
100+
101+
assert.throws(() => {
102+
const histogram = meter.createHistogram('myHistogram');
103+
histogram.bind({}).record(1);
104+
}, /aggregatorFor method not implemented/);
105+
});
77106
});
78107

79108
describe('shutdown()', () => {

0 commit comments

Comments
 (0)