diff options
author | 2023-07-31 11:01:32 +0100 | |
---|---|---|
committer | 2023-08-02 15:18:55 +0000 | |
commit | e5f57dede0c720a2559ab8148a1a8130d40874ed (patch) | |
tree | 57e6d992882bfb6a827660d3e4364a776755c7c5 | |
parent | 15cee1fb59fd20d75902596f5099ba31ee1c419d (diff) |
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
-rw-r--r-- | oatdump/oatdump_app_test.cc | 33 | ||||
-rw-r--r-- | oatdump/oatdump_image_test.cc | 26 | ||||
-rw-r--r-- | oatdump/oatdump_test.cc | 110 | ||||
-rw-r--r-- | oatdump/oatdump_test.h | 25 |
4 files changed, 69 insertions, 125 deletions
diff --git a/oatdump/oatdump_app_test.cc b/oatdump/oatdump_app_test.cc index c52c080ebd..a31a3cf901 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_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_P(OatDumpTest, TestAppImageWithBootImage) { 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 88dce25e60..72a18574fc 100644 --- a/oatdump/oatdump_image_test.cc +++ b/oatdump/oatdump_image_test.cc @@ -20,35 +20,21 @@ namespace art { // 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_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_P(OatDumpTest, TestOatImage) { 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 d8ba87c4a5..6317482c54 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_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_P(OatDumpTest, TestListClasses) { 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_DISABLED_FOR_RISCV64(); - TEST_DISABLED_FOR_TARGET(); // Can not write files inside the apex directory. - std::string error_msg; - ASSERT_TRUE(Exec(Flavor::kDynamic, kModeSymbolize, {}, kListOnly)); -} -TEST_F(OatDumpTest, TestSymbolizeStatic) { +TEST_P(OatDumpTest, TestSymbolize) { TEST_DISABLED_FOR_RISCV64(); - TEST_DISABLED_FOR_ARM_AND_ARM64(); - TEST_DISABLED_FOR_NON_STATIC_HOST_BUILDS(); + 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::kStatic, kModeSymbolize, {}, kListOnly)); + ASSERT_TRUE(Exec(GetParam(), kModeSymbolize, {}, kListOnly)); } -TEST_F(OatDumpTest, TestExportDex) { - TEST_DISABLED_FOR_RISCV64(); - 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_P(OatDumpTest, TestExportDex) { TEST_DISABLED_FOR_RISCV64(); - TEST_DISABLED_FOR_ARM_AND_ARM64(); - TEST_DISABLED_FOR_NON_STATIC_HOST_BUILDS(); + if (GetParam() == Flavor::kStatic) { + TEST_DISABLED_FOR_ARM_AND_ARM64(); + } 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 708befe1b7..68e6746f15 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 @@ class OatDumpTest : public CommonRuntimeTest { 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; |