[ovs-dev] [PATCH 3/3] tests: Avoid race conditions, by letting the kernel choose ports to bind.
Ben Pfaff
blp at nicira.com
Thu Apr 4 01:47:10 UTC 2013
On Wed, Apr 03, 2013 at 05:01:40PM -0700, Neil Mckee wrote:
> "parse-listening-port" seems to return the port that the server was
> told to listen on(?)
Yes, it returns the port that the server is listening on.
> But that bears no relation to the UDP port that sFlow or NetFlow might
> be sent out to. The way you have it now will probably work, but only
> by accident: because you can usually open UDP port X at the same time
> as someone else has opened TCP port X.
>
> Or did I miss something?
I hope so. Let me walk through one of the tests after this commit.
This starts up ovs-vswitchd and ovsdb-server:
AT_SETUP([ofproto-dpif - NetFlow flow expiration])
OVS_VSWITCHD_START([set Bridge br0 fail-mode=standalone])
ADD_OF_PORTS([br0], 1, 2)
This starts test-netflow listening on some kernel-selected (UDP) port
and then stores the port that it's actually listening on in
NETFLOW_PORT:
ON_EXIT([kill `cat test-netflow.pid`])
AT_CHECK([test-netflow --log-file --detach --no-chdir --pidfile 0:127.0.0.1 > netflow.log], [0], [], [ignore])
AT_CAPTURE_FILE([netflow.log])
NETFLOW_PORT=`parse_listening_port < test-netflow.log`
This configures the OVS netflow implementation to send its records to
localhost on the port that we just determined test-netflow was listening
on:
ovs-vsctl \
set Bridge br0 netflow=@nf -- \
--id=@nf create NetFlow targets=\"127.0.0.1:$NETFLOW_PORT\" \
engine_id=1 engine_type=2 active_timeout=30 add-id-to-interface=false
and the rest of the test just tests stuff.
Does it make sense?
Thanks,
Ben.
More information about the dev
mailing list