Create new library helper: tst_getconf
v3 cover Create new library helper: tst_getconf
Hello everyone,
This is a V3 of my series that handles the fact that "getconf" may not available in some embedded systems. It creates a new
helper: tst_getconf.
Changes since v2:
- use SPDX header
- remove optind's code (Cyril Hrubis's review)
- update the documentation (Cyril Hrubris's review)
- handle both PAGE_SIZE/PAGESIZE (Li Wang's review)
- update some part of the code such as new line (Li Wang's review)
- add the two Reviewed-by of Li Wang
Changes since v1:
- handle invalid arguments in tst_getconf
- correct arguments in mkswap01.sh and numa01.sh
If you have any review/remark, do not hesitate!
Thank you in advance,
Mylène
Mylène Josserand (2):
testcase: lib: Create tst_getconf to replace "getconf"
testcases: Replace "getconf" by "tst_getconf"
doc/test-writing-guidelines.txt | 14 ++++++ testcases/commands/du/du01.sh | 2 +- testcases/commands/mkswap/mkswap01.sh | 2 +- .../controllers/cpuset/cpuset_regression_test.sh | 2 +- .../memcg/control/memcg_control_test.sh | 2 +- .../controllers/memcg/functional/memcg_lib.sh | 4 +- testcases/kernel/numa/numa01.sh | 2 +- testcases/lib/.gitignore | 1 + testcases/lib/Makefile | 3 +- testcases/lib/test.sh | 4 +- testcases/lib/tst_getconf.c | 51 ++++++++++++++++++++++ 11 files changed, 77 insertions(+), 10 deletions(-) create mode 100644 testcases/lib/tst_getconf.c
Signature · 1 line
2.11.0
PATCH v3 1/2 testcase: lib: Create tst_getconf to replace "getconf"
In some system, "getconf" application may not be installed. Some tests are using it to retrieve some variables such as the page size (PAGESIZE).
Create a tst_getconf binary that use sysconf() function to retrieve these variables instead of relying on "getconf" application that may not be available.
Add also this new helper in the documentation.
Example:
pagesize=tst_getconf PAGESIZE
--- doc/test-writing-guidelines.txt | 14 +++++++++++ testcases/lib/.gitignore | 1 + testcases/lib/Makefile | 3 ++- testcases/lib/tst_getconf.c | 51 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 testcases/lib/tst_getconf.c
doc/test-writing-guidelines.txt +14 -0
@@ -1695,6 +1695,20 @@ passed directly to the script in '$1', '$2', ..., '$n'. 2.3.4 Usefull library functions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Retrieving configuration variables +++++++++++++++++++++++++++++++++++ + +You may need to retrieve configuration values such as PAGESIZE, there is +'getconf' but as some system may not have it, you are advised to use +'tst_getconf' instead. Note that it implements subset of 'getconf' +system variables used by the testcases only. + +[source,sh] +------------------------------------------------------------------------------- +# retrieve PAGESIZE +pagesize=`tst_getconf PAGESIZE` +------------------------------------------------------------------------------- + Sleeping for subsecond intervals ++++++++++++++++++++++++++++++++
testcases/lib/.gitignore +1 -0
@@ -7,3 +7,4 @@ /tst_net_iface_prefix /tst_net_ip_prefix /tst_net_vars +/tst_getconf
testcases/lib/Makefile +2 -1
@@ -27,6 +27,7 @@ include $(top_srcdir)/include/mk/testcases.mk INSTALL_TARGETS := *.sh MAKE_TARGETS := tst_sleep tst_random tst_checkpoint tst_rod tst_kvcmp\ - tst_device tst_net_iface_prefix tst_net_ip_prefix tst_net_vars + tst_device tst_net_iface_prefix tst_net_ip_prefix tst_net_vars\ + tst_getconf include $(top_srcdir)/include/mk/generic_leaf_target.mk
testcases/lib/tst_getconf.c new file +51 -0
51 lines not on this page · raw message
Signature · 1 line
2.11.0
PATCH v3 2/2 testcases: Replace "getconf" by "tst_getconf"
In reply to Mylène JosserandNow that tst_getconf is available to use "sysconf()" function instead of relying on the application "getconf", let's convert all the tests to it.
--- testcases/commands/du/du01.sh | 2 +- testcases/commands/mkswap/mkswap01.sh | 2 +- testcases/kernel/controllers/cpuset/cpuset_regression_test.sh | 2 +- testcases/kernel/controllers/memcg/control/memcg_control_test.sh | 2 +- testcases/kernel/controllers/memcg/functional/memcg_lib.sh | 4 ++-- testcases/kernel/numa/numa01.sh | 2 +- testcases/lib/test.sh | 4 ++-- 7 files changed, 9 insertions(+), 9 deletions(-)
testcases/commands/du/du01.sh +1 -1
@@ -73,7 +73,7 @@ du_test() } block_size=512 -page_size=$(getconf PAGESIZE) +page_size=$(tst_getconf PAGESIZE) if [ "$page_size" -lt 1024 ]; then tst_brk TBROK "Page size < 1024" fi
testcases/commands/mkswap/mkswap01.sh +1 -1
@@ -29,7 +29,7 @@ setup() { UUID=`uuidgen` - PAGE_SIZE=`getconf PAGE_SIZE` + PAGE_SIZE=`tst_getconf PAGESIZE` # Here get the size of the device and align it down to be the # multiple of $PAGE_SIZE and use that as the size for testing.
testcases/kernel/controllers/cpuset/cpuset_regression_test.sh +1 -1
@@ -34,7 +34,7 @@ setup() tst_brkm TCONF "Test must be run with kernel 3.18.0 or newer" fi - local cpu_num=$(getconf _NPROCESSORS_ONLN) + local cpu_num=$(tst_getconf _NPROCESSORS_ONLN) if [ $cpu_num -lt 2 ]; then tst_brkm TCONF "We need 2 cpus@least to have test" fi
testcases/kernel/controllers/memcg/control/memcg_control_test.sh +1 -1
@@ -41,7 +41,7 @@ export TST_COUNT=0 export TMP=${TMP:-/tmp} cd $TMP -PAGE_SIZE=$(getconf PAGESIZE) +PAGE_SIZE=$(tst_getconf PAGESIZE) TOT_MEM_LIMIT=$PAGE_SIZE ACTIVE_MEM_LIMIT=$PAGE_SIZE
testcases/kernel/controllers/memcg/functional/memcg_lib.sh +2 -2
@@ -29,9 +29,9 @@ if [ "x$(grep -w memory /proc/cgroups | cut -f4)" != "x1" ]; then tst_brkm TCONF "Kernel does not support the memory resource controller" fi -PAGESIZE=$(getconf PAGESIZE) +PAGESIZE=$(tst_getconf PAGESIZE) if [ $? -ne 0 ]; then - tst_brkm TBROK "getconf PAGESIZE failed" + tst_brkm TBROK "tst_getconf PAGESIZE failed" fi HUGEPAGESIZE=$(awk '/Hugepagesize/ {print $2}' /proc/meminfo)
testcases/kernel/numa/numa01.sh +1 -1
@@ -75,7 +75,7 @@ check_for_support_numa() setup() { export MB=$((1024*1024)) - export PAGE_SIZE=$(getconf PAGE_SIZE) + export PAGE_SIZE=$(tst_getconf PAGESIZE) export HPAGE_SIZE=$(awk '/Hugepagesize:/ {print $2}' /proc/meminfo) total_nodes=0
testcases/lib/test.sh +2 -2
@@ -421,9 +421,9 @@ fi if [ "$TST_NEEDS_CHECKPOINTS" = "1" ]; then LTP_IPC_PATH="/dev/shm/ltp_${TCID}_$$" - LTP_IPC_SIZE=$(getconf PAGESIZE) + LTP_IPC_SIZE=$(tst_getconf PAGESIZE) if [ $? -ne 0 ]; then - tst_brkm TBROK "getconf PAGESIZE failed" + tst_brkm TBROK "tst_getconf PAGESIZE failed" fi ROD_SILENT dd if=/dev/zero of="$LTP_IPC_PATH" bs="$LTP_IPC_SIZE" count=1
Signature · 1 line
2.11.0
v3 cover Create new library helper: tst_getconf
In reply to Mylène JosserandHi!
Pushed, thanks.
Signature · 2 lines
Cyril Hrubis [email protected]