Ejemplo n.º 1
0
def device_raw(request):
    devname = request.config.getoption("--device")
    if devname == None:
        pytest.fail("Please enter a device name using the --device " +
                    "command-line parameter")
    use = request.config.getoption("--use")
    device = drned.Device(devname, use=use)
    device.trace("\n%s\n" % request._pyfuncitem.name)
    yield device
Ejemplo n.º 2
0
def device(request):
    devname = request.config.getoption("--device")
    if devname == None:
        pytest.fail("Please enter a device name using the --device " +
                    "command-line parameter")
    # Time to create device
    use = request.config.getoption("--use")
    device = drned.Device(devname, use=use, request=request)
    device.trace("\n%s\n" % request._pyfuncitem.name)
    # Save state in XML to be able to restore reliably
    device.save("drned-work/before-session.xml", fmt="xml")
    # Also save in CLI format to make it easier to compare
    device.save("drned-work/before-session.cfg")

    yield device

    # Restore device to initial state
    device.restore()
    if device.failed_states:
        print('Failed states:', device.failed_states)
Ejemplo n.º 3
0
def device(request):
    devname = request.config.getoption("--device")
    if devname == None:
        pytest.fail("Please enter a device name using the --device " +
                    "command-line parameter")
    # Time to create device
    use = request.config.getoption("--use")
    device = drned.Device(devname, use=use, request=request)
    device.trace("\n%s\n" % request._pyfuncitem.name)
    # Save state in XML to be able to restore
    # reliably. Note that the entire "devices" tree is
    # saved, the "replace" load option requires it.
    device.save("drned-work/before-session.xml",
                path="devices", fmt="xml")
    # Also save in CLI format to make it easier to
    # compare
    device.save("drned-work/before-session.cfg")
    yield device
    print("\n### TEARDOWN, RESTORE DEVICE ###")
    device.reset_cli()
    # Try to restore device twice, required for some NCS releases
    laps = 2
    for i in range(laps):
        device.sync_from()
        device.load("drned-work/before-session.xml", mode="replace")
        device.commit()
        try:
            device.compare_config()
            break
        except pytest.fail.Exception as e:
            if i >= (laps - 1):
                raise
    # Check if restore successful
    device.save("drned-work/after-session.cfg")
    if not common.filecmp("drned-work/before-session.cfg",
                          "drned-work/after-session.cfg"):
        pytest.fail("Could not restore device to state before session. " +
                    "Please check before-session.cfg and after-session.cfg")