/* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include "Guardrail.h" namespace android { namespace uprobestats { class GuardrailTest : public ::testing::Test {}; TEST_F(GuardrailTest, EverythingAllowedOnUserDebugAndEng) { ::uprobestats::protos::UprobestatsConfig config; config.add_tasks()->add_probe_configs()->set_method_signature( "void com.android.server.am.SomeClass.doWork()"); EXPECT_TRUE(guardrail::isAllowed(config, "userdebug", false)); EXPECT_TRUE(guardrail::isAllowed(config, "eng", false)); ::uprobestats::protos::UprobestatsConfig::Task::ProbeConfig probeConfig; probeConfig.set_fully_qualified_class_name("com.android.server.am.SomeClass"); probeConfig.set_method_name("doWork"); ::uprobestats::protos::UprobestatsConfig newConfig; newConfig.add_tasks()->add_probe_configs()->CopyFrom(probeConfig); EXPECT_TRUE(guardrail::isAllowed(newConfig, "userdebug", true)); EXPECT_TRUE(guardrail::isAllowed(newConfig, "eng", true)); } TEST_F(GuardrailTest, OomAdjusterAllowed) { ::uprobestats::protos::UprobestatsConfig config; config.add_tasks()->add_probe_configs()->set_method_signature( "void com.android.server.am.OomAdjuster.setUidTempAllowlistStateLSP(int, " "boolean)"); config.add_tasks()->add_probe_configs()->set_method_signature( "void " "com.android.server.am.OomAdjuster$$ExternalSyntheticLambda0.accept(java." "lang.Object)"); EXPECT_TRUE(guardrail::isAllowed(config, "user", false)); EXPECT_TRUE(guardrail::isAllowed(config, "userdebug", false)); EXPECT_TRUE(guardrail::isAllowed(config, "eng", false)); ::uprobestats::protos::UprobestatsConfig::Task::ProbeConfig probeConfig; probeConfig.set_fully_qualified_class_name( "com.android.server.am.OomAdjuster"); probeConfig.set_method_name("setUidTempAllowlistStateLSP"); ::uprobestats::protos::UprobestatsConfig::Task::ProbeConfig probeConfigTwo; probeConfigTwo.set_fully_qualified_class_name( "com.android.server.am.OomAdjuster$$ExternalSyntheticLambda0"); probeConfigTwo.set_method_name("accept"); ::uprobestats::protos::UprobestatsConfig newConfig; newConfig.add_tasks()->add_probe_configs()->CopyFrom(probeConfig); newConfig.add_tasks()->add_probe_configs()->CopyFrom(probeConfigTwo); EXPECT_TRUE(guardrail::isAllowed(newConfig, "user", true)); EXPECT_TRUE(guardrail::isAllowed(newConfig, "userdebug", true)); EXPECT_TRUE(guardrail::isAllowed(newConfig, "eng", true)); } TEST_F(GuardrailTest, DisallowOomAdjusterWithSuffix) { ::uprobestats::protos::UprobestatsConfig config; config.add_tasks()->add_probe_configs()->set_method_signature( "void com.android.server.am.OomAdjusterWithSomeSuffix.doWork()"); EXPECT_FALSE(guardrail::isAllowed(config, "user", false)); ::uprobestats::protos::UprobestatsConfig::Task::ProbeConfig probeConfig; probeConfig.set_fully_qualified_class_name( "com.android.server.am.OomAdjusterWithSomeSuffix"); probeConfig.set_method_name("doWork"); ::uprobestats::protos::UprobestatsConfig newConfig; newConfig.add_tasks()->add_probe_configs()->CopyFrom(probeConfig); EXPECT_FALSE(guardrail::isAllowed(newConfig, "user", true)); } TEST_F(GuardrailTest, DisallowedMethodInSecondTask) { ::uprobestats::protos::UprobestatsConfig config; config.add_tasks()->add_probe_configs()->set_method_signature( "void com.android.server.am.OomAdjuster.setUidTempAllowlistStateLSP(int, " "boolean)"); config.add_tasks()->add_probe_configs()->set_method_signature( "void com.android.server.am.disallowedClass.doWork()"); EXPECT_FALSE(guardrail::isAllowed(config, "user", false)); ::uprobestats::protos::UprobestatsConfig::Task::ProbeConfig probeConfig; probeConfig.set_fully_qualified_class_name( "com.android.server.am.OomAdjuster"); probeConfig.set_method_name("setUidTempAllowlistStateLSP"); ::uprobestats::protos::UprobestatsConfig::Task::ProbeConfig probeConfigTwo; probeConfigTwo.set_fully_qualified_class_name( "com.android.server.am.disallowedClass"); probeConfigTwo.set_method_name("doWork"); ::uprobestats::protos::UprobestatsConfig newConfig; newConfig.add_tasks()->add_probe_configs()->CopyFrom(probeConfig); newConfig.add_tasks()->add_probe_configs()->CopyFrom(probeConfigTwo); EXPECT_FALSE(guardrail::isAllowed(newConfig, "user", true)); } } // namespace uprobestats } // namespace android