Skip to content

Commit f4687b4

Browse files
author
Alexander Schueren
authored
chore(tracer): add useragent to v3 sdk clients (#1575)
1 parent 7198cbc commit f4687b4

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

Diff for: packages/tracer/src/provider/ProviderService.ts

+3
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
setLogger,
1919
Logger,
2020
} from 'aws-xray-sdk-core';
21+
import { addUserAgentMiddleware } from '@aws-lambda-powertools/commons';
2122

2223
class ProviderService implements ProviderServiceInterface {
2324
public captureAWS<T>(awssdk: T): T {
@@ -29,6 +30,8 @@ class ProviderService implements ProviderServiceInterface {
2930
}
3031

3132
public captureAWSv3Client<T>(service: T): T {
33+
addUserAgentMiddleware(service, 'tracer');
34+
3235
// Type must be aliased as any because of this https://github.com/aws/aws-xray-sdk-node/issues/439#issuecomment-859715660
3336
// eslint-disable-next-line @typescript-eslint/no-explicit-any
3437
return captureAWSv3Client(service as any);

Diff for: packages/tracer/tests/unit/ProviderService.test.ts

+21-3
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,25 @@
66

77
import { ProviderService } from '../../src/provider';
88
import {
9+
captureAsyncFunc,
910
captureAWS,
1011
captureAWSClient,
1112
captureAWSv3Client,
12-
captureAsyncFunc,
13-
captureHTTPsGlobal,
1413
captureFunc,
14+
captureHTTPsGlobal,
1515
getNamespace,
1616
getSegment,
17+
Segment,
1718
setContextMissingStrategy,
1819
setDaemonAddress,
1920
setLogger,
2021
setSegment,
2122
Subsegment,
22-
Segment,
2323
} from 'aws-xray-sdk-core';
2424
import http from 'http';
2525
import https from 'https';
26+
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
27+
import * as UserAgentMiddleware from '@aws-lambda-powertools/commons/lib/userAgentMiddleware';
2628

2729
jest.mock('aws-xray-sdk-core', () => ({
2830
...jest.requireActual('aws-xray-sdk-core'),
@@ -85,6 +87,22 @@ describe('Class: ProviderService', () => {
8587
expect(captureAWSv3Client).toHaveBeenCalledTimes(1);
8688
expect(captureAWSv3Client).toHaveBeenCalledWith({});
8789
});
90+
91+
test('when called, it adds the correct user agent middleware', () => {
92+
// Prepare
93+
const provider: ProviderService = new ProviderService();
94+
95+
// spy on addUserAgentMiddleware
96+
const spy = jest.spyOn(UserAgentMiddleware, 'addUserAgentMiddleware');
97+
98+
// Act
99+
const dynamoDBClient = new DynamoDBClient({});
100+
provider.captureAWSv3Client(dynamoDBClient);
101+
102+
// Assess
103+
expect(spy).toHaveBeenCalledTimes(1);
104+
expect(spy).toHaveBeenCalledWith(dynamoDBClient, 'tracer');
105+
});
88106
});
89107

90108
describe('Method: captureAsyncFunc', () => {

0 commit comments

Comments
 (0)