32 Commits

Author SHA1 Message Date
Klement Sekera
909a6a1eb9 make test: detect hung tests
Run tests in a forked process with a set of pipes to communicate
keep-alives and overall result. This allows us to detect when e.g.
vpp dies mid-API call causing the test to hang waiting for response
(which will never come since vpp died).

Support setting a (per test case) TIMEOUT make test option to set timeout,
with a default timeout of 120 seconds.

Example - fail the test suite if any test-case fails to finish within
300s:

make TIMEOUT=300 test

Change-Id: I0d04f26a7232968f4bf043adf5d5b508f5018717
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-08-10 00:14:59 +00:00
Klement Sekera
94384e4d3a make test: kill all remaining subprocesses on exit
This change introduces a wrapper script which kills all processes in
the same process group as itself (with the exception of the script).
Using this script to run the unit tests should prevent stale processes
left behind in some cases (e.g. when test framework crashes).

Change-Id: If3b9201c06b87fa6be095721436893207d09b5e4
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-08-07 14:53:17 +00:00
Klement Sekera
3658adcadc make test: improve debugability
Introduce faulthandler to print stack trace to stderr on python crash.
Don't disable automatic garbage collection to decrease the chances of
running out of memory.

Change-Id: I6927a5f6ea9569735d084d4ed3d258950a400d74
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-06-07 17:03:37 +00:00
Klement Sekera
26261594a0 make test: add suddenly missing dependency (six module)
Change-Id: I121eaee6b752a6b3bfe1d5ecf803f67147c77beb
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-06-01 06:11:57 +02:00
Klement Sekera
cd6cb986ed make test: support coverage for out-of-tree plugins
Change-Id: Ibd7828b1e1c699630ff450122d8aa317b1c9da26
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-05-11 06:55:32 +02:00
vagrant
937bf30183 make test: python interpreter customization
Allow using custom python interpreter via 'PYTHON' env variable.
E.g. env PYTHON=pypy make test.
Get latest pip automatically to properly function in environments,
where old pip is available and a proxy is required. This allows
testing pypy in a centos vagrant-provided vm.

Change-Id: I67a658fc927303468cc67f0ac192317ca2907625
Signed-off-by: Klement Sekera <ksekera@cisco.com>
Signed-off-by: Damjan Marion <damarion@cisco.com>
2017-04-19 07:12:23 +00:00
Klement Sekera
3747c75a21 make test: automatic "vpp finishes startup" check
Add code which checks if vpp doesn't crash/exit immediately after
startup to aid debugging stuff like mistyped graph node name or so.
Refuse to run tests if the vpp is unable to start, complain loudly
and print vpp's stderr at critical log level if this happens to make
spotting these problems in jenkins easy.

Change-Id: I40d3fbd05c822c0534713bae6bef05ecfb0e0c1d
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-04-10 13:43:03 +00:00
Klement Sekera
47e275bbe4 make test: support out-of-tree plugins
usage:

env EXTERN_PLUGINS=/path/to/plugins make test

Change-Id: I8eece726dfafeff1cffd921c1e18cd3eb7eb64ed
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-03-22 10:48:26 +00:00
Klement Sekera
993e0edf4e make test: support out-of-tree tests
env EXTERN_TESTS="/path/to/extra/tests" make test

causes to run the default test set and tests collected from
test_*.py files under subtree specified in EXTERN_TESTS.

Change-Id: I58c5471dd6010730278a5b47d4318737d920bc28
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-03-22 10:48:26 +00:00
Ole Troan
3cc4971882 Python API: Change from cPython to CFFI.
Change-Id: I03e52466fb3f909ae52b8fba601168f3eadbd972
Signed-off-by: Ole Troan <ot@cisco.com>
2017-03-15 21:43:30 +01:00
Klement Sekera
c160ae0dca make test: automatic sanity check
Check if vpp_papi is importable before running the tests to avoid
confusing python crashes.

Change-Id: I6adf406e353bf381d590f2ef988a1ea79b95cf37
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-03-09 20:06:58 +00:00
Klement Sekera
a86e289570 make test: add make test-shell[-debug] targets
This starts a bash with the same environment as the test framework
uses, allowing easy debugging.

Change-Id: I956deda913b73dae5b1e1976417834ae4731f88a
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-03-09 20:06:58 +00:00
Klement Sekera
871349371a make test: split into basic and extended tests
Implement plumbing to allow decorating tests as extended, e.g.:

@unittest.skipUnless(running_extended_tests(), "part of extended tests")

both methods and classes can be decorated this way.

Change make test and make test-debug to run only non-extended tests.
Introduce make test-all and make test-all-debug to run the full suite.
Run full suite as part of make verify.
Decorate most BFD tests as extended.

Change-Id: I3bc64f59e9fe238f7f767d7e043dc165d03e9dfa
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-03-08 21:56:59 +00:00
Klement Sekera
80a7f0a81c make test: tell vpp to set coredump size
Unless overridden by COREDUMP_SIZE env variable, tell VPP to set
coredump size to unlimited, otherwise use $COREDUMP_SIZE as
the argument.

Change-Id: Ia2a6508207c66a171b33d272c820b1deb4a83e82
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-03-06 16:17:21 +00:00
Klement Sekera
b93d142430 make test: don't run if other vpp process runs
Check if there are existing vpp processes before running the test suite
and refuse to run if there are. This prevents the removal of other test
suite temporary files and also makes sure that if the machine is loaded
by (zombie) vpp processes, interactive tests (like bfd) won't fail.

Change-Id: I88a74098188cb3f51966de5db19d7f80f39e51e2
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-03-06 12:29:45 +00:00
Filip Tehlar
770e89e6b9 Add basic 4o4 LISP unit test
Change-Id: I2d812153d7afe7980346382b525af89b3c47e796
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2017-02-21 22:21:19 +00:00
Klement Sekera
acb9b8e8c3 make test: improve stability
Disable automatic garbage collection and run it manually before
running each test case to minimize stalls. Improve vpp subprocess
cleanup. Reduce helper thread count to one and properly clean that
thread once it's not needed.

Change-Id: I3ea78ed9628552b5ef3ff29cc7bcf2d3fc42f2c3
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-02-14 03:38:37 +01:00
Klement Sekera
104543fa6a make test: improve test filtering
Implement fine-grained test filtering by supporting more complicated
filters beside the original file name suffix filter.

Change-Id: If5a166d08cffe8c58cc6cf174e6df861c34dbaa6
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-02-06 23:33:52 +00:00
Klement Sekera
6320514170 make test: fix dependencies
checkstyle - doesn't need scapy/pexpect, remove it
doc - scapy wasn't patched properly, fix it

Change-Id: I65202cb14edeb239d21ce10f17d9b4fccce43d62
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-02-06 12:37:16 +00:00
Neale Ranns
aaa396ac6b Test checksyle for IP mcast tests
Change-Id: I20b61b7e63f74b4656d84717633e06646514c5eb
Signed-off-by: Neale Ranns <nranns@cisco.com>
2017-02-05 09:54:33 -08:00
Dave Wallace
6f692d6e5a Fix make test scapy python patch issue, VPP-615
Change-Id: I1e6798905f0049c793224a2c880f3b2cfadcf1e7
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
2017-01-27 16:36:55 +00:00
Tibor
7ff11136b1 Add sphinx read the doc theme.
Change-Id: Iade7c42081378bf211b81ad29b2898518442d2ff
Signed-off-by: Tibor <tifrank@cisco.com>
2017-01-27 01:03:05 +00:00
Klement Sekera
72715ee4e2 make test: add checkstyle target
Change-Id: I59d3c3bc77474c96e1d6fa51811c1b13fb9a6c5b
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-01-17 18:35:21 +00:00
Klement Sekera
da505f608e make test: improve documentation and PEP8 compliance
Change-Id: Ib4f0353aab6112fcc3c3d8f0bcbed5bc4b567b9b
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-01-11 23:26:16 +00:00
Damjan Marion
37d77e9edb test: fix paths after source code move
Change-Id: I3100260bb697f9af2f73ad3777e8b27069c5babe
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-12-28 15:21:59 +01:00
Klement Sekera
9f9d07b801 make test: improve virtualenv patching process
Change-Id: I5041bdc733c4da633d83f60f7db7747b4d0b8894
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2016-12-14 08:55:40 +00:00
Juraj Sloboda
0279b29f32 Add make test code coverage reporting using gcov
Change-Id: Ia8247841fdbe76e1d888aab49ae213b4216af273
Signed-off-by: Juraj Sloboda <jsloboda@cisco.com>
2016-12-09 20:09:35 +00:00
Neale Ranns
177bbdcd8f GRE tests and fixes
Change-Id: I234240e9bdd4b69ad64a17b1449ae1e81c0edaca
Signed-off-by: Neale Ranns <nranns@cisco.com>
2016-11-22 21:26:55 +00:00
Klement Sekera
778c2765c8 Improve test framework documentation
Change-Id: I06f0cbbbdd29e04a07f1db6807b3e16f1d41e8d2
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2016-11-09 12:00:18 +00:00
Klement Sekera
277b89c946 add vpp debugging support to test framework
improve test documentation

Change-Id: Ia9678aa2532ecb4cb33736aedb4a31aa3f2a3f93
Signed-off-by: Klement Sekera <ksekera@cisco.com>
2016-10-31 23:48:25 +00:00
Klement Sekera
f62ae1288a refactor test framework
Change-Id: I31da3b1857b6399f9899276a2d99cdd19436296c
Signed-off-by: Klement Sekera <ksekera@cisco.com>
Signed-off-by: Matej Klotton <mklotton@cisco.com>
Signed-off-by: Jan Gelety <jgelety@cisco.com>
Signed-off-by: Juraj Sloboda <jsloboda@cisco.com>
2016-10-26 17:42:19 +02:00
Damjan Marion
f56b77a076 test: new test infrastructure
Change-Id: I73ca19c431743f6b39669c583d9222a6559346ef
Signed-off-by: Jan Gelety <jgelety@cisco.com>
Signed-off-by: Juraj Sloboda <jsloboda@cisco.com>
Signed-off-by: Stefan Kobza <skobza@cisco.com>
Signed-off-by: Matej Klotton <mklotton@cisco.com>
Signed-off-by: Maciek Konstantynowicz <mkonstan@cisco.com>
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-10-03 19:58:19 +00:00