summaryrefslogtreecommitdiffstats
path: root/tests/auto/kallsyms/tst_kallsyms.cpp
diff options
context:
space:
mode:
authorMilian Wolff <milian.wolff@kdab.com>2018-02-20 17:22:43 +0100
committerUlf Hermann <ulf.hermann@qt.io>2019-05-03 12:41:51 +0000
commitb554bc5fc946fe7b9207b9da80354b3640c84c49 (patch)
treef5e7ba029665d3fc58e561364019c7fea89e2661 /tests/auto/kallsyms/tst_kallsyms.cpp
parentd25975beeee1fed5d56005b5b77524f8cf22b300 (diff)
Don't fail testProc for bad kptr_restrict or perf_event_paranoid
I.e. expect the failure to check whether we gracefully handle these situations in the parser. Change-Id: Ibd43c990d1d0b360c981ba337dbd3ac74a50c700 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Diffstat (limited to 'tests/auto/kallsyms/tst_kallsyms.cpp')
-rw-r--r--tests/auto/kallsyms/tst_kallsyms.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/auto/kallsyms/tst_kallsyms.cpp b/tests/auto/kallsyms/tst_kallsyms.cpp
index 6d9e31c..416390e 100644
--- a/tests/auto/kallsyms/tst_kallsyms.cpp
+++ b/tests/auto/kallsyms/tst_kallsyms.cpp
@@ -115,6 +115,25 @@ private slots:
if (!QFile::exists(path))
QSKIP("/proc/kallsysms not available");
+ auto checkSysCtl = [](const QString &knob, int expectedValue) -> bool {
+ QFile file(QLatin1String("/proc/sys/kernel/") + knob);
+ if (!file.open(QIODevice::ReadOnly)) {
+ qWarning() << "failed to open sysctl file for" << knob;
+ return false;
+ }
+ const auto contents = file.readAll().trimmed();
+ bool ok = false;
+ const auto value = contents.toInt(&ok);
+ if (!ok)
+ qWarning() << "Failed to parse sysctl file contents for" << knob << contents;
+ return ok && value == expectedValue;
+ };
+ if (!checkSysCtl(QStringLiteral("kptr_restrict"), 0)) {
+ QEXPECT_FAIL("", "sysctl kernel.kptr_restrict != 0, cannot parse /proc/kallsyms", Abort);
+ } else if (!checkSysCtl(QStringLiteral("perf_event_paranoid"), -1)) {
+ QEXPECT_FAIL("", "sysctl kernel.perf_event_paranoid != -1, cannot parse /proc/kallsyms", Abort);
+ }
+
PerfKallsyms kallsyms;
QVERIFY(kallsyms.parseMapping(path));
QVERIFY(kallsyms.errorString().isEmpty());