diff options
-rw-r--r-- | vts/Android.bp | 30 | ||||
-rw-r--r-- | vts/PREUPLOAD.cfg | 6 | ||||
-rw-r--r-- | vts/TEST_MAPPING | 7 | ||||
-rw-r--r-- | vts/VtsBootconfigTest.cpp | 41 |
4 files changed, 84 insertions, 0 deletions
diff --git a/vts/Android.bp b/vts/Android.bp new file mode 100644 index 0000000..06fb911 --- /dev/null +++ b/vts/Android.bp @@ -0,0 +1,30 @@ +// +// Copyright (C) 2021 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. + +cc_test { + name: "VtsBootconfigTest", + srcs: [ + "VtsBootconfigTest.cpp", + ], + shared_libs: [ + "libbase", + "libbpf_android", + ], + test_suites: [ + "general-tests", + "vts", + ], + require_root: true, +} diff --git a/vts/PREUPLOAD.cfg b/vts/PREUPLOAD.cfg new file mode 100644 index 0000000..b18ce2b --- /dev/null +++ b/vts/PREUPLOAD.cfg @@ -0,0 +1,6 @@ +[Builtin Hooks] +bpfmt = true +clang_format = true + +[Builtin Hooks Options] +clang_format = --commit ${PREUPLOAD_COMMIT} --style file --extensions c,h,cc diff --git a/vts/TEST_MAPPING b/vts/TEST_MAPPING new file mode 100644 index 0000000..7b10593 --- /dev/null +++ b/vts/TEST_MAPPING @@ -0,0 +1,7 @@ +{ + "presubmit": [ + { + "name": "VtsBootconfigTest" + } + ] +} diff --git a/vts/VtsBootconfigTest.cpp b/vts/VtsBootconfigTest.cpp new file mode 100644 index 0000000..285c180 --- /dev/null +++ b/vts/VtsBootconfigTest.cpp @@ -0,0 +1,41 @@ +/** + * Copyright (C) 2021 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 "gtest/gtest.h" +#include <android-base/file.h> +#include <android-base/properties.h> +#include "bpf/BpfUtils.h" + +class VtsBootconfigTest : public testing::Test {}; + +TEST_F(VtsBootconfigTest, ProcCmdlineAndroidbootTest) { + // This test only applies to devices launching with S(or greater) AND with + // kernel version 5.10(or greater) + bool kernel_support = android::bpf::isAtLeastKernelVersion(5, 10, 0); + if (std::stoi(android::base::GetProperty("ro.product.first_api_level", "0")) + < __ANDROID_API_S__ || !kernel_support) { + GTEST_SKIP() << "Bootconfig requirements do not apply"; + } + + std::string cmdline; + ASSERT_TRUE(android::base::ReadFileToString("/proc/cmdline", &cmdline)); + EXPECT_TRUE(cmdline.size() > 0); + EXPECT_EQ(cmdline.find("androidboot"), cmdline.npos) + << "\"androidboot\" parameters are not allowed in the kernel cmdline for " + << "devices using kernel version 5.10 or greater with Android S and beyond. " + << "These parameters are to be placed in bootconfig." + << "\n/proc/cmdline contents:\n" << cmdline; +} |