Skip to content

Commit fc374b2

Browse files
committed
add logs processor test
1 parent 5b69509 commit fc374b2

File tree

4 files changed

+48
-29
lines changed

4 files changed

+48
-29
lines changed

aws-distro-opentelemetry-node-autoinstrumentation/src/aws-opentelemetry-configurator.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,9 @@ export class AwsLoggerProcessorProvider {
476476
) {
477477
diag.debug('Detected CloudWatch Logs OTLP endpoint. Switching exporter to OTLPAwsLogExporter');
478478
exporters.push(
479-
new OTLPAwsLogExporter(otlpExporterLogsEndpoint, { compression: CompressionAlgorithm.GZIP })
479+
new OTLPAwsLogExporter(otlpExporterLogsEndpoint.toLowerCase(), {
480+
compression: CompressionAlgorithm.GZIP,
481+
})
480482
);
481483
} else {
482484
exporters.push(new OTLPProtoLogExporter());
@@ -495,7 +497,9 @@ export class AwsLoggerProcessorProvider {
495497
) {
496498
diag.debug('Detected CloudWatch Logs OTLP endpoint. Switching exporter to OTLPAwsLogExporter');
497499
exporters.push(
498-
new OTLPAwsLogExporter(otlpExporterLogsEndpoint, { compression: CompressionAlgorithm.GZIP })
500+
new OTLPAwsLogExporter(otlpExporterLogsEndpoint.toLowerCase(), {
501+
compression: CompressionAlgorithm.GZIP,
502+
})
499503
);
500504
} else {
501505
exporters.push(new OTLPProtoLogExporter());
@@ -608,7 +612,7 @@ export class AwsSpanProcessorProvider {
608612
case 'http/protobuf':
609613
if (otlpExporterTracesEndpoint && isAwsOtlpEndpoint(otlpExporterTracesEndpoint, 'xray')) {
610614
diag.debug('Detected XRay OTLP Traces endpoint. Switching exporter to OtlpAwsSpanExporter');
611-
return new OTLPAwsSpanExporter(otlpExporterTracesEndpoint);
615+
return new OTLPAwsSpanExporter(otlpExporterTracesEndpoint.toLowerCase());
612616
}
613617
return new OTLPProtoTraceExporter();
614618
case 'udp':
@@ -618,7 +622,7 @@ export class AwsSpanProcessorProvider {
618622
diag.warn(`Unsupported OTLP traces protocol: ${protocol}. Using http/protobuf.`);
619623
if (otlpExporterTracesEndpoint && isAwsOtlpEndpoint(otlpExporterTracesEndpoint, 'xray')) {
620624
diag.debug('Detected XRay OTLP Traces endpoint. Switching exporter to OtlpAwsSpanExporter');
621-
return new OTLPAwsSpanExporter(otlpExporterTracesEndpoint);
625+
return new OTLPAwsSpanExporter(otlpExporterTracesEndpoint.toLowerCase());
622626
}
623627
return new OTLPProtoTraceExporter();
624628
}
@@ -876,17 +880,12 @@ function validateLogsHeaders() {
876880
}
877881

878882
if (!hasLogGroup || !hasLogStream) {
879-
const missingHeaders = [];
880-
if (!hasLogGroup) missingHeaders.push(AWS_OTLP_LOGS_GROUP_HEADER);
881-
if (!hasLogStream) missingHeaders.push(AWS_OTLP_LOGS_STREAM_HEADER);
882-
883883
diag.warn(
884884
'Incomplete configuration: Please configure the environment variable OTEL_EXPORTER_OTLP_LOGS_HEADERS ' +
885885
`to have values for ${AWS_OTLP_LOGS_GROUP_HEADER} and ${AWS_OTLP_LOGS_STREAM_HEADER}`
886886
);
887887
return false;
888888
}
889-
890889
return true;
891890
}
892891

aws-distro-opentelemetry-node-autoinstrumentation/test/aws-opentelemetry-configurator.test.ts

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ import { setAwsDefaultEnvironmentVariables } from '../src/register';
4646
import { AwsXRayRemoteSampler } from '../src/sampler/aws-xray-remote-sampler';
4747
import { AwsXraySamplingClient } from '../src/sampler/aws-xray-sampling-client';
4848
import { GetSamplingRulesResponse } from '../src/sampler/remote-sampler.types';
49-
import { LogRecordExporter } from '@opentelemetry/sdk-logs';
49+
import { BatchLogRecordProcessor, LogRecordExporter, SimpleLogRecordProcessor } from '@opentelemetry/sdk-logs';
5050
import { OTLPAwsLogExporter } from '../src/exporter/otlp/aws/logs/otlp-aws-log-exporter';
5151
import { OTLPAwsSpanExporter } from '../src/exporter/otlp/aws/traces/otlp-aws-span-exporter';
5252

@@ -736,7 +736,7 @@ describe('AwsOpenTelemetryConfiguratorTest', () => {
736736
goodConfigs.push(config);
737737
}
738738

739-
// Cbad configurations with bad endpoints
739+
// bad configurations with bad endpoints
740740
for (const endpoint of tracesBadEndpoints) {
741741
const config = {
742742
[OTEL_TRACES_EXPORTER]: 'otlp',
@@ -758,6 +758,26 @@ describe('AwsOpenTelemetryConfiguratorTest', () => {
758758
});
759759

760760
describe('AwsLoggerProcessorProvider', () => {
761+
762+
it('getlogRecordProcessors', () => {
763+
process.env.OTEL_LOGS_EXPORTER = 'otlp';
764+
let logRecordProcessors = AwsLoggerProcessorProvider.getlogRecordProcessors();
765+
766+
expect(logRecordProcessors).toHaveLength(1);
767+
expect(logRecordProcessors[0]).toBeInstanceOf(BatchLogRecordProcessor);
768+
769+
process.env.OTEL_LOGS_EXPORTER = 'console';
770+
logRecordProcessors = AwsLoggerProcessorProvider.getlogRecordProcessors();
771+
772+
expect(logRecordProcessors).toHaveLength(1);
773+
expect(logRecordProcessors[0]).toBeInstanceOf(SimpleLogRecordProcessor);
774+
775+
delete process.env.OTEL_LOGS_EXPORTER;
776+
});
777+
778+
it('getlogRecordProcessors - console exporter returns SimpleLogRecordProcessor', () => {
779+
});
780+
761781
it('configureLogExportersFromEnv', () => {
762782
let logsExporter: LogRecordExporter[];
763783

@@ -847,6 +867,8 @@ describe('AwsOpenTelemetryConfiguratorTest', () => {
847867

848868
const logsBadHeaders = [
849869
'x-aws-log-group=,x-aws-log-stream=test',
870+
'x-aws-log-group=test,x-aws-log-group=test',
871+
'x-aws-log-stream=test,x-aws-log-stream=test',
850872
'x-aws-log-stream=test',
851873
'x-aws-log-group=test',
852874
'',

aws-distro-opentelemetry-node-autoinstrumentation/test/exporter/otlp/aws/common/aws-authenticator.test.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -44,19 +44,19 @@ describe('AwsAuthenticator', () => {
4444

4545
dependencies.forEach(dependency => {
4646
it(`should not sign headers if missing dependency: ${dependency}`, async () => {
47-
Object.keys(require.cache).forEach(key => {
48-
delete require.cache[key];
49-
});
50-
51-
const requireStub = sandbox.stub(require('module'), '_load');
52-
requireStub.withArgs(dependency).throws(new Error(`Cannot find module '${dependency}'`));
53-
requireStub.callThrough();
54-
55-
const {
56-
AwsAuthenticator: MockThrowableModuleAuthenticator,
57-
} = require('../../../../../src/exporter/otlp/aws/common/aws-authenticator');
58-
59-
const result = await new MockThrowableModuleAuthenticator(
47+
const stubs: { [key: string]: any } = {};
48+
stubs[dependency] = new Proxy(
49+
{},
50+
{
51+
get() {
52+
throw new Error(`Cannot find module '${dependency}'`);
53+
},
54+
}
55+
);
56+
57+
const { AwsAuthenticator } = proxyquire('../../../../../src/exporter/otlp/aws/common/aws-authenticator', stubs);
58+
59+
const result = await new AwsAuthenticator(
6060
'https://xray.us-east-1.amazonaws.com/v1/traces',
6161
'xray'
6262
).authenticate({}, new Uint8Array());

aws-distro-opentelemetry-node-autoinstrumentation/test/exporter/otlp/aws/common/otlp-aws-base-exporter.test.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -166,9 +166,8 @@ export abstract class OTLPAwsBaseExporterTest {
166166
expect(result.code).toBe(ExportResultCode.FAILED);
167167
expect(result.error?.message).toBe('Nothing to send');
168168
expect(this.scope.isDone()).toBe(false);
169+
done();
169170
});
170-
171-
done();
172171
}
173172

174173
private testGzipException(done: () => void) {
@@ -184,9 +183,8 @@ export abstract class OTLPAwsBaseExporterTest {
184183
expect(result.error?.message).toContain('Failed to compress');
185184
expect(this.scope.isDone()).toBe(false);
186185
gzipStub.restore();
186+
done();
187187
});
188-
189-
done();
190188
}
191189

192190
private testUndefinedHeaders(done: () => void) {
@@ -199,8 +197,8 @@ export abstract class OTLPAwsBaseExporterTest {
199197
exporter.export([], (result: ExportResult) => {
200198
expect(result.code).toBe(ExportResultCode.FAILED);
201199
expect(this.scope.isDone()).toBe(false);
200+
done();
202201
});
203-
done();
204202
}
205203

206204
private assertHeaders(headers: Record<string, string>) {

0 commit comments

Comments
 (0)