From 0f7439d997ca6aca54a9babf68fe0f5e4ab016ad Mon Sep 17 00:00:00 2001 From: Karel van Klink <karel.vanklink@geant.org> Date: Fri, 26 Apr 2024 16:47:50 +0200 Subject: [PATCH] Avoid race conditions in unit tests --- test/cli/test_imports.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/test/cli/test_imports.py b/test/cli/test_imports.py index f8e5324b..d7598fe0 100644 --- a/test/cli/test_imports.py +++ b/test/cli/test_imports.py @@ -1,4 +1,5 @@ import json +import time from pathlib import Path import pytest @@ -191,6 +192,7 @@ def test_import_iptrunk_success(iptrunk_data): import_iptrunks(iptrunk_data()["path"]) + time.sleep(1) assert len(get_subscriptions([ProductType.IMPORTED_IP_TRUNK])) == 0 assert len(get_active_iptrunk_subscriptions()) == 1 @@ -201,6 +203,7 @@ def test_import_site_success(site_data): import_sites(mock_site_data["path"]) + time.sleep(1) assert len(get_subscriptions([ProductType.IMPORTED_SITE])) == 0 subscription = retrieve_subscription_by_subscription_instance_value( resource_type="site_name", value=mock_site_data["data"]["site_name"] @@ -214,6 +217,7 @@ def test_import_site_twice(site_data, capfd): # Second identical import should print ValidationError to stdout import_sites(path_location) + time.sleep(1) out, _ = capfd.readouterr() assert ( """Validation error: 4 validation errors for SiteImportModel @@ -237,6 +241,7 @@ def test_import_site_with_invalid_data(site_data, capfd): assert SubscriptionTable.query.count() == 0 import_sites(incorrect_site_data["path"]) + time.sleep(1) out, _ = capfd.readouterr() assert ( """Validation error: 2 validation errors for SiteImportModel @@ -252,6 +257,7 @@ site_longitude def test_import_router_success(site_subscription_factory, router_data): assert SubscriptionTable.query.count() == 0 import_routers(router_data()["path"]) + time.sleep(1) assert len(get_active_router_subscriptions()) == 1 @@ -259,6 +265,7 @@ def test_import_router_with_invalid_data(router_data, capfd): broken_data = router_data(hostname="", router_lo_ipv6_address="Not an IP address") import_routers(broken_data["path"]) # Only a Site has been added, no Router + time.sleep(1) assert SubscriptionTable.query.count() == 1 out, _ = capfd.readouterr() # The extra space at the end of the next line is required, and not dangling by accident. @@ -273,6 +280,7 @@ def test_import_router_with_invalid_data(router_data, capfd): def test_import_iptrunk_successful(iptrunk_data): assert SubscriptionTable.query.count() == 0 import_iptrunks(iptrunk_data()["path"]) + time.sleep(1) assert SubscriptionTable.query.count() == 5 assert len(get_active_iptrunk_subscriptions()) == 1 @@ -280,6 +288,7 @@ def test_import_iptrunk_successful(iptrunk_data): def test_import_iptrunk_invalid_router_id_side_a_and_b(iptrunk_data, capfd): broken_data = iptrunk_data(side_a_node="Doesn't exist", side_b_node="Also doesn't exist") import_iptrunks(broken_data["path"]) + time.sleep(1) out, _ = capfd.readouterr() assert SubscriptionTable.query.count() == 4 assert len(get_active_iptrunk_subscriptions()) == 0 @@ -299,8 +308,9 @@ def test_import_iptrunk_non_unique_members_side_a_and_b(iptrunk_data, faker, cap side_b_members = [duplicate_interface for _ in range(5)] broken_data = iptrunk_data(side_a_members=side_a_members, side_b_members=side_b_members) import_iptrunks(broken_data["path"]) - out, _ = capfd.readouterr() + time.sleep(1) + out, _ = capfd.readouterr() assert SubscriptionTable.query.count() == 4 assert len(get_active_iptrunk_subscriptions()) == 0 assert ( @@ -322,8 +332,9 @@ def test_import_iptrunk_side_a_member_count_mismatch(iptrunk_data, faker, capfd) ] broken_data = iptrunk_data(side_a_members=side_a_members, side_b_members=side_b_members) import_iptrunks(broken_data["path"]) - out, _ = capfd.readouterr() + time.sleep(1) + out, _ = capfd.readouterr() assert SubscriptionTable.query.count() == 4 assert len(get_active_iptrunk_subscriptions()) == 0 assert ( @@ -337,6 +348,7 @@ __root__ def test_import_office_router_success(office_router_data): assert SubscriptionTable.query.count() == 0 import_office_routers(office_router_data()["path"]) + time.sleep(1) assert SubscriptionTable.query.count() == 2 assert len(get_subscriptions([ProductType.IMPORTED_OFFICE_ROUTER])) == 0 assert len(get_subscriptions([ProductType.OFFICE_ROUTER])) == 1 @@ -345,6 +357,7 @@ def test_import_office_router_success(office_router_data): def test_import_super_pop_switch_success(super_pop_switch_data): assert SubscriptionTable.query.count() == 0 import_super_pop_switches(super_pop_switch_data()["path"]) + time.sleep(1) assert SubscriptionTable.query.count() == 2 assert len(get_subscriptions([ProductType.IMPORTED_SUPER_POP_SWITCH])) == 0 assert len(get_subscriptions([ProductType.SUPER_POP_SWITCH])) == 1 -- GitLab