from gns3server.modules.iou import IOUDevice
import os
import pytest


def no_iou():
    cwd = os.path.dirname(os.path.abspath(__file__))
    iou_path = os.path.join(cwd, "i86bi_linux-ipbase-ms-12.4.bin")

    if os.path.isfile(iou_path):
        return False
    else:
        return True


@pytest.fixture(scope="session")
def iou(request):

    cwd = os.path.dirname(os.path.abspath(__file__))
    iou_path = os.path.join(cwd, "i86bi_linux-ipbase-ms-12.4.bin")
    iou_device = IOUDevice("IOU1", iou_path, "/tmp")
    iou_device.start()
    request.addfinalizer(iou_device.delete)
    return iou_device


@pytest.mark.skipif(no_iou(), reason="IOU Image not available")
def test_iou_is_started(iou):

    print(iou.command())
    assert iou.id == 1  # we should have only one IOU running!
    assert iou.is_running()


@pytest.mark.skipif(no_iou(), reason="IOU Image not available")
def test_iou_restart(iou):

    iou.stop()
    assert not iou.is_running()
    iou.start()
    assert iou.is_running()