Commit Graph

602 Commits

Author SHA1 Message Date
Rafael Zalamena
d43cd0fd62 isis-topo1: simplify dictionary key removal code
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:13 -05:00
Rafael Zalamena
88f83773d9 isis-topo1: check ipv6 zebra route installation
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:13 -05:00
Rafael Zalamena
fc7752c118 isis-topo1: skip test on FRR 2.0
It was noticed that this topology doesn't converge when there are IPv6
configurations, so this commit makes the tests to be skipped when the
version is 2.X.Y.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org
2018-11-27 20:22:13 -05:00
Rafael Zalamena
5836fac223 isis-topo1: add IPv6 ISIS topology test
Configure IPv6 addresses and ISIS distribution, then test the topology
for the newly configured addresses.

This commit also adds support for parsing IPv6 data from the ISIS
topology output while updating the routers topology JSON files.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:13 -05:00
Rafael Zalamena
29614f56c5 isis-topo1: add support for stable versions
Allow isis-topo1 tests to run on stable versions (2.0.2 and 3.0.2).

There are two differences between the stable versions and master:
1. ISIS nexthops don't show interfaceName nor interfaceIndex
   (on 'show ip route json')
2. New FRR version install ISIS routes in Linux with a different proto
   type identification.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:13 -05:00
Rafael Zalamena
2d013cdabc isis-topo1: check ISIS kernel route installation
Check if the ISIS learned routes are being installed in the underlying
OS.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:13 -05:00
Rafael Zalamena
e4d08d5be7 isis-topo1: test ISIS route installation
Check the 'show ip route json' output for installed ISIS routes.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:13 -05:00
Rafael Zalamena
67f1e9ed09 isis-topo1: test ISIS topology convergence
Add function to parse 'show isis topology' and expect the correct
convergence result.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:13 -05:00
Rafael Zalamena
74bd8dd9ba isis-topo1: add topology graph
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:13 -05:00
Rafael Zalamena
3aefe20797 isis-topo1: import topology
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:13 -05:00
Martin Winter
4649eef8e1 ldp-vpls-topo1: new format for ospf neighbor json
Accept new format in ospf neighbor json output in addition to
old version. New format was introduced with PR1659

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:13 -05:00
Lou Berger
8ab91133c7 lib: ltemplate - fix handling of CallOnFail (take 2)
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:13 -05:00
Lou Berger
5859c4be6b lib: ltemplate - fix handling of CallOnFail
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:13 -05:00
Lou Berger
3eff4cc9dd bgp_l3vpn_to_bgp_direct: fix hook routines for ltemplate
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:13 -05:00
Lou Berger
2eddcd9ff3 bgp_l3vpn_to_bgp_direct: rename bgp_direct_to_bgp_vpn Rename BGP L3VPN test to have L3VPN at start of test name Also remove unused/pre-ltemplate files
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:13 -05:00
Lou Berger
c30e3e40a6 bgp_direct_to_bgp_vpn: enable mpls forwarding, add more details on adjacencies
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:13 -05:00
Lou Berger
db2dbd246e bgp_direct_to_bgp_vpn: convert to lib/ltemplate
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:13 -05:00
Lou Berger
df437d254a lib: add LabN testing template
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:12 -05:00
Martin Winter
d75f5f94cd ospf-topo1: Allow IPv6 ECMP version to pass
Check ospf IPv6 routes for ECMP version first and fallback
to previous version if needed.

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Martin Winter
a1f1550fc2 ospf-topo1: Add IPv6 addresses to diagram
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Lou Berger
50b15737c9 lib: lutil - make it easier to spot command output and null output
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:12 -05:00
Lou Berger
2fdcc34250 lib: lutil - make requested error logging change
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:12 -05:00
Lou Berger
bd15005d3a bgp_direct_to_bgp_vpn: scripts - avoid race condition, and test for predicable results
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:12 -05:00
Lou Berger
ffdac4dbd8 bgp_direct_to_bgp_vpn: add some progress output
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:12 -05:00
Lou Berger
e437365bb9 bgp_direct_to_bgp_vpn: general cleanup use moved lutil.py improve error information adjust to new luCommand default timeout sdd support for CliOnFail, remove no_test_call_mininet_cli scripts - update to correct stable values use topo test's log dir
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:12 -05:00
Lou Berger
a582a8e9c5 lib: lutil cleanup move utilities/lutil.py -> lib/lutil.py add: luShowFail, CallOnFail, luStart parameter to set log dir change default wait to 10sec
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:12 -05:00
Lou Berger
7ed102b925 bgp_direct_to_bgp_vpn: convert to new template, skip tests on pre-3.1 versions
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:12 -05:00
Lou Berger
6d0dbb7996 bgp_direct_to_bgp_vpn: initial version
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:12 -05:00
Lou Berger
199a7c79c1 lutil: initial version
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:12 -05:00
Rafael Zalamena
e600b2d93c topotest: remove pid files
Remove PID files after a SIGKILL or confirmation that the pid file no
longer contains a running PID.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Rafael Zalamena
065bd557f8 topotest: improve informational messages
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Rafael Zalamena
63038f4b02 topotest: show the user that we are waiting
Add a log message to tell the user that we are waiting for zebra.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Lou Berger
3a568b9ca6 lib: speed up router shutdown stopRouter: report when a process is being killed only sleep if actually killed a process add option to not sleep or conduct -7 kill topogen stop: add wait parameter (defaults to old/wait) when stopping routers, first stop all without waiting then do a second pass where will wait if needed
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:12 -05:00
Rafael Zalamena
08533b7bce topotest: always show diff on json_cmp failure
Append diffs on all json_cmp failures so the reader can compare JSON
field differences.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
479b98aacd topotest: specify why we are waiting
This shows the user why the router teardown is taking 2 seconds long.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
28a9b4f56e doc: update README and add code snippets
Add some pointers in the README documentation that might help users get
ready to use topotest.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
222ea88b2a topotest/topogen: demote some messages level
The messages level of this commit were downgraded because some of them
happen on 'non-error' situations. This should help diminish the error
log verbosity on the CI-system run.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
034237db12 topotest: fix a regression in version_cmp
It was found a regression on an edge case when the second number in the
comparison was (at least) 2 numbers longer the comparison would fail
with a wrong return value. It succeeded for some cases because the
first comparison in the exception was correct, but not the second.
2018-11-27 20:22:12 -05:00
Martin Winter
a018893f7c bgp-ecmp-topo1: Workaround for version check
temp workaround for Issue #43

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Martin Winter
3d6c6f01ac ldp-vpls-topo1: Allow ospf neighbor json command with list (new) and dict (old)
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Rafael Zalamena
968afc2848 ldp-vpls-topo1: fix a json_cmp result assert
Use the 'right' assert to show more detailed failure report and remove
a unused variable.
2018-11-27 20:22:12 -05:00
Martin Winter
dd3ddc0663 Fix output to allow it on generic Debian
- Generic Debian only has a single space in front of “proto” in the linux shell routing outptu

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Rafael Zalamena
7c1f9631fc eigrp-topo1: solve output ordering problem
Transform 'show ip eigrp topo' output into data structures and compare
using json_cmp() to avoid expecting output order.
2018-11-27 20:22:12 -05:00
Renato Westphal
13e8bc063f ldp-topo1: Remove check for protocol in installed LSPs
PR #1213 in FRR changed the protocol of installed LSPs. To avoid breaking
older outstanding Pull Requests, remove the protocol check.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Martin Winter
ad59d1f5bb eigrp-topo1: Remove check for EIGRP distance
- Distance used to be wrong (0), new commit fixes this (90). To avoid breaking older outstanding Pull Requests, remove the distance check

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Rafael Zalamena
7bd28cfc67 topotest: improve json error messages
Show a diff of the JSON values instead of dumping the whole
data structures.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
2db5888df5 topotest: json_cmp_result split error lines
When the API user wanted to show newlines we have to break them manually
to get the propper format.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
bc2872fd17 topotest: allow passing options to difflib
Extend the topotest diff functions to allow receiving difflib options.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
566567e9be topotest: remove unused json_cmp unused parameter 2018-11-27 20:22:12 -05:00
Martin Winter
6ae351e837 all-protocol-startup/isis: Fix check for "show isis interface" to allow different circuit ids than 1 2018-11-27 20:22:12 -05:00
Rafael Zalamena
fcfbc7696b topogen: fix diagnostics failure
Don't try to log to file if directory doesn't exist.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
d34f613477 topogen: save zebra version output
Keep the zebra version output for later problem diagnostics.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
7547ebd8cd topogen: log diagnostics to file 2018-11-27 20:22:12 -05:00
Martin Winter
1b46274d5c eigrp-topo1: Cleanup leftover comments from previous commit
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Martin Winter
ee4523a215 eigrp-topo1: Change Route verification to use json
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Martin Winter
555451faa5 all-protocol-starup: Fix triple-output of same vtysh stderr/stdout messages.
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Martin Winter
7551168cba lib: Use SIGTERM for killing daemons first and only SIGBUS (7) if the daemons fail to exit.
- This allows daemons to free up memory and avoid false memory leak reports

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Martin Winter
8e957dbb04 multiple_topos: Don't report about StdErr Output if there is no output
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Donald Sharp
9057cd2cc3 eigrp-topo1: Correct eigrp test results.
The values saved for the route table and eigrp topo
were a bit off because they have been corrected
in the eigrp daemon

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-11-27 20:22:12 -05:00
Martin Winter
8ee1273e44 Enable eigrp-topo1
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Martin Winter
44a592b2a6 lib: check for eigrpd available and return warning if missing instead of failing 2018-11-27 20:22:12 -05:00
Rafael Zalamena
e5355a016f eigrp-topo1: convert to topogen 2018-11-27 20:22:12 -05:00
Rafael Zalamena
c267e5b112 topogen: add support for eigrpd and nhrp 2018-11-27 20:22:12 -05:00
Rafael Zalamena
57c5075b7b topogen: router startup failure triggers errors
Makes `router_have_failure()` detect frr startup errors.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
b3b1b1d16c topogen: treat some corner cases on vtysh failure
Don't throw unneeded tracebacks when 'show version' doesn't show us what
we expect, instead gracefully fail.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
1eb633c012 topogen: show pretty output for skipped messages
Format them properly instead of printing a dictionary.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
333139b22e ldp_vpls_topo1: set an error instead of exit
It will have the same effect and code will not have to be repeated since
all functions must call `routers_have_failure()`.
2018-11-27 20:22:12 -05:00
Renato Westphal
f13a242c76 ldp_vpls_topo1: don't use pytest.mark.skipif
This feature from pytest can not be used to detect runtime errors.

Also, remove test_router_running() since all tests should actually check
if all daemons are up and running.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Renato Westphal
c4057baab7 ldp_vpls_topo1: skip all tests on stable/2.0
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Renato Westphal
6fcaea2bc6 ldp_vpls_topo1: add new topology for ldp pseudowires
This is a very simple topology for testing LDP pseudowires.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Donald Sharp
2dad85f432 Basic EIGRP topo test working
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-11-27 20:22:12 -05:00
Donald Sharp
1fccd8e958 Exclude eigrp test from running normally yet
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-11-27 20:22:12 -05:00
Donald Sharp
a4e471cfc5 Add a basic EIGRP topology.
Nothing fancy here, just add 3 routers in a row
attempt to let eigrp come up and start a mininet
xterm to debug, since eigrp doesn't work yet.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-11-27 20:22:12 -05:00
Donald Sharp
cda83bee9f Allow topotests to work with eigrp and nhrp
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-11-27 20:22:12 -05:00
Martin Winter
be7286cc82 ldp-topo1: Use 'label implicit-null' for implicit labels
Signed-off-by: Martin Winter <mwinter@netdef.org>
2018-11-27 20:22:12 -05:00
David Lamparter
91733ef85e topotests: change from "context" to "unified" diff
context diff:
*** before.py
2018-11-27 20:22:12 -05:00
Rafael Zalamena
5684f8100d topotests: add topology name to assert output
Make it easy to identify which topology test we are running.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
e7ba3cd11c topotests: make asserts show up in stderr
Code was based on the pytest default makereport code:
c92760dca8/_pytest/runner.py (L264)
2018-11-27 20:22:12 -05:00
Martin Winter
9427b78f65 lib: Change topology to output INFO and DEBUG to stdout and other levels to stderr
Previously, all logs were sent to stderr
2018-11-27 20:22:12 -05:00
Martin Winter
c11c4cc7d3 lib: add check for mpls kernel modules to diagnose_env()
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Martin Winter
b431b5540f lib: Enhance daemon_available() function to check for mpls modules in case of LDPd
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Martin Winter
e1b2ce6a70 lib: Add check for MPLS kernel modules to exist before trying LDP tests
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Martin Winter
1380ecb1ce ospf-topo1: Remove check for spfLastDurationMsecs value
json check accidently checked for the spfLastDurationMsecs which
isn't always 0 for slower system in our tests. ARM7 sometimes has
a slightly higher value (1).

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Martin Winter
67651166b6 bgp-ecmp-topo1: Check number of routes received for convergence
Add check for number of routes to convergence. InQ=0, OutQ=0
together with correct number of routes received shows that
BGP has converged

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Rafael Zalamena
9a950d76bd bgp-ecmp-topo: add support for FRR 2.0
The FRR 2.0 json output is different from newer version, so add the
appropriate treatment.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
35a00f240f bgp-ecmp-topo: test BGP convergence
Add a test that waits for BGP convergence.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
62271fe3fa bgp-ecmp-topo: use the new sleep function 2018-11-27 20:22:12 -05:00
Rafael Zalamena
570f25d80a topotest: log sleep function
Added a wrapper for the sleep function that should be used to register
in the log files the amount of time spent sleeping.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
1f4c4aec44 bgp-ecmp-topo1: add convergence test
Assert that we got the routes from ExaBGP and they are multipath
enabled.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
91a4415704 bgp-ecmp-topo1: convert to topogen 2018-11-27 20:22:12 -05:00
Rafael Zalamena
0c68b87abc bgp-ecmp-topo1: fix exabgp configuration file
Using relative path to start the exabgp python scripts didn't work out
of the box in my enviroment, so be more specific since we already know
where the scripts are.
2018-11-27 20:22:12 -05:00
Martin Winter
ac1087fa7b bgp-ecmp-topo1: Add BGP Topology for rcmp testing
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:12 -05:00
Martin Winter
0e8ccff311 ospf-topo: Mask IPv6 local-addressess instead of removing them
Just mask out the random part makes the diff output better readable
2018-11-27 20:22:12 -05:00
Rafael Zalamena
99dca1a0b8 ospf-topo: show areas in the topology dot/jpg 2018-11-27 20:22:12 -05:00
Rafael Zalamena
4524522dc8 ospf-topo: skip on tests on router failure
Update the test by adding the routers_have_failure() check. While here,
bump the amount of time to expect for convergence by 15 seconds.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
a61e85ab38 ospf-topo: remove log file specification
We don't need to set logging file per-daemon as topogen will already do
that for us. Also, remove hostname line as it seems to have no effect.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
f9b48d8b42 topogen: allow daemon spec in vtysh_cmd
Allow commands to be run per-daemon basis. While here make daemon
logging file configuration per-daemon.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
d1c3108673 ospf: test route kernel installation
Added tests to validate that OSPF routes are being installed/uninstalled
in the Linux kernel.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
99a7a912fd topotest: implement 'ip route' functions
Implement an abstraction to the commands 'ip route' to get the node
current routing table state.
2018-11-27 20:22:12 -05:00
Rafael Zalamena
f175c4eb97 ospf: add IPv6 OSPF convergence test
Add more tests to the ospf-topo1 to include IPv6 testing. Since both IP
versions are running together, there is no need to wait OSPF convergence
per IP version.
2018-11-27 20:22:12 -05:00