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
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)
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")