Skip to content

Commit 20af396

Browse files
vshantheCopilot
andauthored
Integration test fix for flaky test (#854)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent fc305b5 commit 20af396

7 files changed

Lines changed: 62 additions & 41 deletions

File tree

tests/integration/firewalls/test_firewalls.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def test_list_firewall(firewall_id):
4545
+ ["list", "--no-headers", "--text", "--delimiter", ","]
4646
)
4747

48-
assert re.search(firewall_id + "," + FIREWALL_LABEL + ",enabled", result)
48+
assert re.search(rf"^{firewall_id},", result, re.MULTILINE)
4949

5050

5151
@pytest.mark.smoke

tests/integration/linodes/fixtures.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
get_random_region_with_caps,
1111
get_random_text,
1212
retry_exec_test_command_with_delay,
13+
wait_for_condition,
1314
)
1415
from tests.integration.linodes.helpers import (
1516
DEFAULT_LABEL,
@@ -133,8 +134,14 @@ def linode_instance_config_tests(linode_cloud_firewall):
133134
def linode_disk_config(linode_instance_config_tests):
134135
linode_id = linode_instance_config_tests
135136

137+
def disks_ready():
138+
disks = get_disk_ids(linode_id=linode_id)
139+
return len(disks) > 0
140+
141+
wait_for_condition(10, 120, disks_ready)
142+
143+
disk_id = get_disk_ids(linode_id=linode_id)[0]
136144
label = get_random_text(5) + "_config"
137-
disk_id = get_disk_ids(linode_id=linode_id)[1]
138145

139146
config_id = exec_test_command(
140147
BASE_CMDS["linodes"]

tests/integration/linodes/helpers.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import json
22
import time
33

4-
from tests.integration.helpers import BASE_CMDS, exec_test_command
4+
from tests.integration.helpers import (
5+
BASE_CMDS,
6+
exec_test_command,
7+
)
58

69
DEFAULT_RANDOM_PASS = exec_test_command(["openssl", "rand", "-base64", "32"])
710
DEFAULT_REGION = "us-ord"

tests/integration/linodes/test_backups.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,9 @@ def test_create_backup_with_backup_enabled(linode_backup_enabled):
9191
os.environ.get("RUN_LONG_TESTS", None) != "True",
9292
reason="Skipping long-running Test, to run set RUN_LONG_TESTS=True",
9393
)
94-
def test_take_snapshot_of_linode():
94+
def test_take_snapshot_of_linode(firewall_id):
9595
# get linode id after creation and wait for "running" status
96-
linode_id = create_linode_and_wait()
96+
linode_id = create_linode_and_wait(firewall_id)
9797

9898
snapshot_label = "test_snapshot1"
9999

tests/integration/linodes/test_configs.py

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,36 +18,31 @@
1818
)
1919

2020

21-
def test_config_create(linode_instance_config_tests):
21+
def test_config_create(linode_instance_config_tests, linode_disk_config):
2222
linode_id = linode_instance_config_tests
23+
config_id = linode_disk_config
2324

24-
label = get_random_text(5) + "_config"
25-
disk_id = get_disk_ids(linode_id=linode_id)[1]
26-
27-
result = exec_test_command(
25+
res = exec_test_command(
2826
BASE_CMDS["linodes"]
2927
+ [
30-
"config-create",
28+
"config-view",
3129
linode_id,
32-
"--label",
33-
label,
34-
"--devices.sda.disk_id",
35-
disk_id,
30+
config_id,
3631
"--text",
3732
]
3833
)
3934

4035
headers = ["id", "label", "kernel"]
41-
42-
assert_headers_in_lines(headers, result.splitlines())
43-
assert label in result
36+
assert_headers_in_lines(headers, res.splitlines())
37+
assert config_id in res
4438

4539

4640
def test_config_delete(linode_instance_config_tests):
4741
linode_id = linode_instance_config_tests
4842

43+
disk_id = get_disk_ids(linode_id=linode_id)[0]
44+
4945
label = get_random_text(5) + "_config"
50-
disk_id = get_disk_ids(linode_id=linode_id)[1]
5146

5247
config_id = exec_test_command(
5348
BASE_CMDS["linodes"]
@@ -65,12 +60,7 @@ def test_config_delete(linode_instance_config_tests):
6560
)
6661

6762
retry_exec_test_command_with_delay(
68-
BASE_CMDS["linodes"]
69-
+ [
70-
"config-delete",
71-
linode_id,
72-
config_id,
73-
]
63+
BASE_CMDS["linodes"] + ["config-delete", linode_id, config_id]
7464
)
7565

7666

tests/integration/linodes/test_disk.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
def test_disk_resize_clone_and_create(linode_instance_disk_tests):
1818
linode_id = linode_instance_disk_tests
1919

20-
disk_id = get_disk_ids(linode_id=linode_id)[1]
20+
disk_id = get_disk_ids(linode_id=linode_id)[0]
2121

2222
# resize disk
2323
retry_exec_test_command_with_delay(
@@ -99,7 +99,7 @@ def disk_poll_func():
9999

100100
def test_disk_reset_password(linode_instance_disk_tests):
101101
linode_id = linode_instance_disk_tests
102-
disk_id = get_disk_ids(linode_id)[1]
102+
disk_id = get_disk_ids(linode_id)[0]
103103

104104
retry_exec_test_command_with_delay(
105105
BASE_CMDS["linodes"]
@@ -118,7 +118,7 @@ def test_disk_reset_password(linode_instance_disk_tests):
118118

119119
def test_disk_update(linode_instance_disk_tests):
120120
linode_id = linode_instance_disk_tests
121-
disk_id = get_disk_ids(linode_id)[1]
121+
disk_id = get_disk_ids(linode_id)[0]
122122

123123
update_label = get_random_text(5) + "newdisk"
124124

tests/integration/linodes/test_interfaces.py

Lines changed: 34 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from tests.integration.helpers import (
55
BASE_CMDS,
66
exec_test_command,
7+
wait_for_condition,
78
)
89
from tests.integration.linodes.fixtures import ( # noqa: F401
910
linode_with_vpc_interface_as_args,
@@ -14,21 +15,42 @@
1415
def assert_interface_configuration(
1516
linode_json: Dict[str, Any], vpc_json: Dict[str, Any]
1617
):
17-
config_json = json.loads(
18-
exec_test_command(
19-
BASE_CMDS["linodes"]
20-
+ [
21-
"configs-list",
22-
str(linode_json["id"]),
23-
"--json",
24-
"--suppress-warnings",
25-
]
18+
linode_id = str(linode_json["id"])
19+
configs = []
20+
21+
def fetch_configs():
22+
nonlocal configs
23+
configs = json.loads(
24+
exec_test_command(
25+
BASE_CMDS["linodes"]
26+
+ [
27+
"configs-list",
28+
linode_id,
29+
"--json",
30+
"--suppress-warnings",
31+
]
32+
)
2633
)
27-
)[0]
34+
return len(configs) > 0
35+
36+
wait_for_condition(5, 180, fetch_configs)
37+
38+
assert configs, f"No configs found for Linode {linode_id}"
39+
config_json = configs[0]
40+
41+
interfaces = config_json["interfaces"]
2842

29-
vpc_interface = config_json["interfaces"][0]
30-
public_interface = config_json["interfaces"][1]
43+
vpc_interface = next((i for i in interfaces if i["purpose"] == "vpc"), None)
44+
public_interface = next(
45+
(i for i in interfaces if i["purpose"] == "public"), None
46+
)
3147

48+
assert (
49+
vpc_interface
50+
), "Expected interface with purpose 'vpc' in configuration"
51+
assert (
52+
public_interface
53+
), "Expected interface with purpose 'public' in configuration"
3254
assert vpc_interface["primary"]
3355
assert vpc_interface["purpose"] == "vpc"
3456
assert vpc_interface["subnet_id"] == vpc_json["subnets"][0]["id"]
@@ -38,7 +60,6 @@ def assert_interface_configuration(
3860
assert vpc_interface["ip_ranges"][0] == "10.0.0.6/32"
3961

4062
assert not public_interface["primary"]
41-
assert public_interface["purpose"] == "public"
4263

4364

4465
def test_with_vpc_interface_as_args(linode_with_vpc_interface_as_args):

0 commit comments

Comments
 (0)