diff options
author | hjk <hjk@qt.io> | 2017-06-21 09:01:48 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2017-06-23 11:30:32 +0000 |
commit | fc8dee46752494791c489173ffd04f5ef31a7dfa (patch) | |
tree | a670937ef70b017f6eca1095e134df8fa07e35cd | |
parent | 7edd5876a520d019c5c890cb96dca037da6a9940 (diff) |
Valgrind: Make the (threaded) parser a proper member of the runner
Simplifies user code, and it was only ever used in a 1:1 relation,
even in the tests.
Change-Id: I3ce4fc83a361aceb730c05420efdb4ea52d37cda
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r-- | src/plugins/valgrind/memcheckengine.cpp | 10 | ||||
-rw-r--r-- | src/plugins/valgrind/memcheckengine.h | 1 | ||||
-rw-r--r-- | src/plugins/valgrind/valgrindmemcheckparsertest.cpp | 11 | ||||
-rw-r--r-- | src/plugins/valgrind/valgrindmemcheckparsertest.h | 17 | ||||
-rw-r--r-- | src/plugins/valgrind/valgrindrunner.cpp | 11 | ||||
-rw-r--r-- | src/plugins/valgrind/valgrindrunner.h | 2 | ||||
-rw-r--r-- | src/plugins/valgrind/valgrindtestrunnertest.cpp | 12 | ||||
-rw-r--r-- | src/plugins/valgrind/valgrindtestrunnertest.h | 2 | ||||
-rw-r--r-- | tests/auto/valgrind/memcheck/modeldemo.cpp | 19 |
9 files changed, 25 insertions, 60 deletions
diff --git a/src/plugins/valgrind/memcheckengine.cpp b/src/plugins/valgrind/memcheckengine.cpp index f6f707c679..95298d11ba 100644 --- a/src/plugins/valgrind/memcheckengine.cpp +++ b/src/plugins/valgrind/memcheckengine.cpp @@ -55,9 +55,9 @@ MemcheckToolRunner::MemcheckToolRunner(RunControl *runControl, bool withGdb) : ValgrindToolRunner(runControl), m_withGdb(withGdb) { setDisplayName("MemcheckToolRunner"); - connect(&m_parser, &XmlProtocol::ThreadedParser::error, + connect(m_runner.parser(), &XmlProtocol::ThreadedParser::error, this, &MemcheckToolRunner::parserError); - connect(&m_parser, &XmlProtocol::ThreadedParser::suppressionCount, + connect(m_runner.parser(), &XmlProtocol::ThreadedParser::suppressionCount, this, &MemcheckToolRunner::suppressionCount); if (withGdb) { @@ -67,7 +67,7 @@ MemcheckToolRunner::MemcheckToolRunner(RunControl *runControl, bool withGdb) this, &MemcheckToolRunner::appendLog); m_runner.disableXml(); } else { - connect(&m_parser, &XmlProtocol::ThreadedParser::internalError, + connect(m_runner.parser(), &XmlProtocol::ThreadedParser::internalError, this, &MemcheckToolRunner::internalParserError); } } @@ -86,8 +86,6 @@ void MemcheckToolRunner::start() { // MemcheckTool::engineStarting(this); - m_runner.setParser(&m_parser); - appendMessage(tr("Analyzing memory of %1").arg(executable()) + QLatin1Char('\n'), Utils::NormalMessageFormat); ValgrindToolRunner::start(); @@ -95,7 +93,7 @@ void MemcheckToolRunner::start() void MemcheckToolRunner::stop() { - disconnect(&m_parser, &ThreadedParser::internalError, + disconnect(m_runner.parser(), &ThreadedParser::internalError, this, &MemcheckToolRunner::internalParserError); ValgrindToolRunner::stop(); } diff --git a/src/plugins/valgrind/memcheckengine.h b/src/plugins/valgrind/memcheckengine.h index 030bf9c1a5..a8d3b50b5f 100644 --- a/src/plugins/valgrind/memcheckengine.h +++ b/src/plugins/valgrind/memcheckengine.h @@ -60,7 +60,6 @@ private: void startDebugger(); void appendLog(const QByteArray &data); - XmlProtocol::ThreadedParser m_parser; ValgrindRunner m_runner; const bool m_withGdb; }; diff --git a/src/plugins/valgrind/valgrindmemcheckparsertest.cpp b/src/plugins/valgrind/valgrindmemcheckparsertest.cpp index bfbc3defa8..a4b3d3ccca 100644 --- a/src/plugins/valgrind/valgrindmemcheckparsertest.cpp +++ b/src/plugins/valgrind/valgrindmemcheckparsertest.cpp @@ -455,10 +455,8 @@ void ValgrindMemcheckParserTest::testValgrindGarbage() void ValgrindMemcheckParserTest::testParserStop() { - ThreadedParser parser; ValgrindRunner runner; runner.setValgrindExecutable(fakeValgrindExecutable()); - runner.setParser(&parser); runner.setValgrindArguments({"-i", dataFile("memcheck-output-sample1.xml"), "--wait", "5" }); runner.setProcessChannelMode(QProcess::ForwardedChannels); @@ -477,7 +475,6 @@ void ValgrindMemcheckParserTest::testRealValgrind() QSKIP("This test needs valgrind in PATH"); QString executable = QProcessEnvironment::systemEnvironment().value("VALGRIND_TEST_BIN", fakeValgrindExecutable()); qDebug() << "running exe:" << executable << " HINT: set VALGRIND_TEST_BIN to change this"; - ThreadedParser parser; ProjectExplorer::StandardRunnable debuggee; debuggee.executable = executable; @@ -487,8 +484,7 @@ void ValgrindMemcheckParserTest::testRealValgrind() runner.setDebuggee(debuggee); runner.setDevice(ProjectExplorer::DeviceManager::instance()->defaultDevice( ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE)); - runner.setParser(&parser); - RunnerDumper dumper(&runner, &parser); + RunnerDumper dumper(&runner); runner.start(); runner.waitForFinished(); } @@ -517,21 +513,18 @@ void ValgrindMemcheckParserTest::testValgrindStartError() QFETCH(QString, debuggee); QFETCH(QString, debuggeeArgs); - ThreadedParser parser; - ProjectExplorer::StandardRunnable debuggeeExecutable; debuggeeExecutable.executable = debuggee; debuggeeExecutable.environment = Utils::Environment::systemEnvironment(); debuggeeExecutable.commandLineArguments = debuggeeArgs; ValgrindRunner runner; - runner.setParser(&parser); runner.setValgrindExecutable(valgrindExe); runner.setValgrindArguments(valgrindArgs); runner.setDebuggee(debuggeeExecutable); runner.setDevice(ProjectExplorer::DeviceManager::instance()->defaultDevice( ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE)); - RunnerDumper dumper(&runner, &parser); + RunnerDumper dumper(&runner); runner.start(); runner.waitForFinished(); QVERIFY(dumper.m_errorReceived); diff --git a/src/plugins/valgrind/valgrindmemcheckparsertest.h b/src/plugins/valgrind/valgrindmemcheckparsertest.h index dca3829c9c..71da4cc302 100644 --- a/src/plugins/valgrind/valgrindmemcheckparsertest.h +++ b/src/plugins/valgrind/valgrindmemcheckparsertest.h @@ -53,14 +53,13 @@ class Recorder : public QObject { Q_OBJECT public: - explicit Recorder(Valgrind::XmlProtocol::Parser *parser, QObject *parent = 0) - : QObject(parent) + explicit Recorder(XmlProtocol::Parser *parser) { - connect(parser, &Valgrind::XmlProtocol::Parser::error, + connect(parser, &XmlProtocol::Parser::error, this, &Recorder::error); - connect(parser, &Valgrind::XmlProtocol::Parser::errorCount, + connect(parser, &XmlProtocol::Parser::errorCount, this, &Recorder::errorCount); - connect(parser, &Valgrind::XmlProtocol::Parser::suppressionCount, + connect(parser, &XmlProtocol::Parser::suppressionCount, this, &Recorder::suppressionCount); } @@ -91,13 +90,13 @@ class RunnerDumper : public QObject Q_OBJECT public: - explicit RunnerDumper(ValgrindRunner *runner, XmlProtocol::ThreadedParser *parser) + explicit RunnerDumper(ValgrindRunner *runner) { - connect(parser, &XmlProtocol::ThreadedParser::error, + connect(runner->parser(), &XmlProtocol::ThreadedParser::error, this, &RunnerDumper::error); - connect(parser, &XmlProtocol::ThreadedParser::internalError, + connect(runner->parser(), &XmlProtocol::ThreadedParser::internalError, this, &RunnerDumper::internalError); - connect(parser, &XmlProtocol::ThreadedParser::status, + connect(runner->parser(), &XmlProtocol::ThreadedParser::status, this, &RunnerDumper::status); connect(runner, &ValgrindRunner::logMessageReceived, this, &RunnerDumper::logMessageReceived); diff --git a/src/plugins/valgrind/valgrindrunner.cpp b/src/plugins/valgrind/valgrindrunner.cpp index 6434cca0b3..5f348cb353 100644 --- a/src/plugins/valgrind/valgrindrunner.cpp +++ b/src/plugins/valgrind/valgrindrunner.cpp @@ -59,7 +59,7 @@ public: QString tool; QTcpServer xmlServer; - XmlProtocol::ThreadedParser *parser = nullptr; + XmlProtocol::ThreadedParser parser; QTcpServer logServer; QTcpSocket *logSocket = nullptr; bool disableXml = false; @@ -77,7 +77,7 @@ ValgrindRunner::~ValgrindRunner() // make sure we don't delete the thread while it's still running waitForFinished(); } - if (d->parser->isRunning()) { + if (d->parser.isRunning()) { // make sure we don't delete the thread while it's still running waitForFinished(); } @@ -238,10 +238,9 @@ ValgrindProcess *ValgrindRunner::valgrindProcess() const return d->process; } -void ValgrindRunner::setParser(XmlProtocol::ThreadedParser *parser) +XmlProtocol::ThreadedParser *ValgrindRunner::parser() const { - QTC_ASSERT(!d->parser, qt_noop()); - d->parser = parser; + return &d->parser; } @@ -257,7 +256,7 @@ void ValgrindRunner::xmlSocketConnected() QTcpSocket *socket = d->xmlServer.nextPendingConnection(); QTC_ASSERT(socket, return); d->xmlServer.close(); - d->parser->parse(socket); + d->parser.parse(socket); } void ValgrindRunner::logSocketConnected() diff --git a/src/plugins/valgrind/valgrindrunner.h b/src/plugins/valgrind/valgrindrunner.h index dc0a7e23aa..9732d09356 100644 --- a/src/plugins/valgrind/valgrindrunner.h +++ b/src/plugins/valgrind/valgrindrunner.h @@ -70,7 +70,7 @@ public: ValgrindProcess *valgrindProcess() const; - void setParser(XmlProtocol::ThreadedParser *parser); + XmlProtocol::ThreadedParser *parser() const; void disableXml(); signals: diff --git a/src/plugins/valgrind/valgrindtestrunnertest.cpp b/src/plugins/valgrind/valgrindtestrunnertest.cpp index 7b21f7d1c7..d7360d60e8 100644 --- a/src/plugins/valgrind/valgrindtestrunnertest.cpp +++ b/src/plugins/valgrind/valgrindtestrunnertest.cpp @@ -112,9 +112,6 @@ void ValgrindTestRunnerTest::cleanup() Q_ASSERT(m_runner); delete m_runner; m_runner = 0; - Q_ASSERT(m_parser); - delete m_parser; - m_parser = 0; m_logMessages.clear(); m_errors.clear(); @@ -137,14 +134,10 @@ void ValgrindTestRunnerTest::init() this, &ValgrindTestRunnerTest::logMessageReceived); connect(m_runner, &ValgrindRunner::processErrorReceived, this, &ValgrindTestRunnerTest::internalError); - Q_ASSERT(!m_parser); - m_parser = new ThreadedParser; - connect(m_parser, &ThreadedParser::internalError, + connect(m_runner->parser(), &ThreadedParser::internalError, this, &ValgrindTestRunnerTest::internalError); - connect(m_parser, &ThreadedParser::error, + connect(m_runner->parser(), &ThreadedParser::error, this, &ValgrindTestRunnerTest::error); - - m_runner->setParser(m_parser); } //BEGIN: Actual test cases @@ -735,7 +728,6 @@ void ValgrindTestRunnerTest::testInvalidjump() } } - void ValgrindTestRunnerTest::testOverlap() { const QString app("overlap"); diff --git a/src/plugins/valgrind/valgrindtestrunnertest.h b/src/plugins/valgrind/valgrindtestrunnertest.h index 410f31e873..41fbb97410 100644 --- a/src/plugins/valgrind/valgrindtestrunnertest.h +++ b/src/plugins/valgrind/valgrindtestrunnertest.h @@ -33,7 +33,6 @@ namespace Valgrind { -namespace XmlProtocol { class ThreadedParser; } class ValgrindRunner; namespace Test { @@ -72,7 +71,6 @@ private slots: private: QString runTestBinary(const QString &binary, const QStringList &vArgs = QStringList()); - XmlProtocol::ThreadedParser *m_parser = nullptr; ValgrindRunner *m_runner = nullptr; QList<QByteArray> m_logMessages; QList<XmlProtocol::Error> m_errors; diff --git a/tests/auto/valgrind/memcheck/modeldemo.cpp b/tests/auto/valgrind/memcheck/modeldemo.cpp index 2621f27912..1bc878d9c2 100644 --- a/tests/auto/valgrind/memcheck/modeldemo.cpp +++ b/tests/auto/valgrind/memcheck/modeldemo.cpp @@ -38,33 +38,20 @@ using namespace Valgrind; using namespace Valgrind::XmlProtocol; -static QString fakeValgrindExecutable() -{ - return QLatin1String(VALGRIND_FAKE_PATH); -} - -static QString dataFile(const QLatin1String &file) -{ - return QLatin1String(PARSERTESTS_DATA_DIR) + QLatin1String("/") + file; -} - int main(int argc, char *argv[]) { QApplication app(argc, argv); qRegisterMetaType<Error>(); - ThreadedParser parser; - ValgrindRunner runner; - runner.setValgrindExecutable(fakeValgrindExecutable()); - runner.setValgrindArguments(QStringList() << QLatin1String("-i") << dataFile(QLatin1String("memcheck-output-sample1.xml")) ); - runner.setParser(&parser); + runner.setValgrindExecutable(VALGRIND_FAKE_PATH); + runner.setValgrindArguments({"-i", PARSERTESTS_DATA_DIR "/memcheck-output-sample1.xml"}); ModelDemo demo(&runner); QObject::connect(&runner, &ValgrindRunner::finished, &demo, &ModelDemo::finished); ErrorListModel model; - QObject::connect(&parser, &ThreadedParser::error, + QObject::connect(runner.parser(), &ThreadedParser::error, &model, &ErrorListModel::addError, Qt::QueuedConnection); |