Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion test/integration/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,9 @@ def retry_sending_request(
raise Exception(
"Api Error: Failed after all retry attempts"
) from e
time.sleep(backoff)
wait = backoff * attempt + random.uniform(0, 2)
print(f"Attempt {attempt} failed ({e}), retrying in {wait:.1f}s...")
time.sleep(wait)


def send_request_when_resource_available(
Expand Down
34 changes: 17 additions & 17 deletions test/integration/models/account/test_account.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def test_get_login(test_linode_client):
assert "ip" in str(login._raw_json)
assert "datetime" in str(login._raw_json)
assert "status" in str(login._raw_json)
assert login_updated < 15
assert login_updated < 60


def test_get_account_settings(test_linode_client):
Expand Down Expand Up @@ -101,29 +101,29 @@ def test_latest_get_event(test_linode_client, e2e_test_firewall):
firewall=e2e_test_firewall,
)

events = client.load(Event, "")
try:
for _ in range(5):
events = client.load(Event, "")
latest_events = events._raw_json.get("data", [])[:50]

latest_events = events._raw_json.get("data")

linode.delete()

for event in latest_events[:15]:
if label == event["entity"]["label"]:
break
else:
assert False, f"Linode '{label}' not found in the last 15 events"
if any(
event["entity"]["id"] == linode.id for event in latest_events
):
break
time.sleep(5)
else:
assert False, f"Linode '{label}' not found in recent events"
finally:
linode.delete()


def test_get_user(test_linode_client):
client = test_linode_client

events = client.load(Event, "")

username = events._raw_json.get("data")[0]["username"]

user = client.load(User, username)
profile = client.profile()
user = client.load(User, profile.username)

assert username == user.username
assert user.username == profile.username
assert "email" in user._raw_json


Expand Down
29 changes: 21 additions & 8 deletions test/integration/models/firewall/test_firewall.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,22 +63,35 @@ def test_update_firewall_rules(test_linode_client, test_firewall):
assert firewall.rules.outbound_policy == "DROP"


def test_get_devices(test_linode_client, linode_fw, test_firewall):
def test_get_devices(test_linode_client, linode_fw):
linode = linode_fw

test_firewall.device_create(int(linode.id))
firewalls = list(linode.firewalls())
assert len(firewalls) > 0

firewall = test_linode_client.load(Firewall, test_firewall.id)
firewall = test_linode_client.load(Firewall, firewalls[0].id)

devices = list(firewall.devices)
assert any(d.entity.id == linode.id for d in devices)


def test_get_device(test_linode_client, linode_fw):
linode = linode_fw

firewalls = list(linode.firewalls())
assert firewalls, "No firewalls found on Linode"

assert len(firewall.devices) > 0
firewall = test_linode_client.load(Firewall, firewalls[0].id)

devices = list(firewall.devices)
assert devices, "No devices found on Firewall"

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

firewall_device = test_linode_client.load(
FirewallDevice, firewall.devices.first().id, firewall.id
FirewallDevice, device.id, firewall.id
)

assert firewall_device.entity.type == "linode"
assert "/v4/linode/instances/" in firewall_device.entity.url
assert f"/v4/linode/instances/{linode.id}" in firewall_device.entity.url
25 changes: 20 additions & 5 deletions test/integration/models/nodebalancer/test_nodebalancer.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,20 +48,35 @@ def linode_with_private_ip(test_linode_client, e2e_test_firewall):


@pytest.fixture(scope="session")
def create_nb_config(test_linode_client, e2e_test_firewall):
def create_nb_config(
test_linode_client, e2e_test_firewall, linode_with_private_ip
):
client = test_linode_client
label = get_test_label(8)
nb_label = get_test_label()
node_label = get_test_label(8)

nb = client.nodebalancer_create(
region=TEST_REGION, label=label, firewall=e2e_test_firewall.id
region=TEST_REGION,
label=nb_label,
firewall=e2e_test_firewall.id,
)

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

yield config

config.delete()
nb.delete()
# cleanup
for obj in [node, config, nb]:
try:
obj.delete()
except ApiError as e:
if e.status != 404:
raise


@pytest.fixture(scope="session")
Expand Down
1 change: 0 additions & 1 deletion test/unit/objects/linode_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -575,7 +575,6 @@ def test_get_stackscript(self):


class TypeTest(ClientBaseCase):

def test_get_type_by_id(self):
"""
Tests that a Linode type is loaded correctly by ID
Expand Down
2 changes: 0 additions & 2 deletions test/unit/objects/monitor_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,6 @@ def test_specific_service_details(self):
self.assertEqual(data.service_type, "dbaas")

def test_metric_definitions(self):

metrics = self.client.monitor.metric_definitions(service_type="dbaas")
self.assertEqual(
metrics[0].available_aggregate_functions,
Expand All @@ -109,7 +108,6 @@ def test_metric_definitions(self):
)

def test_create_token(self):

with self.mock_post("/monitor/services/dbaas/token") as m:
self.client.monitor.create_token(
service_type="dbaas", entity_ids=[189690, 188020]
Expand Down