< prev index next >

test/hotspot/gtest/memory/test_spaceManager.cpp

Print this page
rev 50068 : [mq]: metaspace-split

@@ -20,20 +20,55 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
 
 #include "precompiled.hpp"
+#include "memory/metaspace/spaceManager.hpp"
+
+using metaspace::internals::SpaceManager;
 
 // The test function is only available in debug builds
 #ifdef ASSERT
 
 #include "unittest.hpp"
 
-void SpaceManager_test_adjust_initial_chunk_size();
+
+static void test_adjust_initial_chunk_size(bool is_class) {
+  const size_t smallest = SpaceManager::smallest_chunk_size(is_class);
+  const size_t normal   = SpaceManager::small_chunk_size(is_class);
+  const size_t medium   = SpaceManager::medium_chunk_size(is_class);
+
+#define do_test(value, expected, is_class_value)                                 \
+    do {                                                                         \
+      size_t v = value;                                                          \
+      size_t e = expected;                                                       \
+      assert(SpaceManager::adjust_initial_chunk_size(v, (is_class_value)) == e,  \
+             "Expected: " SIZE_FORMAT " got: " SIZE_FORMAT, e, v);               \
+    } while (0)
+
+    // Smallest (specialized)
+    do_test(1,            smallest, is_class);
+    do_test(smallest - 1, smallest, is_class);
+    do_test(smallest,     smallest, is_class);
+
+    // Small
+    do_test(smallest + 1, normal, is_class);
+    do_test(normal - 1,   normal, is_class);
+    do_test(normal,       normal, is_class);
+
+    // Medium
+    do_test(normal + 1, medium, is_class);
+    do_test(medium - 1, medium, is_class);
+    do_test(medium,     medium, is_class);
+
+    // Humongous
+    do_test(medium + 1, medium + 1, is_class);
+
+#undef test_adjust_initial_chunk_size
+}
 
 TEST(SpaceManager, adjust_initial_chunk_size) {
-  // The SpaceManager is only available in metaspace.cpp,
-  // so the test code is located in that file.
-  SpaceManager_test_adjust_initial_chunk_size();
+  test_adjust_initial_chunk_size(true);
+  test_adjust_initial_chunk_size(false);
 }
 
 #endif // ASSERT
< prev index next >