mem/oom: disable timeouts for testcase in demand
OOM testcases runtime depends heavily on amount of RAM+Swap and kernel
version, it's hard to figure out cap on a runtime.
Hence this patch changes the test library API so that setting timeout to
-1 disables it.
Signed-off-by: Li Wang <liwang@redhat.com>
Signed-off-by: Cyril Hrubis <chrubis@suse.cz>
diff --git a/doc/test-writing-guidelines.txt b/doc/test-writing-guidelines.txt
index ed6322b..15d4189 100644
--- a/doc/test-writing-guidelines.txt
+++ b/doc/test-writing-guidelines.txt
@@ -320,7 +320,9 @@
Each test has a default timeout set to 300s. The default timeout can be
overriden by setting '.timeout' in the test structure or by calling
-'tst_set_timeout()' in the test 'setup()'.
+'tst_set_timeout()' in the test 'setup()'. There are a few testcases whose run
+time may vary arbitrarily, for these timeout can be disabled by setting it to
+-1.
A word about the cleanup() callback
+++++++++++++++++++++++++++++++++++
@@ -451,7 +453,8 @@
-------------------------------------------------------------------------------
Allows for setting timeout per test iteration dymanically in the test setup(),
-the timeout is specified in seconds.
+the timeout is specified in seconds. There are a few testcases whose runtime
+can vary arbitrarily, these can disable timeouts by setting it to -1.
2.2.3 Test temporary directory
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/include/tst_test.h b/include/tst_test.h
index c1eab32..982cdfe 100644
--- a/include/tst_test.h
+++ b/include/tst_test.h
@@ -137,8 +137,8 @@
unsigned int mnt_flags;
void *mnt_data;
- /* override default timeout per test run */
- unsigned int timeout;
+ /* override default timeout per test run, disabled == -1 */
+ int timeout;
void (*setup)(void);
void (*cleanup)(void);
@@ -183,7 +183,7 @@
const char *tst_strerrno(int err);
const char *tst_strsig(int sig);
-void tst_set_timeout(unsigned int timeout);
+void tst_set_timeout(int timeout);
#ifndef TST_NO_DEFAULT_MAIN
diff --git a/lib/tst_test.c b/lib/tst_test.c
index ab0404a..82a607b 100644
--- a/lib/tst_test.c
+++ b/lib/tst_test.c
@@ -880,10 +880,15 @@
}
}
-void tst_set_timeout(unsigned int timeout)
+void tst_set_timeout(int timeout)
{
char *mul = getenv("LTP_TIMEOUT_MUL");
+ if (timeout == -1) {
+ tst_res(TINFO, "Timeout per run is disabled");
+ return;
+ }
+
results->timeout = timeout;
if (mul) {
diff --git a/testcases/kernel/mem/oom/oom01.c b/testcases/kernel/mem/oom/oom01.c
index 955642c..3d05860 100644
--- a/testcases/kernel/mem/oom/oom01.c
+++ b/testcases/kernel/mem/oom/oom01.c
@@ -61,6 +61,7 @@
static struct tst_test test = {
.needs_root = 1,
.forks_child = 1,
+ .timeout = -1,
.setup = setup,
.cleanup = cleanup,
.test_all = verify_oom,
diff --git a/testcases/kernel/mem/oom/oom02.c b/testcases/kernel/mem/oom/oom02.c
index dab8874..3434a34 100644
--- a/testcases/kernel/mem/oom/oom02.c
+++ b/testcases/kernel/mem/oom/oom02.c
@@ -65,6 +65,7 @@
static struct tst_test test = {
.needs_root = 1,
.forks_child = 1,
+ .timeout = -1,
.setup = setup,
.cleanup = cleanup,
.test_all = verify_oom,
diff --git a/testcases/kernel/mem/oom/oom03.c b/testcases/kernel/mem/oom/oom03.c
index b384e2b..f883bc0 100644
--- a/testcases/kernel/mem/oom/oom03.c
+++ b/testcases/kernel/mem/oom/oom03.c
@@ -78,6 +78,7 @@
static struct tst_test test = {
.needs_root = 1,
.forks_child = 1,
+ .timeout = -1,
.setup = setup,
.cleanup = cleanup,
.test_all = verify_oom,
diff --git a/testcases/kernel/mem/oom/oom04.c b/testcases/kernel/mem/oom/oom04.c
index 8043097..e4e70e2 100644
--- a/testcases/kernel/mem/oom/oom04.c
+++ b/testcases/kernel/mem/oom/oom04.c
@@ -87,6 +87,7 @@
static struct tst_test test = {
.needs_root = 1,
.forks_child = 1,
+ .timeout = -1,
.setup = setup,
.cleanup = cleanup,
.test_all = verify_oom,
diff --git a/testcases/kernel/mem/oom/oom05.c b/testcases/kernel/mem/oom/oom05.c
index d8fcaf4..bdf5d19 100644
--- a/testcases/kernel/mem/oom/oom05.c
+++ b/testcases/kernel/mem/oom/oom05.c
@@ -113,6 +113,7 @@
static struct tst_test test = {
.needs_root = 1,
.forks_child = 1,
+ .timeout = -1,
.setup = setup,
.cleanup = cleanup,
.test_all = verify_oom,