[26-06-02 09:33:10] START switch_findhop scenario: cases/switch_findhop.sh header : verify findhop route binding, remove guard, and reload state topology: sw0 VIP 10.243.0.10; | network a | network b; sw1.0 ------------------- sw1.1; +--------- sw2 ---------+ topology: # Topology: topology: # - Diagram: topology: # sw0 VIP 10.243.0.10 topology: # ^ ^ topology: # | network a | network b topology: # sw1.0 ------------------- sw1.1 topology: # ^ ^ topology: # +--------- sw2 ---------+ topology: # findhop active-backup chooses nexthop path topology: # - Docker mgmt network: 172.243.0.0/24 topology: # sw0=172.243.0.240, sw1.0=172.243.0.241, sw1.1=172.243.0.242, sw2=172.243.0.243. topology: # - Service networks: topology: # network a: sw0=192.53.0.1, sw1.0=192.53.0.2, sw1.1=192.53.0.4, sw2=192.53.0.3. topology: # network b: sw0=192.54.0.1, sw1.1=192.54.0.2, sw2=192.54.0.3. topology: # - VIP: topology: # sw0 lo=10.243.0.10/32. topology: # Validation: topology: # sw2 -> sw1.0 -> sw0 uses network a, sw2 -> sw1.1 -> sw0 uses network b, topology: # then findhop on sw2 uses multi-nexthop in active-backup mode. Started switch pause container: tests-sw-findhop0-pause Started switch frr container: tests-sw-findhop0-frr Started switch ipsec container: tests-sw-findhop0-ipsec Started switch container: tests-sw-findhop0 [26-06-02 09:33:11][ASSERT#0001][expect] at cases/switch_findhop.sh:48 fn=setup_sw0 retry=30 cmd="docker logs -f tests-sw-findhop0" expect="Http.Start" 2026/06/02 09:33:11 INFO|root|Wait: ... 2026/06/02 09:33:11 INFO|root|UdpServer.Listen: udp://0.0.0.0:10002 2026/06/02 09:33:11 INFO|root|TcpServer.Listen: tcp://0.0.0.0:10002 2026/06/02 09:33:11 INFO|root|Http.Start 0.0.0.0:10000 [26-06-02 09:33:12][ASSERT#0001][OK] cost=1.032s [26-06-02 09:33:12][ASSERT#0002][cmd] at cases/switch_findhop.sh:50 fn=setup_sw0 cmd="docker exec tests-sw-findhop0 openlan crypt update --algorithm aes-128 --secret cb2ff088a34d" [26-06-02 09:33:12][ASSERT#0002][OK] cost=0.069s [26-06-02 09:33:12][ASSERT#0003][cmd] at cases/switch_findhop.sh:51 fn=setup_sw0 cmd="docker exec tests-sw-findhop0 openlan network --name a add --address 192.53.0.1/24" [26-06-02 09:33:12][ASSERT#0003][OK] cost=0.257s [26-06-02 09:33:12][ASSERT#0004][cmd] at cases/switch_findhop.sh:52 fn=setup_sw0 cmd="docker exec tests-sw-findhop0 openlan network --name b add --address 192.54.0.1/24" [26-06-02 09:33:12][ASSERT#0004][OK] cost=0.253s [26-06-02 09:33:12][ASSERT#0005][cmd] at cases/switch_findhop.sh:53 fn=setup_sw0 cmd="docker exec tests-sw-findhop0 openlan router address add --device lo --address 10.243.0.10/32" [26-06-02 09:33:12][ASSERT#0005][OK] cost=0.061s [26-06-02 09:33:12][ASSERT#0006][cmd] at cases/switch_findhop.sh:54 fn=setup_sw0 cmd="docker exec tests-sw-findhop0 openlan user add --name edgea@a --password 123456" # total 1 username password role lease edgea@a 123456 guest 2027-06-02T09 [26-06-02 09:33:12][ASSERT#0006][OK] cost=0.068s [26-06-02 09:33:12][ASSERT#0007][cmd] at cases/switch_findhop.sh:55 fn=setup_sw0 cmd="docker exec tests-sw-findhop0 openlan user add --name edgeb@b --password 123457" # total 1 username password role lease edgeb@b 123457 guest 2027-06-02T09 [26-06-02 09:33:13][ASSERT#0007][OK] cost=0.066s Started switch pause container: tests-sw-findhop10-pause Started switch frr container: tests-sw-findhop10-frr Started switch ipsec container: tests-sw-findhop10-ipsec Started switch container: tests-sw-findhop10 [26-06-02 09:33:13][ASSERT#0008][expect] at cases/switch_findhop.sh:64 fn=setup_sw10 retry=30 cmd="docker logs -f tests-sw-findhop10" expect="Http.Start" 2026/06/02 09:33:14 INFO|root|UdpServer.Listen: udp://0.0.0.0:10002 2026/06/02 09:33:14 INFO|root|TcpServer.Listen: tcp://0.0.0.0:10002 2026/06/02 09:33:14 INFO|root|Wait: ... 2026/06/02 09:33:14 INFO|root|Http.Start 0.0.0.0:10000 [26-06-02 09:33:14][ASSERT#0008][OK] cost=1.033s [26-06-02 09:33:14][ASSERT#0009][cmd] at cases/switch_findhop.sh:66 fn=setup_sw10 cmd="docker exec tests-sw-findhop10 openlan crypt update --algorithm aes-128 --secret cb2ff088a34d" [26-06-02 09:33:14][ASSERT#0009][OK] cost=0.068s [26-06-02 09:33:14][ASSERT#0010][cmd] at cases/switch_findhop.sh:67 fn=setup_sw10 cmd="docker exec tests-sw-findhop10 openlan network --name a add --address 192.53.0.2/24" [26-06-02 09:33:15][ASSERT#0010][OK] cost=0.244s [26-06-02 09:33:15][ASSERT#0011][cmd] at cases/switch_findhop.sh:68 fn=setup_sw10 cmd="docker exec tests-sw-findhop10 openlan user add --name edgea@a --password 123456" # total 1 username password role lease edgea@a 123456 guest 2027-06-02T09 [26-06-02 09:33:15][ASSERT#0011][OK] cost=0.068s [26-06-02 09:33:15][ASSERT#0012][cmd] at cases/switch_findhop.sh:69 fn=setup_sw10 cmd="docker exec tests-sw-findhop10 openlan network --name a output add --remote 172.243.0.240 --protocol tcp --secret edgea:123456 --crypt aes-128:cb2ff088a34d" [26-06-02 09:33:15][ASSERT#0012][OK] cost=0.075s Started switch pause container: tests-sw-findhop11-pause Started switch frr container: tests-sw-findhop11-frr Started switch ipsec container: tests-sw-findhop11-ipsec Started switch container: tests-sw-findhop11 [26-06-02 09:33:16][ASSERT#0013][expect] at cases/switch_findhop.sh:78 fn=setup_sw11 retry=30 cmd="docker logs -f tests-sw-findhop11" expect="Http.Start" 2026/06/02 09:33:16 INFO|root|Wait: ... 2026/06/02 09:33:16 INFO|root|UdpServer.Listen: udp://0.0.0.0:10002 2026/06/02 09:33:16 INFO|root|TcpServer.Listen: tcp://0.0.0.0:10002 2026/06/02 09:33:16 INFO|root|Http.Start 0.0.0.0:10000 [26-06-02 09:33:17][ASSERT#0013][OK] cost=1.029s [26-06-02 09:33:17][ASSERT#0014][cmd] at cases/switch_findhop.sh:80 fn=setup_sw11 cmd="docker exec tests-sw-findhop11 openlan crypt update --algorithm aes-128 --secret cb2ff088a34d" [26-06-02 09:33:17][ASSERT#0014][OK] cost=0.067s [26-06-02 09:33:17][ASSERT#0015][cmd] at cases/switch_findhop.sh:81 fn=setup_sw11 cmd="docker exec tests-sw-findhop11 openlan network --name a add --address 192.53.0.4/24" [26-06-02 09:33:17][ASSERT#0015][OK] cost=0.261s [26-06-02 09:33:17][ASSERT#0016][cmd] at cases/switch_findhop.sh:82 fn=setup_sw11 cmd="docker exec tests-sw-findhop11 openlan network --name b add --address 192.54.0.2/24" [26-06-02 09:33:17][ASSERT#0016][OK] cost=0.242s [26-06-02 09:33:17][ASSERT#0017][cmd] at cases/switch_findhop.sh:83 fn=setup_sw11 cmd="docker exec tests-sw-findhop11 openlan user add --name edgea@a --password 123456" # total 1 username password role lease edgea@a 123456 guest 2027-06-02T09 [26-06-02 09:33:17][ASSERT#0017][OK] cost=0.063s [26-06-02 09:33:17][ASSERT#0018][cmd] at cases/switch_findhop.sh:84 fn=setup_sw11 cmd="docker exec tests-sw-findhop11 openlan user add --name edgeb@b --password 123457" # total 1 username password role lease edgeb@b 123457 guest 2027-06-02T09 [26-06-02 09:33:17][ASSERT#0018][OK] cost=0.065s [26-06-02 09:33:17][ASSERT#0019][cmd] at cases/switch_findhop.sh:85 fn=setup_sw11 cmd="docker exec tests-sw-findhop11 openlan network --name b output add --remote 172.243.0.240 --protocol tcp --secret edgeb:123457 --crypt aes-128:cb2ff088a34d" [26-06-02 09:33:17][ASSERT#0019][OK] cost=0.070s Started switch pause container: tests-sw-findhop2-pause Started switch frr container: tests-sw-findhop2-frr Started switch ipsec container: tests-sw-findhop2-ipsec Started switch container: tests-sw-findhop2 [26-06-02 09:33:18][ASSERT#0020][expect] at cases/switch_findhop.sh:94 fn=setup_sw2 retry=30 cmd="docker logs -f tests-sw-findhop2" expect="Http.Start" 2026/06/02 09:33:19 INFO|root|Wait: ... 2026/06/02 09:33:19 INFO|root|UdpServer.Listen: udp://0.0.0.0:10002 2026/06/02 09:33:19 INFO|root|TcpServer.Listen: tcp://0.0.0.0:10002 2026/06/02 09:33:19 INFO|root|Http.Start 0.0.0.0:10000 [26-06-02 09:33:19][ASSERT#0020][OK] cost=1.030s [26-06-02 09:33:19][ASSERT#0021][cmd] at cases/switch_findhop.sh:96 fn=setup_sw2 cmd="docker exec tests-sw-findhop2 openlan crypt update --algorithm aes-128 --secret cb2ff088a34d" [26-06-02 09:33:19][ASSERT#0021][OK] cost=0.073s [26-06-02 09:33:19][ASSERT#0022][cmd] at cases/switch_findhop.sh:97 fn=setup_sw2 cmd="docker exec tests-sw-findhop2 openlan network --name a add --address 192.53.0.3/24" [26-06-02 09:33:20][ASSERT#0022][OK] cost=0.244s [26-06-02 09:33:20][ASSERT#0023][cmd] at cases/switch_findhop.sh:98 fn=setup_sw2 cmd="docker exec tests-sw-findhop2 openlan network --name b add --address 192.54.0.3/24" [26-06-02 09:33:20][ASSERT#0023][OK] cost=0.237s [26-06-02 09:33:20][ASSERT#0024][cmd] at cases/switch_findhop.sh:99 fn=setup_sw2 cmd="docker exec tests-sw-findhop2 openlan user add --name edgea@a --password 123456" # total 1 username password role lease edgea@a 123456 guest 2027-06-02T09 [26-06-02 09:33:20][ASSERT#0024][OK] cost=0.063s [26-06-02 09:33:20][ASSERT#0025][cmd] at cases/switch_findhop.sh:100 fn=setup_sw2 cmd="docker exec tests-sw-findhop2 openlan user add --name edgeb@b --password 123457" # total 1 username password role lease edgeb@b 123457 guest 2027-06-02T09 [26-06-02 09:33:20][ASSERT#0025][OK] cost=0.056s [26-06-02 09:33:20][ASSERT#0026][cmd] at cases/switch_findhop.sh:102 fn=setup_sw2 cmd="docker exec tests-sw-findhop2 openlan network --name a output add --remote 172.243.0.241 --protocol tcp --secret edgea:123456 --crypt aes-128:cb2ff088a34d" [26-06-02 09:33:20][ASSERT#0026][OK] cost=0.072s [26-06-02 09:33:20][ASSERT#0027][cmd] at cases/switch_findhop.sh:103 fn=setup_sw2 cmd="docker exec tests-sw-findhop2 openlan network --name b output add --remote 172.243.0.242 --protocol tcp --secret edgeb:123457 --crypt aes-128:cb2ff088a34d" [26-06-02 09:33:20][ASSERT#0027][OK] cost=0.062s [26-06-02 09:33:20][ASSERT#0028][match] at cases/switch_findhop.sh:189 fn=setup_topology retry=30 cmd="docker exec tests-sw-findhop10 openlan network --name a output ls" expect="state: authenticated" remote: 172.243.0.240 rxBytes: 156 secret: edgea:123456 state: authenticated txBytes: 21 [26-06-02 09:33:20][ASSERT#0028][OK] cost=0.063s [26-06-02 09:33:20][ASSERT#0029][match] at cases/switch_findhop.sh:190 fn=setup_topology retry=30 cmd="docker exec tests-sw-findhop11 openlan network --name b output ls" expect="state: authenticated" remote: 172.243.0.240 rxBytes: 52 secret: edgeb:123457 state: authenticated txBytes: 104 [26-06-02 09:33:20][ASSERT#0029][OK] cost=0.061s [26-06-02 09:33:20][ASSERT#0030][match] at cases/switch_findhop.sh:192 fn=setup_topology retry=30 cmd="docker exec tests-sw-findhop2 openlan network --name a output ls" expect="state: authenticated" remote: 172.243.0.241 rxBytes: 104 secret: edgea:123456 state: authenticated [26-06-02 09:33:22][ASSERT#0030][OK] cost=2.215s [26-06-02 09:33:22][ASSERT#0031][match] at cases/switch_findhop.sh:193 fn=setup_topology retry=30 cmd="docker exec tests-sw-findhop2 openlan network --name b output ls" expect="state: authenticated" remote: 172.243.0.242 rxBytes: 52 secret: edgeb:123457 state: authenticated [26-06-02 09:33:23][ASSERT#0031][OK] cost=0.072s [26-06-02 09:33:23][ASSERT#0032][match] at cases/switch_findhop.sh:119 fn=test_path_via_sw10_network_a retry=15 cmd="docker exec tests-sw-findhop2 ping -c 3 192.53.0.1" expect="bytes from" PING 192.53.0.1 (192.53.0.1) 56(84) bytes of data. 64 bytes from 192.53.0.1: icmp_seq=1 ttl=64 time=2035 ms 64 bytes from 192.53.0.1: icmp_seq=2 ttl=64 time=1028 ms 64 bytes from 192.53.0.1: icmp_seq=3 ttl=64 time=4.29 ms --- 192.53.0.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2031ms [26-06-02 09:33:25][ASSERT#0032][OK] cost=2.098s [26-06-02 09:33:25][ASSERT#0033][cmd] at cases/switch_findhop.sh:120 fn=test_path_via_sw10_network_a cmd="docker exec tests-sw-findhop2 openlan network --name a route add --prefix 10.243.0.10/32 --nexthop 192.53.0.1" [26-06-02 09:33:25][ASSERT#0033][OK] cost=0.072s [26-06-02 09:33:25][ASSERT#0034][match] at cases/switch_findhop.sh:121 fn=test_path_via_sw10_network_a retry=20 cmd="docker exec tests-sw-findhop2 ping -c 3 10.243.0.10" expect="bytes from" PING 10.243.0.10 (10.243.0.10) 56(84) bytes of data. 64 bytes from 10.243.0.10: icmp_seq=1 ttl=64 time=0.865 ms 64 bytes from 10.243.0.10: icmp_seq=2 ttl=64 time=1.96 ms 64 bytes from 10.243.0.10: icmp_seq=3 ttl=64 time=1.89 ms --- 10.243.0.10 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2050ms [26-06-02 09:33:27][ASSERT#0034][OK] cost=2.131s [26-06-02 09:33:27][ASSERT#0035][cmd] at cases/switch_findhop.sh:122 fn=test_path_via_sw10_network_a cmd="docker exec tests-sw-findhop2 openlan network --name a route rm --prefix 10.243.0.10/32" [26-06-02 09:33:27][ASSERT#0035][OK] cost=0.062s [26-06-02 09:33:27][ASSERT#0036][match] at cases/switch_findhop.sh:127 fn=test_path_via_sw11_network_b retry=15 cmd="docker exec tests-sw-findhop2 ping -c 3 192.54.0.1" expect="bytes from" PING 192.54.0.1 (192.54.0.1) 56(84) bytes of data. 64 bytes from 192.54.0.1: icmp_seq=1 ttl=64 time=1.65 ms 64 bytes from 192.54.0.1: icmp_seq=2 ttl=64 time=2.04 ms 64 bytes from 192.54.0.1: icmp_seq=3 ttl=64 time=2.27 ms --- 192.54.0.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2004ms [26-06-02 09:33:29][ASSERT#0036][OK] cost=2.063s [26-06-02 09:33:29][ASSERT#0037][cmd] at cases/switch_findhop.sh:128 fn=test_path_via_sw11_network_b cmd="docker exec tests-sw-findhop2 openlan network --name b route add --prefix 10.243.0.10/32 --nexthop 192.54.0.1" [26-06-02 09:33:29][ASSERT#0037][OK] cost=0.071s [26-06-02 09:33:29][ASSERT#0038][match] at cases/switch_findhop.sh:129 fn=test_path_via_sw11_network_b retry=20 cmd="docker exec tests-sw-findhop2 ping -c 3 10.243.0.10" expect="bytes from" PING 10.243.0.10 (10.243.0.10) 56(84) bytes of data. 64 bytes from 10.243.0.10: icmp_seq=1 ttl=64 time=0.765 ms 64 bytes from 10.243.0.10: icmp_seq=2 ttl=64 time=1.91 ms 64 bytes from 10.243.0.10: icmp_seq=3 ttl=64 time=2.07 ms --- 10.243.0.10 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2004ms [26-06-02 09:33:31][ASSERT#0038][OK] cost=2.065s [26-06-02 09:33:31][ASSERT#0039][cmd] at cases/switch_findhop.sh:130 fn=test_path_via_sw11_network_b cmd="docker exec tests-sw-findhop2 openlan network --name b route rm --prefix 10.243.0.10/32" [26-06-02 09:33:31][ASSERT#0039][OK] cost=0.070s [26-06-02 09:33:31][ASSERT#0040][cmd] at cases/switch_findhop.sh:134 fn=test_findhop_active_backup cmd="docker exec tests-sw-findhop2 openlan network --name a findhop add --findhop sw0-hop --nexthop 192.53.0.1,192.54.0.1 --check ping --mode active-backup" [26-06-02 09:33:31][ASSERT#0040][OK] cost=0.056s [26-06-02 09:33:31][ASSERT#0041][match] at cases/switch_findhop.sh:135 fn=test_findhop_active_backup retry=20 cmd="docker exec tests-sw-findhop2 openlan network --name a findhop ls" expect="192.53.0.1,192.54.0.1" # total 1 name checker mode nexthop available sw0-hop ping active-backup 192.53.0.1,192.54.0.1 - [26-06-02 09:33:31][ASSERT#0041][OK] cost=0.067s [26-06-02 09:33:31][ASSERT#0042][cmd] at cases/switch_findhop.sh:137 fn=test_findhop_active_backup cmd="docker exec tests-sw-findhop2 openlan network --name a route add --prefix 10.243.0.10/32 --findhop sw0-hop" [26-06-02 09:33:31][ASSERT#0042][OK] cost=0.063s [26-06-02 09:33:31][ASSERT#0043][match] at cases/switch_findhop.sh:138 fn=test_findhop_active_backup retry=60 cmd="docker exec tests-sw-findhop2 ip r get 10.243.0.10" expect="via 192" 10.243.0.10 via 192.53.0.1 dev hi-a src 192.53.0.3 uid 0 cache [26-06-02 09:33:38][ASSERT#0043][OK] cost=6.410s [26-06-02 09:33:38][ASSERT#0044][match] at cases/switch_findhop.sh:139 fn=test_findhop_active_backup retry=20 cmd="docker exec tests-sw-findhop2 ping -c 3 10.243.0.10" expect="bytes from" PING 10.243.0.10 (10.243.0.10) 56(84) bytes of data. 64 bytes from 10.243.0.10: icmp_seq=1 ttl=64 time=0.984 ms 64 bytes from 10.243.0.10: icmp_seq=2 ttl=64 time=2.31 ms 64 bytes from 10.243.0.10: icmp_seq=3 ttl=64 time=2.50 ms --- 10.243.0.10 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms [26-06-02 09:33:40][ASSERT#0044][OK] cost=2.075s Save configuraion ... success Stopped switch containers: tests-sw-findhop10, tests-sw-findhop10-pause, tests-sw-findhop10-ipsec, tests-sw-findhop10-frr [26-06-02 09:33:40][ASSERT#0045][match] at cases/switch_findhop.sh:143 fn=test_findhop_active_backup retry=60 cmd="docker exec tests-sw-findhop2 ip r get 10.243.0.10" expect="192.54.0.1" 10.243.0.10 via 192.54.0.1 dev hi-b src 192.54.0.3 uid 0 cache [26-06-02 09:33:57][ASSERT#0045][OK] cost=17.070s [26-06-02 09:33:57][ASSERT#0046][match] at cases/switch_findhop.sh:144 fn=test_findhop_active_backup retry=30 cmd="docker exec tests-sw-findhop2 ping -c 3 10.243.0.10" expect="bytes from" PING 10.243.0.10 (10.243.0.10) 56(84) bytes of data. 64 bytes from 10.243.0.10: icmp_seq=1 ttl=64 time=0.700 ms 64 bytes from 10.243.0.10: icmp_seq=2 ttl=64 time=1.36 ms 64 bytes from 10.243.0.10: icmp_seq=3 ttl=64 time=1.98 ms --- 10.243.0.10 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2065ms [26-06-02 09:33:59][ASSERT#0046][OK] cost=2.132s Save configuraion ... success Stopped switch containers: tests-sw-findhop11, tests-sw-findhop11-pause, tests-sw-findhop11-ipsec, tests-sw-findhop11-frr Started switch pause container: tests-sw-findhop10-pause Started switch frr container: tests-sw-findhop10-frr Started switch ipsec container: tests-sw-findhop10-ipsec Started switch container: tests-sw-findhop10 [26-06-02 09:34:00][ASSERT#0047][expect] at cases/switch_findhop.sh:108 fn=recover_sw10 retry=30 cmd="docker logs -f tests-sw-findhop10" expect="Http.Start" 2026/06/02 09:34:01 INFO|root|UdpServer.Listen: udp://0.0.0.0:10002 2026/06/02 09:34:01 INFO|root|Wait: ... 2026/06/02 09:34:01 INFO|root|TcpServer.Listen: tcp://0.0.0.0:10002 2026/06/02 09:34:01 INFO|root|Http.Start 0.0.0.0:10000 [26-06-02 09:34:01][ASSERT#0047][OK] cost=1.020s [26-06-02 09:34:01][ASSERT#0048][match] at cases/switch_findhop.sh:109 fn=recover_sw10 retry=30 cmd="docker exec tests-sw-findhop10 openlan network --name a output ls" expect="state: authenticated" protocol: tcp remote: 172.243.0.240 secret: edgea:123456 state: authenticated [26-06-02 09:34:04][ASSERT#0048][OK] cost=2.197s [26-06-02 09:34:04][ASSERT#0049][match] at cases/switch_findhop.sh:149 fn=test_findhop_active_backup retry=60 cmd="docker exec tests-sw-findhop2 ip r get 10.243.0.10" expect="192.53.0.1" 10.243.0.10 via 192.53.0.1 dev hi-a src 192.53.0.3 uid 0 cache [26-06-02 09:34:27][ASSERT#0049][OK] cost=23.384s [26-06-02 09:34:27][ASSERT#0050][match] at cases/switch_findhop.sh:150 fn=test_findhop_active_backup retry=30 cmd="docker exec tests-sw-findhop2 ping -c 3 10.243.0.10" expect="bytes from" PING 10.243.0.10 (10.243.0.10) 56(84) bytes of data. 64 bytes from 10.243.0.10: icmp_seq=1 ttl=64 time=0.724 ms 64 bytes from 10.243.0.10: icmp_seq=2 ttl=64 time=2.48 ms 64 bytes from 10.243.0.10: icmp_seq=3 ttl=64 time=2.18 ms --- 10.243.0.10 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2031ms [26-06-02 09:34:29][ASSERT#0050][OK] cost=2.098s [26-06-02 09:34:29][ASSERT#0051][cmd] at cases/switch_findhop.sh:152 fn=test_findhop_active_backup cmd="docker exec tests-sw-findhop0 openlan reload --save" Save configuraion ... success # reloading pid:43 .... PID 43 CMD: /usr/bin/openlan-switch -conf:dir /etc/openlan/switch -log:level 20 # max wait 60s... # during 1s, new pid:720 ... PID 720 CMD: /usr/bin/openlan-switch -conf:dir /etc/openlan/switch -log:level 20 [26-06-02 09:34:30][ASSERT#0051][OK] cost=1.070s [26-06-02 09:34:30][ASSERT#0052][cmd] at cases/switch_findhop.sh:153 fn=test_findhop_active_backup cmd="docker exec tests-sw-findhop10 openlan reload --save" Save configuraion ... success # reloading pid:32 .... PID 32 CMD: /usr/bin/openlan-switch -conf:dir /etc/openlan/switch -log:level 20 # max wait 60s... # during 1s, new pid:476 ... PID 476 CMD: /usr/bin/openlan-switch -conf:dir /etc/openlan/switch -log:level 20 [26-06-02 09:34:31][ASSERT#0052][OK] cost=1.075s [26-06-02 09:34:31][ASSERT#0053][cmd] at cases/switch_findhop.sh:154 fn=test_findhop_active_backup cmd="docker exec tests-sw-findhop2 openlan reload --save" Save configuraion ... success # reloading pid:43 .... PID 43 CMD: /usr/bin/openlan-switch -conf:dir /etc/openlan/switch -log:level 20 # max wait 60s... # during 1s, new pid:1208 ... PID 1208 CMD: /usr/bin/openlan-switch -conf:dir /etc/openlan/switch -log:level 20 [26-06-02 09:34:32][ASSERT#0053][OK] cost=1.066s [26-06-02 09:34:32][ASSERT#0054][cmd] at cases/switch_findhop.sh:156 fn=test_findhop_active_backup cmd="docker exec tests-sw-findhop2 ip neigh flush all" [26-06-02 09:34:32][ASSERT#0054][OK] cost=0.048s [26-06-02 09:34:32][ASSERT#0055][match] at cases/switch_findhop.sh:157 fn=test_findhop_active_backup retry=20 cmd="docker exec tests-sw-findhop2 ping -c 3 10.243.0.10" expect="bytes from" PING 10.243.0.10 (10.243.0.10) 56(84) bytes of data. 64 bytes from 10.243.0.10: icmp_seq=1 ttl=64 time=1.59 ms 64 bytes from 10.243.0.10: icmp_seq=2 ttl=64 time=1.78 ms 64 bytes from 10.243.0.10: icmp_seq=3 ttl=64 time=2.01 ms --- 10.243.0.10 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms [26-06-02 09:34:42][ASSERT#0055][OK] cost=9.837s [26-06-02 09:34:42][ASSERT#0056][match] at cases/switch_findhop.sh:158 fn=test_findhop_active_backup retry=5 cmd="docker exec tests-sw-findhop2 openlan network --name a findhop rm --findhop sw0-hop" expect="checker has route" 2026/06/02 09:34:42 400 Bad Request FindHop.delHop: checker has route sw0-hop [26-06-02 09:34:42][ASSERT#0056][OK] cost=0.077s findhop remove is blocked while route is bound, as expected: [26-06-02 09:34:42][ASSERT#0057][cmd] at cases/switch_findhop.sh:161 fn=test_findhop_active_backup cmd="docker exec tests-sw-findhop2 openlan network --name a route rm --prefix 10.243.0.10/32" [26-06-02 09:34:42][ASSERT#0057][OK] cost=0.077s [26-06-02 09:34:42][ASSERT#0058][unmatch] at cases/switch_findhop.sh:162 fn=test_findhop_active_backup retry=5 cmd="docker exec tests-sw-findhop2 ip r get 10.243.0.10" unexpected="via 192" Last output: 10.243.0.10 via 172.243.0.1 dev eth0 src 172.243.0.243 uid 0 cache [26-06-02 09:34:48][ASSERT#0058][OK] cost=5.297s [26-06-02 09:34:48][ASSERT#0059][cmd] at cases/switch_findhop.sh:163 fn=test_findhop_active_backup cmd="docker exec tests-sw-findhop2 openlan network --name a findhop rm --findhop sw0-hop" [26-06-02 09:34:48][ASSERT#0059][OK] cost=0.078s Started switch pause container: tests-sw-findhop11-pause Started switch frr container: tests-sw-findhop11-frr Started switch ipsec container: tests-sw-findhop11-ipsec Started switch container: tests-sw-findhop11 [26-06-02 09:34:49][ASSERT#0060][expect] at cases/switch_findhop.sh:114 fn=recover_sw11 retry=30 cmd="docker logs -f tests-sw-findhop11" expect="Http.Start" 2026/06/02 09:34:50 INFO|root|Wait: ... 2026/06/02 09:34:50 INFO|root|UdpServer.Listen: udp://0.0.0.0:10002 2026/06/02 09:34:50 INFO|root|TcpServer.Listen: tcp://0.0.0.0:10002 2026/06/02 09:34:50 INFO|root|Http.Start 0.0.0.0:10000 [26-06-02 09:34:51][ASSERT#0060][OK] cost=2.051s [26-06-02 09:34:51][ASSERT#0061][match] at cases/switch_findhop.sh:115 fn=recover_sw11 retry=30 cmd="docker exec tests-sw-findhop11 openlan network --name b output ls" expect="state: authenticated" protocol: tcp remote: 172.243.0.240 secret: edgeb:123457 state: authenticated [26-06-02 09:34:52][ASSERT#0061][OK] cost=1.133s [26-06-02 09:34:52][ASSERT#0062][match] at cases/switch_findhop.sh:168 fn=test_findhop_loadbalance retry=30 cmd="docker exec tests-sw-findhop2 openlan network --name b output ls" expect="state: authenticated" remote: 172.243.0.242 rxBytes: 2730 secret: edgeb:123457 state: authenticated txBytes: 3079 [26-06-02 09:34:52][ASSERT#0062][OK] cost=0.066s [26-06-02 09:34:52][ASSERT#0063][cmd] at cases/switch_findhop.sh:170 fn=test_findhop_loadbalance cmd="docker exec tests-sw-findhop2 openlan network --name a findhop add --findhop sw0-hop-lb --nexthop 192.53.0.1,192.54.0.1 --check ping --mode load-balance" [26-06-02 09:34:52][ASSERT#0063][OK] cost=0.053s [26-06-02 09:34:52][ASSERT#0064][match] at cases/switch_findhop.sh:171 fn=test_findhop_loadbalance retry=20 cmd="docker exec tests-sw-findhop2 openlan network --name a findhop ls" expect="load-balance" # total 1 name checker mode nexthop available sw0-hop-lb ping load-balance 192.53.0.1,192.54.0.1 - [26-06-02 09:34:52][ASSERT#0064][OK] cost=0.068s [26-06-02 09:34:52][ASSERT#0065][cmd] at cases/switch_findhop.sh:173 fn=test_findhop_loadbalance cmd="docker exec tests-sw-findhop2 openlan network --name a route add --prefix 10.243.0.10/32 --findhop sw0-hop-lb" [26-06-02 09:34:52][ASSERT#0065][OK] cost=0.071s [26-06-02 09:34:52][ASSERT#0066][match] at cases/switch_findhop.sh:174 fn=test_findhop_loadbalance retry=60 cmd="docker exec tests-sw-findhop2 ip route show" expect="nexthop via 192.53.0.1" default via 172.243.0.1 dev eth0 10.243.0.10 metric 660 nexthop via 192.53.0.1 dev hi-a weight 2 nexthop via 192.54.0.1 dev hi-b weight 2 172.243.0.0/24 dev eth0 proto kernel scope link src 172.243.0.243 192.53.0.0/24 dev hi-a proto kernel scope link src 192.53.0.3 [26-06-02 09:35:09][ASSERT#0066][OK] cost=17.014s [26-06-02 09:35:09][ASSERT#0067][match] at cases/switch_findhop.sh:175 fn=test_findhop_loadbalance retry=60 cmd="docker exec tests-sw-findhop2 ip route show" expect="nexthop via 192.54.0.1" default via 172.243.0.1 dev eth0 10.243.0.10 metric 660 nexthop via 192.53.0.1 dev hi-a weight 2 nexthop via 192.54.0.1 dev hi-b weight 2 172.243.0.0/24 dev eth0 proto kernel scope link src 172.243.0.243 192.53.0.0/24 dev hi-a proto kernel scope link src 192.53.0.3 192.54.0.0/24 dev hi-b proto kernel scope link src 192.54.0.3 [26-06-02 09:35:09][ASSERT#0067][OK] cost=0.063s [26-06-02 09:35:09][ASSERT#0068][match] at cases/switch_findhop.sh:176 fn=test_findhop_loadbalance retry=30 cmd="docker exec tests-sw-findhop2 ping -c 3 10.243.0.10" expect="bytes from" PING 10.243.0.10 (10.243.0.10) 56(84) bytes of data. 64 bytes from 10.243.0.10: icmp_seq=1 ttl=64 time=0.842 ms 64 bytes from 10.243.0.10: icmp_seq=2 ttl=64 time=2.23 ms 64 bytes from 10.243.0.10: icmp_seq=3 ttl=64 time=1.93 ms --- 10.243.0.10 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2038ms [26-06-02 09:35:11][ASSERT#0068][OK] cost=2.097s [26-06-02 09:35:11][ASSERT#0069][cmd] at cases/switch_findhop.sh:178 fn=test_findhop_loadbalance cmd="docker exec tests-sw-findhop2 openlan network --name a route rm --prefix 10.243.0.10/32" [26-06-02 09:35:11][ASSERT#0069][OK] cost=0.074s [26-06-02 09:35:11][ASSERT#0070][cmd] at cases/switch_findhop.sh:179 fn=test_findhop_loadbalance cmd="docker exec tests-sw-findhop2 openlan network --name a findhop rm --findhop sw0-hop-lb" [26-06-02 09:35:11][ASSERT#0070][OK] cost=0.069s [26-06-02 09:35:12] END switch_findhop status=PASS cost=122.434s