All of lore.kernel.org
 help / color / mirror / Atom feed
* [LTP] [PATCH v3 0/2] Create new library helper: tst_getconf
@ 2018-07-13  9:09 =?unknown-8bit?q?Myl=C3=A8ne?= Josserand
  2018-07-13  9:09 ` [LTP] [PATCH v3 1/2] testcase: lib: Create tst_getconf to replace "getconf" =?unknown-8bit?q?Myl=C3=A8ne?= Josserand
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: =?unknown-8bit?q?Myl=C3=A8ne?= Josserand @ 2018-07-13  9:09 UTC (permalink / raw)
  To: ltp

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

-- 
2.11.0


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [LTP] [PATCH v3 1/2] testcase: lib: Create tst_getconf to replace "getconf"
  2018-07-13  9:09 [LTP] [PATCH v3 0/2] Create new library helper: tst_getconf =?unknown-8bit?q?Myl=C3=A8ne?= Josserand
@ 2018-07-13  9:09 ` =?unknown-8bit?q?Myl=C3=A8ne?= Josserand
  2018-07-13  9:09 ` [LTP] [PATCH v3 2/2] testcases: Replace "getconf" by "tst_getconf" =?unknown-8bit?q?Myl=C3=A8ne?= Josserand
  2018-07-19 12:39 ` [LTP] [PATCH v3 0/2] Create new library helper: tst_getconf Cyril Hrubis
  2 siblings, 0 replies; 4+ messages in thread
From: =?unknown-8bit?q?Myl=C3=A8ne?= Josserand @ 2018-07-13  9:09 UTC (permalink / raw)
  To: ltp

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`

Signed-off-by: Mylène Josserand <mylene.josserand@bootlin.com>
Reviewed-by: Li Wang <liwang@redhat.com>
---
 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

diff --git a/doc/test-writing-guidelines.txt b/doc/test-writing-guidelines.txt
index 953cf6267..2de6ba99d 100644
--- a/doc/test-writing-guidelines.txt
+++ b/doc/test-writing-guidelines.txt
@@ -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
 ++++++++++++++++++++++++++++++++
 
diff --git a/testcases/lib/.gitignore b/testcases/lib/.gitignore
index f36ed99fa..997940006 100644
--- a/testcases/lib/.gitignore
+++ b/testcases/lib/.gitignore
@@ -7,3 +7,4 @@
 /tst_net_iface_prefix
 /tst_net_ip_prefix
 /tst_net_vars
+/tst_getconf
\ No newline at end of file
diff --git a/testcases/lib/Makefile b/testcases/lib/Makefile
index 398150ae0..77b7b2ef1 100644
--- a/testcases/lib/Makefile
+++ b/testcases/lib/Makefile
@@ -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
diff --git a/testcases/lib/tst_getconf.c b/testcases/lib/tst_getconf.c
new file mode 100644
index 000000000..0cb8eb23a
--- /dev/null
+++ b/testcases/lib/tst_getconf.c
@@ -0,0 +1,51 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2018 Mylène Josserand <mylene.josserand@bootlin.com>
+ *
+ */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+
+static void print_help(void)
+{
+	printf("Usage: tst_getconf variable\n\n");
+	printf("       variable: can be PAGESIZE/PAGE_SIZE");
+	printf(" or _NPROCESSORS_ONLN (for the moment)\n\n");
+	printf("example: tst_getconf PAGESIZE\n");
+}
+
+int main(int argc, char *argv[])
+{
+	int opt;
+
+	while ((opt = getopt(argc, argv, ":h")) != -1) {
+		switch (opt) {
+		case 'h':
+			print_help();
+			return 0;
+		default:
+			print_help();
+			return 1;
+		}
+	}
+
+	if (argc != 2) {
+		print_help();
+		return 1;
+	}
+
+	if (!strcmp(argv[optind], "_NPROCESSORS_ONLN")) {
+		printf("%ld\n", sysconf(_SC_NPROCESSORS_ONLN));
+	} else if (!strcmp(argv[optind], "PAGESIZE") ||
+		   !strcmp(argv[optind], "PAGE_SIZE")) {
+		printf("%ld\n", sysconf(_SC_PAGE_SIZE));
+	} else {
+		printf("tst_getconf: Unrecognized variable \'%s\'\n",
+		       argv[optind]);
+		return -1;
+	}
+
+	return 0;
+}
-- 
2.11.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [LTP] [PATCH v3 2/2] testcases: Replace "getconf" by "tst_getconf"
  2018-07-13  9:09 [LTP] [PATCH v3 0/2] Create new library helper: tst_getconf =?unknown-8bit?q?Myl=C3=A8ne?= Josserand
  2018-07-13  9:09 ` [LTP] [PATCH v3 1/2] testcase: lib: Create tst_getconf to replace "getconf" =?unknown-8bit?q?Myl=C3=A8ne?= Josserand
@ 2018-07-13  9:09 ` =?unknown-8bit?q?Myl=C3=A8ne?= Josserand
  2018-07-19 12:39 ` [LTP] [PATCH v3 0/2] Create new library helper: tst_getconf Cyril Hrubis
  2 siblings, 0 replies; 4+ messages in thread
From: =?unknown-8bit?q?Myl=C3=A8ne?= Josserand @ 2018-07-13  9:09 UTC (permalink / raw)
  To: ltp

Now that tst_getconf is available to use "sysconf()" function
instead of relying on the application "getconf", let's convert
all the tests to it.

Signed-off-by: Mylène Josserand <mylene.josserand@bootlin.com>
Reviewed-by: Li Wang <liwang@redhat.com>
---
 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(-)

diff --git a/testcases/commands/du/du01.sh b/testcases/commands/du/du01.sh
index ed1df568f..c75068255 100755
--- a/testcases/commands/du/du01.sh
+++ b/testcases/commands/du/du01.sh
@@ -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
diff --git a/testcases/commands/mkswap/mkswap01.sh b/testcases/commands/mkswap/mkswap01.sh
index 5ead4cdc5..341d48c08 100755
--- a/testcases/commands/mkswap/mkswap01.sh
+++ b/testcases/commands/mkswap/mkswap01.sh
@@ -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.
diff --git a/testcases/kernel/controllers/cpuset/cpuset_regression_test.sh b/testcases/kernel/controllers/cpuset/cpuset_regression_test.sh
index 4a104a3ad..72a2a944c 100755
--- a/testcases/kernel/controllers/cpuset/cpuset_regression_test.sh
+++ b/testcases/kernel/controllers/cpuset/cpuset_regression_test.sh
@@ -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
diff --git a/testcases/kernel/controllers/memcg/control/memcg_control_test.sh b/testcases/kernel/controllers/memcg/control/memcg_control_test.sh
index 1d158729c..4d9f1bb5d 100644
--- a/testcases/kernel/controllers/memcg/control/memcg_control_test.sh
+++ b/testcases/kernel/controllers/memcg/control/memcg_control_test.sh
@@ -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
diff --git a/testcases/kernel/controllers/memcg/functional/memcg_lib.sh b/testcases/kernel/controllers/memcg/functional/memcg_lib.sh
index 6a6af853b..cd16dc685 100755
--- a/testcases/kernel/controllers/memcg/functional/memcg_lib.sh
+++ b/testcases/kernel/controllers/memcg/functional/memcg_lib.sh
@@ -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)
diff --git a/testcases/kernel/numa/numa01.sh b/testcases/kernel/numa/numa01.sh
index da2f80ddd..327fa2f1f 100755
--- a/testcases/kernel/numa/numa01.sh
+++ b/testcases/kernel/numa/numa01.sh
@@ -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
diff --git a/testcases/lib/test.sh b/testcases/lib/test.sh
index bce9893a9..650712181 100644
--- a/testcases/lib/test.sh
+++ b/testcases/lib/test.sh
@@ -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
-- 
2.11.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [LTP] [PATCH v3 0/2] Create new library helper: tst_getconf
  2018-07-13  9:09 [LTP] [PATCH v3 0/2] Create new library helper: tst_getconf =?unknown-8bit?q?Myl=C3=A8ne?= Josserand
  2018-07-13  9:09 ` [LTP] [PATCH v3 1/2] testcase: lib: Create tst_getconf to replace "getconf" =?unknown-8bit?q?Myl=C3=A8ne?= Josserand
  2018-07-13  9:09 ` [LTP] [PATCH v3 2/2] testcases: Replace "getconf" by "tst_getconf" =?unknown-8bit?q?Myl=C3=A8ne?= Josserand
@ 2018-07-19 12:39 ` Cyril Hrubis
  2 siblings, 0 replies; 4+ messages in thread
From: Cyril Hrubis @ 2018-07-19 12:39 UTC (permalink / raw)
  To: ltp

Hi!
Pushed, thanks.

-- 
Cyril Hrubis
chrubis@suse.cz

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-07-19 12:39 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-13  9:09 [LTP] [PATCH v3 0/2] Create new library helper: tst_getconf =?unknown-8bit?q?Myl=C3=A8ne?= Josserand
2018-07-13  9:09 ` [LTP] [PATCH v3 1/2] testcase: lib: Create tst_getconf to replace "getconf" =?unknown-8bit?q?Myl=C3=A8ne?= Josserand
2018-07-13  9:09 ` [LTP] [PATCH v3 2/2] testcases: Replace "getconf" by "tst_getconf" =?unknown-8bit?q?Myl=C3=A8ne?= Josserand
2018-07-19 12:39 ` [LTP] [PATCH v3 0/2] Create new library helper: tst_getconf Cyril Hrubis

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.