Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit eac8daf

Browse filesBrowse files
author
Ace Nassri
authored
Change-Id: Ic1fece4ad23523038702068a87b5ec2f1857f18f
1 parent 172ee1d commit eac8daf
Copy full SHA for eac8daf

File tree

Expand file treeCollapse file tree

2 files changed

+23
-18
lines changed
Filter options
Expand file treeCollapse file tree

2 files changed

+23
-18
lines changed

‎functions/tips/main.py

Copy file name to clipboardExpand all lines: functions/tips/main.py
+7-6Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
# limitations under the License.
1414

1515
# [START functions_tips_infinite_retries]
16-
from datetime import datetime
16+
from datetime import datetime, timezone
1717
# [END functions_tips_infinite_retries]
1818

1919
# [START functions_tips_gcp_apis]
@@ -150,19 +150,20 @@ def avoid_infinite_retries(data, context):
150150
None; output is written to Stackdriver Logging
151151
"""
152152

153-
timestamp = data.timestamp
153+
timestamp = context.timestamp
154154

155155
event_time = parser.parse(timestamp)
156-
event_age = (datetime.now() - event_time).total_seconds() * 1000
156+
event_age = (datetime.now(timezone.utc) - event_time).total_seconds()
157+
event_age_ms = event_age * 1000
157158

158159
# Ignore events that are too old
159160
max_age_ms = 10000
160-
if event_age > max_age_ms:
161-
print('Dropped {} (age {}ms)'.format(context.event_id, event_age))
161+
if event_age_ms > max_age_ms:
162+
print('Dropped {} (age {}ms)'.format(context.event_id, event_age_ms))
162163
return 'Timeout'
163164

164165
# Do what the function is supposed to do
165-
print('Processed {} (age {}ms)'.format(context.event_id, event_age))
166+
print('Processed {} (age {}ms)'.format(context.event_id, event_age_ms))
166167
return
167168
# [END functions_tips_infinite_retries]
168169

‎functions/tips/main_test.py

Copy file name to clipboardExpand all lines: functions/tips/main_test.py
+16-12Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
import datetime
15+
from collections import UserDict
16+
from datetime import datetime, timedelta, timezone
1617
from unittest.mock import MagicMock, Mock, patch
1718

1819
import flask
@@ -52,23 +53,26 @@ def test_connection_pooling_404(app):
5253

5354

5455
def test_avoid_infinite_retries(capsys):
55-
now = datetime.datetime.now()
56+
now = datetime.now(timezone.utc)
5657

57-
with patch('main.datetime', wraps=datetime.datetime) as datetime_mock:
58+
with patch('main.datetime', wraps=datetime) as datetime_mock:
5859
datetime_mock.now = Mock(return_value=now)
59-
old_event = Mock(
60-
timestamp=(now - datetime.timedelta(seconds=15)).isoformat())
61-
young_event = Mock(
62-
timestamp=(now - datetime.timedelta(seconds=5)).isoformat())
63-
context = Mock(event_id='fake_event_id')
6460

65-
main.avoid_infinite_retries(old_event, context)
61+
old_context = UserDict()
62+
old_context.timestamp = (now - timedelta(seconds=15)).isoformat()
63+
old_context.event_id = 'old_event_id'
64+
65+
young_context = UserDict()
66+
young_context.timestamp = (now - timedelta(seconds=5)).isoformat()
67+
young_context.event_id = 'young_event_id'
68+
69+
main.avoid_infinite_retries(None, old_context)
6670
out, _ = capsys.readouterr()
67-
assert 'Dropped {} (age 15000.0ms)'.format(context.event_id) in out
71+
assert f"Dropped {old_context.event_id} (age 15000.0ms)" in out
6872

69-
main.avoid_infinite_retries(young_event, context)
73+
main.avoid_infinite_retries(None, young_context)
7074
out, _ = capsys.readouterr()
71-
assert 'Processed {} (age 5000.0ms)'.format(context.event_id) in out
75+
assert f"Processed {young_context.event_id} (age 5000.0ms)" in out
7276

7377

7478
def test_retry_or_not():

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.