From: Anton Ivanov <anton.iva...@cambridgegreys.com> The merge on backlogged behavior is predicated on prohibiting processing of incoming transactions while there is an outstanding backlog.
This behavior does not make sense if the xmit/recv is async from actual business logic. Signed-off-by: Anton Ivanov <anton.iva...@cambridgegreys.com> --- tests/ovsdb-server.at | 190 +++++++++++++++++++++--------------------- 1 file changed, 95 insertions(+), 95 deletions(-) diff --git a/tests/ovsdb-server.at b/tests/ovsdb-server.at index 0b15758f2..e389d721a 100644 --- a/tests/ovsdb-server.at +++ b/tests/ovsdb-server.at @@ -1128,103 +1128,103 @@ AT_KEYWORDS([ovsdb server convert needs-conversion cluster]) ovsdb_check_online_conversion cluster AT_CLEANUP -AT_SETUP([ovsdb-server combines updates on backlogged connections]) -on_exit 'kill `cat *.pid`' - -# The maximum socket receive buffer size is important for this test, which -# tests behavior when the receive buffer overflows. -if test -e /proc/sys/net/core/rmem_max; then - # Linux - rmem_max=`cat /proc/sys/net/core/rmem_max` -elif rmem_max=`sysctl -n net.inet.tcp.recvbuf_max 2>/dev/null`; then - : # FreeBSD, NetBSD -else - # Don't know how to get maximum socket receive buffer on this OS - AT_SKIP_IF([:]) -fi - -# Calculate the number of iterations we need to queue. Each of the -# iterations we execute, by itself, yields a monitor update of about -# 25 kB, so fill up that much space plus a few for luck. -n_iterations=`expr $rmem_max / 25000 + 5` -echo rmem_max=$rmem_max n_iterations=$n_iterations - -# If there's too much queuing skip the test to avoid timing out. -AT_SKIP_IF([test $rmem_max -gt 1048576]) - -# Calculate the exact number of monitor updates expected for $n_iterations, -# assuming no updates are combined. The "extra" update is for the initial -# contents of the database. -n_updates=`expr $n_iterations \* 3 + 1` - -# Start an ovsdb-server with the vswitchd schema. -OVSDB_INIT([db]) -AT_CHECK([ovsdb-server --detach --no-chdir --pidfile --log-file --remote=punix:db.sock db], - [0], [ignore], [ignore]) - -# Executes a set of transactions that add a bridge with 100 ports, and -# then deletes that bridge. This yields three monitor updates that -# add up to about 25 kB in size. +#AT_SETUP([ovsdb-server combines updates on backlogged connections]) +#on_exit 'kill `cat *.pid`' # -# The update also increments a counter held in the database so that we can -# verify that the overall effect of the transactions took effect (e.g. -# monitor updates at the end weren't just dropped). We add an arbitrary -# string to the counter to make grepping for it more reliable. -counter=0 -trigger_big_update () { - counter=`expr $counter + 1` - ovs-vsctl --no-wait -- set open_vswitch . system_version=xyzzy$counter - ovs-vsctl --no-wait -- add-br br0 $add - ovs-vsctl --no-wait -- del-br br0 -} -add_ports () { - for j in `seq 1 100`; do - printf " -- add-port br0 p%d" $j - done -} -add=`add_ports` - -AT_CAPTURE_FILE([ovsdb-client.err]) -AT_CAPTURE_FILE([ovsdb-client-nonblock.err]) - - -# Start an ovsdb-client monitoring all changes to the database, -# By default, it is non-blocking, and will get update message -# for each ovsdb-server transaactions. -AT_CHECK([ovsdb-client --detach --no-chdir --pidfile=nonblock.pid monitor ALL >ovsdb-client-nonblock.out 2>ovsdb-client-nonblock.err]) - -# Start an ovsdb-client monitoring all changes to the database, -# make it block to force the buffers to fill up, and then execute -# enough iterations that ovsdb-server starts combining updates. -AT_CHECK([ovsdb-client --detach --no-chdir --pidfile monitor ALL >ovsdb-client.out 2>ovsdb-client.err]) -AT_CHECK([ovs-appctl -t ovsdb-client ovsdb-client/block]) -for i in `seq 1 $n_iterations`; do - echo "blocked update ($i of $n_iterations)" - trigger_big_update $i -done -AT_CHECK([ovs-appctl -t ovsdb-client ovsdb-client/unblock]) -OVS_WAIT_UNTIL([grep "xyzzy$counter" ovsdb-client.out]) -OVS_WAIT_UNTIL([grep "xyzzy$counter" ovsdb-client-nonblock.out]) -OVS_APP_EXIT_AND_WAIT([ovsdb-client]) -AT_CHECK([kill `cat nonblock.pid`]) - -# Count the number of updates in the ovsdb-client output, by counting -# the number of changes to the Open_vSwitch table. (All of our -# transactions modify the Open_vSwitch table.) It should be less than -# $n_updates updates. +## The maximum socket receive buffer size is important for this test, which +## tests behavior when the receive buffer overflows. +#if test -e /proc/sys/net/core/rmem_max; then +# # Linux +# rmem_max=`cat /proc/sys/net/core/rmem_max` +#elif rmem_max=`sysctl -n net.inet.tcp.recvbuf_max 2>/dev/null`; then +# : # FreeBSD, NetBSD +#else +# # Don't know how to get maximum socket receive buffer on this OS +# AT_SKIP_IF([:]) +#fi # -# Check that the counter is what we expect. -logged_updates=`grep -c '^Open_vSwitch' ovsdb-client.out` -logged_nonblock_updates=`grep -c '^Open_vSwitch' ovsdb-client-nonblock.out` -echo "logged_nonblock_updates=$logged_nonblock_updates (expected less or equal to $n_updates)" -echo "logged_updates=$logged_updates (expected less than $logged_nonblock_updates)" -AT_CHECK([test $logged_nonblock_updates -le $n_updates]) -AT_CHECK([test $logged_updates -lt $logged_nonblock_updates]) -AT_CHECK_UNQUOTED([ovs-vsctl get open_vswitch . system_version], [0], - [xyzzy$counter -]) -OVS_APP_EXIT_AND_WAIT([ovsdb-server]) -AT_CLEANUP +## Calculate the number of iterations we need to queue. Each of the +## iterations we execute, by itself, yields a monitor update of about +## 25 kB, so fill up that much space plus a few for luck. +#n_iterations=`expr $rmem_max / 25000 + 5` +#echo rmem_max=$rmem_max n_iterations=$n_iterations +# +## If there's too much queuing skip the test to avoid timing out. +#AT_SKIP_IF([test $rmem_max -gt 1048576]) +# +## Calculate the exact number of monitor updates expected for $n_iterations, +## assuming no updates are combined. The "extra" update is for the initial +## contents of the database. +#n_updates=`expr $n_iterations \* 3 + 1` +# +## Start an ovsdb-server with the vswitchd schema. +#OVSDB_INIT([db]) +#AT_CHECK([ovsdb-server --detach --no-chdir --pidfile --log-file --remote=punix:db.sock db], +# [0], [ignore], [ignore]) +# +## Executes a set of transactions that add a bridge with 100 ports, and +## then deletes that bridge. This yields three monitor updates that +## add up to about 25 kB in size. +## +## The update also increments a counter held in the database so that we can +## verify that the overall effect of the transactions took effect (e.g. +## monitor updates at the end weren't just dropped). We add an arbitrary +## string to the counter to make grepping for it more reliable. +#counter=0 +#trigger_big_update () { +# counter=`expr $counter + 1` +# ovs-vsctl --no-wait -- set open_vswitch . system_version=xyzzy$counter +# ovs-vsctl --no-wait -- add-br br0 $add +# ovs-vsctl --no-wait -- del-br br0 +#} +#add_ports () { +# for j in `seq 1 100`; do +# printf " -- add-port br0 p%d" $j +# done +#} +#add=`add_ports` +# +#AT_CAPTURE_FILE([ovsdb-client.err]) +#AT_CAPTURE_FILE([ovsdb-client-nonblock.err]) +# +# +## Start an ovsdb-client monitoring all changes to the database, +## By default, it is non-blocking, and will get update message +## for each ovsdb-server transaactions. +#AT_CHECK([ovsdb-client --detach --no-chdir --pidfile=nonblock.pid monitor ALL >ovsdb-client-nonblock.out 2>ovsdb-client-nonblock.err]) +# +## Start an ovsdb-client monitoring all changes to the database, +## make it block to force the buffers to fill up, and then execute +## enough iterations that ovsdb-server starts combining updates. +#AT_CHECK([ovsdb-client --detach --no-chdir --pidfile monitor ALL >ovsdb-client.out 2>ovsdb-client.err]) +#AT_CHECK([ovs-appctl -t ovsdb-client ovsdb-client/block]) +#for i in `seq 1 $n_iterations`; do +# echo "blocked update ($i of $n_iterations)" +# trigger_big_update $i +#done +#AT_CHECK([ovs-appctl -t ovsdb-client ovsdb-client/unblock]) +#OVS_WAIT_UNTIL([grep "xyzzy$counter" ovsdb-client.out]) +#OVS_WAIT_UNTIL([grep "xyzzy$counter" ovsdb-client-nonblock.out]) +#OVS_APP_EXIT_AND_WAIT([ovsdb-client]) +#AT_CHECK([kill `cat nonblock.pid`]) +# +## Count the number of updates in the ovsdb-client output, by counting +## the number of changes to the Open_vSwitch table. (All of our +## transactions modify the Open_vSwitch table.) It should be less than +## $n_updates updates. +## +## Check that the counter is what we expect. +#logged_updates=`grep -c '^Open_vSwitch' ovsdb-client.out` +#logged_nonblock_updates=`grep -c '^Open_vSwitch' ovsdb-client-nonblock.out` +#echo "logged_nonblock_updates=$logged_nonblock_updates (expected less or equal to $n_updates)" +#echo "logged_updates=$logged_updates (expected less than $logged_nonblock_updates)" +#AT_CHECK([test $logged_nonblock_updates -le $n_updates]) +#AT_CHECK([test $logged_updates -lt $logged_nonblock_updates]) +#AT_CHECK_UNQUOTED([ovs-vsctl get open_vswitch . system_version], [0], +# [xyzzy$counter +#]) +#OVS_APP_EXIT_AND_WAIT([ovsdb-server]) +#AT_CLEANUP AT_BANNER([OVSDB -- ovsdb-server transactions (SSL IPv4 sockets)]) -- 2.20.1 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev