Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
a310e37
feature(views): move views registration to MeterProvider constructor
pichlermarc Jun 29, 2022
a44657e
feature(views): introduce UserView class.
pichlermarc Jul 4, 2022
4834310
feature(views): add tests for UserView.
pichlermarc Jul 4, 2022
b8535a3
feature(views): remove View class.
pichlermarc Jul 4, 2022
ebe4d53
feature(views): rename UserView -> View.
pichlermarc Jul 4, 2022
6c511ab
feature(views): update tests.
pichlermarc Jul 4, 2022
84c3e85
feature(views): collapse options into one.
pichlermarc Jul 5, 2022
a937ffc
feature(views): verify that at least one selector option is used.
pichlermarc Jul 5, 2022
b48efde
feature(views): undo accidental re-format.
pichlermarc Jul 5, 2022
7a91b9d
feature(views): cleanup.
pichlermarc Jul 5, 2022
389521e
fix(changelog): add changelog entry.
pichlermarc Jul 5, 2022
38122b7
Merge branch 'main' into meterprovider-constructor-views
pichlermarc Jul 7, 2022
bf7caab
fix(changelog): move changelog entry.
pichlermarc Jul 7, 2022
59e69ae
fix(views): address review comments.
pichlermarc Jul 8, 2022
dc2b657
fix(views): rename isSelectorProvided -> isSelectorNotProvided
pichlermarc Jul 8, 2022
7892706
fix(views): amend documentation.
pichlermarc Jul 8, 2022
600a49c
Merge remote-tracking branch 'upstream/main' into meterprovider-const…
pichlermarc Jul 12, 2022
dd13da0
fix(meterprovider): address review comments.
pichlermarc Jul 13, 2022
87271e8
docs(sdk-metrics-base): remove empty lines.
pichlermarc Jul 13, 2022
da511f3
Merge remote-tracking branch 'upstream/main' into meterprovider-const…
pichlermarc Jul 15, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feature(views): update tests.
  • Loading branch information
pichlermarc committed Jul 4, 2022
commit 6c511ab8b0eea705a9b5eb41951747194f1e566d
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import {
AggregationTemporality,
ExplicitBucketHistogramAggregation,
MeterProvider,
MetricReader,
MetricReader, View,
} from '@opentelemetry/sdk-metrics-base';
import { IKeyValue, IMetric, IResource } from '@opentelemetry/otlp-transformer';

Expand Down Expand Up @@ -61,16 +61,10 @@ export async function collect() {
export function setUp() {
meterProvider = new MeterProvider({
resource: testResource,
views: [{
view: {
aggregation: new ExplicitBucketHistogramAggregation([0, 100])
},
selector: {
instrument: {
name: 'int-histogram'
}
}
}]
views: [
new View({ aggregation: new ExplicitBucketHistogramAggregation([0, 100]) },
{ instrument: { name: 'int-histogram' } })
]
});
reader = new TestMetricReader();
meterProvider.addMetricReader(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ import {
AggregationTemporality,
ExplicitBucketHistogramAggregation,
MeterProvider,
MetricReader, ViewRegistrationOptions
MetricReader,
View
} from '@opentelemetry/sdk-metrics-base';
import {
IExportMetricsServiceRequest,
Expand Down Expand Up @@ -61,16 +62,9 @@ class TestMetricReader extends MetricReader {
}
}

export const HISTOGRAM_AGGREGATION_VIEW = {
view: {
aggregation: new ExplicitBucketHistogramAggregation([0, 100])
},
selector: {
instrument: {
name: 'int-histogram'
}
}
};
export const HISTOGRAM_AGGREGATION_VIEW =
new View({ aggregation: new ExplicitBucketHistogramAggregation([0, 100]) },
{ instrument: { name: 'int-histogram' } });

const defaultResource = Resource.default().merge(new Resource({
service: 'ui',
Expand All @@ -89,7 +83,7 @@ export async function collect() {
return (await reader.collect())!;
}

export function setUp(views?: ViewRegistrationOptions[]) {
export function setUp(views?: View[]) {
meterProvider = new MeterProvider({ resource: defaultResource, views });
reader = new TestMetricReader();
meterProvider.addMetricReader(
Expand Down Expand Up @@ -135,7 +129,6 @@ export function mockDoubleCounter(): Counter {
}



export function mockObservableCounter(
callback: (observableResult: ObservableResult) => void,
name = 'double-observable-counter'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import {
AggregationTemporality,
ExplicitBucketHistogramAggregation,
MeterProvider,
MetricReader
MetricReader, View
} from '@opentelemetry/sdk-metrics-base';
import { IExportMetricsServiceRequest, IKeyValue, IMetric } from '@opentelemetry/otlp-transformer';
import { Stream } from 'stream';
Expand Down Expand Up @@ -66,16 +66,11 @@ export async function collect() {
export function setUp() {
meterProvider = new MeterProvider({
resource: testResource,
views: [{
view: {
aggregation: new ExplicitBucketHistogramAggregation([0, 100])
},
selector: {
instrument: {
name: 'int-histogram'
}
}
}]
views: [
new View({ aggregation: new ExplicitBucketHistogramAggregation([0, 100]) },
{ instrument: { name: 'int-histogram' } }
)
]
});
reader = new TestMetricReader();
meterProvider.addMetricReader(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import {
DataPointType,
ExplicitBucketHistogramAggregation,
SumAggregation,
Histogram,
Histogram, View,
} from '@opentelemetry/sdk-metrics-base';
import * as sinon from 'sinon';
import { PrometheusSerializer } from '../src';
Expand Down Expand Up @@ -70,7 +70,7 @@ describe('PrometheusSerializer', () => {
const reader = new TestMetricReader();
const meterProvider = new MeterProvider(
{
views: [{ view: { aggregation: new SumAggregation() } }]
views: [new View({ aggregation: new SumAggregation() })]
}
);
meterProvider.addMetricReader(reader);
Expand Down Expand Up @@ -115,7 +115,7 @@ describe('PrometheusSerializer', () => {
async function testSerializer(serializer: PrometheusSerializer) {
const reader = new TestMetricReader();
const meterProvider = new MeterProvider({
views: [{ view: { aggregation: new ExplicitBucketHistogramAggregation([1, 10, 100]) } }]
views: [new View({ aggregation: new ExplicitBucketHistogramAggregation([1, 10, 100]) })]
});
meterProvider.addMetricReader(reader);
const meter = meterProvider.getMeter('test');
Expand All @@ -142,11 +142,11 @@ describe('PrometheusSerializer', () => {
assert.strictEqual(
result,
`test_count{foo1="bar1",foo2="bar2"} 1 ${mockedHrTimeMs}\n` +
`test_sum{foo1="bar1",foo2="bar2"} 5 ${mockedHrTimeMs}\n` +
`test_bucket{foo1="bar1",foo2="bar2",le="1"} 0 ${mockedHrTimeMs}\n` +
`test_bucket{foo1="bar1",foo2="bar2",le="10"} 1 ${mockedHrTimeMs}\n` +
`test_bucket{foo1="bar1",foo2="bar2",le="100"} 1 ${mockedHrTimeMs}\n` +
`test_bucket{foo1="bar1",foo2="bar2",le="+Inf"} 1 ${mockedHrTimeMs}\n`
`test_sum{foo1="bar1",foo2="bar2"} 5 ${mockedHrTimeMs}\n` +
`test_bucket{foo1="bar1",foo2="bar2",le="1"} 0 ${mockedHrTimeMs}\n` +
`test_bucket{foo1="bar1",foo2="bar2",le="10"} 1 ${mockedHrTimeMs}\n` +
`test_bucket{foo1="bar1",foo2="bar2",le="100"} 1 ${mockedHrTimeMs}\n` +
`test_bucket{foo1="bar1",foo2="bar2",le="+Inf"} 1 ${mockedHrTimeMs}\n`
);
});

Expand All @@ -156,11 +156,11 @@ describe('PrometheusSerializer', () => {
assert.strictEqual(
result,
'test_count{foo1="bar1",foo2="bar2"} 1\n' +
'test_sum{foo1="bar1",foo2="bar2"} 5\n' +
'test_bucket{foo1="bar1",foo2="bar2",le="1"} 0\n' +
'test_bucket{foo1="bar1",foo2="bar2",le="10"} 1\n' +
'test_bucket{foo1="bar1",foo2="bar2",le="100"} 1\n' +
'test_bucket{foo1="bar1",foo2="bar2",le="+Inf"} 1\n'
'test_sum{foo1="bar1",foo2="bar2"} 5\n' +
'test_bucket{foo1="bar1",foo2="bar2",le="1"} 0\n' +
'test_bucket{foo1="bar1",foo2="bar2",le="10"} 1\n' +
'test_bucket{foo1="bar1",foo2="bar2",le="100"} 1\n' +
'test_bucket{foo1="bar1",foo2="bar2",le="+Inf"} 1\n'
);
});
});
Expand All @@ -171,7 +171,7 @@ describe('PrometheusSerializer', () => {
async function testSerializer(serializer: PrometheusSerializer) {
const reader = new TestMetricReader();
const meterProvider = new MeterProvider({
views: [{ view: { aggregation: new SumAggregation() } }]
views: [new View({ aggregation: new SumAggregation() })]
});
meterProvider.addMetricReader(reader);
const meter = meterProvider.getMeter('test');
Expand All @@ -198,9 +198,9 @@ describe('PrometheusSerializer', () => {
assert.strictEqual(
result,
'# HELP test_total foobar\n' +
'# TYPE test_total counter\n' +
`test_total{val="1"} 1 ${mockedHrTimeMs}\n` +
`test_total{val="2"} 1 ${mockedHrTimeMs}\n`
'# TYPE test_total counter\n' +
`test_total{val="1"} 1 ${mockedHrTimeMs}\n` +
`test_total{val="2"} 1 ${mockedHrTimeMs}\n`
);
});

Expand All @@ -210,9 +210,9 @@ describe('PrometheusSerializer', () => {
assert.strictEqual(
result,
'# HELP test_total foobar\n' +
'# TYPE test_total counter\n' +
'test_total{val="1"} 1\n' +
'test_total{val="2"} 1\n'
'# TYPE test_total counter\n' +
'test_total{val="1"} 1\n' +
'test_total{val="2"} 1\n'
);
});
});
Expand All @@ -221,7 +221,7 @@ describe('PrometheusSerializer', () => {
async function testSerializer(serializer: PrometheusSerializer) {
const reader = new TestMetricReader();
const meterProvider = new MeterProvider({
views: [{ view: { aggregation: new ExplicitBucketHistogramAggregation([1, 10, 100]) } }]
views: [new View({ aggregation: new ExplicitBucketHistogramAggregation([1, 10, 100]) })]
});
meterProvider.addMetricReader(reader);
const meter = meterProvider.getMeter('test');
Expand Down Expand Up @@ -251,19 +251,19 @@ describe('PrometheusSerializer', () => {
assert.strictEqual(
result,
'# HELP test foobar\n' +
'# TYPE test histogram\n' +
`test_count{val="1"} 3 ${mockedHrTimeMs}\n` +
`test_sum{val="1"} 175 ${mockedHrTimeMs}\n` +
`test_bucket{val="1",le="1"} 0 ${mockedHrTimeMs}\n` +
`test_bucket{val="1",le="10"} 1 ${mockedHrTimeMs}\n` +
`test_bucket{val="1",le="100"} 2 ${mockedHrTimeMs}\n` +
`test_bucket{val="1",le="+Inf"} 3 ${mockedHrTimeMs}\n` +
`test_count{val="2"} 1 ${mockedHrTimeMs}\n` +
`test_sum{val="2"} 5 ${mockedHrTimeMs}\n` +
`test_bucket{val="2",le="1"} 0 ${mockedHrTimeMs}\n` +
`test_bucket{val="2",le="10"} 1 ${mockedHrTimeMs}\n` +
`test_bucket{val="2",le="100"} 1 ${mockedHrTimeMs}\n` +
`test_bucket{val="2",le="+Inf"} 1 ${mockedHrTimeMs}\n`
'# TYPE test histogram\n' +
`test_count{val="1"} 3 ${mockedHrTimeMs}\n` +
`test_sum{val="1"} 175 ${mockedHrTimeMs}\n` +
`test_bucket{val="1",le="1"} 0 ${mockedHrTimeMs}\n` +
`test_bucket{val="1",le="10"} 1 ${mockedHrTimeMs}\n` +
`test_bucket{val="1",le="100"} 2 ${mockedHrTimeMs}\n` +
`test_bucket{val="1",le="+Inf"} 3 ${mockedHrTimeMs}\n` +
`test_count{val="2"} 1 ${mockedHrTimeMs}\n` +
`test_sum{val="2"} 5 ${mockedHrTimeMs}\n` +
`test_bucket{val="2",le="1"} 0 ${mockedHrTimeMs}\n` +
`test_bucket{val="2",le="10"} 1 ${mockedHrTimeMs}\n` +
`test_bucket{val="2",le="100"} 1 ${mockedHrTimeMs}\n` +
`test_bucket{val="2",le="+Inf"} 1 ${mockedHrTimeMs}\n`
);
});
});
Expand All @@ -273,7 +273,7 @@ describe('PrometheusSerializer', () => {
async function getCounterResult(name: string, serializer: PrometheusSerializer) {
const reader = new TestMetricReader();
const meterProvider = new MeterProvider({
views: [{ view: { aggregation: new SumAggregation() } }]
views: [new View({ aggregation: new SumAggregation() })]
});
meterProvider.addMetricReader(reader);
const meter = meterProvider.getMeter('test');
Expand Down Expand Up @@ -313,7 +313,7 @@ describe('PrometheusSerializer', () => {
async function testSerializer(serializer: PrometheusSerializer, name: string, fn: (counter: UpDownCounter) => void) {
const reader = new TestMetricReader();
const meterProvider = new MeterProvider({
views: [{ view: { aggregation: new SumAggregation() } }]
views: [new View({ aggregation: new SumAggregation() })]
});
meterProvider.addMetricReader(reader);
const meter = meterProvider.getMeter('test');
Expand Down Expand Up @@ -399,13 +399,13 @@ describe('PrometheusSerializer', () => {
assert.strictEqual(
result,
'test_total{' +
'backslash="\u005c\u005c",' +
'doubleQuote="\u005c\u0022",' +
'lineFeed="\u005c\u006e",' +
'backslashN="\u005c\u005c\u006e",' +
'backslashDoubleQuote="\u005c\u005c\u005c\u0022",' +
'backslashLineFeed="\u005c\u005c\u005c\u006e"' +
`} 1 ${mockedHrTimeMs}\n`
'backslash="\u005c\u005c",' +
'doubleQuote="\u005c\u0022",' +
'lineFeed="\u005c\u006e",' +
'backslashN="\u005c\u005c\u006e",' +
'backslashDoubleQuote="\u005c\u005c\u005c\u0022",' +
'backslashLineFeed="\u005c\u005c\u005c\u006e"' +
`} 1 ${mockedHrTimeMs}\n`
);
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,7 @@ import { View } from './view/View';
export interface MeterProviderOptions {
/** Resource associated with metric telemetry */
resource?: Resource;
views?: ViewRegistrationOptions[];
}

export interface ViewRegistrationOptions {
view: ViewOptions;
selector?: SelectorOptions;
views?: View[];
}

export type ViewOptions = {
Expand Down Expand Up @@ -98,8 +93,8 @@ export class MeterProvider implements metrics.MeterProvider {
constructor(options?: MeterProviderOptions) {
this._sharedState = new MeterProviderSharedState(options?.resource ?? Resource.empty());
if(options?.views != null && options.views.length > 0){
for(const viewOptions of options.views){
this.addView(new View(viewOptions.view, viewOptions.selector));
for(const view of options.views){
this.addView(view);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,4 @@ export * from './MeterProvider';
export * from './ObservableResult';
export { TimeoutError } from './utils';
export * from './view/Aggregation';
export * from './view/View';
Loading