Skip to content

Commit 8af4444

Browse files
fix(exporter-collector): wrong data type for numbers (#1938)
* fix(exporter-collector): proper data types for int and double * test(exporter-collector): add test for converting number to int and double * test(exporter-collector-grpc): fix tests after changes in transform in exporter-collector
1 parent 167bfd8 commit 8af4444

File tree

4 files changed

+25
-7
lines changed

4 files changed

+25
-7
lines changed

packages/opentelemetry-exporter-collector-grpc/test/helper.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -422,8 +422,8 @@ export function ensureResourceIsCorrect(
422422
{
423423
key: 'version',
424424
value: {
425-
doubleValue: 1,
426-
value: 'doubleValue',
425+
intValue: '1',
426+
value: 'intValue',
427427
},
428428
},
429429
{

packages/opentelemetry-exporter-collector/src/transform.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ import {
3232
CollectorExporterConfigBase,
3333
} from './types';
3434

35+
const MAX_INTEGER_VALUE = 2147483647;
36+
const MIN_INTEGER_VALUE = -2147483648;
37+
3538
/**
3639
* Converts attributes to KeyValue array
3740
* @param attributes
@@ -95,8 +98,14 @@ export function toCollectorAnyValue(
9598
anyValue.stringValue = value;
9699
} else if (typeof value === 'boolean') {
97100
anyValue.boolValue = value;
101+
} else if (
102+
typeof value === 'number' &&
103+
value <= MAX_INTEGER_VALUE &&
104+
value >= MIN_INTEGER_VALUE &&
105+
Number.isInteger(value)
106+
) {
107+
anyValue.intValue = value;
98108
} else if (typeof value === 'number') {
99-
// all numbers will be treated as double
100109
anyValue.doubleValue = value;
101110
} else if (Array.isArray(value)) {
102111
anyValue.arrayValue = toCollectorArrayValue(value);

packages/opentelemetry-exporter-collector/test/common/transform.test.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,21 @@ describe('transform', () => {
3737
]);
3838
});
3939

40-
it('should convert attribute integer', () => {
40+
it('should convert attribute integer to integer', () => {
4141
const attributes: SpanAttributes = {
4242
foo: 13,
4343
};
4444
assert.deepStrictEqual(transform.toCollectorAttributes(attributes), [
45-
{ key: 'foo', value: { doubleValue: 13 } },
45+
{ key: 'foo', value: { intValue: 13 } },
46+
]);
47+
});
48+
49+
it('should convert attribute integer to double', () => {
50+
const attributes: SpanAttributes = {
51+
foo: 2247483647,
52+
};
53+
assert.deepStrictEqual(transform.toCollectorAttributes(attributes), [
54+
{ key: 'foo', value: { doubleValue: 2247483647 } },
4655
]);
4756
});
4857

@@ -118,7 +127,7 @@ describe('transform', () => {
118127
},
119128
{
120129
key: 'version',
121-
value: { doubleValue: 1 },
130+
value: { intValue: 1 },
122131
},
123132
{ key: 'success', value: { boolValue: true } },
124133
],

packages/opentelemetry-exporter-collector/test/helper.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,7 @@ export function ensureWebResourceIsCorrect(
540540
{
541541
key: 'version',
542542
value: {
543-
doubleValue: 1,
543+
intValue: 1,
544544
},
545545
},
546546
{

0 commit comments

Comments
 (0)