2525import  static  org .mockito .Mockito .verify ;
2626import  static  org .mockito .Mockito .verifyNoInteractions ;
2727import  static  org .mockito .Mockito .when ;
28+ import  static  software .amazon .opentelemetry .javaagent .providers .AwsAttributeKeys .AWS_REMOTE_SERVICE ;
2829import  static  software .amazon .opentelemetry .javaagent .providers .MetricAttributeGenerator .DEPENDENCY_METRIC ;
2930import  static  software .amazon .opentelemetry .javaagent .providers .MetricAttributeGenerator .SERVICE_METRIC ;
3031
@@ -378,6 +379,21 @@ public void testOnEndMetricsGenerationWithStatusDataOk() {
378379    validateMetricsGeneratedForStatusDataOk (600L , ExpectedStatusMetric .NEITHER );
379380  }
380381
382+   @ Test 
383+   public  void  testOnEndMetricsGenerationFromEc2MetadataApi () {
384+     Attributes  spanAttributes  = Attributes .of (AWS_REMOTE_SERVICE , "169.254.169.254" );
385+     ReadableSpan  readableSpanMock  =
386+         buildReadableSpanMock (
387+             spanAttributes , SpanKind .CLIENT , SpanContext .getInvalid (), StatusData .unset ());
388+     Map <String , Attributes > metricAttributesMap  = buildEc2MetadataApiMetricAttributes ();
389+     configureMocksForOnEnd (readableSpanMock , metricAttributesMap );
390+ 
391+     awsSpanMetricsProcessor .onEnd (readableSpanMock );
392+     verifyNoInteractions (errorHistogramMock );
393+     verifyNoInteractions (faultHistogramMock );
394+     verifyNoInteractions (latencyHistogramMock );
395+   }
396+ 
381397  private  static  Attributes  buildSpanAttributes (boolean  containsAttribute ) {
382398    if  (containsAttribute ) {
383399      return  Attributes .of (AttributeKey .stringKey ("original key" ), "original value" );
@@ -404,6 +420,14 @@ private static Map<String, Attributes> buildMetricAttributes(
404420    return  attributesMap ;
405421  }
406422
423+   private  static  Map <String , Attributes > buildEc2MetadataApiMetricAttributes () {
424+     Map <String , Attributes > attributesMap  = new  HashMap <>();
425+     Attributes  attributes  =
426+         Attributes .of (AttributeKey .stringKey (AWS_REMOTE_SERVICE .toString ()), "169.254.169.254" );
427+     attributesMap .put (MetricAttributeGenerator .DEPENDENCY_METRIC , attributes );
428+     return  attributesMap ;
429+   }
430+ 
407431  private  static  ReadableSpan  buildReadableSpanMock (Attributes  spanAttributes ) {
408432    return  buildReadableSpanMock (spanAttributes , SpanKind .SERVER , null , StatusData .unset ());
409433  }
0 commit comments