Pause semantics - PauseBackend now cancels the probe goroutine so no HTTP/TCP/ICMP traffic is sent while the backend is paused. Previously the goroutine kept running and results were silently discarded. - ResumeBackend launches a fresh probe goroutine on the existing worker, preserving transition history. The backend re-enters unknown state. Integration tests (tests/01-maglevd/) - Containerlab topology with 3 nginx:alpine backends on a dedicated management network (172.20.30.0/24) with static IPs. - maglevd config with 200ms HTTP health-check interval for fast test convergence (rise=2, fall=2). - 8 test cases: deploy lab, start maglevd, all backends reach up, nginx logs confirm probes arriving, pause stops probes (probe count stable), resume restarts probes, disable stops probes, enable restarts probes. VPP dataplane test (tests/02-vpp-lb/) - Rewrite 01-e2e-lab.robot to match the actual single-VPP topology: test client-to-server ping through VPP bridge domains and verify nginx is serving on all app servers. The previous version referenced a non-existent topology file and tested OSPF/BFD between two VPP nodes that don't exist in this lab. Build infrastructure - Add 'make robot-test' target with TEST= for suite selection. - Add tests/.venv target for Robot Framework virtualenv. - Make IMAGE optional in rf-run.sh. - Add .gitignore entries for test output, venv, logs, and clab state.
64 lines
2.2 KiB
Plaintext
64 lines
2.2 KiB
Plaintext
*** Settings ***
|
|
Library OperatingSystem
|
|
Resource ../common.robot
|
|
|
|
Suite Teardown Run Keyword Cleanup
|
|
|
|
|
|
*** Variables ***
|
|
${lab-name} e2e-maglev
|
|
${lab-file-name} e2e-lab/maglev.clab.yml
|
|
${runtime} docker
|
|
|
|
|
|
*** Test Cases ***
|
|
Deploy ${lab-name} lab
|
|
Log ${CURDIR}
|
|
${rc} ${output} = Run And Return Rc And Output
|
|
... ${CLAB_BIN} --runtime ${runtime} deploy -t ${CURDIR}/${lab-file-name}
|
|
Log ${output}
|
|
Should Be Equal As Integers ${rc} 0
|
|
|
|
Wait for VPP dataplane startup
|
|
Sleep 5s
|
|
|
|
Client cl1 can ping app server as1 via VPP
|
|
${rc} ${output} = Run And Return Rc And Output
|
|
... ${CLAB_BIN} --runtime ${runtime} exec -t ${CURDIR}/${lab-file-name} --label clab-node-name\=cl1 --cmd "ping -c 3 -W 2 10.82.98.82"
|
|
Log ${output}
|
|
Should Be Equal As Integers ${rc} 0
|
|
Should Not Contain ${output} 0 received
|
|
|
|
Client cl2 can ping app server as2 via VPP
|
|
${rc} ${output} = Run And Return Rc And Output
|
|
... ${CLAB_BIN} --runtime ${runtime} exec -t ${CURDIR}/${lab-file-name} --label clab-node-name\=cl2 --cmd "ping -c 3 -W 2 10.82.98.83"
|
|
Log ${output}
|
|
Should Be Equal As Integers ${rc} 0
|
|
Should Not Contain ${output} 0 received
|
|
|
|
App server as1 can reach app server as3 via VPP
|
|
${rc} ${output} = Run And Return Rc And Output
|
|
... ${CLAB_BIN} --runtime ${runtime} exec -t ${CURDIR}/${lab-file-name} --label clab-node-name\=as1 --cmd "ping -c 3 -W 2 10.82.98.84"
|
|
Log ${output}
|
|
Should Be Equal As Integers ${rc} 0
|
|
Should Not Contain ${output} 0 received
|
|
|
|
App servers have nginx running
|
|
[Template] Nginx Should Be Serving
|
|
as1 10.82.98.82
|
|
as2 10.82.98.83
|
|
as3 10.82.98.84
|
|
|
|
|
|
*** Keywords ***
|
|
Cleanup
|
|
Run ${CLAB_BIN} --runtime ${runtime} destroy -t ${CURDIR}/${lab-file-name} --cleanup
|
|
|
|
Nginx Should Be Serving
|
|
[Arguments] ${node} ${ip}
|
|
${rc} ${output} = Run And Return Rc And Output
|
|
... ${CLAB_BIN} --runtime ${runtime} exec -t ${CURDIR}/${lab-file-name} --label clab-node-name\=${node} --cmd "wget -q -O- http://${ip}/"
|
|
Log ${output}
|
|
Should Be Equal As Integers ${rc} 0
|
|
Should Contain ${output} ${node}
|