Skip to content

Commit 2acbc24

Browse files
authored
chore: Add test name to request logging and remove default region from pytest.ini (#2513)
* Add test name to request logging, remove default region from pytest.ini * Add aws default region for running unit tests
1 parent fae6ee4 commit 2acbc24

File tree

8 files changed

+38
-27
lines changed

8 files changed

+38
-27
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,4 +113,7 @@ venv.bak/
113113
.vscode
114114

115115
# PyCharm
116-
.idea
116+
.idea
117+
118+
# Companion stack config
119+
integration/config/file_to_s3_map_modified.json

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ init:
66
pip install -e '.[dev]'
77

88
test:
9-
pytest --cov samtranslator --cov-report term-missing --cov-fail-under 95 -n auto tests/*
9+
AWS_DEFAULT_REGION=us-east-1 pytest --cov samtranslator --cov-report term-missing --cov-fail-under 95 -n auto tests/*
1010

1111
test-fast:
1212
pytest -x --cov samtranslator --cov-report term-missing --cov-fail-under 95 -n auto tests/*

integration/combination/test_api_settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ def test_implicit_api_settings(self):
162162

163163
def verify_binary_media_request(self, url, expected_status_code):
164164
headers = {"accept": "image/png"}
165-
response = BaseTest.do_get_request_with_logging(url, headers)
165+
response = self.do_get_request_with_logging(url, headers)
166166

167167
status = response.status_code
168168
expected_file_path = str(Path(self.code_dir, "AWS_logo_RGB.png"))

integration/combination/test_api_with_authorizer_apikey.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,10 @@ def verify_authorized_request(
8080
header_value=None,
8181
):
8282
if not header_key or not header_value:
83-
response = BaseTest.do_get_request_with_logging(url)
83+
response = self.do_get_request_with_logging(url)
8484
else:
8585
headers = {header_key: header_value}
86-
response = BaseTest.do_get_request_with_logging(url, headers)
86+
response = self.do_get_request_with_logging(url, headers)
8787
status = response.status_code
8888
if status != expected_status_code:
8989
raise StatusCodeError(

integration/config/logger_configurations.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ def configure_request_logger(logger):
88
console_handler = logging.StreamHandler()
99
console_handler.setLevel(logging.INFO)
1010
console_handler.setFormatter(
11-
logging.Formatter("%(asctime)s %(message)s | Status: %(status)s | Headers: %(headers)s ")
11+
logging.Formatter(
12+
"\nREQUEST LOG [%(test)s] | Time: %(asctime)s %(message)s | Status: %(status)s | Headers: %(headers)s"
13+
)
1214
)
1315
logger.addHandler(console_handler)
1416
logger.propagate = False

integration/helpers/base_test.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ def stage(self, get_stage):
6060
def s3_bucket(self, get_s3):
6161
self.s3_bucket_name = get_s3
6262

63+
@pytest.fixture(autouse=True)
64+
def case_name(self, request):
65+
self.testcase = request.node.name
66+
6367
@classmethod
6468
@pytest.mark.usefixtures("get_prefix", "get_stage", "check_internal", "parameter_values", "get_s3")
6569
def setUpClass(cls):
@@ -470,7 +474,7 @@ def verify_get_request_response(self, url, expected_status_code, headers=None):
470474
headers : dict
471475
headers to use in request
472476
"""
473-
response = BaseTest.do_get_request_with_logging(url, headers)
477+
response = self.do_get_request_with_logging(url, headers)
474478
if response.status_code != expected_status_code:
475479
raise StatusCodeError(
476480
"Request to {} failed with status: {}, expected status: {}".format(
@@ -499,7 +503,7 @@ def verify_options_request(self, url, expected_status_code, headers=None):
499503
headers : dict
500504
headers to use in request
501505
"""
502-
response = BaseTest.do_options_request_with_logging(url, headers)
506+
response = self.do_options_request_with_logging(url, headers)
503507
if response.status_code != expected_status_code:
504508
raise StatusCodeError(
505509
"Request to {} failed with status: {}, expected status: {}".format(
@@ -544,8 +548,7 @@ def generate_parameter(key, value, previous_value=False, resolved_value="string"
544548
}
545549
return parameter
546550

547-
@staticmethod
548-
def do_get_request_with_logging(url, headers=None):
551+
def do_get_request_with_logging(self, url, headers=None):
549552
"""
550553
Perform a get request to an APIGW endpoint and log relevant info
551554
Parameters
@@ -557,11 +560,13 @@ def do_get_request_with_logging(url, headers=None):
557560
"""
558561
response = requests.get(url, headers=headers) if headers else requests.get(url)
559562
amazon_headers = RequestUtils(response).get_amazon_headers()
560-
REQUEST_LOGGER.info("Request made to " + url, extra={"status": response.status_code, "headers": amazon_headers})
563+
REQUEST_LOGGER.info(
564+
"Request made to " + url,
565+
extra={"test": self.testcase, "status": response.status_code, "headers": amazon_headers},
566+
)
561567
return response
562568

563-
@staticmethod
564-
def do_options_request_with_logging(url, headers=None):
569+
def do_options_request_with_logging(self, url, headers=None):
565570
"""
566571
Perform a options request to an APIGW endpoint and log relevant info
567572
Parameters
@@ -573,5 +578,8 @@ def do_options_request_with_logging(url, headers=None):
573578
"""
574579
response = requests.options(url, headers=headers) if headers else requests.options(url)
575580
amazon_headers = RequestUtils(response).get_amazon_headers()
576-
REQUEST_LOGGER.info("Request made to " + url, extra={"status": response.status_code, "headers": amazon_headers})
581+
REQUEST_LOGGER.info(
582+
"Request made to " + url,
583+
extra={"test": self.testcase, "status": response.status_code, "headers": amazon_headers},
584+
)
577585
return response

integration/single/test_function_with_http_api_and_auth.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from unittest.case import skipIf
22

33
import pytest
4+
import time
45

56
from integration.helpers.base_test import BaseTest
67
from integration.helpers.resource import current_region_does_not_support
@@ -21,23 +22,22 @@ def test_function_with_http_api_and_auth(self):
2122

2223
self.create_and_verify_stack("single/function_with_http_api_events_and_auth")
2324

25+
# This will be changed according to APIGW suggested wait time
26+
time.sleep(10)
27+
2428
implicitEndpoint = self.get_api_v2_endpoint("ServerlessHttpApi")
2529
self.assertEqual(
26-
BaseTest.do_get_request_with_logging(implicitEndpoint + "/default-auth").text, self.FUNCTION_OUTPUT
30+
self.do_get_request_with_logging(implicitEndpoint + "/default-auth").text, self.FUNCTION_OUTPUT
2731
)
28-
self.assertEqual(BaseTest.do_get_request_with_logging(implicitEndpoint + "/iam-auth").text, IAM_AUTH_OUTPUT)
32+
self.assertEqual(self.do_get_request_with_logging(implicitEndpoint + "/iam-auth").text, IAM_AUTH_OUTPUT)
2933

3034
defaultIamEndpoint = self.get_api_v2_endpoint("MyDefaultIamAuthHttpApi")
31-
self.assertEqual(
32-
BaseTest.do_get_request_with_logging(defaultIamEndpoint + "/no-auth").text, self.FUNCTION_OUTPUT
33-
)
34-
self.assertEqual(
35-
BaseTest.do_get_request_with_logging(defaultIamEndpoint + "/default-auth").text, IAM_AUTH_OUTPUT
36-
)
37-
self.assertEqual(BaseTest.do_get_request_with_logging(defaultIamEndpoint + "/iam-auth").text, IAM_AUTH_OUTPUT)
35+
self.assertEqual(self.do_get_request_with_logging(defaultIamEndpoint + "/no-auth").text, self.FUNCTION_OUTPUT)
36+
self.assertEqual(self.do_get_request_with_logging(defaultIamEndpoint + "/default-auth").text, IAM_AUTH_OUTPUT)
37+
self.assertEqual(self.do_get_request_with_logging(defaultIamEndpoint + "/iam-auth").text, IAM_AUTH_OUTPUT)
3838

3939
iamEnabledEndpoint = self.get_api_v2_endpoint("MyIamAuthEnabledHttpApi")
4040
self.assertEqual(
41-
BaseTest.do_get_request_with_logging(iamEnabledEndpoint + "/default-auth").text, self.FUNCTION_OUTPUT
41+
self.do_get_request_with_logging(iamEnabledEndpoint + "/default-auth").text, self.FUNCTION_OUTPUT
4242
)
43-
self.assertEqual(BaseTest.do_get_request_with_logging(iamEnabledEndpoint + "/iam-auth").text, IAM_AUTH_OUTPUT)
43+
self.assertEqual(self.do_get_request_with_logging(iamEnabledEndpoint + "/iam-auth").text, IAM_AUTH_OUTPUT)

pytest.ini

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
# NOTE: If debug breakpoints aren't working, comment out the code coverage line below
44
addopts = --cov samtranslator --cov-report term-missing --cov-fail-under 95
55
testpaths = tests
6-
env =
7-
AWS_DEFAULT_REGION = ap-southeast-1
86
markers =
97
slow: marks tests as slow (deselect with '-m "not slow"')
108
log_cli = 1

0 commit comments

Comments
 (0)