diff options
author | Milian Wolff <milian.wolff@kdab.com> | 2018-02-20 17:22:43 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2019-05-03 12:41:51 +0000 |
commit | b554bc5fc946fe7b9207b9da80354b3640c84c49 (patch) | |
tree | f5e7ba029665d3fc58e561364019c7fea89e2661 | |
parent | d25975beeee1fed5d56005b5b77524f8cf22b300 (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>
-rw-r--r-- | tests/auto/kallsyms/tst_kallsyms.cpp | 19 |
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()); |