[libcxx] [test] Add a test parameter for disabling memory intensive tests (#68214)
authorMartin Storsjö <martin@martin.st>
Tue, 17 Oct 2023 19:49:52 +0000 (22:49 +0300)
committerTobias Hieta <tobias@hieta.se>
Tue, 24 Oct 2023 06:24:01 +0000 (08:24 +0200)
Specifically, the test std/input.output/string.streams/stringstream/stringstream.members/gcount.pass.cpp
allocates a std::string with INT_MAX-1 elements, and then writes this to
a std::stringstream. On Linux, running this test consumes around 5.0 GB
of memory; on Windows, it ends up using up to 6.8 GB of memory.

This limits whether such tests can run on e.g. GitHub Actions runners,
where the free runners are limited to 8 GB of memory.

This is somewhat similar to, but still notably different, from the
existing test parameter long_tests.

(cherry picked from commit 122064a6303eb9c06e0af231f5a4ce145d9a2e67)

libcxx/test/std/input.output/string.streams/stringstream/stringstream.members/gcount.pass.cpp
libcxx/utils/libcxx/test/params.py

index 3a5edac..8dc7442 100644 (file)
@@ -7,6 +7,7 @@
 //===----------------------------------------------------------------------===//
 
 // UNSUPPORTED: 32-bit-pointer
+// REQUIRES: large_tests
 
 // Test that tellp() does not break the stringstream after INT_MAX, due to use
 // of pbump() that accept int.
index 41b4469..dcc9585 100644 (file)
@@ -300,6 +300,14 @@ DEFAULT_PARAMETERS = [
         actions=lambda enabled: [] if not enabled else [AddFeature("long_tests")],
     ),
     Parameter(
+        name="large_tests",
+        choices=[True, False],
+        type=bool,
+        default=True,
+        help="Whether to enable tests that use a lot of memory. This can be useful when running on a device with limited amounts of memory.",
+        actions=lambda enabled: [] if not enabled else [AddFeature("large_tests")],
+    ),
+    Parameter(
         name="enable_assertions",
         choices=[True, False],
         type=bool,