Skip to content

Commit e37db95

Browse files
committed
feat!:move serializers to otlp-transformer
1 parent 1b4999f commit e37db95

File tree

26 files changed

+222
-98
lines changed

26 files changed

+222
-98
lines changed

.gitmodules

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
[submodule "experimental/packages/otlp-grpc-exporter-base/protos"]
2-
path = experimental/packages/otlp-grpc-exporter-base/protos
3-
url = https://github.com/open-telemetry/opentelemetry-proto.git
41
[submodule "experimental/packages/otlp-proto-exporter-base/protos"]
52
path = experimental/packages/otlp-proto-exporter-base/protos
63
url = https://github.com/open-telemetry/opentelemetry-proto.git
4+
[submodule "experimental/packages/otlp-transformer/protos"]
5+
path = experimental/packages/otlp-transformer/protos
6+
url = https://github.com/open-telemetry/opentelemetry-proto.git

experimental/packages/exporter-logs-otlp-grpc/src/OTLPLogExporter.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@ import {
2121
OTLPGRPCExporterNodeBase,
2222
validateAndNormalizeUrl,
2323
DEFAULT_COLLECTOR_URL,
24-
LogsSerializer,
2524
} from '@opentelemetry/otlp-grpc-exporter-base';
2625
import {
27-
createExportLogsServiceRequest,
2826
IExportLogsServiceRequest,
2927
IExportLogsServiceResponse,
28+
ProtobufLogsSerializer,
3029
} from '@opentelemetry/otlp-transformer';
3130
import { VERSION } from './version';
3231

@@ -57,14 +56,10 @@ export class OTLPLogExporter
5756
signalSpecificMetadata,
5857
'LogsExportService',
5958
'/opentelemetry.proto.collector.logs.v1.LogsService/Export',
60-
LogsSerializer
59+
ProtobufLogsSerializer
6160
);
6261
}
6362

64-
convert(logRecords: ReadableLogRecord[]): IExportLogsServiceRequest {
65-
return createExportLogsServiceRequest(logRecords);
66-
}
67-
6863
getDefaultUrl(config: OTLPGRPCExporterConfigNode) {
6964
return validateAndNormalizeUrl(this.getUrlFromConfig(config));
7065
}

experimental/packages/exporter-logs-otlp-grpc/test/OTLPLogExporter.test.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,7 @@ import { VERSION } from '../src/version';
4040

4141
const logsServiceProtoPath =
4242
'opentelemetry/proto/collector/logs/v1/logs_service.proto';
43-
const includeDirs = [
44-
path.resolve(__dirname, '../../otlp-grpc-exporter-base/protos'),
45-
];
43+
const includeDirs = [path.resolve(__dirname, '../../otlp-transformer/protos')];
4644

4745
const httpAddr = 'https://localhost:1503';
4846
const udsAddr = 'unix:///tmp/otlp-logs.sock';

experimental/packages/exporter-trace-otlp-grpc/src/OTLPTraceExporter.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@ import {
2121
OTLPGRPCExporterNodeBase,
2222
validateAndNormalizeUrl,
2323
DEFAULT_COLLECTOR_URL,
24-
TraceSerializer,
2524
} from '@opentelemetry/otlp-grpc-exporter-base';
2625
import {
27-
createExportTraceServiceRequest,
2826
IExportTraceServiceRequest,
2927
IExportTraceServiceResponse,
28+
ProtobufTraceSerializer,
3029
} from '@opentelemetry/otlp-transformer';
3130
import { VERSION } from './version';
3231

@@ -57,14 +56,10 @@ export class OTLPTraceExporter
5756
signalSpecificMetadata,
5857
'TraceExportService',
5958
'/opentelemetry.proto.collector.trace.v1.TraceService/Export',
60-
TraceSerializer
59+
ProtobufTraceSerializer
6160
);
6261
}
6362

64-
convert(spans: ReadableSpan[]): IExportTraceServiceRequest {
65-
return createExportTraceServiceRequest(spans);
66-
}
67-
6863
getDefaultUrl(config: OTLPGRPCExporterConfigNode) {
6964
return validateAndNormalizeUrl(this.getUrlFromConfig(config));
7065
}

experimental/packages/exporter-trace-otlp-grpc/test/OTLPTraceExporter.test.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,7 @@ import {
4444

4545
const traceServiceProtoPath =
4646
'opentelemetry/proto/collector/trace/v1/trace_service.proto';
47-
const includeDirs = [
48-
path.resolve(__dirname, '../../otlp-grpc-exporter-base/protos'),
49-
];
47+
const includeDirs = [path.resolve(__dirname, '../../otlp-transformer/protos')];
5048

5149
const httpAddr = 'https://localhost:1501';
5250
const udsAddr = 'unix:///tmp/otlp-traces.sock';

experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/OTLPMetricExporter.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,12 @@ import {
2424
OTLPGRPCExporterNodeBase,
2525
validateAndNormalizeUrl,
2626
DEFAULT_COLLECTOR_URL,
27-
MetricsSerializer,
2827
} from '@opentelemetry/otlp-grpc-exporter-base';
2928
import { baggageUtils, getEnv } from '@opentelemetry/core';
3029
import {
31-
createExportMetricsServiceRequest,
3230
IExportMetricsServiceRequest,
3331
IExportMetricsServiceResponse,
32+
ProtobufMetricsSerializer,
3433
} from '@opentelemetry/otlp-transformer';
3534
import { VERSION } from './version';
3635

@@ -56,18 +55,14 @@ class OTLPMetricExporterProxy extends OTLPGRPCExporterNodeBase<
5655
signalSpecificMetadata,
5756
'MetricsExportService',
5857
'/opentelemetry.proto.collector.metrics.v1.MetricsService/Export',
59-
MetricsSerializer
58+
ProtobufMetricsSerializer
6059
);
6160
}
6261

6362
getDefaultUrl(config: OTLPGRPCExporterConfigNode): string {
6463
return validateAndNormalizeUrl(this.getUrlFromConfig(config));
6564
}
6665

67-
convert(metrics: ResourceMetrics[]): IExportMetricsServiceRequest {
68-
return createExportMetricsServiceRequest(metrics);
69-
}
70-
7166
getUrlFromConfig(config: OTLPGRPCExporterConfigNode): string {
7267
if (typeof config.url === 'string') {
7368
return config.url;

experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,7 @@ import { AggregationTemporalityPreference } from '@opentelemetry/exporter-metric
4545

4646
const metricsServiceProtoPath =
4747
'opentelemetry/proto/collector/metrics/v1/metrics_service.proto';
48-
const includeDirs = [
49-
path.resolve(__dirname, '../../otlp-grpc-exporter-base/protos'),
50-
];
48+
const includeDirs = [path.resolve(__dirname, '../../otlp-transformer/protos')];
5149

5250
const httpAddr = 'https://localhost:1502';
5351
const udsAddr = 'unix:///tmp/otlp-metrics.sock';

experimental/packages/otlp-grpc-exporter-base/package.json

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,14 @@
88
"scripts": {
99
"prepublishOnly": "npm run compile",
1010
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../",
11-
"compile": "npm run protos && tsc --build",
11+
"compile": "tsc --build",
1212
"clean": "tsc --build --clean",
1313
"lint": "eslint . --ext .ts",
1414
"lint:fix": "eslint . --ext .ts --fix",
15-
"protos": "npm run submodule && npm run protos:generate",
16-
"protos:generate": "node ../../../scripts/generate-protos.js",
17-
"submodule": "git submodule sync --recursive && git submodule update --init --recursive",
1815
"tdd": "npm run test -- --watch-extensions ts --watch",
1916
"test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'",
2017
"version": "node ../../../scripts/version-update.js",
21-
"watch": "npm run protos && tsc -w",
18+
"watch": "tsc -w",
2219
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
2320
"prewatch": "npm run precompile"
2421
},

experimental/packages/otlp-grpc-exporter-base/src/OTLPGRPCExporterNodeBase.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import {
2727
GrpcExporterTransport,
2828
} from './grpc-exporter-transport';
2929
import { configureCompression, configureCredentials } from './util';
30-
import { ISerializer } from './serializers';
30+
import { ISerializer } from '@opentelemetry/otlp-transformer';
3131
import { IExporterTransport } from './exporter-transport';
3232

3333
/**
@@ -45,14 +45,14 @@ export abstract class OTLPGRPCExporterNodeBase<
4545
grpcQueue: GRPCQueueItem<ExportItem>[] = [];
4646
compression: CompressionAlgorithm;
4747
private _transport: IExporterTransport;
48-
private _serializer: ISerializer<ServiceRequest, ServiceResponse>;
48+
private _serializer: ISerializer<ExportItem[], ServiceResponse>;
4949

5050
constructor(
5151
config: OTLPGRPCExporterConfigNode = {},
5252
signalSpecificMetadata: Record<string, string>,
5353
grpcName: string,
5454
grpcPath: string,
55-
serializer: ISerializer<ServiceRequest, ServiceResponse>
55+
serializer: ISerializer<ExportItem[], ServiceResponse>
5656
) {
5757
super(config);
5858
this._serializer = serializer;
@@ -114,6 +114,11 @@ export abstract class OTLPGRPCExporterNodeBase<
114114
this._transport.shutdown();
115115
}
116116

117+
override convert(_objects: ExportItem[]): ServiceRequest {
118+
// Not used, nothing to do.
119+
return {} as ServiceRequest;
120+
}
121+
117122
send(
118123
objects: ExportItem[],
119124
onSuccess: () => void,
@@ -124,8 +129,7 @@ export abstract class OTLPGRPCExporterNodeBase<
124129
return;
125130
}
126131

127-
const converted = this.convert(objects);
128-
const data = this._serializer.serializeRequest(converted);
132+
const data = this._serializer.serializeRequest(objects);
129133

130134
if (data == null) {
131135
onError(new Error('Could not serialize message'));

experimental/packages/otlp-grpc-exporter-base/src/index.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,3 @@
1717
export { OTLPGRPCExporterNodeBase } from './OTLPGRPCExporterNodeBase';
1818
export { OTLPGRPCExporterConfigNode } from './types';
1919
export { DEFAULT_COLLECTOR_URL, validateAndNormalizeUrl } from './util';
20-
export {
21-
MetricsSerializer,
22-
TraceSerializer,
23-
LogsSerializer,
24-
ISerializer,
25-
} from './serializers';

experimental/packages/otlp-grpc-exporter-base/test/OTLPGRPCExporterNodeBase.test.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { OTLPGRPCExporterConfigNode } from '../src/types';
2121
import { mockedReadableSpan } from './traceHelper';
2222
import { ExportResponse, ExportResponseSuccess } from '../src/export-response';
2323
import { IExporterTransport } from '../src/exporter-transport';
24-
import { ISerializer } from '../src';
24+
import { ISerializer } from '@opentelemetry/otlp-transformer';
2525
import sinon = require('sinon');
2626

2727
class MockCollectorExporter extends OTLPGRPCExporterNodeBase<
@@ -33,10 +33,6 @@ class MockCollectorExporter extends OTLPGRPCExporterNodeBase<
3333
return '';
3434
}
3535

36-
convert(spans: ReadableSpan[]): ReadableSpan[] {
37-
return spans;
38-
}
39-
4036
getUrlFromConfig(config: OTLPGRPCExporterConfigNode): string {
4137
return '';
4238
}

experimental/packages/otlp-grpc-exporter-base/tsconfig.json

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
{
22
"extends": "../../../tsconfig.base.json",
33
"compilerOptions": {
4-
"allowJs": true,
54
"outDir": "build",
65
"rootDir": "."
76
},
87
"include": [
98
"src/**/*.ts",
10-
"src/generated/**/*.js",
11-
"src/generated/**/*.ts",
129
"test/**/*.ts"
1310
],
1411
"references": [
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1-
src/generated
2-
!src/logs
1+
src/generated/*
2+
!src/generated/.gitkeep
3+
!src/logs

experimental/packages/otlp-transformer/package.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,19 @@
1414
"scripts": {
1515
"prepublishOnly": "npm run compile",
1616
"precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies",
17-
"compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
17+
"compile": "npm run protos && tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
1818
"clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
19+
"protos": "npm run submodule && npm run protos:generate",
20+
"protos:generate": "node ../../../scripts/generate-protos.js",
1921
"lint": "eslint . --ext .ts",
2022
"lint:fix": "eslint . --ext .ts --fix",
2123
"tdd": "npm run test -- --watch-extensions ts --watch",
24+
"submodule": "git submodule sync --recursive && git submodule update --init --recursive",
2225
"test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'",
2326
"test:browser": "karma start --single-run",
2427
"test:bench": "node test/performance/benchmark/index.js | tee .benchmark-results.txt",
2528
"prewatch": "node ../../../scripts/version-update.js",
26-
"watch": "tsc --build -w tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
29+
"watch": "npm run protos && tsc -w tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
2730
"peer-api-check": "node ../../../scripts/peer-api-check.js",
2831
"codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../"
2932
},
@@ -76,15 +79,17 @@
7679
"ts-loader": "8.4.0",
7780
"ts-mocha": "10.0.0",
7881
"typescript": "4.4.4",
79-
"webpack": "5.89.0"
82+
"webpack": "5.89.0",
83+
"protobufjs-cli": "1.1.2"
8084
},
8185
"dependencies": {
8286
"@opentelemetry/api-logs": "0.49.1",
8387
"@opentelemetry/core": "1.22.0",
8488
"@opentelemetry/resources": "1.22.0",
8589
"@opentelemetry/sdk-logs": "0.49.1",
8690
"@opentelemetry/sdk-metrics": "1.22.0",
87-
"@opentelemetry/sdk-trace-base": "1.22.0"
91+
"@opentelemetry/sdk-trace-base": "1.22.0",
92+
"protobufjs": "^7.2.3"
8893
},
8994
"homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-transformer",
9095
"sideEffects": false
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
/**
18+
* Serializes and deserializes the OTLP request/response to and from {@link Uint8Array}
19+
*/
20+
export interface ISerializer<Request, Response> {
21+
serializeRequest(request: Request): Uint8Array | undefined;
22+
deserializeResponse(data: Uint8Array): Response;
23+
}

experimental/packages/otlp-transformer/src/index.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,11 @@ export * from './logs/types';
2424
export { createExportTraceServiceRequest } from './trace';
2525
export { createExportMetricsServiceRequest } from './metrics';
2626
export { createExportLogsServiceRequest } from './logs';
27+
28+
export {
29+
ProtobufLogsSerializer,
30+
ProtobufMetricsSerializer,
31+
ProtobufTraceSerializer,
32+
} from './protobuf/serializers';
33+
34+
export { ISerializer } from './common/i-serializer';

0 commit comments

Comments
 (0)