Skip to content

Commit db1aa06

Browse files
committed
add cfn primary id fallback test case
1 parent a1ab00e commit db1aa06

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed

aws-opentelemetry-distro/tests/amazon/opentelemetry/distro/test_aws_metric_attribute_generator.py

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1765,3 +1765,90 @@ def test_set_remote_environment(self):
17651765
DEPENDENCY_METRIC
17661766
)
17671767
self.assertIsNone(actual_attributes.get(AWS_REMOTE_ENVIRONMENT))
1768+
1769+
def test_cloudformation_primary_identifier_fallback_to_remote_resource_identifier(self):
1770+
"""Test that when cloudformationPrimaryIdentifier is not explicitly set,
1771+
it falls back to use the same value as remoteResourceIdentifier."""
1772+
keys = []
1773+
values = []
1774+
1775+
keys, values = self._mock_attribute([SpanAttributes.RPC_SYSTEM], ["aws-api"], keys, values)
1776+
self.span_mock.kind = SpanKind.CLIENT
1777+
1778+
# Test case 1: S3 Bucket (no ARN available, should use bucket name for both)
1779+
keys, values = self._mock_attribute(
1780+
[SpanAttributes.RPC_SERVICE, SpanAttributes.AWS_S3_BUCKET], ["S3", "my-test-bucket"], keys, values
1781+
)
1782+
self._validate_remote_resource_attributes("AWS::S3::Bucket", "my-test-bucket")
1783+
1784+
# Test S3 bucket with special characters
1785+
keys, values = self._mock_attribute([SpanAttributes.AWS_S3_BUCKET], ["my-test|bucket^name"], keys, values)
1786+
self._validate_remote_resource_attributes("AWS::S3::Bucket", "my-test^|bucket^^name")
1787+
keys, values = self._mock_attribute(
1788+
[SpanAttributes.RPC_SERVICE, SpanAttributes.AWS_S3_BUCKET], [None, None], keys, values
1789+
)
1790+
1791+
# Test case 2: SQS Queue by name (no ARN, should use queue name for both)
1792+
keys, values = self._mock_attribute(
1793+
[SpanAttributes.RPC_SERVICE, AWS_SQS_QUEUE_NAME], ["SQS", "my-test-queue"], keys, values
1794+
)
1795+
self._validate_remote_resource_attributes("AWS::SQS::Queue", "my-test-queue")
1796+
1797+
# Test SQS queue with special characters
1798+
keys, values = self._mock_attribute([AWS_SQS_QUEUE_NAME], ["my^queue|name"], keys, values)
1799+
self._validate_remote_resource_attributes("AWS::SQS::Queue", "my^^queue^|name")
1800+
keys, values = self._mock_attribute(
1801+
[SpanAttributes.RPC_SERVICE, AWS_SQS_QUEUE_NAME], [None, None], keys, values
1802+
)
1803+
1804+
# Test case 3: DynamoDB Table (no ARN, should use table name for both)
1805+
keys, values = self._mock_attribute(
1806+
[SpanAttributes.RPC_SERVICE, SpanAttributes.AWS_DYNAMODB_TABLE_NAMES],
1807+
["DynamoDB", ["my-test-table"]],
1808+
keys,
1809+
values,
1810+
)
1811+
self._validate_remote_resource_attributes("AWS::DynamoDB::Table", "my-test-table")
1812+
1813+
# Test DynamoDB table with special characters
1814+
keys, values = self._mock_attribute(
1815+
[SpanAttributes.AWS_DYNAMODB_TABLE_NAMES], [["my|test^table"]], keys, values
1816+
)
1817+
self._validate_remote_resource_attributes("AWS::DynamoDB::Table", "my^|test^^table")
1818+
keys, values = self._mock_attribute(
1819+
[SpanAttributes.RPC_SERVICE, SpanAttributes.AWS_DYNAMODB_TABLE_NAMES], [None, None], keys, values
1820+
)
1821+
1822+
# Test case 4: Kinesis Stream
1823+
keys, values = self._mock_attribute(
1824+
[SpanAttributes.RPC_SERVICE, AWS_KINESIS_STREAM_NAME], ["Kinesis", "my-test-stream"], keys, values
1825+
)
1826+
self._validate_remote_resource_attributes("AWS::Kinesis::Stream", "my-test-stream")
1827+
1828+
# Test Kinesis stream with special characters
1829+
keys, values = self._mock_attribute([AWS_KINESIS_STREAM_NAME], ["my-stream^with|chars"], keys, values)
1830+
self._validate_remote_resource_attributes("AWS::Kinesis::Stream", "my-stream^^with^|chars")
1831+
keys, values = self._mock_attribute(
1832+
[SpanAttributes.RPC_SERVICE, AWS_KINESIS_STREAM_NAME], [None, None], keys, values
1833+
)
1834+
1835+
# Test case 5: Lambda Function (non-invoke operation, no ARN)
1836+
keys, values = self._mock_attribute(
1837+
[SpanAttributes.RPC_SERVICE, SpanAttributes.RPC_METHOD, AWS_LAMBDA_FUNCTION_NAME],
1838+
["Lambda", "GetFunction", "my-test-function"],
1839+
keys,
1840+
values,
1841+
)
1842+
self._validate_remote_resource_attributes("AWS::Lambda::Function", "my-test-function")
1843+
1844+
# Test Lambda function with special characters
1845+
keys, values = self._mock_attribute([AWS_LAMBDA_FUNCTION_NAME], ["my-function|with^chars"], keys, values)
1846+
self._validate_remote_resource_attributes("AWS::Lambda::Function", "my-function^|with^^chars")
1847+
keys, values = self._mock_attribute(
1848+
[SpanAttributes.RPC_SERVICE, SpanAttributes.RPC_METHOD, AWS_LAMBDA_FUNCTION_NAME],
1849+
[None, None, None],
1850+
keys,
1851+
values,
1852+
)
1853+
1854+
keys, values = self._mock_attribute([SpanAttributes.RPC_SYSTEM], [None], keys, values)

0 commit comments

Comments
 (0)