[LTP] [PATCH 2/6] dctcp01: convert to new API and move common code to a library
Alexey Kodanev
alexey.kodanev@oracle.com
Mon May 21 13:48:26 CEST 2018
Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
---
testcases/network/tcp_cc/Makefile | 2 +-
testcases/network/tcp_cc/dctcp01.sh | 80 +++++--------------------------
testcases/network/tcp_cc/tcp_cc_lib.sh | 57 ++++++++++++++++++++++
3 files changed, 71 insertions(+), 68 deletions(-)
create mode 100755 testcases/network/tcp_cc/tcp_cc_lib.sh
diff --git a/testcases/network/tcp_cc/Makefile b/testcases/network/tcp_cc/Makefile
index 82a6262..a564eb4 100644
--- a/testcases/network/tcp_cc/Makefile
+++ b/testcases/network/tcp_cc/Makefile
@@ -17,6 +17,6 @@ top_srcdir ?= ../../..
include $(top_srcdir)/include/mk/env_pre.mk
-INSTALL_TARGETS := dctcp01.sh
+INSTALL_TARGETS := *.sh
include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/network/tcp_cc/dctcp01.sh b/testcases/network/tcp_cc/dctcp01.sh
index 92ac97d..02b27cf 100755
--- a/testcases/network/tcp_cc/dctcp01.sh
+++ b/testcases/network/tcp_cc/dctcp01.sh
@@ -1,91 +1,37 @@
#!/bin/sh
-# Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved.
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it would be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2015-2018 Oracle and/or its affiliates. All Rights Reserved.
#
# Author: Alexey Kodanev <alexey.kodanev@oracle.com>
-TCID=dctcp01
-TST_TOTAL=1
+TST_SETUP="setup"
+TST_TESTFUNC="do_test"
TST_CLEANUP="cleanup"
-TST_NEEDS_TMPDIR=1
-def_alg="cubic"
-prev_alg=
+TST_MIN_KVER="3.18"
-TST_USE_LEGACY_API=1
-. tst_net.sh
-
-set_cong_alg()
-{
- local alg=$1
- tst_resm TINFO "setting $alg"
-
- tst_set_sysctl net.ipv4.tcp_congestion_control $alg safe
-}
+. tcp_cc_lib.sh
cleanup()
{
- if [ "$prev_cong_ctl" ]; then
- tst_set_sysctl net.ipv4.tcp_congestion_control $prev_alg
- fi
- tst_rmdir
tc qdisc del dev $(tst_iface) root netem loss 0.03% ecn
+
+ tcp_cc_cleanup
}
setup()
{
- if tst_kvcmp -lt "3.18"; then
- tst_brkm TCONF "test requires kernel 3.18 or newer"
- fi
-
- tst_require_root
- tst_check_cmds sysctl tc
+ tcp_cc_setup
- tst_resm TINFO "emulate congestion with packet loss 0.03% and ECN"
+ tst_res TINFO "emulate congestion with packet loss 0.03% and ECN"
tc qdisc add dev $(tst_iface) root netem loss 0.03% ecn > /dev/null 2>&1
if [ $? -ne 0 ]; then
tst_brkm TCONF "netem doesn't support ECN"
fi
-
- prev_alg="$(sysctl -n net.ipv4.tcp_congestion_control)"
}
-test_run()
+do_test()
{
- tst_resm TINFO "compare '$def_alg' and 'dctcp' congestion alg. results"
-
- set_cong_alg "$def_alg"
-
- tst_netload -H $(tst_ipaddr rhost)
- local res0="$(cat tst_netload.res)"
-
- set_cong_alg "dctcp"
-
- tst_netload -H $(tst_ipaddr rhost)
- local res1="$(cat tst_netload.res)"
-
- local per=$(( $res0 * 100 / $res1 - 100 ))
-
- if [ "$per" -lt "10" ]; then
- tst_resm TFAIL "dctcp performance $per %"
- else
- tst_resm TPASS "dctcp performance $per %"
- fi
+ tcp_cc_test01 dctcp 10
}
-setup
-
-test_run
-
-tst_exit
+tst_run
diff --git a/testcases/network/tcp_cc/tcp_cc_lib.sh b/testcases/network/tcp_cc/tcp_cc_lib.sh
new file mode 100755
index 0000000..b96c8af
--- /dev/null
+++ b/testcases/network/tcp_cc/tcp_cc_lib.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2018 Oracle and/or its affiliates. All Rights Reserved.
+
+TST_NEEDS_TMPDIR=1
+TST_NEEDS_ROOT=1
+TST_NEEDS_CMDS="sysctl tc"
+
+. tst_net.sh
+
+def_alg="cubic"
+prev_alg=
+
+set_cong_alg()
+{
+ local alg=$1
+ tst_res TINFO "setting $alg"
+
+ tst_set_sysctl net.ipv4.tcp_congestion_control $alg safe
+}
+
+tcp_cc_cleanup()
+{
+ [ "$prev_cong_ctl" ] && \
+ tst_set_sysctl net.ipv4.tcp_congestion_control $prev_alg
+}
+
+tcp_cc_setup()
+{
+ prev_alg="$(sysctl -n net.ipv4.tcp_congestion_control)"
+}
+
+tcp_cc_test01()
+{
+ local alg=$1
+ local threshold=${2:-10}
+
+ tst_res TINFO "compare '$def_alg' and '$alg' congestion alg. results"
+
+ set_cong_alg "$def_alg"
+
+ tst_netload -H $(tst_ipaddr rhost) -A 15000
+ local res0="$(cat tst_netload.res)"
+
+ set_cong_alg "$alg"
+
+ tst_netload -H $(tst_ipaddr rhost) -A 15000
+ local res1="$(cat tst_netload.res)"
+
+ local per=$(( $res0 * 100 / $res1 - 100 ))
+
+ if [ "$per" -lt "$threshold" ]; then
+ tst_res TFAIL "$alg performance $per %"
+ else
+ tst_res TPASS "$alg performance $per %"
+ fi
+}
--
1.7.1
More information about the ltp
mailing list