Skip to content

Commit 098a786

Browse files
tests: use datetime.now() with timezone to handle DST correctly (#531)
* tests: use datetime.now() to ensure DST is handled correctly * 🦉 Updates from OwlBot See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * test: change fixture scope * 🦉 Updates from OwlBot See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: larkee <[email protected]> Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
1 parent b294dbf commit 098a786

File tree

1 file changed

+41
-36
lines changed

1 file changed

+41
-36
lines changed

tests/system/test_backup_api.py

Lines changed: 41 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,9 @@ def diff_config_instance(
7979
_helpers.scrub_instance_ignore_not_found(diff_config_instance)
8080

8181

82-
@pytest.fixture(scope="session")
83-
def database_version_time():
84-
return datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc)
82+
@pytest.fixture(scope="function")
83+
def database_version_time(shared_database): # Ensure database exists.
84+
return datetime.datetime.now(datetime.timezone.utc)
8585

8686

8787
@pytest.fixture(scope="session")
@@ -124,8 +124,9 @@ def test_backup_workflow(
124124
)
125125

126126
backup_id = _helpers.unique_id("backup_id", separator="_")
127-
expire_time = datetime.datetime.utcnow() + datetime.timedelta(days=3)
128-
expire_time = expire_time.replace(tzinfo=datetime.timezone.utc)
127+
expire_time = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(
128+
days=3
129+
)
129130
encryption_enum = CreateBackupEncryptionConfig.EncryptionType
130131
encryption_config = CreateBackupEncryptionConfig(
131132
encryption_type=encryption_enum.GOOGLE_DEFAULT_ENCRYPTION,
@@ -162,8 +163,9 @@ def test_backup_workflow(
162163
)
163164

164165
# Update with valid argument.
165-
valid_expire_time = datetime.datetime.utcnow() + datetime.timedelta(days=7)
166-
valid_expire_time = valid_expire_time.replace(tzinfo=datetime.timezone.utc)
166+
valid_expire_time = datetime.datetime.now(
167+
datetime.timezone.utc
168+
) + datetime.timedelta(days=7)
167169
backup.update_expire_time(valid_expire_time)
168170
assert valid_expire_time == backup.expire_time
169171

@@ -193,15 +195,12 @@ def test_backup_workflow(
193195

194196

195197
def test_backup_create_w_version_time_dflt_to_create_time(
196-
shared_instance,
197-
shared_database,
198-
database_version_time,
199-
backups_to_delete,
200-
databases_to_delete,
198+
shared_instance, shared_database, backups_to_delete, databases_to_delete,
201199
):
202200
backup_id = _helpers.unique_id("backup_id", separator="_")
203-
expire_time = datetime.datetime.utcnow() + datetime.timedelta(days=3)
204-
expire_time = expire_time.replace(tzinfo=datetime.timezone.utc)
201+
expire_time = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(
202+
days=3
203+
)
205204

206205
# Create backup.
207206
backup = shared_instance.backup(
@@ -228,7 +227,7 @@ def test_backup_create_w_version_time_dflt_to_create_time(
228227

229228
def test_backup_create_w_invalid_expire_time(shared_instance, shared_database):
230229
backup_id = _helpers.unique_id("backup_id", separator="_")
231-
expire_time = datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc)
230+
expire_time = datetime.datetime.now(datetime.timezone.utc)
232231

233232
backup = shared_instance.backup(
234233
backup_id, database=shared_database, expire_time=expire_time
@@ -243,10 +242,12 @@ def test_backup_create_w_invalid_version_time_past(
243242
shared_instance, shared_database,
244243
):
245244
backup_id = _helpers.unique_id("backup_id", separator="_")
246-
expire_time = datetime.datetime.utcnow() + datetime.timedelta(days=3)
247-
expire_time = expire_time.replace(tzinfo=datetime.timezone.utc)
248-
version_time = datetime.datetime.utcnow() - datetime.timedelta(days=10)
249-
version_time = version_time.replace(tzinfo=datetime.timezone.utc)
245+
expire_time = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(
246+
days=3
247+
)
248+
version_time = datetime.datetime.now(datetime.timezone.utc) - datetime.timedelta(
249+
days=10
250+
)
250251

251252
backup = shared_instance.backup(
252253
backup_id,
@@ -264,10 +265,12 @@ def test_backup_create_w_invalid_version_time_future(
264265
shared_instance, shared_database,
265266
):
266267
backup_id = _helpers.unique_id("backup_id", separator="_")
267-
expire_time = datetime.datetime.utcnow() + datetime.timedelta(days=3)
268-
expire_time = expire_time.replace(tzinfo=datetime.timezone.utc)
269-
version_time = datetime.datetime.utcnow() + datetime.timedelta(days=2)
270-
version_time = version_time.replace(tzinfo=datetime.timezone.utc)
268+
expire_time = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(
269+
days=3
270+
)
271+
version_time = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(
272+
days=2
273+
)
271274

272275
backup = shared_instance.backup(
273276
backup_id,
@@ -289,8 +292,9 @@ def test_database_restore_to_diff_instance(
289292
databases_to_delete,
290293
):
291294
backup_id = _helpers.unique_id("backup_id", separator="_")
292-
expire_time = datetime.datetime.utcnow() + datetime.timedelta(days=3)
293-
expire_time = expire_time.replace(tzinfo=datetime.timezone.utc)
295+
expire_time = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(
296+
days=3
297+
)
294298

295299
# Create backup.
296300
backup = shared_instance.backup(
@@ -322,8 +326,9 @@ def test_multi_create_cancel_update_error_restore_errors(
322326
):
323327
backup_id_1 = _helpers.unique_id("backup_id1", separator="_")
324328
backup_id_2 = _helpers.unique_id("backup_id2", separator="_")
325-
expire_time = datetime.datetime.utcnow() + datetime.timedelta(days=3)
326-
expire_time = expire_time.replace(tzinfo=datetime.timezone.utc)
329+
expire_time = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(
330+
days=3
331+
)
327332

328333
backup1 = shared_instance.backup(
329334
backup_id_1, database=shared_database, expire_time=expire_time
@@ -354,8 +359,8 @@ def test_multi_create_cancel_update_error_restore_errors(
354359

355360
# Update expire time to invalid value.
356361
max_expire_days = 366 # documented maximum
357-
invalid_expire_time = datetime.datetime.now().replace(
358-
tzinfo=datetime.timezone.utc
362+
invalid_expire_time = datetime.datetime.now(
363+
datetime.timezone.utc
359364
) + datetime.timedelta(days=max_expire_days + 1)
360365
with pytest.raises(exceptions.InvalidArgument):
361366
backup1.update_expire_time(invalid_expire_time)
@@ -385,8 +390,9 @@ def test_instance_list_backups(
385390
backup_id_1 = _helpers.unique_id("backup_id1", separator="_")
386391
backup_id_2 = _helpers.unique_id("backup_id2", separator="_")
387392

388-
expire_time_1 = datetime.datetime.utcnow() + datetime.timedelta(days=21)
389-
expire_time_1 = expire_time_1.replace(tzinfo=datetime.timezone.utc)
393+
expire_time_1 = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(
394+
days=21
395+
)
390396
expire_time_1_stamp = expire_time_1.strftime("%Y-%m-%dT%H:%M:%S.%fZ")
391397

392398
backup1 = shared_instance.backup(
@@ -396,8 +402,9 @@ def test_instance_list_backups(
396402
version_time=database_version_time,
397403
)
398404

399-
expire_time_2 = datetime.datetime.utcnow() + datetime.timedelta(days=1)
400-
expire_time_2 = expire_time_2.replace(tzinfo=datetime.timezone.utc)
405+
expire_time_2 = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(
406+
days=1
407+
)
401408
backup2 = shared_instance.backup(
402409
backup_id_2, database=second_database, expire_time=expire_time_2
403410
)
@@ -408,9 +415,7 @@ def test_instance_list_backups(
408415
op1.result() # blocks indefinitely
409416
backup1.reload()
410417

411-
create_time_compare = datetime.datetime.utcnow().replace(
412-
tzinfo=datetime.timezone.utc
413-
)
418+
create_time_compare = datetime.datetime.now(datetime.timezone.utc)
414419
create_time_stamp = create_time_compare.strftime("%Y-%m-%dT%H:%M:%S.%fZ")
415420

416421
backup2.create()

0 commit comments

Comments
 (0)