Skip to content
Snippets Groups Projects
test_resource_manager.py 1.77 KiB
Newer Older
import random
import string

from gso.services import resource_manager


def _random_string(n=None, letters=string.ascii_letters + string.digits + string.punctuation):
    # ignoring S311 because this is a test
    if not n:
        n = random.randint(1, 20)  # noqa: S311
    return "".join(random.choices(letters, k=n))  # noqa: S311


def test_new_router():
    router_name = _random_string(10)
    assert router_name not in resource_manager._DUMMY_INVENTORY
Erik Reid's avatar
Erik Reid committed
    resource_manager.import_new_router(new_router_fqdn=router_name, subscription_id=_random_string(10))
    assert router_name in resource_manager._DUMMY_INVENTORY


def test_new_lag():
    router_name = list(resource_manager._DUMMY_INVENTORY.keys())[0]
Erik Reid's avatar
Erik Reid committed
        resource_manager.next_lag(router_fqdn=router_name, subscription_id=_random_string(10)) for _ in range(10)
    }
    assert len(new_lags) == 10
Erik Reid's avatar
Erik Reid committed
    assert new_lags <= set(resource_manager._DUMMY_INVENTORY[router_name]["lags"])


def test_physical_allocation_lifecycle_happy():
    router_name = list(resource_manager._DUMMY_INVENTORY.keys())[0]

    def _interfaces():
Erik Reid's avatar
Erik Reid committed
        return resource_manager.available_physical_interfaces(router_fqdn=router_name)

    initial_available = _interfaces()

    interface_name = initial_available[0]

    resource_manager.reserve_physical_interface(
Erik Reid's avatar
Erik Reid committed
        router_fqdn=router_name, subscription_id=_random_string(10), interface_name=interface_name
    )

    current_available = _interfaces()
    assert interface_name not in current_available

Erik Reid's avatar
Erik Reid committed
    resource_manager.allocate_physical_interface(router_fqdn=router_name, interface_name=interface_name)
    resource_manager.free_physical_interface(router_fqdn=router_name, interface_name=interface_name)

    current_available = _interfaces()
    assert interface_name in current_available