| 
									
										
										
										
											2017-10-17 01:06:22 +01:00
										 |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  | from moto import mock_xray_client, XRaySegment, mock_dynamodb2 | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  | import sure  # noqa | 
					
						
							| 
									
										
										
										
											2017-10-17 01:06:22 +01:00
										 |  |  | import boto3 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from moto.xray.mock_client import MockEmitter | 
					
						
							|  |  |  | import aws_xray_sdk.core as xray_core | 
					
						
							|  |  |  | import aws_xray_sdk.core.patcher as xray_core_patcher | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import botocore.client | 
					
						
							|  |  |  | import botocore.endpoint | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-17 01:06:22 +01:00
										 |  |  | original_make_api_call = botocore.client.BaseClient._make_api_call | 
					
						
							|  |  |  | original_encode_headers = botocore.endpoint.Endpoint._encode_headers | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import requests | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-17 01:06:22 +01:00
										 |  |  | original_session_request = requests.Session.request | 
					
						
							|  |  |  | original_session_prep_request = requests.Session.prepare_request | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_xray_client | 
					
						
							|  |  |  | @mock_dynamodb2 | 
					
						
							|  |  |  | def test_xray_dynamo_request_id(): | 
					
						
							|  |  |  |     # Could be ran in any order, so we need to tell sdk that its been unpatched | 
					
						
							|  |  |  |     xray_core_patcher._PATCHED_MODULES = set() | 
					
						
							|  |  |  |     xray_core.patch_all() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |     client = boto3.client("dynamodb", region_name="us-east-1") | 
					
						
							| 
									
										
										
										
											2017-10-17 01:06:22 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     with XRaySegment(): | 
					
						
							|  |  |  |         resp = client.list_tables() | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |         resp["ResponseMetadata"].should.contain("RequestId") | 
					
						
							|  |  |  |         id1 = resp["ResponseMetadata"]["RequestId"] | 
					
						
							| 
									
										
										
										
											2017-10-17 01:06:22 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     with XRaySegment(): | 
					
						
							|  |  |  |         client.list_tables() | 
					
						
							|  |  |  |         resp = client.list_tables() | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |         id2 = resp["ResponseMetadata"]["RequestId"] | 
					
						
							| 
									
										
										
										
											2017-10-17 01:06:22 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     id1.should_not.equal(id2) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |     setattr(botocore.client.BaseClient, "_make_api_call", original_make_api_call) | 
					
						
							|  |  |  |     setattr(botocore.endpoint.Endpoint, "_encode_headers", original_encode_headers) | 
					
						
							|  |  |  |     setattr(requests.Session, "request", original_session_request) | 
					
						
							|  |  |  |     setattr(requests.Session, "prepare_request", original_session_prep_request) | 
					
						
							| 
									
										
										
										
											2017-10-17 01:06:22 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_xray_client | 
					
						
							|  |  |  | def test_xray_udp_emitter_patched(): | 
					
						
							|  |  |  |     # Could be ran in any order, so we need to tell sdk that its been unpatched | 
					
						
							|  |  |  |     xray_core_patcher._PATCHED_MODULES = set() | 
					
						
							|  |  |  |     xray_core.patch_all() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assert isinstance(xray_core.xray_recorder._emitter, MockEmitter) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |     setattr(botocore.client.BaseClient, "_make_api_call", original_make_api_call) | 
					
						
							|  |  |  |     setattr(botocore.endpoint.Endpoint, "_encode_headers", original_encode_headers) | 
					
						
							|  |  |  |     setattr(requests.Session, "request", original_session_request) | 
					
						
							|  |  |  |     setattr(requests.Session, "prepare_request", original_session_prep_request) | 
					
						
							| 
									
										
										
										
											2017-10-17 01:06:22 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_xray_client | 
					
						
							|  |  |  | def test_xray_context_patched(): | 
					
						
							|  |  |  |     # Could be ran in any order, so we need to tell sdk that its been unpatched | 
					
						
							|  |  |  |     xray_core_patcher._PATCHED_MODULES = set() | 
					
						
							|  |  |  |     xray_core.patch_all() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |     xray_core.xray_recorder._context.context_missing.should.equal("LOG_ERROR") | 
					
						
							| 
									
										
										
										
											2017-10-17 01:06:22 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  |     setattr(botocore.client.BaseClient, "_make_api_call", original_make_api_call) | 
					
						
							|  |  |  |     setattr(botocore.endpoint.Endpoint, "_encode_headers", original_encode_headers) | 
					
						
							|  |  |  |     setattr(requests.Session, "request", original_session_request) | 
					
						
							|  |  |  |     setattr(requests.Session, "prepare_request", original_session_prep_request) |