Skip to content

Commit f5736db

Browse files
committed
chore: add integ tests
1 parent ea2e00a commit f5736db

File tree

5 files changed

+53
-56
lines changed

5 files changed

+53
-56
lines changed

Diff for: packages/tracing/tests/e2e/tracer.test.Decorator.ts

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Tracer } from '../../src';
22
import { Callback, Context } from 'aws-lambda';
33
import { DynamoDBClient, PutItemCommand } from '@aws-sdk/client-dynamodb';
4+
import axios from 'axios';
45
// eslint-disable-next-line @typescript-eslint/no-var-requires
56
let AWS = require('aws-sdk');
67

@@ -54,6 +55,7 @@ export class MyFunctionWithDecorator {
5455
return Promise.all([
5556
dynamoDBv2.put({ TableName: testTableName, Item: { id: `${serviceName}-${event.invocation}-sdkv2` } }).promise(),
5657
dynamoDBv3.send(new PutItemCommand({ TableName: testTableName, Item: { id: { 'S': `${serviceName}-${event.invocation}-sdkv3` } } })),
58+
axios.get('https://httpbin.org/status/200'),
5759
new Promise((resolve, reject) => {
5860
setTimeout(() => {
5961
const res = this.myMethod();

Diff for: packages/tracing/tests/e2e/tracer.test.DecoratorWithAsyncHandler.ts

+6-14
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Tracer } from '../../src';
22
import { Context } from 'aws-lambda';
33
import { DynamoDBClient, PutItemCommand } from '@aws-sdk/client-dynamodb';
4+
import axios from 'axios';
45
// eslint-disable-next-line @typescript-eslint/no-var-requires
56
let AWS = require('aws-sdk');
67

@@ -50,30 +51,21 @@ export class MyFunctionWithDecorator {
5051
AWS = tracer.captureAWS(AWS);
5152
dynamoDBv2 = new AWS.DynamoDB.DocumentClient();
5253
}
53-
54+
5455
try {
5556
await dynamoDBv2.put({ TableName: testTableName, Item: { id: `${serviceName}-${event.invocation}-sdkv2` } }).promise();
56-
} catch (err) {
57-
console.error(err);
58-
}
59-
60-
try {
6157
await dynamoDBv3.send(new PutItemCommand({ TableName: testTableName, Item: { id: { 'S': `${serviceName}-${event.invocation}-sdkv3` } } }));
62-
} catch (err) {
63-
console.error(err);
64-
}
58+
await axios.get('https://httpbin.org/status/200');
6559

66-
let res;
67-
try {
68-
res = this.myMethod();
60+
const res = this.myMethod();
6961
if (event.throw) {
7062
throw new Error(customErrorMessage);
7163
}
64+
65+
return res;
7266
} catch (err) {
7367
throw err;
7468
}
75-
76-
return res;
7769
}
7870

7971
@tracer.captureMethod()

Diff for: packages/tracing/tests/e2e/tracer.test.Manual.ts

+6-13
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Tracer } from '../../src';
22
import { Context } from 'aws-lambda';
33
import { DynamoDBClient, PutItemCommand } from '@aws-sdk/client-dynamodb';
4+
import axios from 'axios';
45
// eslint-disable-next-line @typescript-eslint/no-var-requires
56
let AWS = require('aws-sdk');
67

@@ -54,32 +55,24 @@ export const handler = async (event: CustomEvent, _context: Context): Promise<vo
5455
AWS = tracer.captureAWS(AWS);
5556
dynamoDBv2 = new AWS.DynamoDB.DocumentClient();
5657
}
57-
try {
58-
await dynamoDBv2.put({ TableName: testTableName, Item: { id: `${serviceName}-${event.invocation}-sdkv2` } }).promise();
59-
} catch (err) {
60-
console.error(err);
61-
}
6258

6359
try {
60+
await dynamoDBv2.put({ TableName: testTableName, Item: { id: `${serviceName}-${event.invocation}-sdkv2` } }).promise();
6461
await dynamoDBv3.send(new PutItemCommand({ TableName: testTableName, Item: { id: { 'S': `${serviceName}-${event.invocation}-sdkv3` } } }));
65-
} catch (err) {
66-
console.error(err);
67-
}
62+
await axios.get('https://httpbin.org/status/200');
6863

69-
let res;
70-
try {
71-
res = customResponseValue;
64+
const res = customResponseValue;
7265
if (event.throw) {
7366
throw new Error(customErrorMessage);
7467
}
7568
tracer.addResponseAsMetadata(res, process.env._HANDLER);
69+
70+
return res;
7671
} catch (err) {
7772
tracer.addErrorAsMetadata(err as Error);
7873
throw err;
7974
} finally {
8075
subsegment.close();
8176
tracer.setSegment(segment);
8277
}
83-
84-
return res;
8578
};

Diff for: packages/tracing/tests/e2e/tracer.test.Middleware.ts

+5-13
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import middy from '@middy/core';
22
import { captureLambdaHandler, Tracer } from '../../src';
33
import { Context } from 'aws-lambda';
44
import { DynamoDBClient, PutItemCommand } from '@aws-sdk/client-dynamodb';
5+
import axios from 'axios';
56
// eslint-disable-next-line @typescript-eslint/no-var-requires
67
let AWS = require('aws-sdk');
78

@@ -50,25 +51,16 @@ export const handler = middy(async (event: CustomEvent, _context: Context): Prom
5051
}
5152
try {
5253
await dynamoDBv2.put({ TableName: testTableName, Item: { id: `${serviceName}-${event.invocation}-sdkv2` } }).promise();
53-
} catch (err) {
54-
console.error(err);
55-
}
56-
57-
try {
5854
await dynamoDBv3.send(new PutItemCommand({ TableName: testTableName, Item: { id: { 'S': `${serviceName}-${event.invocation}-sdkv3` } } }));
59-
} catch (err) {
60-
console.error(err);
61-
}
55+
await axios.get('https://httpbin.org/status/200');
6256

63-
let res;
64-
try {
65-
res = customResponseValue;
57+
const res = customResponseValue;
6658
if (event.throw) {
6759
throw new Error(customErrorMessage);
6860
}
61+
62+
return res;
6963
} catch (err) {
7064
throw err;
7165
}
72-
73-
return res;
7466
}).use(captureLambdaHandler(tracer));

Diff for: packages/tracing/tests/e2e/tracer.test.ts

+34-16
Original file line numberDiff line numberDiff line change
@@ -148,13 +148,14 @@ describe('Tracer integration tests', () => {
148148
// Assert that the subsegment name is the expected one
149149
expect(handlerSubsegment.name).toBe('## index.handler');
150150
if (handlerSubsegment?.subsegments !== undefined) {
151-
// Assert that there're two subsegments
152-
expect(handlerSubsegment?.subsegments?.length).toBe(2);
151+
// Assert that there're three subsegments
152+
expect(handlerSubsegment?.subsegments?.length).toBe(3);
153153

154-
const [ AWSSDKSubsegment1, AWSSDKSubsegment2 ] = handlerSubsegment?.subsegments;
155-
// Assert that the subsegment names is the expected ones
154+
const [ AWSSDKSubsegment1, AWSSDKSubsegment2, HTTPSegment ] = handlerSubsegment?.subsegments;
155+
// Assert that the subsegment names are the expected ones
156156
expect(AWSSDKSubsegment1.name).toBe('DynamoDB');
157157
expect(AWSSDKSubsegment2.name).toBe('DynamoDB');
158+
expect(HTTPSegment.name).toBe('httpbin.org');
158159

159160
const { annotations, metadata } = handlerSubsegment;
160161

@@ -219,12 +220,13 @@ describe('Tracer integration tests', () => {
219220
expect(handlerSubsegment.name).toBe('## index.handler');
220221
if (handlerSubsegment?.subsegments !== undefined) {
221222
// Assert that there're two subsegments
222-
expect(handlerSubsegment?.subsegments?.length).toBe(2);
223+
expect(handlerSubsegment?.subsegments?.length).toBe(3);
223224

224-
const [ AWSSDKSubsegment1, AWSSDKSubsegment2 ] = handlerSubsegment?.subsegments;
225-
// Assert that the subsegment names is the expected ones
225+
const [ AWSSDKSubsegment1, AWSSDKSubsegment2, HTTPSegment ] = handlerSubsegment?.subsegments;
226+
// Assert that the subsegment names are the expected ones
226227
expect(AWSSDKSubsegment1.name).toBe('DynamoDB');
227228
expect(AWSSDKSubsegment2.name).toBe('DynamoDB');
229+
expect(HTTPSegment.name).toBe('httpbin.org');
228230

229231
const { annotations, metadata } = handlerSubsegment;
230232

@@ -289,12 +291,13 @@ describe('Tracer integration tests', () => {
289291
expect(handlerSubsegment.name).toBe('## index.handler');
290292
if (handlerSubsegment?.subsegments !== undefined) {
291293
// Assert that there're two subsegments
292-
expect(handlerSubsegment?.subsegments?.length).toBe(2);
294+
expect(handlerSubsegment?.subsegments?.length).toBe(3);
293295

294-
const [ AWSSDKSubsegment1, AWSSDKSubsegment2 ] = handlerSubsegment?.subsegments;
295-
// Assert that the subsegment names is the expected ones
296+
const [ AWSSDKSubsegment1, AWSSDKSubsegment2, HTTPSegment ] = handlerSubsegment?.subsegments;
297+
// Assert that the subsegment names are the expected ones
296298
expect(AWSSDKSubsegment1.name).toBe('DynamoDB');
297299
expect(AWSSDKSubsegment2.name).toBe('DynamoDB');
300+
expect(HTTPSegment.name).toBe('httpbin.org');
298301

299302
const { annotations, metadata } = handlerSubsegment;
300303

@@ -381,18 +384,21 @@ describe('Tracer integration tests', () => {
381384
// Assert that the subsegment name is the expected one
382385
expect(handlerSubsegment.name).toBe('## index.handler');
383386
if (handlerSubsegment?.subsegments !== undefined) {
384-
// Assert that there're three subsegments
385-
expect(handlerSubsegment?.subsegments?.length).toBe(3);
387+
// Assert that there're four subsegments
388+
expect(handlerSubsegment?.subsegments?.length).toBe(4);
386389

387390
// Sort the subsegments by name
388391
const dynamoDBSubsegments: ParsedDocument[] = [];
389392
const methodSubsegment: ParsedDocument[] = [];
393+
const httpSubsegment: ParsedDocument[] = [];
390394
const otherSegments: ParsedDocument[] = [];
391395
handlerSubsegment?.subsegments.forEach(subsegment => {
392396
if (subsegment.name === 'DynamoDB') {
393397
dynamoDBSubsegments.push(subsegment);
394398
} else if (subsegment.name === '### myMethod') {
395399
methodSubsegment.push(subsegment);
400+
} else if (subsegment.name === 'httpbin.org') {
401+
httpSubsegment.push(subsegment);
396402
} else {
397403
otherSegments.push(subsegment);
398404
}
@@ -401,6 +407,8 @@ describe('Tracer integration tests', () => {
401407
expect(dynamoDBSubsegments.length).toBe(2);
402408
// Assert that there is exactly one subsegment with the name '### myMethod'
403409
expect(methodSubsegment.length).toBe(1);
410+
// Assert that there is exactly one subsegment with the name 'httpbin.org'
411+
expect(httpSubsegment.length).toBe(1);
404412
// Assert that there are exactly zero other subsegments
405413
expect(otherSegments.length).toBe(0);
406414

@@ -478,18 +486,21 @@ describe('Tracer integration tests', () => {
478486
// Assert that the subsegment name is the expected one
479487
expect(handlerSubsegment.name).toBe('## index.handler');
480488
if (handlerSubsegment?.subsegments !== undefined) {
481-
// Assert that there're three subsegments
482-
expect(handlerSubsegment?.subsegments?.length).toBe(3);
489+
// Assert that there're four subsegments
490+
expect(handlerSubsegment?.subsegments?.length).toBe(4);
483491

484492
// Sort the subsegments by name
485493
const dynamoDBSubsegments: ParsedDocument[] = [];
486494
const methodSubsegment: ParsedDocument[] = [];
495+
const httpSubsegment: ParsedDocument[] = [];
487496
const otherSegments: ParsedDocument[] = [];
488497
handlerSubsegment?.subsegments.forEach(subsegment => {
489498
if (subsegment.name === 'DynamoDB') {
490499
dynamoDBSubsegments.push(subsegment);
491500
} else if (subsegment.name === '### myMethod') {
492501
methodSubsegment.push(subsegment);
502+
} else if (subsegment.name === 'httpbin.org') {
503+
httpSubsegment.push(subsegment);
493504
} else {
494505
otherSegments.push(subsegment);
495506
}
@@ -498,6 +509,8 @@ describe('Tracer integration tests', () => {
498509
expect(dynamoDBSubsegments.length).toBe(2);
499510
// Assert that there is exactly one subsegment with the name '### myMethod'
500511
expect(methodSubsegment.length).toBe(1);
512+
// Assert that there is exactly one subsegment with the name 'httpbin.org'
513+
expect(httpSubsegment.length).toBe(1);
501514
// Assert that there are exactly zero other subsegments
502515
expect(otherSegments.length).toBe(0);
503516

@@ -575,18 +588,21 @@ describe('Tracer integration tests', () => {
575588
// Assert that the subsegment name is the expected one
576589
expect(handlerSubsegment.name).toBe('## index.handler');
577590
if (handlerSubsegment?.subsegments !== undefined) {
578-
// Assert that there're three subsegments
579-
expect(handlerSubsegment?.subsegments?.length).toBe(3);
591+
// Assert that there're four subsegments
592+
expect(handlerSubsegment?.subsegments?.length).toBe(4);
580593

581594
// Sort the subsegments by name
582595
const dynamoDBSubsegments: ParsedDocument[] = [];
583596
const methodSubsegment: ParsedDocument[] = [];
597+
const httpSubsegment: ParsedDocument[] = [];
584598
const otherSegments: ParsedDocument[] = [];
585599
handlerSubsegment?.subsegments.forEach(subsegment => {
586600
if (subsegment.name === 'DynamoDB') {
587601
dynamoDBSubsegments.push(subsegment);
588602
} else if (subsegment.name === '### myMethod') {
589603
methodSubsegment.push(subsegment);
604+
} else if (subsegment.name === 'httpbin.org') {
605+
httpSubsegment.push(subsegment);
590606
} else {
591607
otherSegments.push(subsegment);
592608
}
@@ -595,6 +611,8 @@ describe('Tracer integration tests', () => {
595611
expect(dynamoDBSubsegments.length).toBe(2);
596612
// Assert that there is exactly one subsegment with the name '### myMethod'
597613
expect(methodSubsegment.length).toBe(1);
614+
// Assert that there is exactly one subsegment with the name 'httpbin.org'
615+
expect(httpSubsegment.length).toBe(1);
598616
// Assert that there are exactly zero other subsegments
599617
expect(otherSegments.length).toBe(0);
600618
// Assert that no response was captured on the subsegment

0 commit comments

Comments
 (0)