neutron/neutron/tests
Assaf Muller 03999961ac Add fullstack cross-process port/ip address fixtures
We've had a series of bugs with resources that need
to be unique on the system across test runner
processes. Ports are used by neutron-server and the
OVS agent when run in native openflow mode. The function
that generates ports looks up random unused ports and
starts the service. However, it is raceful: By the time the
port is found to be unused and the service is started,
another test runner can pick the same random port.
With close to 65536 ports to choose from, the chance
for collision is low, but given enough test runs, it's
happened a non-trivial amount of times, and given that
a voting job needs a very low false-negative rate, we
need a more robust solution. The same applies to IP
addresses that are used by the OVS agent in tunneling
mode, and for the LB agent in all modes. With IP addresses,
we don't check if the IP address is used, we simply
pick a random address from a large pool, and again
we've seen a non-trivial amount of test failures.

The bugs referenced below had simple, short term solutions
applied but the bugs remain remain. This patch is a correct,
long term solution that doesn't rely on chance.

This patch adds a resource allocator that uses the disk
to persist allocations. Access to the disk is guarded
via a file lock. IP address, networks and ports fixtures
use an allocator internally.

Closes-Bug: #1551288
Closes-Bug: #1561248
Closes-Bug: #1560277
Change-Id: I46c0ca138b806759128462f8d44a5fab96a106d3
2016-03-28 10:16:39 -04:00
..
api Merge "api tests: Check correct extensions" 2016-03-26 04:54:10 +00:00
common Add fullstack cross-process port/ip address fixtures 2016-03-28 10:16:39 -04:00
contrib Add OVS flow tests 2016-03-24 11:28:51 +09:00
etc Adopt oslo.log default_log_levels 2016-03-23 20:20:37 -04:00
fullstack Add fullstack cross-process port/ip address fixtures 2016-03-28 10:16:39 -04:00
functional Add fullstack cross-process port/ip address fixtures 2016-03-28 10:16:39 -04:00
retargetable Switch to using in-tree tempest lib 2016-02-26 14:00:11 +00:00
tempest DSCP QoS rule implementation 2016-03-18 10:07:24 +01:00
unit Merge "Remove unnecessary executable permissions" 2016-03-25 10:47:17 +00:00
var Allow combined certificate/key files for SSL 2014-04-13 09:22:23 +00:00
__init__.py Add eventlet monkey_patch helper 2015-03-24 08:44:00 -07:00
base.py Fix a couple of problems with random hex string generation 2016-03-23 01:50:50 +00:00
fake_notifier.py Pass serializer to oslo.messaging Notifier 2014-06-20 14:58:28 +02:00
post_mortem_debug.py Cleanup recent generalization in post mortem debugger 2014-12-04 15:28:11 +01:00
tools.py tests: register all objects before validating their hash versions 2016-03-16 08:26:37 -04:00