summaryrefslogtreecommitdiff
path: root/runtime/utils_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/utils_test.cc')
-rw-r--r--runtime/utils_test.cc234
1 files changed, 0 insertions, 234 deletions
diff --git a/runtime/utils_test.cc b/runtime/utils_test.cc
index 1dc46871ac..e67e93f9c5 100644
--- a/runtime/utils_test.cc
+++ b/runtime/utils_test.cc
@@ -37,63 +37,8 @@
namespace art {
-std::string PrettyArguments(const char* signature);
-std::string PrettyReturnType(const char* signature);
-
class UtilsTest : public CommonRuntimeTest {};
-TEST_F(UtilsTest, PrettyDescriptor_ArrayReferences) {
- EXPECT_EQ("java.lang.Class[]", PrettyDescriptor("[Ljava/lang/Class;"));
- EXPECT_EQ("java.lang.Class[][]", PrettyDescriptor("[[Ljava/lang/Class;"));
-}
-
-TEST_F(UtilsTest, PrettyDescriptor_ScalarReferences) {
- EXPECT_EQ("java.lang.String", PrettyDescriptor("Ljava.lang.String;"));
- EXPECT_EQ("java.lang.String", PrettyDescriptor("Ljava/lang/String;"));
-}
-
-TEST_F(UtilsTest, PrettyDescriptor_Primitive) {
- EXPECT_EQ("boolean", PrettyDescriptor(Primitive::kPrimBoolean));
- EXPECT_EQ("byte", PrettyDescriptor(Primitive::kPrimByte));
- EXPECT_EQ("char", PrettyDescriptor(Primitive::kPrimChar));
- EXPECT_EQ("short", PrettyDescriptor(Primitive::kPrimShort));
- EXPECT_EQ("int", PrettyDescriptor(Primitive::kPrimInt));
- EXPECT_EQ("float", PrettyDescriptor(Primitive::kPrimFloat));
- EXPECT_EQ("long", PrettyDescriptor(Primitive::kPrimLong));
- EXPECT_EQ("double", PrettyDescriptor(Primitive::kPrimDouble));
- EXPECT_EQ("void", PrettyDescriptor(Primitive::kPrimVoid));
-}
-
-TEST_F(UtilsTest, PrettyDescriptor_PrimitiveArrays) {
- EXPECT_EQ("boolean[]", PrettyDescriptor("[Z"));
- EXPECT_EQ("boolean[][]", PrettyDescriptor("[[Z"));
- EXPECT_EQ("byte[]", PrettyDescriptor("[B"));
- EXPECT_EQ("byte[][]", PrettyDescriptor("[[B"));
- EXPECT_EQ("char[]", PrettyDescriptor("[C"));
- EXPECT_EQ("char[][]", PrettyDescriptor("[[C"));
- EXPECT_EQ("double[]", PrettyDescriptor("[D"));
- EXPECT_EQ("double[][]", PrettyDescriptor("[[D"));
- EXPECT_EQ("float[]", PrettyDescriptor("[F"));
- EXPECT_EQ("float[][]", PrettyDescriptor("[[F"));
- EXPECT_EQ("int[]", PrettyDescriptor("[I"));
- EXPECT_EQ("int[][]", PrettyDescriptor("[[I"));
- EXPECT_EQ("long[]", PrettyDescriptor("[J"));
- EXPECT_EQ("long[][]", PrettyDescriptor("[[J"));
- EXPECT_EQ("short[]", PrettyDescriptor("[S"));
- EXPECT_EQ("short[][]", PrettyDescriptor("[[S"));
-}
-
-TEST_F(UtilsTest, PrettyDescriptor_PrimitiveScalars) {
- EXPECT_EQ("boolean", PrettyDescriptor("Z"));
- EXPECT_EQ("byte", PrettyDescriptor("B"));
- EXPECT_EQ("char", PrettyDescriptor("C"));
- EXPECT_EQ("double", PrettyDescriptor("D"));
- EXPECT_EQ("float", PrettyDescriptor("F"));
- EXPECT_EQ("int", PrettyDescriptor("I"));
- EXPECT_EQ("long", PrettyDescriptor("J"));
- EXPECT_EQ("short", PrettyDescriptor("S"));
-}
-
TEST_F(UtilsTest, PrettyTypeOf) {
ScopedObjectAccess soa(Thread::Current());
EXPECT_EQ("null", mirror::Object::PrettyTypeOf(nullptr));
@@ -163,15 +108,6 @@ TEST_F(UtilsTest, PrettySize) {
EXPECT_EQ("512B", PrettySize(512));
}
-TEST_F(UtilsTest, MangleForJni) {
- ScopedObjectAccess soa(Thread::Current());
- EXPECT_EQ("hello_00024world", MangleForJni("hello$world"));
- EXPECT_EQ("hello_000a9world", MangleForJni("hello\xc2\xa9world"));
- EXPECT_EQ("hello_1world", MangleForJni("hello_world"));
- EXPECT_EQ("Ljava_lang_String_2", MangleForJni("Ljava/lang/String;"));
- EXPECT_EQ("_3C", MangleForJni("[C"));
-}
-
TEST_F(UtilsTest, JniShortName_JniLongName) {
ScopedObjectAccess soa(Thread::Current());
mirror::Class* c = class_linker_->FindSystemClass(soa.Self(), "Ljava/lang/String;");
@@ -263,140 +199,6 @@ TEST_F(UtilsTest, Split) {
EXPECT_EQ(expected, actual);
}
-TEST_F(UtilsTest, GetDalvikCacheFilename) {
- std::string name;
- std::string error;
-
- EXPECT_TRUE(GetDalvikCacheFilename("/system/app/Foo.apk", "/foo", &name, &error)) << error;
- EXPECT_EQ("/foo/system@app@Foo.apk@classes.dex", name);
-
- EXPECT_TRUE(GetDalvikCacheFilename("/data/app/foo-1.apk", "/foo", &name, &error)) << error;
- EXPECT_EQ("/foo/data@app@foo-1.apk@classes.dex", name);
-
- EXPECT_TRUE(GetDalvikCacheFilename("/system/framework/core.jar", "/foo", &name, &error)) << error;
- EXPECT_EQ("/foo/system@framework@core.jar@classes.dex", name);
-
- EXPECT_TRUE(GetDalvikCacheFilename("/system/framework/boot.art", "/foo", &name, &error)) << error;
- EXPECT_EQ("/foo/system@framework@boot.art", name);
-
- EXPECT_TRUE(GetDalvikCacheFilename("/system/framework/boot.oat", "/foo", &name, &error)) << error;
- EXPECT_EQ("/foo/system@framework@boot.oat", name);
-}
-
-TEST_F(UtilsTest, GetDalvikCache) {
- EXPECT_STREQ("", GetDalvikCache("should-not-exist123").c_str());
-
- EXPECT_STREQ((android_data_ + "/dalvik-cache/.").c_str(), GetDalvikCache(".").c_str());
-}
-
-
-TEST_F(UtilsTest, GetSystemImageFilename) {
- EXPECT_STREQ("/system/framework/arm/boot.art",
- GetSystemImageFilename("/system/framework/boot.art", InstructionSet::kArm).c_str());
-}
-
-TEST_F(UtilsTest, ExecSuccess) {
- std::vector<std::string> command;
- if (kIsTargetBuild) {
- std::string android_root(GetAndroidRoot());
- command.push_back(android_root + "/bin/id");
- } else {
- command.push_back("/usr/bin/id");
- }
- std::string error_msg;
- if (!(RUNNING_ON_MEMORY_TOOL && kMemoryToolDetectsLeaks)) {
- // Running on valgrind fails due to some memory that leaks in thread alternate signal stacks.
- EXPECT_TRUE(Exec(command, &error_msg));
- }
- EXPECT_EQ(0U, error_msg.size()) << error_msg;
-}
-
-TEST_F(UtilsTest, ExecError) {
- // This will lead to error messages in the log.
- ScopedLogSeverity sls(LogSeverity::FATAL);
-
- std::vector<std::string> command;
- command.push_back("bogus");
- std::string error_msg;
- if (!(RUNNING_ON_MEMORY_TOOL && kMemoryToolDetectsLeaks)) {
- // Running on valgrind fails due to some memory that leaks in thread alternate signal stacks.
- EXPECT_FALSE(Exec(command, &error_msg));
- EXPECT_FALSE(error_msg.empty());
- }
-}
-
-TEST_F(UtilsTest, EnvSnapshotAdditionsAreNotVisible) {
- static constexpr const char* kModifiedVariable = "EXEC_SHOULD_NOT_EXPORT_THIS";
- static constexpr int kOverwrite = 1;
- // Set an variable in the current environment.
- EXPECT_EQ(setenv(kModifiedVariable, "NEVER", kOverwrite), 0);
- // Test that it is not exported.
- std::vector<std::string> command;
- if (kIsTargetBuild) {
- std::string android_root(GetAndroidRoot());
- command.push_back(android_root + "/bin/printenv");
- } else {
- command.push_back("/usr/bin/printenv");
- }
- command.push_back(kModifiedVariable);
- std::string error_msg;
- if (!(RUNNING_ON_MEMORY_TOOL && kMemoryToolDetectsLeaks)) {
- // Running on valgrind fails due to some memory that leaks in thread alternate signal stacks.
- EXPECT_FALSE(Exec(command, &error_msg));
- EXPECT_NE(0U, error_msg.size()) << error_msg;
- }
-}
-
-TEST_F(UtilsTest, EnvSnapshotDeletionsAreNotVisible) {
- static constexpr const char* kDeletedVariable = "PATH";
- static constexpr int kOverwrite = 1;
- // Save the variable's value.
- const char* save_value = getenv(kDeletedVariable);
- EXPECT_NE(save_value, nullptr);
- // Delete the variable.
- EXPECT_EQ(unsetenv(kDeletedVariable), 0);
- // Test that it is not exported.
- std::vector<std::string> command;
- if (kIsTargetBuild) {
- std::string android_root(GetAndroidRoot());
- command.push_back(android_root + "/bin/printenv");
- } else {
- command.push_back("/usr/bin/printenv");
- }
- command.push_back(kDeletedVariable);
- std::string error_msg;
- if (!(RUNNING_ON_MEMORY_TOOL && kMemoryToolDetectsLeaks)) {
- // Running on valgrind fails due to some memory that leaks in thread alternate signal stacks.
- EXPECT_TRUE(Exec(command, &error_msg));
- EXPECT_EQ(0U, error_msg.size()) << error_msg;
- }
- // Restore the variable's value.
- EXPECT_EQ(setenv(kDeletedVariable, save_value, kOverwrite), 0);
-}
-
-TEST_F(UtilsTest, IsValidDescriptor) {
- std::vector<uint8_t> descriptor(
- { 'L', 'a', '/', 'b', '$', 0xed, 0xa0, 0x80, 0xed, 0xb0, 0x80, ';', 0x00 });
- EXPECT_TRUE(IsValidDescriptor(reinterpret_cast<char*>(&descriptor[0])));
-
- std::vector<uint8_t> unpaired_surrogate(
- { 'L', 'a', '/', 'b', '$', 0xed, 0xa0, 0x80, ';', 0x00 });
- EXPECT_FALSE(IsValidDescriptor(reinterpret_cast<char*>(&unpaired_surrogate[0])));
-
- std::vector<uint8_t> unpaired_surrogate_at_end(
- { 'L', 'a', '/', 'b', '$', 0xed, 0xa0, 0x80, 0x00 });
- EXPECT_FALSE(IsValidDescriptor(reinterpret_cast<char*>(&unpaired_surrogate_at_end[0])));
-
- std::vector<uint8_t> invalid_surrogate(
- { 'L', 'a', '/', 'b', '$', 0xed, 0xb0, 0x80, ';', 0x00 });
- EXPECT_FALSE(IsValidDescriptor(reinterpret_cast<char*>(&invalid_surrogate[0])));
-
- std::vector<uint8_t> unpaired_surrogate_with_multibyte_sequence(
- { 'L', 'a', '/', 'b', '$', 0xed, 0xb0, 0x80, 0xf0, 0x9f, 0x8f, 0xa0, ';', 0x00 });
- EXPECT_FALSE(
- IsValidDescriptor(reinterpret_cast<char*>(&unpaired_surrogate_with_multibyte_sequence[0])));
-}
-
TEST_F(UtilsTest, ArrayCount) {
int i[64];
EXPECT_EQ(ArrayCount(i), 64u);
@@ -416,40 +218,4 @@ TEST_F(UtilsTest, BoundsCheckedCast) {
EXPECT_EQ(BoundsCheckedCast<const uint64_t*>(buffer + 57, buffer, buffer_end), nullptr);
}
-TEST_F(UtilsTest, GetAndroidRootSafe) {
- std::string error_msg;
-
- // We don't expect null returns for most cases, so don't check and let std::string crash.
-
- // CommonRuntimeTest sets ANDROID_ROOT, so expect this to be the same.
- std::string android_root = GetAndroidRootSafe(&error_msg);
- std::string android_root_env = getenv("ANDROID_ROOT");
- EXPECT_EQ(android_root, android_root_env);
-
- // Set ANDROID_ROOT to something else (but the directory must exist). So use dirname.
- char* root_dup = strdup(android_root_env.c_str());
- char* dir = dirname(root_dup);
- ASSERT_EQ(0, setenv("ANDROID_ROOT", dir, 1 /* overwrite */));
- std::string android_root2 = GetAndroidRootSafe(&error_msg);
- EXPECT_STREQ(dir, android_root2.c_str());
- free(root_dup);
-
- // Set a bogus value for ANDROID_ROOT. This should be an error.
- ASSERT_EQ(0, setenv("ANDROID_ROOT", "/this/is/obviously/bogus", 1 /* overwrite */));
- EXPECT_TRUE(GetAndroidRootSafe(&error_msg) == nullptr);
-
- // Unset ANDROID_ROOT and see that it still returns something (as libart code is running).
- ASSERT_EQ(0, unsetenv("ANDROID_ROOT"));
- std::string android_root3 = GetAndroidRootSafe(&error_msg);
- // This should be the same as the other root (modulo realpath), otherwise the test setup is
- // broken.
- UniqueCPtr<char> real_root(realpath(android_root.c_str(), nullptr));
- UniqueCPtr<char> real_root3(realpath(android_root3.c_str(), nullptr));
- EXPECT_STREQ(real_root.get(), real_root3.get());
-
-
- // Reset ANDROID_ROOT, as other things may depend on it.
- ASSERT_EQ(0, setenv("ANDROID_ROOT", android_root_env.c_str(), 1 /* overwrite */));
-}
-
} // namespace art