aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2017-06-21 09:01:48 +0200
committerhjk <hjk@qt.io>2017-06-23 11:30:32 +0000
commitfc8dee46752494791c489173ffd04f5ef31a7dfa (patch)
treea670937ef70b017f6eca1095e134df8fa07e35cd
parent7edd5876a520d019c5c890cb96dca037da6a9940 (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.cpp10
-rw-r--r--src/plugins/valgrind/memcheckengine.h1
-rw-r--r--src/plugins/valgrind/valgrindmemcheckparsertest.cpp11
-rw-r--r--src/plugins/valgrind/valgrindmemcheckparsertest.h17
-rw-r--r--src/plugins/valgrind/valgrindrunner.cpp11
-rw-r--r--src/plugins/valgrind/valgrindrunner.h2
-rw-r--r--src/plugins/valgrind/valgrindtestrunnertest.cpp12
-rw-r--r--src/plugins/valgrind/valgrindtestrunnertest.h2
-rw-r--r--tests/auto/valgrind/memcheck/modeldemo.cpp19
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);