summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Salyzyn <salyzyn@google.com>2016-02-10 14:00:14 -0800
committerMark Salyzyn <salyzyn@google.com>2016-02-10 23:00:49 +0000
commit7129c7dcd20bf57cf3a64ec224e4ebac81c8cd88 (patch)
tree31a229c570ba62a09c4e229686120805a03fa820
parent796b0704878a54eabf7a90df507d3442ddb47833 (diff)
downloadextras-7129c7dcd20bf57cf3a64ec224e4ebac81c8cd88.tar.gz
Add kernel config tests
A simple start to simple day. Check for evidence of following CONFIGs: CONFIG_MMC_BLOCK_MAX_SPEED=y CONFIG_IPV6=y CONFIG_IP_MULTICAST=y CONFIG_PSTORE=y CONFIG_PSTORE_CONSOLE=y CONFIG_PSTORE_PMSG=y CONFIG_SYSVIPC is not set ToDo: Evidence for all configs in android/configs/android-base.cfg and android/configs/android-recommended.cfg. Most are not possible to directly discover, this is performed on a best effort basis. Bug: 19173869 Bug: 26559308 Change-Id: I0447334fab7781579fab10610d2f7ac1d34e6044
-rw-r--r--tests/kernel.config/Android.mk29
-rw-r--r--tests/kernel.config/mmc_max_speed_test.cpp24
-rw-r--r--tests/kernel.config/multicast_test.cpp26
-rw-r--r--tests/kernel.config/pstore_test.cpp32
-rw-r--r--tests/kernel.config/sysvipc_test.cpp35
5 files changed, 146 insertions, 0 deletions
diff --git a/tests/kernel.config/Android.mk b/tests/kernel.config/Android.mk
new file mode 100644
index 00000000..b97ec939
--- /dev/null
+++ b/tests/kernel.config/Android.mk
@@ -0,0 +1,29 @@
+# Copyright 2016 The Android Open Source Project
+
+LOCAL_PATH:= $(call my-dir)
+
+# -----------------------------------------------------------------------------
+# Unit tests.
+# -----------------------------------------------------------------------------
+
+test_c_flags := \
+ -fstack-protector-all \
+ -g \
+ -Wall -Wextra \
+ -Werror \
+ -fno-builtin \
+ -std=gnu++11
+
+test_src_files := \
+ multicast_test.cpp \
+ mmc_max_speed_test.cpp \
+ pstore_test.cpp \
+ sysvipc_test.cpp
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := kernel-config-unit-tests
+LOCAL_MODULE_TAGS := tests
+LOCAL_CFLAGS += $(test_c_flags)
+LOCAL_SRC_FILES := $(test_src_files)
+include $(BUILD_NATIVE_TEST)
+
diff --git a/tests/kernel.config/mmc_max_speed_test.cpp b/tests/kernel.config/mmc_max_speed_test.cpp
new file mode 100644
index 00000000..40cf0d07
--- /dev/null
+++ b/tests/kernel.config/mmc_max_speed_test.cpp
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2016 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 <unistd.h>
+
+#include <gtest/gtest.h>
+
+TEST(kernel_config, CONFIG_MMC_BLOCK_MAX_SPEED) {
+ EXPECT_EQ(0, access("/sys/block/mmcblk0/max_read_speed", F_OK));
+ EXPECT_EQ(0, access("/sys/block/mmcblk0/max_write_speed", F_OK));
+ EXPECT_EQ(0, access("/sys/block/mmcblk0/cache_size", F_OK));
+}
diff --git a/tests/kernel.config/multicast_test.cpp b/tests/kernel.config/multicast_test.cpp
new file mode 100644
index 00000000..28655e81
--- /dev/null
+++ b/tests/kernel.config/multicast_test.cpp
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2016 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 <unistd.h>
+
+#include <gtest/gtest.h>
+
+TEST(kernel_config, CONFIG_IPV6) {
+ EXPECT_EQ(0, access("/proc/net/igmp6", F_OK));
+}
+
+TEST(kernel_config, CONFIG_IP_MULTICAST) {
+ EXPECT_EQ(0, access("/proc/net/igmp", F_OK));
+}
diff --git a/tests/kernel.config/pstore_test.cpp b/tests/kernel.config/pstore_test.cpp
new file mode 100644
index 00000000..1dd5e728
--- /dev/null
+++ b/tests/kernel.config/pstore_test.cpp
@@ -0,0 +1,32 @@
+
+/*
+ * Copyright (C) 2016 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 <unistd.h>
+
+#include <gtest/gtest.h>
+
+TEST(kernel_config, CONFIG_PSTORE) {
+ EXPECT_EQ(0, access("/sys/fs/pstore", F_OK));
+}
+
+TEST(kernel_config, CONFIG_PSTORE_CONSOLE) {
+ EXPECT_EQ(0, access("/sys/fs/pstore/console-ramoops", F_OK));
+}
+
+TEST(kernel_config, CONFIG_PSTORE_PMSG) {
+ EXPECT_EQ(0, access("/dev/pmsg0", F_OK));
+ EXPECT_EQ(0, access("/sys/fs/pstore/pmsg-ramoops-0", F_OK));
+}
diff --git a/tests/kernel.config/sysvipc_test.cpp b/tests/kernel.config/sysvipc_test.cpp
new file mode 100644
index 00000000..d62b91cc
--- /dev/null
+++ b/tests/kernel.config/sysvipc_test.cpp
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2016 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 <errno.h>
+#include <linux/kcmp.h>
+#include <sys/syscall.h>
+#include <unistd.h>
+
+#include <gtest/gtest.h>
+
+int kcmp(pid_t pid1, pid_t pid2, int type, unsigned long idx1, unsigned long idx2) {
+ return syscall(SYS_kcmp, pid1, pid2, type, 0, idx1, idx2);
+}
+
+TEST(kernel_config, NOT_CONFIG_SYSVIPC) {
+ pid_t pid = getpid();
+ int ret = kcmp(pid, pid, KCMP_SYSVSEM, 0, 0);
+ int error = (ret == -1) ? (errno == ENOSYS) ? EOPNOTSUPP : errno : 0;
+ EXPECT_EQ(-1, kcmp(pid, pid, KCMP_SYSVSEM, 0, 0));
+ EXPECT_EQ(EOPNOTSUPP, error);
+ EXPECT_EQ(-1, access("/proc/sysvipc", F_OK));
+}
+