Ping. Any objection to adding these unit tests? On 16/03/2021 15:45, Kevin Traynor wrote: > These tests focus on enabling/disabling and user parameters. > > Co-Authored-by: David Marchand <david.march...@redhat.com> > Signed-off-by: David Marchand <david.march...@redhat.com> > Signed-off-by: Kevin Traynor <ktray...@redhat.com> > > --- > v2: > - Remove above max documented interval test > - Add David's code to combine param checks and add as co-author > --- > tests/alb.at | 218 +++++++++++++++++++++++++++++++++++++++++++++ > tests/automake.mk | 1 + > tests/testsuite.at | 1 + > 3 files changed, 220 insertions(+) > create mode 100644 tests/alb.at > > diff --git a/tests/alb.at b/tests/alb.at > new file mode 100644 > index 000000000..0ea1bbdd1 > --- /dev/null > +++ b/tests/alb.at > @@ -0,0 +1,218 @@ > +AT_BANNER([PMD Auto Load Balance]) > + > +m4_divert_push([PREPARE_TESTS]) > + > +get_log_line_num () { > + LINENUM=$(cat ovs-vswitchd.log | wc -l | tr -d [[:blank:]]) > +} > + > +m4_divert_pop([PREPARE_TESTS]) > + > +m4_define([DUMMY_NUMA], [--dummy-numa="0,0"]) > + > +dnl CHECK_ALB_PARAM([param], [value], [+line]) > +dnl > +dnl Waits for ALB logs for 'param' in logs and checks if value matches > +dnl 'value'. Checking starts from line number 'line' in ovs-vswithd.log. > +m4_define([CHECK_ALB_PARAM], [ > + line_st=$3 > + if [[ -z "$line_st" ]] > + then > + line_st="+0" > + fi > + OVS_WAIT_UNTIL([tail -n $line_st ovs-vswitchd.log | grep "PMD auto load > balance $1 set to"]) > + AT_CHECK([tail -n $line_st ovs-vswitchd.log | sed -n "s#.*\(PMD auto > load balance $1 set to.*\)#\1#p" | tail -1], [0], [dnl > +PMD auto load balance $1 set to $2 > +]) > +]) > + > +AT_SETUP([ALB - default state]) > +OVS_VSWITCHD_START > +OVS_WAIT_UNTIL([grep "PMD auto load balance is disabled" ovs-vswitchd.log]) > + > +OVS_VSWITCHD_STOP > +AT_CLEANUP > + > +AT_SETUP([ALB - enable/disable]) > +OVS_VSWITCHD_START([add-port br0 p0 \ > + -- set Interface p0 type=dummy-pmd options:n_rxq=3 \ > + -- set Open_vSwitch . other_config:pmd-cpu-mask=3 \ > + -- set open_vswitch . other_config:pmd-auto-lb="true"], > + [], [], [DUMMY_NUMA]) > +OVS_WAIT_UNTIL([grep "PMD auto load balance is enabled" ovs-vswitchd.log]) > + > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb="false"]) > +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load > balance is disabled"]) > + > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb="true"]) > +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load > balance is enabled"]) > + > +OVS_VSWITCHD_STOP > +AT_CLEANUP > + > +AT_SETUP([ALB - min num PMD/RxQ]) > +OVS_VSWITCHD_START([add-port br0 p0 \ > + -- set Interface p0 type=dummy-pmd options:n_rxq=2 \ > + -- set Open_vSwitch . other_config:pmd-cpu-mask=1 \ > + -- set open_vswitch . other_config:pmd-auto-lb="true"], > + [], [], [DUMMY_NUMA]) > +OVS_WAIT_UNTIL([grep "PMD auto load balance is disabled" ovs-vswitchd.log]) > + > +# Add more PMD > +AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x3]) > +OVS_WAIT_UNTIL([grep "There are 2 pmd threads on numa node" > ovs-vswitchd.log]) > + > +# Add one more rxq to have 2 rxq on a PMD > +get_log_line_num > +AT_CHECK([ovs-vsctl set interface p0 options:n_rxq=3]) > +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load > balance is enabled"]) > + > +# Reduce PMD > +get_log_line_num > +AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x1]) > +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load > balance is disabled"]) > + > +# Check logs when try to enable but min PMD/RxQ prevents > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb="false"]) > +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load > balance is disabled"]) > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb="true"]) > +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load > balance is disabled"]) > + > +OVS_VSWITCHD_STOP > +AT_CLEANUP > + > +AT_SETUP([ALB - PMD/RxQ assignment type]) > +OVS_VSWITCHD_START([add-port br0 p0 \ > + -- set Interface p0 type=dummy-pmd options:n_rxq=3 \ > + -- set Open_vSwitch . other_config:pmd-cpu-mask=3 \ > + -- set open_vswitch . other_config:pmd-auto-lb="true"], > + [], [], [DUMMY_NUMA]) > +OVS_WAIT_UNTIL([grep "PMD auto load balance is enabled" ovs-vswitchd.log]) > + > +# Change assignment type > +get_log_line_num > +AT_CHECK([ovs-vsctl set Open_vSwitch . > other_config:pmd-rxq-assign=roundrobin]) > +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load > balance is disabled"]) > + > +# Change back assignment type > +get_log_line_num > +AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-rxq-assign=cycles]) > +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load > balance is enabled"]) > + > +# Check logs when try to enable but assignment prevents > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb="false"]) > +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load > balance is disabled"]) > +AT_CHECK([ovs-vsctl set Open_vSwitch . > other_config:pmd-rxq-assign=roundrobin]) > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb="true"]) > +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load > balance is disabled"]) > + > +OVS_VSWITCHD_STOP > +AT_CLEANUP > + > +AT_SETUP([ALB - interval param]) > +OVS_VSWITCHD_START > +OVS_WAIT_UNTIL([grep "PMD auto load balance is disabled" ovs-vswitchd.log]) > + > +# Check default > +CHECK_ALB_PARAM([interval], [1 mins], []) > + > +# Set new value > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . > other_config:pmd-auto-lb-rebal-interval="10"]) > +CHECK_ALB_PARAM([interval], [10 mins], [+$LINENUM]) > + > +# Set min value > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . > other_config:pmd-auto-lb-rebal-interval="1"]) > +CHECK_ALB_PARAM([interval], [1 mins], [+$LINENUM]) > + > +# Set max value > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . > other_config:pmd-auto-lb-rebal-interval="20000"]) > +CHECK_ALB_PARAM([interval], [20000 mins], [+$LINENUM]) > + > +# Set below min value > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . > other_config:pmd-auto-lb-rebal-interval="0"]) > +CHECK_ALB_PARAM([interval], [1 mins], [+$LINENUM]) > + > +# No check for above max as it is only a documented max value and not a hard > limit > + > +OVS_VSWITCHD_STOP > +AT_CLEANUP > + > +AT_SETUP([ALB - improvement param]) > +OVS_VSWITCHD_START > +OVS_WAIT_UNTIL([grep "PMD auto load balance is disabled" ovs-vswitchd.log]) > + > +# Check default > +CHECK_ALB_PARAM([improvement threshold], [25%], []) > + > +# Set new value > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . > other_config:pmd-auto-lb-improvement-threshold=60]) > +CHECK_ALB_PARAM([improvement threshold], [60%], [+$LINENUM]) > + > +# Set min value > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . > other_config:pmd-auto-lb-improvement-threshold=0]) > +CHECK_ALB_PARAM([improvement threshold], [0%], [+$LINENUM]) > + > +# Set below min value > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . > other_config:pmd-auto-lb-improvement-threshold=-1]) > +CHECK_ALB_PARAM([improvement threshold], [25%], [+$LINENUM]) > + > +# Set max value > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . > other_config:pmd-auto-lb-improvement-threshold=100]) > +CHECK_ALB_PARAM([improvement threshold], [100%], [+$LINENUM]) > + > +# Set above max value > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . > other_config:pmd-auto-lb-improvement-threshold=101]) > +CHECK_ALB_PARAM([improvement threshold], [25%], [+$LINENUM]) > + > +OVS_VSWITCHD_STOP > +AT_CLEANUP > + > +AT_SETUP([ALB - load param]) > +OVS_VSWITCHD_START > +OVS_WAIT_UNTIL([grep "PMD auto load balance is disabled" ovs-vswitchd.log]) > + > +# Check default > +CHECK_ALB_PARAM([load threshold], [95%], []) > + > +# Set to new value > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . > other_config:pmd-auto-lb-load-threshold=70]) > +CHECK_ALB_PARAM([load threshold], [70%], [+$LINENUM]) > + > +# Set to min value > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . > other_config:pmd-auto-lb-load-threshold=0]) > +CHECK_ALB_PARAM([load threshold], [0%], [+$LINENUM]) > + > +# Set to below min > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . > other_config:pmd-auto-lb-load-threshold=-1]) > +CHECK_ALB_PARAM([load threshold], [95%], [+$LINENUM]) > + > +# Set to max > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . > other_config:pmd-auto-lb-load-threshold=100]) > +CHECK_ALB_PARAM([load threshold], [100%], [+$LINENUM]) > + > +# Set above max value > +get_log_line_num > +AT_CHECK([ovs-vsctl set open_vswitch . > other_config:pmd-auto-lb-load-threshold=101]) > +CHECK_ALB_PARAM([load threshold], [95%], [+$LINENUM]) > + > +OVS_VSWITCHD_STOP > +AT_CLEANUP > diff --git a/tests/automake.mk b/tests/automake.mk > index 44a65849c..b9e841843 100644 > --- a/tests/automake.mk > +++ b/tests/automake.mk > @@ -63,4 +63,5 @@ TESTSUITE_AT = \ > tests/jsonrpc-py.at \ > tests/pmd.at \ > + tests/alb.at \ > tests/tunnel.at \ > tests/tunnel-push-pop.at \ > diff --git a/tests/testsuite.at b/tests/testsuite.at > index 73699918d..58adfa09c 100644 > --- a/tests/testsuite.at > +++ b/tests/testsuite.at > @@ -61,4 +61,5 @@ m4_include([tests/ofproto.at]) > m4_include([tests/dpif-netdev.at]) > m4_include([tests/pmd.at]) > +m4_include([tests/alb.at]) > m4_include([tests/dpctl.at]) > m4_include([tests/ofproto-dpif.at]) >
_______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev