Skip to content

Commit ef3251f

Browse files
committed
fix failing tests
1 parent 195e2cd commit ef3251f

File tree

4 files changed

+58
-30
lines changed

4 files changed

+58
-30
lines changed

test/integration/helpers.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ def retry_sending_request(
3737
"Api Error: Failed after all retry attempts"
3838
) from e
3939
time.sleep(backoff)
40+
wait = backoff * attempt + random.uniform(0, 2)
41+
print(f"Attempt {attempt} failed ({e}), retrying in {wait:.1f}s...")
42+
time.sleep(wait)
43+
return None
4044

4145

4246
def send_request_when_resource_available(

test/integration/models/account/test_account.py

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def test_get_login(test_linode_client):
4747
assert "ip" in str(login._raw_json)
4848
assert "datetime" in str(login._raw_json)
4949
assert "status" in str(login._raw_json)
50-
assert login_updated < 15
50+
assert login_updated < 60
5151

5252

5353
def test_get_account_settings(test_linode_client):
@@ -101,29 +101,29 @@ def test_latest_get_event(test_linode_client, e2e_test_firewall):
101101
firewall=e2e_test_firewall,
102102
)
103103

104-
events = client.load(Event, "")
104+
try:
105+
for _ in range(5):
106+
events = client.load(Event, "")
107+
latest_events = events._raw_json.get("data", [])[:50]
105108

106-
latest_events = events._raw_json.get("data")
107-
108-
linode.delete()
109-
110-
for event in latest_events[:15]:
111-
if label == event["entity"]["label"]:
112-
break
113-
else:
114-
assert False, f"Linode '{label}' not found in the last 15 events"
109+
if any(
110+
event["entity"]["id"] == linode.id for event in latest_events
111+
):
112+
break
113+
time.sleep(5)
114+
else:
115+
assert False, f"Linode '{label}' not found in recent events"
116+
finally:
117+
linode.delete()
115118

116119

117120
def test_get_user(test_linode_client):
118121
client = test_linode_client
119122

120-
events = client.load(Event, "")
121-
122-
username = events._raw_json.get("data")[0]["username"]
123-
124-
user = client.load(User, username)
123+
profile = client.profile()
124+
user = client.load(User, profile.username)
125125

126-
assert username == user.username
126+
assert user.username == profile.username
127127
assert "email" in user._raw_json
128128

129129

test/integration/models/firewall/test_firewall.py

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,22 +63,35 @@ def test_update_firewall_rules(test_linode_client, test_firewall):
6363
assert firewall.rules.outbound_policy == "DROP"
6464

6565

66-
def test_get_devices(test_linode_client, linode_fw, test_firewall):
66+
def test_get_devices(test_linode_client, linode_fw):
6767
linode = linode_fw
6868

69-
test_firewall.device_create(int(linode.id))
69+
firewalls = list(linode.firewalls())
70+
assert len(firewalls) > 0
7071

71-
firewall = test_linode_client.load(Firewall, test_firewall.id)
72+
firewall = test_linode_client.load(Firewall, firewalls[0].id)
73+
74+
devices = list(firewall.devices)
75+
assert any(d.entity.id == linode.id for d in devices)
76+
77+
78+
def test_get_device(test_linode_client, linode_fw):
79+
linode = linode_fw
80+
81+
firewalls = list(linode.firewalls())
82+
assert firewalls, "No firewalls found on Linode"
7283

73-
assert len(firewall.devices) > 0
84+
firewall = test_linode_client.load(Firewall, firewalls[0].id)
7485

86+
devices = list(firewall.devices)
87+
assert devices, "No devices found on Firewall"
7588

76-
def test_get_device(test_linode_client, test_firewall, linode_fw):
77-
firewall = test_firewall
89+
device = next((d for d in devices if d.entity.id == linode.id), None)
90+
assert device is not None, f"No FirewallDevice found for Linode {linode.id}"
7891

7992
firewall_device = test_linode_client.load(
80-
FirewallDevice, firewall.devices.first().id, firewall.id
93+
FirewallDevice, device.id, firewall.id
8194
)
8295

8396
assert firewall_device.entity.type == "linode"
84-
assert "/v4/linode/instances/" in firewall_device.entity.url
97+
assert f"/v4/linode/instances/{linode.id}" in firewall_device.entity.url

test/integration/models/nodebalancer/test_nodebalancer.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,20 +48,31 @@ def linode_with_private_ip(test_linode_client, e2e_test_firewall):
4848

4949

5050
@pytest.fixture(scope="session")
51-
def create_nb_config(test_linode_client, e2e_test_firewall):
51+
def create_nb_config(test_linode_client, e2e_test_firewall, linode_with_private_ip):
5252
client = test_linode_client
53-
label = get_test_label(8)
53+
nb_label = get_test_label()
54+
node_label = get_test_label(8)
5455

5556
nb = client.nodebalancer_create(
56-
region=TEST_REGION, label=label, firewall=e2e_test_firewall.id
57+
region=TEST_REGION,
58+
label=nb_label,
59+
firewall=e2e_test_firewall.id,
5760
)
5861

5962
config = nb.config_create()
63+
linode = linode_with_private_ip
64+
address = next(a for a in linode.ipv4 if a.startswith("192.168"))
65+
node = config.node_create(node_label, f"{address}:80", weight=50, mode="accept")
6066

6167
yield config
6268

63-
config.delete()
64-
nb.delete()
69+
# cleanup
70+
for obj in [node, config, nb]:
71+
try:
72+
obj.delete()
73+
except ApiError as e:
74+
if e.status != 404:
75+
raise
6576

6677

6778
@pytest.fixture(scope="session")

0 commit comments

Comments
 (0)