@@ -98,6 +98,44 @@ public void teardown() {
98
98
AWSXRay .endSegment ();
99
99
}
100
100
101
+ @ Test
102
+ public void testDuplicateInterceptor () throws Exception {
103
+ SdkHttpClient mockClient = mockSdkHttpClient (generateLambdaInvokeResponse (400 ));
104
+ LambdaClient client = lambdaClientDupInterceptor (mockClient );
105
+
106
+ Segment segment = AWSXRay .getCurrentSegment ();
107
+ try {
108
+ client .invoke (InvokeRequest .builder ()
109
+ .functionName ("testFunctionName" )
110
+ .build ()
111
+ );
112
+ } catch (Exception e ) {
113
+ // ignore SDK errors
114
+ } finally {
115
+ Assert .assertEquals (1 , segment .getSubsegments ().size ());
116
+ Subsegment subsegment = segment .getSubsegments ().get (0 );
117
+ Map <String , Object > awsStats = subsegment .getAws ();
118
+ @ SuppressWarnings ("unchecked" )
119
+ Map <String , Object > httpResponseStats = (Map <String , Object >) subsegment .getHttp ().get ("response" );
120
+ Cause cause = subsegment .getCause ();
121
+
122
+ Assert .assertEquals ("Invoke" , awsStats .get ("operation" ));
123
+ Assert .assertEquals ("testFunctionName" , awsStats .get ("function_name" ));
124
+ Assert .assertEquals ("1111-2222-3333-4444" , awsStats .get ("request_id" ));
125
+ Assert .assertEquals ("extended" , awsStats .get ("id_2" ));
126
+ Assert .assertEquals ("us-west-42" , awsStats .get ("region" ));
127
+ Assert .assertEquals (0 , awsStats .get ("retries" ));
128
+ Assert .assertEquals (2L , httpResponseStats .get ("content_length" ));
129
+ Assert .assertEquals (400 , httpResponseStats .get ("status" ));
130
+ Assert .assertEquals (false , subsegment .isInProgress ());
131
+ Assert .assertEquals (true , subsegment .isError ());
132
+ Assert .assertEquals (false , subsegment .isThrottle ());
133
+ Assert .assertEquals (false , subsegment .isFault ());
134
+ Assert .assertEquals (1 , cause .getExceptions ().size ());
135
+ Assert .assertEquals (true , cause .getExceptions ().get (0 ).isRemote ());
136
+ }
137
+ }
138
+
101
139
@ Test
102
140
public void testResponseDescriptors () throws Exception {
103
141
String responseBody = "{\" LastEvaluatedTableName\" :\" baz\" ,\" TableNames\" :[\" foo\" ,\" bar\" ,\" baz\" ]}" ;
@@ -490,7 +528,7 @@ public void testNoHeaderAddedWhenPropagationOff() {
490
528
491
529
interceptor .modifyHttpRequest (context , attributes );
492
530
493
- verify (mockRequest .toBuilder (), never ()).appendHeader (anyString (), anyString ());
531
+ verify (mockRequest .toBuilder (), never ()).putHeader (anyString (), anyString ());
494
532
}
495
533
496
534
@ Test
@@ -661,6 +699,22 @@ private static LambdaClient lambdaClient(SdkHttpClient mockClient) {
661
699
.build ();
662
700
}
663
701
702
+ private static LambdaClient lambdaClientDupInterceptor (SdkHttpClient mockClient ) {
703
+ return LambdaClient .builder ()
704
+ .httpClient (mockClient )
705
+ .endpointOverride (URI .create ("http://example.com" ))
706
+ .region (Region .of ("us-west-42" ))
707
+ .credentialsProvider (StaticCredentialsProvider .create (
708
+ AwsSessionCredentials .create ("key" , "secret" , "session" )
709
+ ))
710
+ .overrideConfiguration (ClientOverrideConfiguration .builder ()
711
+ .addExecutionInterceptor (new TracingInterceptor ())
712
+ .addExecutionInterceptor (new TracingInterceptor ())
713
+ .build ()
714
+ )
715
+ .build ();
716
+ }
717
+
664
718
private static LambdaAsyncClient lambdaAsyncClient (SdkAsyncHttpClient mockClient ) {
665
719
return LambdaAsyncClient .builder ()
666
720
.httpClient (mockClient )
0 commit comments