AWS X-Ray client mock. (#1255)
* X-Ray Client SDK patched Fixes #1250 * Fixed flake8 * Fixed some issues * Fixed flake8 * Fixed more typos * Fixed python2 string * Fixed aws-sdk patch order * Added more test cases to test the patching
This commit is contained in:
parent
2bb3e841d1
commit
49ddb500a8
11 changed files with 273 additions and 8 deletions
|
|
@ -414,7 +414,8 @@ def test_get_authorization_token_assume_region():
|
|||
client = boto3.client('ecr', region_name='us-east-1')
|
||||
auth_token_response = client.get_authorization_token()
|
||||
|
||||
list(auth_token_response.keys()).should.equal(['authorizationData', 'ResponseMetadata'])
|
||||
auth_token_response.should.contain('authorizationData')
|
||||
auth_token_response.should.contain('ResponseMetadata')
|
||||
auth_token_response['authorizationData'].should.equal([
|
||||
{
|
||||
'authorizationToken': 'QVdTOnVzLWVhc3QtMS1hdXRoLXRva2Vu',
|
||||
|
|
@ -429,7 +430,8 @@ def test_get_authorization_token_explicit_regions():
|
|||
client = boto3.client('ecr', region_name='us-east-1')
|
||||
auth_token_response = client.get_authorization_token(registryIds=['us-east-1', 'us-west-1'])
|
||||
|
||||
list(auth_token_response.keys()).should.equal(['authorizationData', 'ResponseMetadata'])
|
||||
auth_token_response.should.contain('authorizationData')
|
||||
auth_token_response.should.contain('ResponseMetadata')
|
||||
auth_token_response['authorizationData'].should.equal([
|
||||
{
|
||||
'authorizationToken': 'QVdTOnVzLWVhc3QtMS1hdXRoLXRva2Vu',
|
||||
|
|
|
|||
72
tests/test_xray/test_xray_client.py
Normal file
72
tests/test_xray/test_xray_client.py
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
from __future__ import unicode_literals
|
||||
from moto import mock_xray_client, XRaySegment, mock_dynamodb2
|
||||
import sure # noqa
|
||||
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
|
||||
original_make_api_call = botocore.client.BaseClient._make_api_call
|
||||
original_encode_headers = botocore.endpoint.Endpoint._encode_headers
|
||||
|
||||
import requests
|
||||
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()
|
||||
|
||||
client = boto3.client('dynamodb', region_name='us-east-1')
|
||||
|
||||
with XRaySegment():
|
||||
resp = client.list_tables()
|
||||
resp['ResponseMetadata'].should.contain('RequestId')
|
||||
id1 = resp['ResponseMetadata']['RequestId']
|
||||
|
||||
with XRaySegment():
|
||||
client.list_tables()
|
||||
resp = client.list_tables()
|
||||
id2 = resp['ResponseMetadata']['RequestId']
|
||||
|
||||
id1.should_not.equal(id2)
|
||||
|
||||
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)
|
||||
|
||||
|
||||
@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)
|
||||
|
||||
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)
|
||||
|
||||
|
||||
@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()
|
||||
|
||||
xray_core.xray_recorder._context.context_missing.should.equal('LOG_ERROR')
|
||||
|
||||
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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue