Skip to content

Commit e95134b

Browse files
committed
metric attribute generator tests
1 parent d684596 commit e95134b

File tree

4 files changed

+263
-2
lines changed

4 files changed

+263
-2
lines changed

aws-distro-opentelemetry-node-autoinstrumentation/package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,11 @@
6464
"@aws-sdk/client-bedrock-agent-runtime": "3.632.0",
6565
"@aws-sdk/client-bedrock-runtime": "3.632.0",
6666
"@aws-sdk/client-kinesis": "3.632.0",
67+
"@aws-sdk/client-lambda": "^3.632.0",
6768
"@aws-sdk/client-s3": "3.632.0",
69+
"@aws-sdk/client-secrets-manager": "^3.632.0",
70+
"@aws-sdk/client-sfn": "^3.632.0",
71+
"@aws-sdk/client-sns": "^3.632.0",
6872
"@aws-sdk/client-sqs": "3.632.0",
6973
"@opentelemetry/contrib-test-utils": "0.41.0",
7074
"@types/mocha": "7.0.2",

aws-distro-opentelemetry-node-autoinstrumentation/src/aws-metric-attribute-generator.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -407,10 +407,10 @@ export class AwsMetricAttributeGenerator implements MetricAttributeGenerator {
407407
span.attributes[AWS_ATTRIBUTE_KEYS.AWS_LAMBDA_FUNCTION_NAME]
408408
);
409409
cloudFormationIdentifier = span.attributes[AWS_ATTRIBUTE_KEYS.AWS_LAMBDA_FUNCTION_ARN];
410-
} else if (AwsSpanProcessingUtil.isKeyPresent(span, AWS_ATTRIBUTE_KEYS.AWS_LAMBDA_RESOURCEMAPPING_ID)) {
410+
} else if (AwsSpanProcessingUtil.isKeyPresent(span, AWS_ATTRIBUTE_KEYS.AWS_LAMBDA_RESOURCE_MAPPING_ID)) {
411411
remoteResourceType = NORMALIZED_LAMBDA_SERVICE_NAME + '::EventSourceMapping';
412412
remoteResourceIdentifier = AwsMetricAttributeGenerator.escapeDelimiters(
413-
span.attributes[AWS_ATTRIBUTE_KEYS.AWS_LAMBDA_RESOURCEMAPPING_ID]
413+
span.attributes[AWS_ATTRIBUTE_KEYS.AWS_LAMBDA_RESOURCE_MAPPING_ID]
414414
);
415415
} else if (AwsSpanProcessingUtil.isKeyPresent(span, AWS_ATTRIBUTE_KEYS.AWS_SQS_QUEUE_NAME)) {
416416
remoteResourceType = NORMALIZED_SQS_SERVICE_NAME + '::Queue';

aws-distro-opentelemetry-node-autoinstrumentation/test/aws-metric-attribute-generator.test.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -760,6 +760,36 @@ describe('AwsMetricAttributeGeneratorTest', () => {
760760
mockAttribute(AWS_ATTRIBUTE_KEYS.AWS_KINESIS_STREAM_NAME, 'AWS_KINESIS_STREAM_NAME');
761761
validateRemoteResourceAttributes('AWS::Kinesis::Stream', 'AWS_KINESIS_STREAM_NAME');
762762
mockAttribute(AWS_ATTRIBUTE_KEYS.AWS_KINESIS_STREAM_NAME, undefined);
763+
764+
// Validate behaviour of AWS_SNS_TOPIC_ARN attribute then remove it.
765+
mockAttribute(AWS_ATTRIBUTE_KEYS.AWS_SNS_TOPIC_ARN, 'arn:aws:sns:us-east-1:123456789012:testTopic');
766+
validateRemoteResourceAttributes('AWS::SNS::Topic', 'testTopic');
767+
mockAttribute(AWS_ATTRIBUTE_KEYS.AWS_SNS_TOPIC_ARN, undefined);
768+
769+
// Validate behaviour of AWS_SECRETSMANAGER_SECRET_ARN attributes then remove it.
770+
mockAttribute(AWS_ATTRIBUTE_KEYS.AWS_SECRETSMANAGER_SECRET_ARN, 'arn:aws:secretsmanager:us-east-1:123456789123:secret:testSecret');
771+
validateRemoteResourceAttributes('AWS::SecretsManager::Secret', 'testSecret');
772+
mockAttribute(AWS_ATTRIBUTE_KEYS.AWS_SECRETSMANAGER_SECRET_ARN, undefined);
773+
774+
// Validate behaviour of AWS_LAMBDA_FUNCTION_NAME, AWS_LAMBDA_FUNCTION_ARN, and AWS_LAMBDA_RESOURCE_MAPPING_ID attributes then remove them.
775+
mockAttribute(AWS_ATTRIBUTE_KEYS.AWS_LAMBDA_FUNCTION_NAME, 'aws_lambda_function_name');
776+
mockAttribute(AWS_ATTRIBUTE_KEYS.AWS_LAMBDA_FUNCTION_ARN, 'arn:aws:lambda:us-east-1:123456789012:function:aws_lambda_function_name');
777+
validateRemoteResourceAttributes('AWS::Lambda::Function', 'aws_lambda_function_name');
778+
mockAttribute(AWS_ATTRIBUTE_KEYS.AWS_LAMBDA_FUNCTION_NAME, undefined);
779+
mockAttribute(AWS_ATTRIBUTE_KEYS.AWS_LAMBDA_FUNCTION_ARN, undefined);
780+
781+
mockAttribute(AWS_ATTRIBUTE_KEYS.AWS_LAMBDA_RESOURCE_MAPPING_ID, 'aws_lambda_resource_mapping_id');
782+
validateRemoteResourceAttributes('AWS::Lambda::EventSourceMapping', 'aws_lambda_resource_mapping_id');
783+
mockAttribute(AWS_ATTRIBUTE_KEYS.AWS_LAMBDA_RESOURCE_MAPPING_ID, undefined);
784+
785+
// Validate behaviour of AWS_STEPFUNCTIONS_STATEMACHINE_ARN and AWS_STEPFUNCTIONS_ACTIVITY_ARN attributes then remove them.
786+
mockAttribute(AWS_ATTRIBUTE_KEYS.AWS_STEPFUNCTIONS_STATEMACHINE_ARN, 'arn:aws:states:us-east-1:007003123456789012:stateMachine:testStateMachine');
787+
validateRemoteResourceAttributes('AWS::StepFunctions::StateMachine', 'testStateMachine');
788+
mockAttribute(AWS_ATTRIBUTE_KEYS.AWS_STEPFUNCTIONS_STATEMACHINE_ARN, undefined);
789+
790+
mockAttribute(AWS_ATTRIBUTE_KEYS.AWS_STEPFUNCTIONS_ACTIVITY_ARN, 'arn:aws:states:us-east-1:007003123456789012:activity:testActivity');
791+
validateRemoteResourceAttributes('AWS::StepFunctions::Activity', 'testActivity');
792+
mockAttribute(AWS_ATTRIBUTE_KEYS.AWS_STEPFUNCTIONS_ACTIVITY_ARN, undefined);
763793

764794
// Validate behaviour of AWS_TABLE_NAMES attribute with one table name, then remove it.
765795
mockAttribute(AWS_ATTRIBUTE_KEYS.AWS_DYNAMODB_TABLE_NAMES, ['aws_table_name']);
@@ -1167,6 +1197,10 @@ describe('AwsMetricAttributeGeneratorTest', () => {
11671197
testAwsSdkServiceNormalization('Kinesis', 'AWS::Kinesis');
11681198
testAwsSdkServiceNormalization('S3', 'AWS::S3');
11691199
testAwsSdkServiceNormalization('SQS', 'AWS::SQS');
1200+
testAwsSdkServiceNormalization('SNS', 'AWS::SNS');
1201+
testAwsSdkServiceNormalization('Lambda', 'AWS::Lambda');
1202+
testAwsSdkServiceNormalization('SecretsManager', 'AWS::SecretsManager');
1203+
testAwsSdkServiceNormalization('StepFunctions', 'AWS::StepFunctions');
11701204
testAwsSdkServiceNormalization('Bedrock', 'AWS::Bedrock');
11711205
testAwsSdkServiceNormalization('BedrockAgent', 'AWS::Bedrock');
11721206
testAwsSdkServiceNormalization('BedrockAgentRuntime', 'AWS::Bedrock');

package-lock.json

Lines changed: 223 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)