mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-10-12 21:45:41 +03:00
Live e2e verification moves into the repository instead of being rewritten as a throwaway script every time: tests/e2e/ carries a shared harness (REST client, isolated-instance lifecycle, a deliberately dumb IOS console driver, host-side kernel inspection: bridge membership, tap admin state, tc qdiscs) and each node type adds only its scenario module. The e2e marker plus 'addopts = -m "not e2e"' keeps these privileged, image-dependent tests out of normal runs; they are opt-in: pytest -m e2e tests/e2e -s. The harness targets an existing server via GNS3_E2E_URL or starts an isolated instance (own config dir — DB and paths follow it — on a free port) and deletes its project afterwards (GNS3_E2E_KEEP=1 keeps it on failure). The first scenario drives two real c7200 routers on a real IOS image through the REST API and the consoles: the kernel link is created while the routers are stopped (deferred wiring), the per-link kernel bridge enslaves exactly the two anchors, real ICMP crosses it, delay 100 shows netem on both anchors and grows the RTT (~200 ms), suspend kills the traffic on an admin-down anchor, capture writes a pcap of ICMP records, a serial link between the same routers stays on the relay and still pings, delete/ re-create and stop/start leave the wiring consistent, and deleting the project removes every anchor and bridge. A negative control runs the same topology on an isolated relay-configured instance (no per-link bridge, nothing enslaved, still pings).
10 lines
360 B
INI
10 lines
360 B
INI
[pytest]
|
|
asyncio_default_fixture_loop_scope=function
|
|
|
|
; Live end-to-end tests (tests/e2e, see its README) need privileges, real
|
|
; images and emulator binaries — they never run in a normal test run. Run
|
|
; them explicitly with: pytest -m e2e tests/e2e
|
|
markers =
|
|
e2e: live end-to-end tests (real server, kernel interfaces, emulators)
|
|
addopts = -m "not e2e"
|