Skip to content

Commit

Permalink
feat: metric aggregation type type guard (#2574)
Browse files Browse the repository at this point in the history
* feat: metric aggregation type type guard

* test: fix
  • Loading branch information
jake-bassett authored Dec 11, 2023
1 parent 360d03c commit e9a8dff
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@ import { getAggregationDisplayName, MetricAggregationType } from './metric-aggre

describe('MetricAggregation', () => {
test('calculates display name for stand alone aggregation types', () => {
expect(getAggregationDisplayName(MetricAggregationType.Average)).toBe('Avg.');
expect(getAggregationDisplayName(MetricAggregationType.Average)).toBe('Avg');
expect(getAggregationDisplayName(MetricAggregationType.P99)).toBe('p99');
expect(getAggregationDisplayName(MetricAggregationType.P95)).toBe('p95');
expect(getAggregationDisplayName(MetricAggregationType.P90)).toBe('p90');
expect(getAggregationDisplayName(MetricAggregationType.P50)).toBe('p50');
expect(getAggregationDisplayName(MetricAggregationType.Min)).toBe('Min.');
expect(getAggregationDisplayName(MetricAggregationType.Max)).toBe('Max.');
expect(getAggregationDisplayName(MetricAggregationType.Min)).toBe('Min');
expect(getAggregationDisplayName(MetricAggregationType.Max)).toBe('Max');
expect(getAggregationDisplayName(MetricAggregationType.Sum)).toBe('Sum');
expect(getAggregationDisplayName(MetricAggregationType.AvgrateSecond)).toBe('Rate (sec.)');
expect(getAggregationDisplayName(MetricAggregationType.AvgrateMinute)).toBe('Rate (min.)');
expect(getAggregationDisplayName(MetricAggregationType.AvgrateSecond)).toBe('Rate (sec)');
expect(getAggregationDisplayName(MetricAggregationType.AvgrateMinute)).toBe('Rate (min)');
expect(getAggregationDisplayName(MetricAggregationType.Count)).toBe('Count');
expect(getAggregationDisplayName(MetricAggregationType.DistinctCount)).toBe('Distinct Count');
expect(getAggregationDisplayName(MetricAggregationType.DistinctArray)).toBe('Distinct Array');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,31 @@ export const enum MetricAggregationType {
DistinctArray = 'distinct_array',
}

export const isMetricAggregationType = (value: unknown): value is MetricAggregationType => {
switch (value) {
case MetricAggregationType.Sum:
case MetricAggregationType.Average:
case MetricAggregationType.P99:
case MetricAggregationType.P90:
case MetricAggregationType.P95:
case MetricAggregationType.P50:
case MetricAggregationType.Min:
case MetricAggregationType.Max:
case MetricAggregationType.AvgrateSecond:
case MetricAggregationType.AvgrateMinute:
case MetricAggregationType.Count:
case MetricAggregationType.DistinctCount:
case MetricAggregationType.DistinctArray:
return true;
default:
return false;
}
};

export const getAggregationDisplayName = (aggregation: MetricAggregationType): string => {
switch (aggregation) {
case MetricAggregationType.Average:
return 'Avg.';
return 'Avg';
case MetricAggregationType.P99:
return 'p99';
case MetricAggregationType.P95:
Expand All @@ -40,15 +61,15 @@ export const getAggregationDisplayName = (aggregation: MetricAggregationType): s
case MetricAggregationType.P50:
return 'p50';
case MetricAggregationType.Min:
return 'Min.';
return 'Min';
case MetricAggregationType.Max:
return `Max.`;
return `Max`;
case MetricAggregationType.Sum:
return `Sum`;
case MetricAggregationType.AvgrateMinute:
return `Rate (min.)`;
return `Rate (min)`;
case MetricAggregationType.AvgrateSecond:
return `Rate (sec.)`;
return `Rate (sec)`;
case MetricAggregationType.Count:
return 'Count';
case MetricAggregationType.DistinctCount:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,15 +110,15 @@ describe('Metadata Service', () => {
...specBuilder.attributeSpecificationForKey('attr1'),
aggregation: MetricAggregationType.Max,
} as Specification),
'Max. Attribute 1',
'Max Attribute 1',
);

expectSingleValueObservable(
spectator.service.getSpecificationDisplayName('Scope1', {
...specBuilder.attributeSpecificationForKey('attr1'),
aggregation: MetricAggregationType.AvgrateMinute,
} as Specification),
'Attribute 1 Rate (min.)',
'Attribute 1 Rate (min)',
);
});

Expand Down

0 comments on commit e9a8dff

Please sign in to comment.