Parameterize oatdump_test.
This change divides the size of the test sources by two.
Bug: 293335130
Test: m test-art-host-gtest-art_oatdump_tests
Change-Id: I69ff64391f82e37073212a72109e41a1dfc085ac
diff --git a/oatdump/oatdump_app_test.cc b/oatdump/oatdump_app_test.cc
index c52c080..a31a3cf 100644
--- a/oatdump/oatdump_app_test.cc
+++ b/oatdump/oatdump_app_test.cc
@@ -18,42 +18,27 @@
namespace art {
-TEST_F(OatDumpTest, TestAppWithBootImage) {
+TEST_P(OatDumpTest, TestAppWithBootImage) {
TEST_DISABLED_FOR_RISCV64();
- ASSERT_TRUE(GenerateAppOdexFile(Flavor::kDynamic, {"--runtime-arg", "-Xmx64M"}));
- ASSERT_TRUE(Exec(Flavor::kDynamic, kModeOatWithBootImage, {}, kListAndCode));
-}
-TEST_F(OatDumpTest, TestAppWithBootImageStatic) {
- TEST_DISABLED_FOR_RISCV64();
- TEST_DISABLED_FOR_NON_STATIC_HOST_BUILDS();
- ASSERT_TRUE(GenerateAppOdexFile(Flavor::kStatic, {"--runtime-arg", "-Xmx64M"}));
- ASSERT_TRUE(Exec(Flavor::kStatic, kModeOatWithBootImage, {}, kListAndCode));
+ ASSERT_TRUE(GenerateAppOdexFile(GetParam(), {"--runtime-arg", "-Xmx64M"}));
+ ASSERT_TRUE(Exec(GetParam(), kModeOatWithBootImage, {}, kListAndCode));
}
-TEST_F(OatDumpTest, TestAppImageWithBootImage) {
+TEST_P(OatDumpTest, TestAppImageWithBootImage) {
TEST_DISABLED_FOR_RISCV64();
TEST_DISABLED_WITHOUT_BAKER_READ_BARRIERS(); // GC bug, b/126305867
const std::string app_image_arg = "--app-image-file=" + GetAppImageName();
- ASSERT_TRUE(GenerateAppOdexFile(Flavor::kDynamic, {"--runtime-arg", "-Xmx64M", app_image_arg}));
- ASSERT_TRUE(Exec(Flavor::kDynamic, kModeAppImage, {}, kListAndCode));
-}
-TEST_F(OatDumpTest, TestAppImageWithBootImageStatic) {
- TEST_DISABLED_FOR_RISCV64();
- TEST_DISABLED_WITHOUT_BAKER_READ_BARRIERS(); // GC bug, b/126305867
- TEST_DISABLED_FOR_NON_STATIC_HOST_BUILDS();
- const std::string app_image_arg = "--app-image-file=" + GetAppImageName();
- ASSERT_TRUE(GenerateAppOdexFile(Flavor::kStatic, {"--runtime-arg", "-Xmx64M", app_image_arg}));
- ASSERT_TRUE(Exec(Flavor::kStatic, kModeAppImage, {}, kListAndCode));
+ ASSERT_TRUE(GenerateAppOdexFile(GetParam(), {"--runtime-arg", "-Xmx64M", app_image_arg}));
+ ASSERT_TRUE(Exec(GetParam(), kModeAppImage, {}, kListAndCode));
}
-TEST_F(OatDumpTest, TestAppImageInvalidPath) {
+TEST_P(OatDumpTest, TestAppImageInvalidPath) {
TEST_DISABLED_FOR_RISCV64();
TEST_DISABLED_WITHOUT_BAKER_READ_BARRIERS(); // GC bug, b/126305867
- TEST_DISABLED_FOR_NON_STATIC_HOST_BUILDS();
const std::string app_image_arg = "--app-image-file=" + GetAppImageName();
- ASSERT_TRUE(GenerateAppOdexFile(Flavor::kStatic, {"--runtime-arg", "-Xmx64M", app_image_arg}));
+ ASSERT_TRUE(GenerateAppOdexFile(GetParam(), {"--runtime-arg", "-Xmx64M", app_image_arg}));
SetAppImageName("missing_app_image.art");
- ASSERT_TRUE(Exec(Flavor::kStatic, kModeAppImage, {}, kListAndCode, /*expect_failure=*/true));
+ ASSERT_TRUE(Exec(GetParam(), kModeAppImage, {}, kListAndCode, /*expect_failure=*/true));
}
} // namespace art
diff --git a/oatdump/oatdump_image_test.cc b/oatdump/oatdump_image_test.cc
index 88dce25..72a1857 100644
--- a/oatdump/oatdump_image_test.cc
+++ b/oatdump/oatdump_image_test.cc
@@ -20,35 +20,21 @@
// Disable tests on arm and arm64 as they are taking too long to run. b/27824283.
#define TEST_DISABLED_FOR_ARM_AND_ARM64() \
- TEST_DISABLED_FOR_ARM(); \
- TEST_DISABLED_FOR_ARM64(); \
+ TEST_DISABLED_FOR_ARM(); \
+ TEST_DISABLED_FOR_ARM64();
-TEST_F(OatDumpTest, TestImage) {
+TEST_P(OatDumpTest, TestImage) {
TEST_DISABLED_FOR_RISCV64();
TEST_DISABLED_FOR_ARM_AND_ARM64();
std::string error_msg;
- ASSERT_TRUE(Exec(Flavor::kDynamic, kModeArt, {}, kListAndCode));
-}
-TEST_F(OatDumpTest, TestImageStatic) {
- TEST_DISABLED_FOR_RISCV64();
- TEST_DISABLED_FOR_ARM_AND_ARM64();
- TEST_DISABLED_FOR_NON_STATIC_HOST_BUILDS();
- std::string error_msg;
- ASSERT_TRUE(Exec(Flavor::kStatic, kModeArt, {}, kListAndCode));
+ ASSERT_TRUE(Exec(GetParam(), kModeArt, {}, kListAndCode));
}
-TEST_F(OatDumpTest, TestOatImage) {
+TEST_P(OatDumpTest, TestOatImage) {
TEST_DISABLED_FOR_RISCV64();
TEST_DISABLED_FOR_ARM_AND_ARM64();
std::string error_msg;
- ASSERT_TRUE(Exec(Flavor::kDynamic, kModeCoreOat, {}, kListAndCode));
-}
-TEST_F(OatDumpTest, TestOatImageStatic) {
- TEST_DISABLED_FOR_RISCV64();
- TEST_DISABLED_FOR_ARM_AND_ARM64();
- TEST_DISABLED_FOR_NON_STATIC_HOST_BUILDS();
- std::string error_msg;
- ASSERT_TRUE(Exec(Flavor::kStatic, kModeCoreOat, {}, kListAndCode));
+ ASSERT_TRUE(Exec(GetParam(), kModeCoreOat, {}, kListAndCode));
}
} // namespace art
diff --git a/oatdump/oatdump_test.cc b/oatdump/oatdump_test.cc
index d8ba87c..6317482 100644
--- a/oatdump/oatdump_test.cc
+++ b/oatdump/oatdump_test.cc
@@ -20,105 +20,75 @@
namespace art {
+INSTANTIATE_TEST_SUITE_P(DynamicOrStatic,
+ OatDumpTest,
+ testing::Values(Flavor::kDynamic, Flavor::kStatic));
+
// Disable tests on arm and arm64 as they are taking too long to run. b/27824283.
#define TEST_DISABLED_FOR_ARM_AND_ARM64() \
- TEST_DISABLED_FOR_ARM(); \
- TEST_DISABLED_FOR_ARM64(); \
+ TEST_DISABLED_FOR_ARM(); \
+ TEST_DISABLED_FOR_ARM64();
-TEST_F(OatDumpTest, TestNoDumpVmap) {
+TEST_P(OatDumpTest, TestNoDumpVmap) {
TEST_DISABLED_FOR_RISCV64();
TEST_DISABLED_FOR_ARM_AND_ARM64();
std::string error_msg;
- ASSERT_TRUE(Exec(Flavor::kDynamic, kModeArt, {"--no-dump:vmap"}, kListAndCode));
-}
-TEST_F(OatDumpTest, TestNoDumpVmapStatic) {
- TEST_DISABLED_FOR_RISCV64();
- TEST_DISABLED_FOR_ARM_AND_ARM64();
- TEST_DISABLED_FOR_NON_STATIC_HOST_BUILDS();
- std::string error_msg;
- ASSERT_TRUE(Exec(Flavor::kStatic, kModeArt, {"--no-dump:vmap"}, kListAndCode));
+ ASSERT_TRUE(Exec(GetParam(), kModeArt, {"--no-dump:vmap"}, kListAndCode));
}
-TEST_F(OatDumpTest, TestNoDisassemble) {
+TEST_P(OatDumpTest, TestNoDisassemble) {
TEST_DISABLED_FOR_RISCV64();
TEST_DISABLED_FOR_ARM_AND_ARM64();
std::string error_msg;
- ASSERT_TRUE(Exec(Flavor::kDynamic, kModeArt, {"--no-disassemble"}, kListAndCode));
-}
-TEST_F(OatDumpTest, TestNoDisassembleStatic) {
- TEST_DISABLED_FOR_RISCV64();
- TEST_DISABLED_FOR_ARM_AND_ARM64();
- TEST_DISABLED_FOR_NON_STATIC_HOST_BUILDS();
- std::string error_msg;
- ASSERT_TRUE(Exec(Flavor::kStatic, kModeArt, {"--no-disassemble"}, kListAndCode));
+ ASSERT_TRUE(Exec(GetParam(), kModeArt, {"--no-disassemble"}, kListAndCode));
}
-TEST_F(OatDumpTest, TestListClasses) {
+TEST_P(OatDumpTest, TestListClasses) {
TEST_DISABLED_FOR_RISCV64();
TEST_DISABLED_FOR_ARM_AND_ARM64();
std::string error_msg;
- ASSERT_TRUE(Exec(Flavor::kDynamic, kModeArt, {"--list-classes"}, kListOnly));
-}
-TEST_F(OatDumpTest, TestListClassesStatic) {
- TEST_DISABLED_FOR_RISCV64();
- TEST_DISABLED_FOR_ARM_AND_ARM64();
- TEST_DISABLED_FOR_NON_STATIC_HOST_BUILDS();
- std::string error_msg;
- ASSERT_TRUE(Exec(Flavor::kStatic, kModeArt, {"--list-classes"}, kListOnly));
+ ASSERT_TRUE(Exec(GetParam(), kModeArt, {"--list-classes"}, kListOnly));
}
-TEST_F(OatDumpTest, TestListMethods) {
+TEST_P(OatDumpTest, TestListMethods) {
TEST_DISABLED_FOR_RISCV64();
TEST_DISABLED_FOR_ARM_AND_ARM64();
std::string error_msg;
- ASSERT_TRUE(Exec(Flavor::kDynamic, kModeArt, {"--list-methods"}, kListOnly));
-}
-TEST_F(OatDumpTest, TestListMethodsStatic) {
- TEST_DISABLED_FOR_RISCV64();
- TEST_DISABLED_FOR_ARM_AND_ARM64();
- TEST_DISABLED_FOR_NON_STATIC_HOST_BUILDS();
- std::string error_msg;
- ASSERT_TRUE(Exec(Flavor::kStatic, kModeArt, {"--list-methods"}, kListOnly));
+ ASSERT_TRUE(Exec(GetParam(), kModeArt, {"--list-methods"}, kListOnly));
}
-TEST_F(OatDumpTest, TestSymbolize) {
+TEST_P(OatDumpTest, TestSymbolize) {
TEST_DISABLED_FOR_RISCV64();
- TEST_DISABLED_FOR_TARGET(); // Can not write files inside the apex directory.
+ if (GetParam() == Flavor::kDynamic) {
+ TEST_DISABLED_FOR_TARGET(); // Can not write files inside the apex directory.
+ } else {
+ TEST_DISABLED_FOR_ARM_AND_ARM64();
+ }
std::string error_msg;
- ASSERT_TRUE(Exec(Flavor::kDynamic, kModeSymbolize, {}, kListOnly));
-}
-TEST_F(OatDumpTest, TestSymbolizeStatic) {
- TEST_DISABLED_FOR_RISCV64();
- TEST_DISABLED_FOR_ARM_AND_ARM64();
- TEST_DISABLED_FOR_NON_STATIC_HOST_BUILDS();
- std::string error_msg;
- ASSERT_TRUE(Exec(Flavor::kStatic, kModeSymbolize, {}, kListOnly));
+ ASSERT_TRUE(Exec(GetParam(), kModeSymbolize, {}, kListOnly));
}
-TEST_F(OatDumpTest, TestExportDex) {
+TEST_P(OatDumpTest, TestExportDex) {
TEST_DISABLED_FOR_RISCV64();
+ if (GetParam() == Flavor::kStatic) {
+ TEST_DISABLED_FOR_ARM_AND_ARM64();
+ }
std::string error_msg;
- ASSERT_TRUE(GenerateAppOdexFile(Flavor::kDynamic, {"--runtime-arg", "-Xmx64M"}));
- ASSERT_TRUE(Exec(Flavor::kDynamic, kModeOat, {"--export-dex-to=" + tmp_dir_}, kListOnly));
- const std::string dex_location =
- tmp_dir_+ "/" + android::base::Basename(GetTestDexFileName(GetAppBaseName().c_str())) +
- "_export.dex";
- const std::string dexdump = GetExecutableFilePath("dexdump",
- /*is_debug=*/false,
- /*is_static=*/false,
- /*bitness=*/false);
- std::string output;
- auto post_fork_fn = []() { return true; };
- ForkAndExecResult res = ForkAndExec({dexdump, "-d", dex_location}, post_fork_fn, &output);
- ASSERT_TRUE(res.StandardSuccess());
-}
-TEST_F(OatDumpTest, TestExportDexStatic) {
- TEST_DISABLED_FOR_RISCV64();
- TEST_DISABLED_FOR_ARM_AND_ARM64();
- TEST_DISABLED_FOR_NON_STATIC_HOST_BUILDS();
- std::string error_msg;
- ASSERT_TRUE(GenerateAppOdexFile(Flavor::kStatic, {"--runtime-arg", "-Xmx64M"}));
- ASSERT_TRUE(Exec(Flavor::kStatic, kModeOat, {"--export-dex-to=" + tmp_dir_}, kListOnly));
+ ASSERT_TRUE(GenerateAppOdexFile(GetParam(), {"--runtime-arg", "-Xmx64M"}));
+ ASSERT_TRUE(Exec(GetParam(), kModeOat, {"--export-dex-to=" + tmp_dir_}, kListOnly));
+ if (GetParam() == Flavor::kDynamic) {
+ const std::string dex_location =
+ tmp_dir_ + "/" + android::base::Basename(GetTestDexFileName(GetAppBaseName().c_str())) +
+ "_export.dex";
+ const std::string dexdump = GetExecutableFilePath("dexdump",
+ /*is_debug=*/false,
+ /*is_static=*/false,
+ /*bitness=*/false);
+ std::string output;
+ auto post_fork_fn = []() { return true; };
+ ForkAndExecResult res = ForkAndExec({dexdump, "-d", dex_location}, post_fork_fn, &output);
+ ASSERT_TRUE(res.StandardSuccess());
+ }
}
} // namespace art
diff --git a/oatdump/oatdump_test.h b/oatdump/oatdump_test.h
index 708befe..68e6746 100644
--- a/oatdump/oatdump_test.h
+++ b/oatdump/oatdump_test.h
@@ -17,12 +17,14 @@
#ifndef ART_OATDUMP_OATDUMP_TEST_H_
#define ART_OATDUMP_OATDUMP_TEST_H_
+#include <sys/types.h>
+#include <unistd.h>
+
#include <sstream>
#include <string>
#include <vector>
#include "android-base/strings.h"
-
#include "arch/instruction_set.h"
#include "base/file_utils.h"
#include "base/os.h"
@@ -32,19 +34,26 @@
#include "exec_utils.h"
#include "gc/heap.h"
#include "gc/space/image_space.h"
-
-#include <sys/types.h>
-#include <unistd.h>
+#include "gtest/gtest.h"
namespace art {
-class OatDumpTest : public CommonRuntimeTest {
+// Linking flavor.
+enum class Flavor {
+ kDynamic, // oatdump(d), dex2oat(d)
+ kStatic, // oatdump(d)s, dex2oat(d)s
+};
+
+class OatDumpTest : public CommonRuntimeTest, public testing::WithParamInterface<Flavor> {
protected:
virtual void SetUp() {
CommonRuntimeTest::SetUp();
core_art_location_ = GetCoreArtLocation();
core_oat_location_ = GetSystemImageFilename(GetCoreOatLocation().c_str(), kRuntimeISA);
tmp_dir_ = GetScratchDir();
+ if (GetParam() == Flavor::kStatic) {
+ TEST_DISABLED_FOR_NON_STATIC_HOST_BUILDS();
+ }
}
virtual void TearDown() {
@@ -64,12 +73,6 @@
return dir;
}
- // Linking flavor.
- enum class Flavor {
- kDynamic, // oatdump(d), dex2oat(d)
- kStatic, // oatdump(d)s, dex2oat(d)s
- };
-
// Returns path to the oatdump/dex2oat/dexdump binary.
std::string GetExecutableFilePath(const char* name, bool is_debug, bool is_static, bool bitness) {
std::string path = GetArtBinDir() + '/' + name;