Martin Winter [Wed, 26 Jul 2017 19:22:25 +0000 (12:22 -0700)]
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>
Rafael Zalamena [Mon, 10 Jul 2017 15:58:24 +0000 (12:58 -0300)]
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.
Rafael Zalamena [Fri, 30 Jun 2017 19:23:25 +0000 (16:23 -0300)]
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.
Rafael Zalamena [Fri, 30 Jun 2017 19:09:07 +0000 (16:09 -0300)]
topotest: add text normalization function
Standardized function that removes format spaces (or tab) and carriage
returns characters. This function is useful to allow output text
processing without breaking diff capabilities.
Output example:
*N IA 2001:db8:2::/64 :: r2-eth0 00:03:39
Becomes:
*N IA 2001:db8:2::/64 :: r2-eth0 00:03:39
If you remove 'IA' you won't have space formatting problem anymore.
Rafael Zalamena [Mon, 10 Jul 2017 20:01:23 +0000 (17:01 -0300)]
topogen: implement start/stop methods for TopoGear
Having a generic start/stop methods for TopoGear allows TopoGen to call
start/stop for all equipments. This allows us to reduce the teardown
code by removing the necessity of having to always remember to call
each equipment clean up function.
Rafael Zalamena [Fri, 7 Jul 2017 19:01:30 +0000 (16:01 -0300)]
topogen: configure daemon logging files
Auto configure daemon logging files to the appropriated place. This
removes the responsibility from the test developer to set this in the
daemon configuration.
Rafael Zalamena [Fri, 7 Jul 2017 13:18:25 +0000 (10:18 -0300)]
topogen: add per router logging
TopoRouters now create a logger (which logs to /tmp/{router_name}.log)
on start to record all commands and events that it goes through. All log
messages contain timestamps that may be used in the future to:
(1) correlate commands call with events
(2) benchmark/time command speed
Rafael Zalamena [Fri, 7 Jul 2017 12:29:41 +0000 (09:29 -0300)]
topolog: support adding loggers during runtime
Allow topotest subsystems to create their own loggers. This will help
increase log organization and allow different settings to fit the
subsystems needs.
Rafael Zalamena [Thu, 29 Jun 2017 20:55:33 +0000 (17:55 -0300)]
topolog: implement a logging abstraction
The default logger (root) is already being used by Mininet, so to allow
customizing logging output and configuring log files Topolog was
created. Topolog is no more than a thin layer abstraction to call
logging functions without using the 'root' logger.
Rafael Zalamena [Tue, 27 Jun 2017 21:11:02 +0000 (18:11 -0300)]
topogen: support configuration file
Use a configuration file for casual settings like:
* Verbosity level (helps when debugging mininet issues)
* Custom daemon directory (in order to support running different daemon
binaries without touching tests)
* Daemon type switch: allow running quagga without touching any test
files
Also fix the add_router() documentation to include all options.
Rafael Zalamena [Thu, 29 Jun 2017 15:18:46 +0000 (12:18 -0300)]
topotest: improve json_cmp assert output
Create a specialized assert and json_cmp() result to improve the
comparison output. With this we also got a way to display all comparison
failures instead of just the first one.
Rafael Zalamena [Thu, 29 Jun 2017 13:49:11 +0000 (10:49 -0300)]
topogen: don't backtrace when topogen is not used
This allows old tests to be run with '--topology-only' without
generating tons of error messages, instead it will just stop the test
without trying anything else.
Rafael Zalamena [Mon, 26 Jun 2017 13:57:57 +0000 (10:57 -0300)]
topogen: use shorter names for equipments
After some feedback from mwinter@, the names of equipments are now
shorter to make it easier to type them and to keep consistency with
mininet documentation. While here, update the template and make it use
optional name parameters for clarity.
Rafael Zalamena [Thu, 22 Jun 2017 20:01:58 +0000 (17:01 -0300)]
example: add missing __init__.py
Adding the __init__.py file makes python and its linter recognize that
the test makes part of the package, this makes us save a few lines of
code to make the linter and auto complete engines happy.
Rafael Zalamena [Wed, 21 Jun 2017 21:01:19 +0000 (18:01 -0300)]
topogen: add support for setting link state
This commit changes how topology links are made in order to support
discovering who and what link is the node interface connected to. After
that, the implementation of the link state change functions were trivial
as calling a command in the node shell.
The method run() was moved from TopoRouter to TopoGear so all equipment
types can benefit from this code.
Rafael Zalamena [Thu, 15 Jun 2017 03:25:54 +0000 (00:25 -0300)]
topogen: first code import
Topogen (Topology Generator) is a helper that wraps around Topotest to
simplify some of the boilerplate code. This abstraction will help the
development of new tests and new APIs without breaking the existing
ones. It also makes the relation of objects clearer, since we no longer
touch the Mininet API directly, which in turn also makes us less
vulnerable to external API changes.
Renato Westphal [Thu, 15 Jun 2017 13:47:15 +0000 (10:47 -0300)]
ldp-topo1: sync with PR#710 in FRR
Now zebra is adding the ldpd implicit-null labels to the RIB as well. We
don't want to hide them in the "show ip route" commands because knowing
that a route is associated with an implicit-null label is an useful
piece of information, specially when troubleshooting L2/L3 VPNs.
Note: preserve the original output for cli version 1 (stable/2.0).