With libyang, we need to build the frr_user_types.so libyang
plugin for FRR to work.
This means we cannot build with disable shared.
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
For normal operation, there is no need for the container to run
in the host network environment or to have access to the users
X Session.
To accomodate usecases which need this, there is now a `TOPOTEST_OPTIONS`
environment variable to provide additional options to the docker run
command.
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
According to https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run
`apt-get update` should always be combined with `apt-get install` in
the same `RUN` statement, to avoid installation of outdated packages.
Also, combine some more `RUN`s together as to avoid fewer layers.
Finally, remove some comments which are superflous. Comments shouldn't
describe what is done, especially when it's obvious. They should
explain why something is done.
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
Add a breadcrumb for people testing to hopefully allow
them to figure out what is going wrong when they
are testing different versions of FRR using
topotests and staticd is not running because
this version of staticd needs to be cleaned up
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Python's `string' method 'replace' doesn't actually modify the string,
instead it returns a new string with the modified content.
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
By default, default vrf name is default, whereas BGP default vrf was
hardcoded to Default. Because this will be fixes, do not care about the
vrf name field and apply a regexp to move Default to default.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Topotests would fail with errors like these:
AssertionError: Linux Kernel IPv6 Routing Table verification failed for router r1:
--- actual OSPFv3 IPv6 routing table
+++ expected OSPFv3 IPv6 routing table
@@ -8,6 +8,6 @@
fc00:4:4:4::/64 via fe80::__(r3-sw5)__ dev r1-sw5 proto XXXX metric 20 pref medium
fc00🅰️a🅰️:/64 dev r1-sw5 proto XXXX metric 256 pref medium
fc00🅱️b🅱️:/64 via fe80::__(r3-sw5)__ dev r1-sw5 proto XXXX metric 20 pref medium
-fe80::/64 dev lo proto XXXX metric 256 pref medium
fe80::/64 dev r1-stubnet proto XXXX metric 256 pref medium
-fe80::/64 dev r1-sw5 proto XXXX metric 256 pref medium
+fe80::/64 dev r1-sw5 proto XXXX metric 256 pref medium
+unreachable fe80::/64 dev lo proto XXXX metric 256 error -101 pref medium
Resolve this by not comparing link-local routes.
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
Label proxy manager test covering both LDP and BGP label requests.
lib/topotest.py:restartRouter() function has been fixed in order to
allow propagating options to deamons other than zebra.
Signed-off-by: F. Aragon <paco@voltanet.io>
Test that after a link goes down BGPd will be notified and recovered
quickly. Also test that BFD show command tells us that the peer went
down.
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
The code was not attempting to set the max platform_labels
on a per router basis, leaving us w/ situations where
mpls install would fail because platform_labels was 0.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Because on some platforms like i386, 'ip netns ' commands are unstable,
then I use an other API to operate the shutdown/no shutdown operation by
using vtysh.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
To analyse which route has been entered in the kernel, the
zebra show ip route vrf command is used.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
In the case where vrf backend is based on NETNS, the link enable command
switches from context so as to perform the command.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
In a effort to migrate more tests to use `run_and_expect` instead of
`sleep`s, this commit imports some common functions used to compare
router output. Retrying output comparison for N times, instead of
relying on arbitrary code `sleep`s, should help CI system tests fail
less and possibly run for less time.
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
When normalizing a text also remove trailing whitespace since external
tools might add them. This commit fixes a test failure in ospf_topo1 on
Ubuntu 18.04.1.
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
Standardize run_and_expect to show start and end time along with maximum
estimated wait time.
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
IPv6 metric for FRR version <3.X is different than for newer versions,
so to avoid extra code logic lets just ignore these checks.
The IPv6 changes weren't detected earlier because of the json_cmp list
fix.
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
The pseudo_TE-IS entries vary and depend on the way the topology
converges, so lets not rely on that.
The IS-IS routers in the middle TE-IS entries vary the parent
interface, so we also removed that entry to avoid json_cmp comparison
failures.
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
Don't quit on the first match. While here add some more `json_cmp` tests
to make sure this doesn't happen again.
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
Allow json_cmp to compare JSON values which begin with a list instead of
a dictionary.
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
The v6 isis topology didn't really match the illustration. Fix
the configs and the test expectations so that all the parts
agree.
Signed-off-by: Mark Stapp <mjs@voltanet.io>
The table header has changed slightly for "bgp show" commands. Change
all-protocol-startup (test_bgp_ipv4() and test_bgp_ipv6()) and
bgp_multiview_topo1 (test_bgp_routingTable()) to run diffs against multiple
templates (representing the various valid outputs for different versions
of the FRR code) and mark the test "passed" if any one template matches.
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
Check CE routes from CE in another VRF attached to same PE router. Relies
on FRR bug fix to not require labeled nexthop for paths that go only
through PE router and not mpls core.
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
Prior behavior of luCommand was to convert newlines to spaces in DUT
output before pattern matching. New method operating in parallel uses
re.DOTALL to mimic same behavior and allow preserving original DUT output.
The original output is needed for some scripts that parse line-by-line.
There is also some test code to compare match results using the
old way and new way and log a message if they are different. After
some short time we can develop confidence that using this new method
will not break any existing tests.
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
It seems vrf netns is not working on 32 bit platforsm.
For that, the test should be cancelled.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
The test consist in starting a BGP router on a NETNS, and interacting
with an exaBGP instance. The test automatically relies on VRF with netns
backend but can be easily configured so as to perform basic BGP VRF
testing with VRF with VRF-lite backend.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
topotest library is being added a new parameter when preparing the
configurationof each daemon. This parameter will be used to call the
daemon with some extra parameters. The -n parameter for zebra is taken
into account.
Also, when a extra parameter is given for calling zebra, a check is done to
see if it is possible to run zebra daemon with that option. This is the
case for vrfwnetns option. If not available, an error message is sent
back.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Support the new OSPF JSON output format for `show ip ospf neighbor
json` introduced in FRR's PR 1723.
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
In order to avoid failed test on unsupported version:
- Test that version is greater than 4
- Check that Segment Routing CLI are available
Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
- Build a topology made of 4 routers: 3 PE connected to a P
- Segment Routing is activated on all 4 routers with various setting
for the MSD, Global Block and Prefix (with or without NO-PHP flag)
- 2 tests have been elaborated: the first one check the consistency of the
Segment Routing database on each router compared to a reference and the second
one check that the MPLS FIB has been correctly configured on each router,
again compared to a reference
Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>