]> git.puffer.fish Git - mirror/frr.git/commitdiff
tests: Add a topology that supports a large number of ecmp 17244/head
authorDonald Sharp <sharpd@nvidia.com>
Fri, 25 Oct 2024 15:28:45 +0000 (11:28 -0400)
committerDonald Sharp <sharpd@nvidia.com>
Tue, 5 Nov 2024 15:19:39 +0000 (10:19 -0500)
Add a basic topology that allows the testing of BGP and zebra
at scale.  I built this to help me find and fix problems with
a large number of bgp peers.  Since I plan to keep using this
and as I understand it there are future plans to take this
higher, I would like to add this as a test that people can invoke
with this command:

sudo -E python3 -m pytest -s -vv --topology-only

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
tests/topotests/high_ecmp/r1/frr.conf [new file with mode: 0644]
tests/topotests/high_ecmp/r2/frr.conf [new file with mode: 0644]
tests/topotests/high_ecmp/test_high_ecmp.py [new file with mode: 0644]
tests/topotests/pytest.ini

diff --git a/tests/topotests/high_ecmp/r1/frr.conf b/tests/topotests/high_ecmp/r1/frr.conf
new file mode 100644 (file)
index 0000000..4382f94
--- /dev/null
@@ -0,0 +1,267 @@
+int lo
+ ip addr 192.168.1.1/32
+router bgp 1001
+  timers bgp 5 20
+  no bgp ebgp-requires-policy
+  neighbor r1-eth0 interface remote-as external
+  neighbor r1-eth1 interface remote-as external
+  neighbor r1-eth2 interface remote-as external
+  neighbor r1-eth3 interface remote-as external
+  neighbor r1-eth4 interface remote-as external
+  neighbor r1-eth5 interface remote-as external
+  neighbor r1-eth6 interface remote-as external
+  neighbor r1-eth7 interface remote-as external
+  neighbor r1-eth8 interface remote-as external
+  neighbor r1-eth9 interface remote-as external
+  neighbor r1-eth10 interface remote-as external
+  neighbor r1-eth11 interface remote-as external
+  neighbor r1-eth12 interface remote-as external
+  neighbor r1-eth13 interface remote-as external
+  neighbor r1-eth14 interface remote-as external
+  neighbor r1-eth15 interface remote-as external
+  neighbor r1-eth16 interface remote-as external
+  neighbor r1-eth17 interface remote-as external
+  neighbor r1-eth18 interface remote-as external
+  neighbor r1-eth19 interface remote-as external
+  neighbor r1-eth20 interface remote-as external
+  neighbor r1-eth21 interface remote-as external
+  neighbor r1-eth22 interface remote-as external
+  neighbor r1-eth23 interface remote-as external
+  neighbor r1-eth24 interface remote-as external
+  neighbor r1-eth25 interface remote-as external
+  neighbor r1-eth26 interface remote-as external
+  neighbor r1-eth27 interface remote-as external
+  neighbor r1-eth28 interface remote-as external
+  neighbor r1-eth29 interface remote-as external
+  neighbor r1-eth30 interface remote-as external
+  neighbor r1-eth31 interface remote-as external
+  neighbor r1-eth32 interface remote-as external
+  neighbor r1-eth33 interface remote-as external
+  neighbor r1-eth34 interface remote-as external
+  neighbor r1-eth35 interface remote-as external
+  neighbor r1-eth36 interface remote-as external
+  neighbor r1-eth37 interface remote-as external
+  neighbor r1-eth38 interface remote-as external
+  neighbor r1-eth39 interface remote-as external
+  neighbor r1-eth40 interface remote-as external
+  neighbor r1-eth41 interface remote-as external
+  neighbor r1-eth42 interface remote-as external
+  neighbor r1-eth43 interface remote-as external
+  neighbor r1-eth44 interface remote-as external
+  neighbor r1-eth45 interface remote-as external
+  neighbor r1-eth46 interface remote-as external
+  neighbor r1-eth47 interface remote-as external
+  neighbor r1-eth48 interface remote-as external
+  neighbor r1-eth49 interface remote-as external
+  neighbor r1-eth50 interface remote-as external
+  neighbor r1-eth51 interface remote-as external
+  neighbor r1-eth52 interface remote-as external
+  neighbor r1-eth53 interface remote-as external
+  neighbor r1-eth54 interface remote-as external
+  neighbor r1-eth55 interface remote-as external
+  neighbor r1-eth56 interface remote-as external
+  neighbor r1-eth57 interface remote-as external
+  neighbor r1-eth58 interface remote-as external
+  neighbor r1-eth59 interface remote-as external
+  neighbor r1-eth60 interface remote-as external
+  neighbor r1-eth61 interface remote-as external
+  neighbor r1-eth62 interface remote-as external
+  neighbor r1-eth63 interface remote-as external
+  neighbor r1-eth64 interface remote-as external
+  neighbor r1-eth65 interface remote-as external
+  neighbor r1-eth66 interface remote-as external
+  neighbor r1-eth67 interface remote-as external
+  neighbor r1-eth68 interface remote-as external
+  neighbor r1-eth69 interface remote-as external
+  neighbor r1-eth70 interface remote-as external
+  neighbor r1-eth71 interface remote-as external
+  neighbor r1-eth72 interface remote-as external
+  neighbor r1-eth73 interface remote-as external
+  neighbor r1-eth74 interface remote-as external
+  neighbor r1-eth75 interface remote-as external
+  neighbor r1-eth76 interface remote-as external
+  neighbor r1-eth77 interface remote-as external
+  neighbor r1-eth78 interface remote-as external
+  neighbor r1-eth79 interface remote-as external
+  neighbor r1-eth80 interface remote-as external
+  neighbor r1-eth81 interface remote-as external
+  neighbor r1-eth82 interface remote-as external
+  neighbor r1-eth83 interface remote-as external
+  neighbor r1-eth84 interface remote-as external
+  neighbor r1-eth85 interface remote-as external
+  neighbor r1-eth86 interface remote-as external
+  neighbor r1-eth87 interface remote-as external
+  neighbor r1-eth88 interface remote-as external
+  neighbor r1-eth89 interface remote-as external
+  neighbor r1-eth90 interface remote-as external
+  neighbor r1-eth91 interface remote-as external
+  neighbor r1-eth92 interface remote-as external
+  neighbor r1-eth93 interface remote-as external
+  neighbor r1-eth94 interface remote-as external
+  neighbor r1-eth95 interface remote-as external
+  neighbor r1-eth96 interface remote-as external
+  neighbor r1-eth97 interface remote-as external
+  neighbor r1-eth98 interface remote-as external
+  neighbor r1-eth99 interface remote-as external
+  neighbor r1-eth100 interface remote-as external
+  neighbor r1-eth101 interface remote-as external
+  neighbor r1-eth102 interface remote-as external
+  neighbor r1-eth103 interface remote-as external
+  neighbor r1-eth104 interface remote-as external
+  neighbor r1-eth105 interface remote-as external
+  neighbor r1-eth106 interface remote-as external
+  neighbor r1-eth107 interface remote-as external
+  neighbor r1-eth108 interface remote-as external
+  neighbor r1-eth109 interface remote-as external
+  neighbor r1-eth110 interface remote-as external
+  neighbor r1-eth111 interface remote-as external
+  neighbor r1-eth112 interface remote-as external
+  neighbor r1-eth113 interface remote-as external
+  neighbor r1-eth114 interface remote-as external
+  neighbor r1-eth115 interface remote-as external
+  neighbor r1-eth116 interface remote-as external
+  neighbor r1-eth117 interface remote-as external
+  neighbor r1-eth118 interface remote-as external
+  neighbor r1-eth119 interface remote-as external
+  neighbor r1-eth120 interface remote-as external
+  neighbor r1-eth121 interface remote-as external
+  neighbor r1-eth122 interface remote-as external
+  neighbor r1-eth123 interface remote-as external
+  neighbor r1-eth124 interface remote-as external
+  neighbor r1-eth125 interface remote-as external
+  neighbor r1-eth126 interface remote-as external
+  neighbor r1-eth127 interface remote-as external
+  neighbor r1-eth128 interface remote-as external
+  neighbor r1-eth129 interface remote-as external
+  neighbor r1-eth130 interface remote-as external
+  neighbor r1-eth131 interface remote-as external
+  neighbor r1-eth132 interface remote-as external
+  neighbor r1-eth133 interface remote-as external
+  neighbor r1-eth134 interface remote-as external
+  neighbor r1-eth135 interface remote-as external
+  neighbor r1-eth136 interface remote-as external
+  neighbor r1-eth137 interface remote-as external
+  neighbor r1-eth138 interface remote-as external
+  neighbor r1-eth139 interface remote-as external
+  neighbor r1-eth140 interface remote-as external
+  neighbor r1-eth141 interface remote-as external
+  neighbor r1-eth142 interface remote-as external
+  neighbor r1-eth143 interface remote-as external
+  neighbor r1-eth144 interface remote-as external
+  neighbor r1-eth145 interface remote-as external
+  neighbor r1-eth146 interface remote-as external
+  neighbor r1-eth147 interface remote-as external
+  neighbor r1-eth148 interface remote-as external
+  neighbor r1-eth149 interface remote-as external
+  neighbor r1-eth150 interface remote-as external
+  neighbor r1-eth151 interface remote-as external
+  neighbor r1-eth152 interface remote-as external
+  neighbor r1-eth153 interface remote-as external
+  neighbor r1-eth154 interface remote-as external
+  neighbor r1-eth155 interface remote-as external
+  neighbor r1-eth156 interface remote-as external
+  neighbor r1-eth157 interface remote-as external
+  neighbor r1-eth158 interface remote-as external
+  neighbor r1-eth159 interface remote-as external
+  neighbor r1-eth160 interface remote-as external
+  neighbor r1-eth161 interface remote-as external
+  neighbor r1-eth162 interface remote-as external
+  neighbor r1-eth163 interface remote-as external
+  neighbor r1-eth164 interface remote-as external
+  neighbor r1-eth165 interface remote-as external
+  neighbor r1-eth166 interface remote-as external
+  neighbor r1-eth167 interface remote-as external
+  neighbor r1-eth168 interface remote-as external
+  neighbor r1-eth169 interface remote-as external
+  neighbor r1-eth170 interface remote-as external
+  neighbor r1-eth171 interface remote-as external
+  neighbor r1-eth172 interface remote-as external
+  neighbor r1-eth173 interface remote-as external
+  neighbor r1-eth174 interface remote-as external
+  neighbor r1-eth175 interface remote-as external
+  neighbor r1-eth176 interface remote-as external
+  neighbor r1-eth177 interface remote-as external
+  neighbor r1-eth178 interface remote-as external
+  neighbor r1-eth179 interface remote-as external
+  neighbor r1-eth180 interface remote-as external
+  neighbor r1-eth181 interface remote-as external
+  neighbor r1-eth182 interface remote-as external
+  neighbor r1-eth183 interface remote-as external
+  neighbor r1-eth184 interface remote-as external
+  neighbor r1-eth185 interface remote-as external
+  neighbor r1-eth186 interface remote-as external
+  neighbor r1-eth187 interface remote-as external
+  neighbor r1-eth188 interface remote-as external
+  neighbor r1-eth189 interface remote-as external
+  neighbor r1-eth190 interface remote-as external
+  neighbor r1-eth191 interface remote-as external
+  neighbor r1-eth192 interface remote-as external
+  neighbor r1-eth193 interface remote-as external
+  neighbor r1-eth194 interface remote-as external
+  neighbor r1-eth195 interface remote-as external
+  neighbor r1-eth196 interface remote-as external
+  neighbor r1-eth197 interface remote-as external
+  neighbor r1-eth198 interface remote-as external
+  neighbor r1-eth199 interface remote-as external
+  neighbor r1-eth200 interface remote-as external
+  neighbor r1-eth201 interface remote-as external
+  neighbor r1-eth202 interface remote-as external
+  neighbor r1-eth203 interface remote-as external
+  neighbor r1-eth204 interface remote-as external
+  neighbor r1-eth205 interface remote-as external
+  neighbor r1-eth206 interface remote-as external
+  neighbor r1-eth207 interface remote-as external
+  neighbor r1-eth208 interface remote-as external
+  neighbor r1-eth209 interface remote-as external
+  neighbor r1-eth210 interface remote-as external
+  neighbor r1-eth211 interface remote-as external
+  neighbor r1-eth212 interface remote-as external
+  neighbor r1-eth213 interface remote-as external
+  neighbor r1-eth214 interface remote-as external
+  neighbor r1-eth215 interface remote-as external
+  neighbor r1-eth216 interface remote-as external
+  neighbor r1-eth217 interface remote-as external
+  neighbor r1-eth218 interface remote-as external
+  neighbor r1-eth219 interface remote-as external
+  neighbor r1-eth220 interface remote-as external
+  neighbor r1-eth221 interface remote-as external
+  neighbor r1-eth222 interface remote-as external
+  neighbor r1-eth223 interface remote-as external
+  neighbor r1-eth224 interface remote-as external
+  neighbor r1-eth225 interface remote-as external
+  neighbor r1-eth226 interface remote-as external
+  neighbor r1-eth227 interface remote-as external
+  neighbor r1-eth228 interface remote-as external
+  neighbor r1-eth229 interface remote-as external
+  neighbor r1-eth230 interface remote-as external
+  neighbor r1-eth231 interface remote-as external
+  neighbor r1-eth232 interface remote-as external
+  neighbor r1-eth233 interface remote-as external
+  neighbor r1-eth234 interface remote-as external
+  neighbor r1-eth235 interface remote-as external
+  neighbor r1-eth236 interface remote-as external
+  neighbor r1-eth237 interface remote-as external
+  neighbor r1-eth238 interface remote-as external
+  neighbor r1-eth239 interface remote-as external
+  neighbor r1-eth240 interface remote-as external
+  neighbor r1-eth241 interface remote-as external
+  neighbor r1-eth242 interface remote-as external
+  neighbor r1-eth243 interface remote-as external
+  neighbor r1-eth244 interface remote-as external
+  neighbor r1-eth245 interface remote-as external
+  neighbor r1-eth246 interface remote-as external
+  neighbor r1-eth247 interface remote-as external
+  neighbor r1-eth248 interface remote-as external
+  neighbor r1-eth249 interface remote-as external
+  neighbor r1-eth250 interface remote-as external
+  neighbor r1-eth251 interface remote-as external
+  neighbor r1-eth252 interface remote-as external
+  neighbor r1-eth253 interface remote-as external
+  neighbor r1-eth254 interface remote-as external
+  neighbor r1-eth255 interface remote-as external
+  neighbor r1-eth256 interface remote-as external
+  neighbor r1-eth257 interface remote-as external
+  neighbor r1-eth258 interface remote-as external
+  neighbor r1-eth259 interface remote-as external
+ address-family ipv4 uni
+   redistribute sharp
diff --git a/tests/topotests/high_ecmp/r2/frr.conf b/tests/topotests/high_ecmp/r2/frr.conf
new file mode 100644 (file)
index 0000000..a9d6536
--- /dev/null
@@ -0,0 +1,267 @@
+int lo
+ ip addr 192.168.1.2/32
+!
+router bgp 1002
+  timers bgp 5 20
+  no bgp ebgp-requires-policy
+  read-quanta 1
+  neighbor r2-eth0 interface remote-as external
+  neighbor r2-eth1 interface remote-as external
+  neighbor r2-eth2 interface remote-as external
+  neighbor r2-eth3 interface remote-as external
+  neighbor r2-eth4 interface remote-as external
+  neighbor r2-eth5 interface remote-as external
+  neighbor r2-eth6 interface remote-as external
+  neighbor r2-eth7 interface remote-as external
+  neighbor r2-eth8 interface remote-as external
+  neighbor r2-eth9 interface remote-as external
+  neighbor r2-eth10 interface remote-as external
+  neighbor r2-eth11 interface remote-as external
+  neighbor r2-eth12 interface remote-as external
+  neighbor r2-eth13 interface remote-as external
+  neighbor r2-eth14 interface remote-as external
+  neighbor r2-eth15 interface remote-as external
+  neighbor r2-eth16 interface remote-as external
+  neighbor r2-eth17 interface remote-as external
+  neighbor r2-eth18 interface remote-as external
+  neighbor r2-eth19 interface remote-as external
+  neighbor r2-eth20 interface remote-as external
+  neighbor r2-eth21 interface remote-as external
+  neighbor r2-eth22 interface remote-as external
+  neighbor r2-eth23 interface remote-as external
+  neighbor r2-eth24 interface remote-as external
+  neighbor r2-eth25 interface remote-as external
+  neighbor r2-eth26 interface remote-as external
+  neighbor r2-eth27 interface remote-as external
+  neighbor r2-eth28 interface remote-as external
+  neighbor r2-eth29 interface remote-as external
+  neighbor r2-eth30 interface remote-as external
+  neighbor r2-eth31 interface remote-as external
+  neighbor r2-eth32 interface remote-as external
+  neighbor r2-eth33 interface remote-as external
+  neighbor r2-eth34 interface remote-as external
+  neighbor r2-eth35 interface remote-as external
+  neighbor r2-eth36 interface remote-as external
+  neighbor r2-eth37 interface remote-as external
+  neighbor r2-eth38 interface remote-as external
+  neighbor r2-eth39 interface remote-as external
+  neighbor r2-eth40 interface remote-as external
+  neighbor r2-eth41 interface remote-as external
+  neighbor r2-eth42 interface remote-as external
+  neighbor r2-eth43 interface remote-as external
+  neighbor r2-eth44 interface remote-as external
+  neighbor r2-eth45 interface remote-as external
+  neighbor r2-eth46 interface remote-as external
+  neighbor r2-eth47 interface remote-as external
+  neighbor r2-eth48 interface remote-as external
+  neighbor r2-eth49 interface remote-as external
+  neighbor r2-eth50 interface remote-as external
+  neighbor r2-eth51 interface remote-as external
+  neighbor r2-eth52 interface remote-as external
+  neighbor r2-eth53 interface remote-as external
+  neighbor r2-eth54 interface remote-as external
+  neighbor r2-eth55 interface remote-as external
+  neighbor r2-eth56 interface remote-as external
+  neighbor r2-eth57 interface remote-as external
+  neighbor r2-eth58 interface remote-as external
+  neighbor r2-eth59 interface remote-as external
+  neighbor r2-eth60 interface remote-as external
+  neighbor r2-eth61 interface remote-as external
+  neighbor r2-eth62 interface remote-as external
+  neighbor r2-eth63 interface remote-as external
+  neighbor r2-eth64 interface remote-as external
+  neighbor r2-eth65 interface remote-as external
+  neighbor r2-eth66 interface remote-as external
+  neighbor r2-eth67 interface remote-as external
+  neighbor r2-eth68 interface remote-as external
+  neighbor r2-eth69 interface remote-as external
+  neighbor r2-eth70 interface remote-as external
+  neighbor r2-eth71 interface remote-as external
+  neighbor r2-eth72 interface remote-as external
+  neighbor r2-eth73 interface remote-as external
+  neighbor r2-eth74 interface remote-as external
+  neighbor r2-eth75 interface remote-as external
+  neighbor r2-eth76 interface remote-as external
+  neighbor r2-eth77 interface remote-as external
+  neighbor r2-eth78 interface remote-as external
+  neighbor r2-eth79 interface remote-as external
+  neighbor r2-eth80 interface remote-as external
+  neighbor r2-eth81 interface remote-as external
+  neighbor r2-eth82 interface remote-as external
+  neighbor r2-eth83 interface remote-as external
+  neighbor r2-eth84 interface remote-as external
+  neighbor r2-eth85 interface remote-as external
+  neighbor r2-eth86 interface remote-as external
+  neighbor r2-eth87 interface remote-as external
+  neighbor r2-eth88 interface remote-as external
+  neighbor r2-eth89 interface remote-as external
+  neighbor r2-eth90 interface remote-as external
+  neighbor r2-eth91 interface remote-as external
+  neighbor r2-eth92 interface remote-as external
+  neighbor r2-eth93 interface remote-as external
+  neighbor r2-eth94 interface remote-as external
+  neighbor r2-eth95 interface remote-as external
+  neighbor r2-eth96 interface remote-as external
+  neighbor r2-eth97 interface remote-as external
+  neighbor r2-eth98 interface remote-as external
+  neighbor r2-eth99 interface remote-as external
+  neighbor r2-eth100 interface remote-as external
+  neighbor r2-eth101 interface remote-as external
+  neighbor r2-eth102 interface remote-as external
+  neighbor r2-eth103 interface remote-as external
+  neighbor r2-eth104 interface remote-as external
+  neighbor r2-eth105 interface remote-as external
+  neighbor r2-eth106 interface remote-as external
+  neighbor r2-eth107 interface remote-as external
+  neighbor r2-eth108 interface remote-as external
+  neighbor r2-eth109 interface remote-as external
+  neighbor r2-eth110 interface remote-as external
+  neighbor r2-eth111 interface remote-as external
+  neighbor r2-eth112 interface remote-as external
+  neighbor r2-eth113 interface remote-as external
+  neighbor r2-eth114 interface remote-as external
+  neighbor r2-eth115 interface remote-as external
+  neighbor r2-eth116 interface remote-as external
+  neighbor r2-eth117 interface remote-as external
+  neighbor r2-eth118 interface remote-as external
+  neighbor r2-eth119 interface remote-as external
+  neighbor r2-eth120 interface remote-as external
+  neighbor r2-eth121 interface remote-as external
+  neighbor r2-eth122 interface remote-as external
+  neighbor r2-eth123 interface remote-as external
+  neighbor r2-eth124 interface remote-as external
+  neighbor r2-eth125 interface remote-as external
+  neighbor r2-eth126 interface remote-as external
+  neighbor r2-eth127 interface remote-as external
+  neighbor r2-eth128 interface remote-as external
+  neighbor r2-eth129 interface remote-as external
+  neighbor r2-eth130 interface remote-as external
+  neighbor r2-eth131 interface remote-as external
+  neighbor r2-eth132 interface remote-as external
+  neighbor r2-eth133 interface remote-as external
+  neighbor r2-eth134 interface remote-as external
+  neighbor r2-eth135 interface remote-as external
+  neighbor r2-eth136 interface remote-as external
+  neighbor r2-eth137 interface remote-as external
+  neighbor r2-eth138 interface remote-as external
+  neighbor r2-eth139 interface remote-as external
+  neighbor r2-eth140 interface remote-as external
+  neighbor r2-eth141 interface remote-as external
+  neighbor r2-eth142 interface remote-as external
+  neighbor r2-eth143 interface remote-as external
+  neighbor r2-eth144 interface remote-as external
+  neighbor r2-eth145 interface remote-as external
+  neighbor r2-eth146 interface remote-as external
+  neighbor r2-eth147 interface remote-as external
+  neighbor r2-eth148 interface remote-as external
+  neighbor r2-eth149 interface remote-as external
+  neighbor r2-eth150 interface remote-as external
+  neighbor r2-eth151 interface remote-as external
+  neighbor r2-eth152 interface remote-as external
+  neighbor r2-eth153 interface remote-as external
+  neighbor r2-eth154 interface remote-as external
+  neighbor r2-eth155 interface remote-as external
+  neighbor r2-eth156 interface remote-as external
+  neighbor r2-eth157 interface remote-as external
+  neighbor r2-eth158 interface remote-as external
+  neighbor r2-eth159 interface remote-as external
+  neighbor r2-eth160 interface remote-as external
+  neighbor r2-eth161 interface remote-as external
+  neighbor r2-eth162 interface remote-as external
+  neighbor r2-eth163 interface remote-as external
+  neighbor r2-eth164 interface remote-as external
+  neighbor r2-eth165 interface remote-as external
+  neighbor r2-eth166 interface remote-as external
+  neighbor r2-eth167 interface remote-as external
+  neighbor r2-eth168 interface remote-as external
+  neighbor r2-eth169 interface remote-as external
+  neighbor r2-eth170 interface remote-as external
+  neighbor r2-eth171 interface remote-as external
+  neighbor r2-eth172 interface remote-as external
+  neighbor r2-eth173 interface remote-as external
+  neighbor r2-eth174 interface remote-as external
+  neighbor r2-eth175 interface remote-as external
+  neighbor r2-eth176 interface remote-as external
+  neighbor r2-eth177 interface remote-as external
+  neighbor r2-eth178 interface remote-as external
+  neighbor r2-eth179 interface remote-as external
+  neighbor r2-eth180 interface remote-as external
+  neighbor r2-eth181 interface remote-as external
+  neighbor r2-eth182 interface remote-as external
+  neighbor r2-eth183 interface remote-as external
+  neighbor r2-eth184 interface remote-as external
+  neighbor r2-eth185 interface remote-as external
+  neighbor r2-eth186 interface remote-as external
+  neighbor r2-eth187 interface remote-as external
+  neighbor r2-eth188 interface remote-as external
+  neighbor r2-eth189 interface remote-as external
+  neighbor r2-eth190 interface remote-as external
+  neighbor r2-eth191 interface remote-as external
+  neighbor r2-eth192 interface remote-as external
+  neighbor r2-eth193 interface remote-as external
+  neighbor r2-eth194 interface remote-as external
+  neighbor r2-eth195 interface remote-as external
+  neighbor r2-eth196 interface remote-as external
+  neighbor r2-eth197 interface remote-as external
+  neighbor r2-eth198 interface remote-as external
+  neighbor r2-eth199 interface remote-as external
+  neighbor r2-eth200 interface remote-as external
+  neighbor r2-eth201 interface remote-as external
+  neighbor r2-eth202 interface remote-as external
+  neighbor r2-eth203 interface remote-as external
+  neighbor r2-eth204 interface remote-as external
+  neighbor r2-eth205 interface remote-as external
+  neighbor r2-eth206 interface remote-as external
+  neighbor r2-eth207 interface remote-as external
+  neighbor r2-eth208 interface remote-as external
+  neighbor r2-eth209 interface remote-as external
+  neighbor r2-eth210 interface remote-as external
+  neighbor r2-eth211 interface remote-as external
+  neighbor r2-eth212 interface remote-as external
+  neighbor r2-eth213 interface remote-as external
+  neighbor r2-eth214 interface remote-as external
+  neighbor r2-eth215 interface remote-as external
+  neighbor r2-eth216 interface remote-as external
+  neighbor r2-eth217 interface remote-as external
+  neighbor r2-eth218 interface remote-as external
+  neighbor r2-eth219 interface remote-as external
+  neighbor r2-eth220 interface remote-as external
+  neighbor r2-eth221 interface remote-as external
+  neighbor r2-eth222 interface remote-as external
+  neighbor r2-eth223 interface remote-as external
+  neighbor r2-eth224 interface remote-as external
+  neighbor r2-eth225 interface remote-as external
+  neighbor r2-eth226 interface remote-as external
+  neighbor r2-eth227 interface remote-as external
+  neighbor r2-eth228 interface remote-as external
+  neighbor r2-eth229 interface remote-as external
+  neighbor r2-eth230 interface remote-as external
+  neighbor r2-eth231 interface remote-as external
+  neighbor r2-eth232 interface remote-as external
+  neighbor r2-eth233 interface remote-as external
+  neighbor r2-eth234 interface remote-as external
+  neighbor r2-eth235 interface remote-as external
+  neighbor r2-eth236 interface remote-as external
+  neighbor r2-eth237 interface remote-as external
+  neighbor r2-eth238 interface remote-as external
+  neighbor r2-eth239 interface remote-as external
+  neighbor r2-eth240 interface remote-as external
+  neighbor r2-eth241 interface remote-as external
+  neighbor r2-eth242 interface remote-as external
+  neighbor r2-eth243 interface remote-as external
+  neighbor r2-eth244 interface remote-as external
+  neighbor r2-eth245 interface remote-as external
+  neighbor r2-eth246 interface remote-as external
+  neighbor r2-eth247 interface remote-as external
+  neighbor r2-eth248 interface remote-as external
+  neighbor r2-eth249 interface remote-as external
+  neighbor r2-eth250 interface remote-as external
+  neighbor r2-eth251 interface remote-as external
+  neighbor r2-eth252 interface remote-as external
+  neighbor r2-eth253 interface remote-as external
+  neighbor r2-eth254 interface remote-as external
+  neighbor r2-eth255 interface remote-as external
+  neighbor r2-eth256 interface remote-as external
+  neighbor r2-eth257 interface remote-as external
+  neighbor r2-eth258 interface remote-as external
+  neighbor r2-eth259 interface remote-as external
diff --git a/tests/topotests/high_ecmp/test_high_ecmp.py b/tests/topotests/high_ecmp/test_high_ecmp.py
new file mode 100644 (file)
index 0000000..d28a1ee
--- /dev/null
@@ -0,0 +1,106 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: ISC
+
+#
+# test_high_ecmp.py
+#
+# Copyright (c) 2024 by
+# Nvidia Corporation
+# Donald Sharp
+#
+
+"""
+test_high_ecmp.py: Testing two routers with 256 interfaces and BGP setup
+                   on it.
+
+"""
+
+import os
+import re
+import sys
+import pytest
+import json
+
+pytestmark = [pytest.mark.bgpd]
+
+# Save the Current Working Directory to find configuration files.
+CWD = os.path.dirname(os.path.realpath(__file__))
+sys.path.append(os.path.join(CWD, "../"))
+
+# pylint: disable=C0413
+# Import topogen and topotest helpers
+from lib import topotest
+from lib.topogen import Topogen, TopoRouter, get_topogen
+from lib.topolog import logger
+
+# Required to instantiate the topology builder class.
+
+#####################################################
+##
+##   Network Topology Definition
+##
+#####################################################
+
+
+def build_topo(tgen):
+
+    tgen.add_router("r1")
+    tgen.add_router("r2")
+
+    r1 = tgen.gears["r1"]
+    r2 = tgen.gears["r2"]
+
+    # Let's create 257 interfaces between the two switches
+    for switch in range(1, 257):
+        switch = tgen.add_switch("sw{}".format(switch))
+        switch.add_link(r1)
+        switch.add_link(r2)
+
+
+#####################################################
+##
+##   Tests starting
+##
+#####################################################
+
+
+def setup_module(module):
+    "Setup topology"
+    tgen = Topogen(build_topo, module.__name__)
+    tgen.start_topology()
+
+    # This is a sample of configuration loading.
+    router_list = tgen.routers()
+    for rname, router in router_list.items():
+        router.load_frr_config(
+            os.path.join(CWD, "{}/frr.conf".format(rname)),
+            [
+                (TopoRouter.RD_ZEBRA, "-s 180000000"),
+                (TopoRouter.RD_BGP, None),
+                (TopoRouter.RD_SHARP, None),
+            ],
+        )
+
+    tgen.start_router()
+
+
+def teardown_module(_mod):
+    "Teardown the pytest environment"
+    tgen = get_topogen()
+
+    # This function tears down the whole topology.
+    tgen.stop_topology()
+
+
+def test_nothing():
+    "Do Nothing"
+
+    tgen = get_topogen()
+    # Don't run this test if we have any failure.
+    if tgen.routers_have_failure():
+        pytest.skip(tgen.errors)
+
+
+if __name__ == "__main__":
+    args = ["-s"] + sys.argv[1:]
+    sys.exit(pytest.main(args))
index b234a84252b3cd00988c891e14f08abcb2848a5b..ef95ea1b953f2749879746b1cd4da5c324c519e7 100644 (file)
@@ -32,7 +32,7 @@ log_file_date_format = %Y-%m-%d %H:%M:%S
 junit_logging = all
 junit_log_passing_tests = true
 
-norecursedirs = .git example_munet example_test example_topojson_test lib munet docker
+norecursedirs = .git example_munet example_test example_topojson_test lib munet docker high_ecmp
 
 # Directory to store test results and run logs in, default shown
 # rundir = /tmp/topotests