Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: fixes after last changes to url #2214

Merged
merged 2 commits into from
May 20, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import {
ServiceClientType,
} from './types';
import { ServiceClient } from './types';
import { validateAndNormalizeUrl } from './util';

/**
* Collector Metric Exporter abstract base class
Expand All @@ -42,16 +41,13 @@ export abstract class CollectorExporterNodeBase<
grpcQueue: GRPCQueueItem<ExportItem>[] = [];
metadata?: Metadata;
serviceClient?: ServiceClient = undefined;
serverAddress: string;
private _send!: Function;

constructor(config: CollectorExporterConfigNode = {}) {
super(config);
if (config.headers) {
diag.warn('Headers cannot be set when using grpc');
}

this.serverAddress = validateAndNormalizeUrl(this.url);
this.metadata = config.metadata;
}
private _sendPromise(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import { MetricRecord, MetricExporter } from '@opentelemetry/metrics';
import { CollectorExporterConfigNode, ServiceClientType } from './types';
import { CollectorExporterNodeBase } from './CollectorExporterNodeBase';
import { getEnv } from '@opentelemetry/core';
import { validateAndNormalizeUrl } from './util';

const DEFAULT_SERVICE_NAME = 'collector-metric-exporter';
const DEFAULT_COLLECTOR_URL = 'localhost:4317';
Expand Down Expand Up @@ -50,11 +51,11 @@ export class CollectorMetricExporter

getDefaultUrl(config: CollectorExporterConfigNode) {
return typeof config.url === 'string'
? config.url
? validateAndNormalizeUrl(config.url)
: getEnv().OTEL_EXPORTER_OTLP_METRICS_ENDPOINT.length > 0
? getEnv().OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
? validateAndNormalizeUrl(getEnv().OTEL_EXPORTER_OTLP_METRICS_ENDPOINT)
: getEnv().OTEL_EXPORTER_OTLP_ENDPOINT.length > 0
? getEnv().OTEL_EXPORTER_OTLP_ENDPOINT
? validateAndNormalizeUrl(getEnv().OTEL_EXPORTER_OTLP_ENDPOINT)
: DEFAULT_COLLECTOR_URL;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import {
} from '@opentelemetry/exporter-collector';
import { CollectorExporterConfigNode, ServiceClientType } from './types';
import { getEnv } from '@opentelemetry/core';
import { validateAndNormalizeUrl } from './util';

const DEFAULT_SERVICE_NAME = 'collector-trace-exporter';
const DEFAULT_COLLECTOR_URL = 'localhost:4317';
Expand All @@ -43,11 +44,11 @@ export class CollectorTraceExporter

getDefaultUrl(config: CollectorExporterConfigNode) {
return typeof config.url === 'string'
? config.url
? validateAndNormalizeUrl(config.url)
: getEnv().OTEL_EXPORTER_OTLP_TRACES_ENDPOINT.length > 0
? getEnv().OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
? validateAndNormalizeUrl(getEnv().OTEL_EXPORTER_OTLP_TRACES_ENDPOINT)
: getEnv().OTEL_EXPORTER_OTLP_ENDPOINT.length > 0
? getEnv().OTEL_EXPORTER_OTLP_ENDPOINT
? validateAndNormalizeUrl(getEnv().OTEL_EXPORTER_OTLP_ENDPOINT)
: DEFAULT_COLLECTOR_URL;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export interface GRPCQueueItem<ExportedItem> {
export interface ServiceClient extends grpc.Client {
export: (
request: any,
metadata: grpc.Metadata | undefined,
metadata: grpc.Metadata,
callback: Function
) => {};
}
Expand Down
18 changes: 10 additions & 8 deletions packages/opentelemetry-exporter-collector-grpc/src/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,15 +51,17 @@ export function onInit<ExportItem, ServiceRequest>(
const packageObject: any = grpc.loadPackageDefinition(packageDefinition);

if (collector.getServiceClientType() === ServiceClientType.SPANS) {
collector.serviceClient = new packageObject.opentelemetry.proto.collector.trace.v1.TraceService(
collector.serverAddress,
credentials
);
collector.serviceClient =
new packageObject.opentelemetry.proto.collector.trace.v1.TraceService(
collector.url,
credentials,
);
} else {
collector.serviceClient = new packageObject.opentelemetry.proto.collector.metrics.v1.MetricsService(
collector.serverAddress,
credentials
);
collector.serviceClient =
new packageObject.opentelemetry.proto.collector.metrics.v1.MetricsService(
collector.url,
credentials,
);
}

if (collector.grpcQueue.length > 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ const testCollectorMetricExporter = (params: TestParams) =>
const spyLoggerWarn = sinon.stub(diag, 'warn');
collectorExporter = new CollectorMetricExporter({
serviceName: 'basic-service',
url: address,
url: `http://${address}`,
headers: {
foo: 'bar',
},
Expand All @@ -182,7 +182,7 @@ const testCollectorMetricExporter = (params: TestParams) =>
const spyLoggerWarn = sinon.stub(diag, 'warn');
collectorExporter = new CollectorMetricExporter({
serviceName: 'basic-service',
url: address + '/v1/metrics',
url: `http://${address}/v1/metrics`
});
const args = spyLoggerWarn.args[0];
assert.strictEqual(
Expand Down Expand Up @@ -253,7 +253,7 @@ describe('CollectorMetricExporter - node (getDefaultUrl)', () => {
const url = 'http://foo.bar.com';
const collectorExporter = new CollectorMetricExporter({ url });
setTimeout(() => {
assert.strictEqual(collectorExporter['url'], url);
assert.strictEqual(collectorExporter['url'], 'foo.bar.com');
done();
});
});
Expand All @@ -266,7 +266,7 @@ describe('when configuring via environment', () => {
const collectorExporter = new CollectorMetricExporter();
assert.strictEqual(
collectorExporter.url,
envSource.OTEL_EXPORTER_OTLP_ENDPOINT
'foo.bar'
);
envSource.OTEL_EXPORTER_OTLP_ENDPOINT = '';
});
Expand All @@ -276,7 +276,7 @@ describe('when configuring via environment', () => {
const collectorExporter = new CollectorMetricExporter();
assert.strictEqual(
collectorExporter.url,
envSource.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
'foo.metrics'
);
envSource.OTEL_EXPORTER_OTLP_ENDPOINT = '';
envSource.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT = '';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ const testCollectorExporter = (params: TestParams) =>
const spyLoggerWarn = sinon.stub(diag, 'warn');
collectorExporter = new CollectorTraceExporter({
serviceName: 'basic-service',
url: address,
url: `http://${address}`,
headers: {
foo: 'bar',
},
Expand All @@ -159,7 +159,7 @@ const testCollectorExporter = (params: TestParams) =>
const spyLoggerWarn = sinon.stub(diag, 'warn');
collectorExporter = new CollectorTraceExporter({
serviceName: 'basic-service',
url: address + '/v1/trace',
url: `http://${address}/v1/trace`,
dyladan marked this conversation as resolved.
Show resolved Hide resolved
});
const args = spyLoggerWarn.args[0];
assert.strictEqual(
Expand Down Expand Up @@ -215,7 +215,7 @@ describe('CollectorTraceExporter - node (getDefaultUrl)', () => {
const url = 'http://foo.bar.com';
const collectorExporter = new CollectorTraceExporter({ url });
setTimeout(() => {
assert.strictEqual(collectorExporter['url'], url);
assert.strictEqual(collectorExporter['url'], 'foo.bar.com');
done();
});
});
Expand All @@ -228,7 +228,7 @@ describe('when configuring via environment', () => {
const collectorExporter = new CollectorTraceExporter();
assert.strictEqual(
collectorExporter.url,
envSource.OTEL_EXPORTER_OTLP_ENDPOINT
'foo.bar'
);
envSource.OTEL_EXPORTER_OTLP_ENDPOINT = '';
});
Expand All @@ -238,7 +238,7 @@ describe('when configuring via environment', () => {
const collectorExporter = new CollectorTraceExporter();
assert.strictEqual(
collectorExporter.url,
envSource.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
'foo.traces'
);
envSource.OTEL_EXPORTER_OTLP_ENDPOINT = '';
envSource.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT = '';
Expand Down
52 changes: 26 additions & 26 deletions packages/opentelemetry-exporter-collector-grpc/test/certs/ca.crt
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
-----BEGIN CERTIFICATE-----
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
9CI=
MIICCgKCAgEA0+Zk811ox15L6wnMn24/wVBS6WPIPUAk421SLwXd5oxjFsJk74Kl
YTZ/BEG6uyEcFcY2cEYyupZL1YCR6nXbbHazBQD4X6QKVpYlSGnK62s8kk9qZkoc
pcqh4rpud6KHkmoJPi1g8oNU1+mSuLYoeoz3DEe79tViBMAq1s8HmCtX0ec9sEfm
1VJL0+TZOa5tYOniVp9xfAky026JOlifR01fdUrrgwrtFFVqBEhIqG42e4uS5qbf
ag65PBQdzWDpAwYJgbcJaw/dmWYZ9w9hbleZuTUGAlBj0UDC7U6oelI0jYVjchHR
gyo9hG+2qDrUOF9jirAqEAWD6F/Yf2HpDBJu67lGB7KKxOtnfZrj6i/FDPVyEV88
GYZvxS7CW8Tlx0lFgGZMd6IPmLafiCB5MDUNYeP/LBOJ90S7IqRZ8CiLAe9oZ6mM
cH/FS722pUME1LrVwDQvfPOpVqfQQH0AsOPnsoG8LRGfXbNe8iVG7fR8hWZyyNaj
QIJmwwhvJoQL+8VgaDxht/7qtMW/+cbxN2RBt3+PaMhMFXcT8O7AYMsjrRRqK3h1
ZEUalAT1yTv/F7IPyFHESfhmbisSZOCTytMY+kcPaQy3T5gEXwW45KIqXMGJoTvz
vsE00kfoqhNfk2kCV/uImdyXllBEzO48H+1OFSFsje3tB/Ds2qHhRM0CAwEAATAN
BgkqhkiG9w0BAQsFAAOCAgEAh+iN05bNuWx0gSKfTChivRQHjgW1OQyv22+6LB92
S0PwqSnnvsviDbzeOkAEEu8JPOT20AP+FxFcAnTVUSixvnENkokjqQST56AMF+am
n75FrfEbXCrHquFEMfwL00fHjSJ5yRDRYyskyjoxYlMdw8rR8XgM6G9V3eXuUpSp
znv8ExgL4P3+1YRDVX8NaoYjT7MYr7nou3U0Jeojz6E4cXJHWnTFcFyuKIARoBz6
fCd2FR0Yjk5rsRmlmLJ7WV4KovWZAvIkpTAjzS/Gkvuq0lHdunxhghnYdFuFz+b3
z54QNZj0RnVihOnSR8Ze86EVyvsgx1b+p9uYD5Dsmwv/g7LHSRk5wn/Z/C6keuV7
47Gjf22mtRAiuTyKgM230lwViG76veJ7DZYYgR5jrKx+tkL3EWcpFeXS4ph+CPY8
zN+rMzdFxUsi9n6zH8U5hrEtd1mofP+7Eo9HkLpj/KWfZiBcqXFovB4jS7lss8ld
weeEZuQA4UF+/lDHuX4ilH8dIDiFNhNXFIafNpMf2XhU94J48K/iukCSxGOKwJZM
tI7gIhMcMnTNoqe6Oy213G8klhAYG7sbxr+Vljw+rhgDkBpkwCDRVvCyh2Xc8yT0
Ij6HiyCp7bKo1cO2AC9S9g6q31A+TVbzQ6AgkaD4c4ZQQ2hpL5aupqUcBuF7HBeU
tUc=
-----END CERTIFICATE-----
100 changes: 50 additions & 50 deletions packages/opentelemetry-exporter-collector-grpc/test/certs/ca.key
Original file line number Diff line number Diff line change
@@ -1,54 +1,54 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,C088BF4BACFE1D5E
DEK-Info: DES-EDE3-CBC,7BE11F6CEA0F028E

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
-----END RSA PRIVATE KEY-----
Loading