[LTP] [PATCH v2 3/5] tst_test.sh: Add $TST_FORMAT_DEVICE and related vars

Petr Vorel pvorel@suse.cz
Fri Jan 28 20:06:05 CET 2022


i.e.: TST_DEV_EXTRA_OPTS, TST_DEV_FS_OPTS, TST_FS_TYPE
(to sync with C API).

Also stop using pattern 'TST_NEEDS_FOO', sometimes 'NEEDS' just does not
fit to variable name.

Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
Changes v1->v2:
* fixes "Implies 'TST_NEEDS_DEVICE=1' (no need to set it)."
(was under TST_FS_TYPE, belongs to TST_FORMAT_DEVICE).
* Add more doc at "Formatting device with a filesystem"

I wonder where to put variable description. I this case I put it into
the table "1.2 Library environment variables and functions for shell"
[1] or at these sections describing it e.g. here "Formatting device with
a filesystem"?

I'd prefer to put it into the section describing it and just link it
in the table => v3 needed.

Kind regards,
Petr

[1] https://github.com/linux-test-project/ltp/wiki/Shell-Test-API#12-library-environment-variables-and-functions-for-shell
[2] https://github.com/linux-test-project/ltp/wiki/Shell-Test-API#formatting-device-with-a-filesystem

 doc/shell-test-api.txt    | 26 ++++++++++++++++++++++++--
 testcases/lib/tst_test.sh |  7 ++++++-
 2 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/doc/shell-test-api.txt b/doc/shell-test-api.txt
index a5974b4fad..41878004fb 100644
--- a/doc/shell-test-api.txt
+++ b/doc/shell-test-api.txt
@@ -189,11 +189,18 @@ space as default value is used. Of course, it's possible to use separate functio
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Similarily to the C library various checks and preparations can be requested
-simply by setting right '$TST_NEEDS_FOO'.
+simply by setting right '$TST_FOO'.
 
 [options="header"]
 |=============================================================================
 | Variable name            | Action done
+| 'TST_DEV_EXTRA_OPTS'     | Pass additional 'mkfs' options when use 'TST_FORMAT_DEVICE'.
+| 'TST_DEV_FS_OPTS'        | Pass extra 'mkfs' options after the device name
+|                          | when use 'TST_FORMAT_DEVICE'.
+| 'TST_FORMAT_DEVICE'      | Format a block device with a filesystem. See also
+|                          | 'TST_DEV_EXTRA_OPTS', 'TST_DEV_FS_OPTS', 'TST_FS_TYPE'.
+|                          | Implies 'TST_NEEDS_DEVICE=1' (no need to set it).
+| 'TST_FS_TYPE'            | Overwrite the default filesystem to be used.
 | 'TST_NEEDS_ROOT'         | Exit the test with 'TCONF' unless executed under root.
 |                          | Alternatively the 'tst_require_root' command can be used.
 | 'TST_NEEDS_TMPDIR'       | Create test temporary directory and cd into it.
@@ -495,7 +502,22 @@ tst_random 0 1000
 Formatting device with a filesystem
 +++++++++++++++++++++++++++++++++++
 
-The 'tst_mkfs' helper will format device with the filesystem.
+'TST_FORMAT_DEVICE=1' can be used to format device before running the test.
+Uses '$TST_FS_TYPE', '$TST_DEVICE', '$TST_DEV_FS_OPTS' and '$TST_DEV_EXTRA_OPTS.
+Library internally uses 'tst_mkfs', which can be used for more complex setup.
+
+[source,sh]
+-------------------------------------------------------------------------------
+TST_FORMAT_DEVICE=1
+TST_DEV_FS_OPTS="-b 1024 -O quota"
+TST_DEV_EXTRA_OPTS="5m"
+TST_TESTFUNC=test
+
+test1()
+{
+	tst_res TPASS "device formatted"
+}
+-------------------------------------------------------------------------------
 
 [source,sh]
 -------------------------------------------------------------------------------
diff --git a/testcases/lib/tst_test.sh b/testcases/lib/tst_test.sh
index 4707613158..49eee8d00f 100644
--- a/testcases/lib/tst_test.sh
+++ b/testcases/lib/tst_test.sh
@@ -613,7 +613,7 @@ tst_run()
 			NET_SKIP_VARIABLE_INIT|NEEDS_CHECKPOINTS);;
 			CHECKPOINT_WAIT|CHECKPOINT_WAKE);;
 			CHECKPOINT_WAKE2|CHECKPOINT_WAKE_AND_WAIT);;
-			DEFAULT_FS_TYPE);;
+			DEFAULT_FS_TYPE|DEV_EXTRA_OPTS|DEV_FS_OPTS|FORMAT_DEVICE);;
 			*) tst_res TWARN "Reserved variable TST_$_tst_i used!";;
 			esac
 		done
@@ -658,6 +658,7 @@ tst_run()
 
 	_tst_setup_timer
 
+	[ "$TST_FORMAT_DEVICE" = 1 ] && TST_NEEDS_DEVICE=1
 	[ "$TST_NEEDS_DEVICE" = 1 ] && TST_NEEDS_TMPDIR=1
 
 	if [ "$TST_NEEDS_TMPDIR" = 1 ]; then
@@ -689,6 +690,10 @@ tst_run()
 
 	[ -n "$TST_NEEDS_MODULE" ] && tst_require_module "$TST_NEEDS_MODULE"
 
+	if [ "$TST_FORMAT_DEVICE" = 1 ]; then
+		tst_mkfs "$TST_FS_TYPE" "$TST_DEVICE" "$TST_DEV_FS_OPTS" "$TST_DEV_EXTRA_OPTS"
+	fi
+
 	[ -n "$TST_NEEDS_CHECKPOINTS" ] && _tst_init_checkpoints
 
 	if [ -n "$TST_SETUP" ]; then
-- 
2.34.1



More information about the ltp mailing list