Blob Blame History Raw
From e472e326d31a125e21453d75cb46bba9cf387952 Mon Sep 17 00:00:00 2001
Message-Id: <e472e326d31a125e21453d75cb46bba9cf387952.1566225007.git.aquini@redhat.com>
In-Reply-To: <d42f467a923dfc09309acb7a83b42e3285fbd8f4.1566225007.git.aquini@redhat.com>
References: <d42f467a923dfc09309acb7a83b42e3285fbd8f4.1566225007.git.aquini@redhat.com>
From: Sandipan Das <sandipan@linux.ibm.com>
Date: Thu, 15 Aug 2019 13:08:34 +0530
Subject: [RHEL7 PATCH 07/31] morecore: tests: Run tests only for default huge
 page size

The morecore tests (malloc, malloc-manysmall and heapshrink)
are not linked against libhugetlbfs and cannot invoke library
functions like gethugepagesize(). Hence, run these tests only
for the kernel's default huge page size.

Signed-off-by: Sandipan Das <sandipan@linux.ibm.com>
Signed-off-by: Eric B Munson <emunson@mgebm.net>
Signed-off-by: Rafael Aquini <aquini@redhat.com>
---
 tests/run_tests.py | 81 +++++++++++++++++++++++++++++++++---------------------
 1 file changed, 49 insertions(+), 32 deletions(-)

diff --git a/tests/run_tests.py b/tests/run_tests.py
index 3c95a03..70c5a6a 100755
--- a/tests/run_tests.py
+++ b/tests/run_tests.py
@@ -362,6 +362,16 @@ def do_test_with_rlimit(rtype, limit, cmd, bits=None, **env):
     do_test(cmd, bits, **env)
     resource.setrlimit(rtype, oldlimit)
 
+def do_test_with_pagesize(pagesize, cmd, bits=None, **env):
+    """
+    Run a test case, testing with a specified huge page size and
+    each indicated word size.
+    """
+    if bits == None:
+        bits = wordsizes
+    for b in (set(bits) & wordsizes_by_pagesize[pagesize]):
+        run_test(pagesize, b, cmd, **env)
+
 def do_elflink_test(cmd, **env):
     """
     Run an elflink test case, skipping known-bad configurations.
@@ -563,15 +573,22 @@ def functional_tests():
     do_test("private")
     do_test("fork-cow")
     do_test("direct")
-    do_test("malloc")
-    do_test("malloc", LD_PRELOAD="libhugetlbfs.so", HUGETLB_MORECORE="yes")
-    do_test("malloc", LD_PRELOAD="libhugetlbfs.so", HUGETLB_MORECORE="yes",
-            HUGETLB_RESTRICT_EXE="unknown:none")
-    do_test("malloc", LD_PRELOAD="libhugetlbfs.so", HUGETLB_MORECORE="yes",
-            HUGETLB_RESTRICT_EXE="unknown:malloc")
-    do_test("malloc_manysmall")
-    do_test("malloc_manysmall", LD_PRELOAD="libhugetlbfs.so",
-            HUGETLB_MORECORE="yes")
+    do_test_with_pagesize(system_default_hpage_size, "malloc")
+    do_test_with_pagesize(system_default_hpage_size, "malloc",
+                          LD_PRELOAD="libhugetlbfs.so",
+                          HUGETLB_MORECORE="yes")
+    do_test_with_pagesize(system_default_hpage_size, "malloc",
+                          LD_PRELOAD="libhugetlbfs.so",
+                          HUGETLB_MORECORE="yes",
+                          HUGETLB_RESTRICT_EXE="unknown:none")
+    do_test_with_pagesize(system_default_hpage_size, "malloc",
+                          LD_PRELOAD="libhugetlbfs.so",
+                          HUGETLB_MORECORE="yes",
+                          HUGETLB_RESTRICT_EXE="unknown:malloc")
+    do_test_with_pagesize(system_default_hpage_size, "malloc_manysmall")
+    do_test_with_pagesize(system_default_hpage_size, "malloc_manysmall",
+                          LD_PRELOAD="libhugetlbfs.so",
+                          HUGETLB_MORECORE="yes")
 
     # After upstream commit: (glibc-2.25.90-688-gd5c3fafc43) glibc has a
     # new per-thread caching mechanism that will NOT allow heapshrink test to
@@ -584,29 +601,29 @@ def functional_tests():
     # program context (not even with a constructor function), and the tunable
     # is only evaluated during malloc() initialization.
 
-    do_test("heapshrink",
-            GLIBC_TUNABLES="glibc.malloc.tcache_count=0")
-    do_test("heapshrink",
-            GLIBC_TUNABLES="glibc.malloc.tcache_count=0",
-            LD_PRELOAD="libheapshrink.so")
-    do_test("heapshrink",
-            GLIBC_TUNABLES="glibc.malloc.tcache_count=0",
-            LD_PRELOAD="libhugetlbfs.so",
-            HUGETLB_MORECORE="yes")
-    do_test("heapshrink",
-            GLIBC_TUNABLES="glibc.malloc.tcache_count=0",
-            LD_PRELOAD="libhugetlbfs.so libheapshrink.so",
-            HUGETLB_MORECORE="yes")
-    do_test("heapshrink",
-            GLIBC_TUNABLES="glibc.malloc.tcache_count=0",
-            LD_PRELOAD="libheapshrink.so",
-            HUGETLB_MORECORE="yes",
-            HUGETLB_MORECORE_SHRINK="yes")
-    do_test("heapshrink",
-            GLIBC_TUNABLES="glibc.malloc.tcache_count=0",
-            LD_PRELOAD="libhugetlbfs.so libheapshrink.so",
-            HUGETLB_MORECORE="yes",
-            HUGETLB_MORECORE_SHRINK="yes")
+    do_test_with_pagesize(system_default_hpage_size, "heapshrink",
+                          GLIBC_TUNABLES="glibc.malloc.tcache_count=0")
+    do_test_with_pagesize(system_default_hpage_size, "heapshrink",
+                          GLIBC_TUNABLES="glibc.malloc.tcache_count=0",
+                          LD_PRELOAD="libheapshrink.so")
+    do_test_with_pagesize(system_default_hpage_size, "heapshrink",
+                          GLIBC_TUNABLES="glibc.malloc.tcache_count=0",
+                          LD_PRELOAD="libhugetlbfs.so",
+                          HUGETLB_MORECORE="yes")
+    do_test_with_pagesize(system_default_hpage_size, "heapshrink",
+                          GLIBC_TUNABLES="glibc.malloc.tcache_count=0",
+                          LD_PRELOAD="libhugetlbfs.so libheapshrink.so",
+                          HUGETLB_MORECORE="yes")
+    do_test_with_pagesize(system_default_hpage_size, "heapshrink",
+                          GLIBC_TUNABLES="glibc.malloc.tcache_count=0",
+                          LD_PRELOAD="libheapshrink.so",
+                          HUGETLB_MORECORE="yes",
+                          HUGETLB_MORECORE_SHRINK="yes")
+    do_test_with_pagesize(system_default_hpage_size, "heapshrink",
+                          GLIBC_TUNABLES="glibc.malloc.tcache_count=0",
+                          LD_PRELOAD="libhugetlbfs.so libheapshrink.so",
+                          HUGETLB_MORECORE="yes",
+                          HUGETLB_MORECORE_SHRINK="yes")
 
     do_test("heap-overflow", HUGETLB_VERBOSE="1", HUGETLB_MORECORE="yes")
 
-- 
1.8.3.1