summaryrefslogtreecommitdiff
path: root/tests/auto
diff options
context:
space:
mode:
authorJean Gressmann <jean.gressmann@nokia.com>2012-03-02 09:34:38 +0100
committerQt by Nokia <qt-info@nokia.com>2012-03-02 11:35:07 +0100
commita88efc755d83a8c1ce4935271f4d55669ad0dd83 (patch)
tree3b1b1d4c0343c2c1e067590ea89b1bfea50be9ee /tests/auto
parentec21ed4ec4dea3dba788092d37d4f6ffab12e0f0 (diff)
downloadqtlocation-a88efc755d83a8c1ce4935271f4d55669ad0dd83.tar.gz
Fixed auto test qplacemanager_jsondb
The tests rely on a jsondb instance running. There was none, thus the tests failed. The test case now starts an jsondb process must like the qtjsondb auto tests. Change-Id: I1ddc94d6fc6ef24015e2bc443192cee3f95425ba Reviewed-by: abcd <amos.choy@nokia.com>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/qplacemanager_jsondb/jsondbutils.cpp52
-rw-r--r--tests/auto/qplacemanager_jsondb/jsondbutils.h6
-rw-r--r--tests/auto/qplacemanager_jsondb/qplacemanager_jsondb.pro2
-rw-r--r--tests/auto/qplacemanager_jsondb/tst_qplacemanager_jsondb.cpp5
4 files changed, 65 insertions, 0 deletions
diff --git a/tests/auto/qplacemanager_jsondb/jsondbutils.cpp b/tests/auto/qplacemanager_jsondb/jsondbutils.cpp
index efa4efc5..564793dd 100644
--- a/tests/auto/qplacemanager_jsondb/jsondbutils.cpp
+++ b/tests/auto/qplacemanager_jsondb/jsondbutils.cpp
@@ -49,6 +49,9 @@
#include <QMap>
#include <QString>
#include <QStringList>
+#include <QLocalSocket>
+#include <QDir>
+#include <QTest>
const QLatin1String JsonDbUtils::Uuid("_uuid");
const QLatin1String JsonDbUtils::Type("_type");
@@ -130,9 +133,16 @@ const QLatin1String JsonDbUtils::FullscreenIconSizeParam("fullscreenSize");
const QLatin1String JsonDbUtils::CreatedDateTime("createdDateTime");
const QLatin1String JsonDbUtils::ModifiedDateTime("modifiedDateTime");
+JsonDbUtils::~JsonDbUtils()
+{
+ if (m_jsondbProcess)
+ m_jsondbProcess->kill();
+}
+
JsonDbUtils::JsonDbUtils(QObject *parent)
: QObject(parent)
{
+ m_jsondbProcess = launchJsonDbDaemon();
m_connection = new QJsonDbConnection;
m_connection->connectToServer();
}
@@ -147,6 +157,7 @@ void JsonDbUtils::cleanDb()
connect(getPlacesRequest, SIGNAL(error(QtJsonDb::QJsonDbRequest::ErrorCode,QString)),
this, SLOT(requestError(QtJsonDb::QJsonDbRequest::ErrorCode,QString)));
connect(getPlacesRequest, SIGNAL(error(QtJsonDb::QJsonDbRequest::ErrorCode,QString)),
+
getPlacesRequest, SLOT(deleteLater()));
m_connection->send(getPlacesRequest);
}
@@ -290,3 +301,44 @@ void JsonDbUtils::makeConnections(QJsonDbRequest *request, QObject *parent,
request,
SLOT(deleteLater()));
}
+
+QProcess* JsonDbUtils::launchJsonDbDaemon(const QStringList &args)
+{
+ const QString socketName = QString("tst_qplacemanger_jsondb_%1").arg(getpid());
+ QString jsondb_app = QString::fromLocal8Bit(JSONDB_DAEMON_BASE) + QDir::separator() + "jsondb";
+ if (!QFile::exists(jsondb_app))
+ jsondb_app = QLatin1String("jsondb"); // rely on the PATH
+
+ QProcess *process = new QProcess;
+ process->setProcessChannelMode( QProcess::ForwardedChannels );
+
+ QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
+ env.insert("JSONDB_SOCKET", socketName);
+ process->setProcessEnvironment(env);
+ ::setenv("JSONDB_SOCKET", qPrintable(socketName), 1);
+ qDebug() << "Starting process" << jsondb_app << args << "with socket" << socketName;
+ process->start(jsondb_app, args);
+ if (!process->waitForStarted())
+ qFatal("Unable to start jsondb database process");
+
+ /* Wait until the jsondb is accepting connections */
+ int tries = 0;
+ bool connected = false;
+ while (!connected && tries++ < 100) {
+ QLocalSocket socket;
+ socket.connectToServer(socketName);
+ if (socket.waitForConnected())
+ connected = true;
+ QTest::qWait(250);
+ }
+ if (!connected)
+ qFatal("Unable to connect to jsondb process");
+ return process;
+}
+
+bool JsonDbUtils::hasJsonDbConnection() const
+{
+ return m_jsondbProcess &&
+ m_connection &&
+ m_connection->status() == QtJsonDb::QJsonDbConnection::Connected;
+}
diff --git a/tests/auto/qplacemanager_jsondb/jsondbutils.h b/tests/auto/qplacemanager_jsondb/jsondbutils.h
index 6c9981f2..9b1ce7af 100644
--- a/tests/auto/qplacemanager_jsondb/jsondbutils.h
+++ b/tests/auto/qplacemanager_jsondb/jsondbutils.h
@@ -45,6 +45,7 @@
#include <QMap>
#include <QVariant>
#include <QEventLoop>
+#include <QProcess>
#include <QtCore/QJsonObject>
#include <QtJsonDb/QJsonDbConnection>
@@ -56,6 +57,7 @@ class JsonDbUtils : public QObject
{
Q_OBJECT
public:
+ ~JsonDbUtils();
JsonDbUtils(QObject *parent = 0);
void cleanDb();
void sendRequest(QJsonDbRequest *request);
@@ -63,6 +65,7 @@ public:
QList<QJsonObject> results();
void fetchPlaceJson(const QString &uuid);
void savePlaceJson(const QJsonObject &object);
+ bool hasJsonDbConnection() const;
static const QLatin1String Uuid;
static const QLatin1String Type;
@@ -159,6 +162,9 @@ signals:
private:
void makeConnections(QJsonDbRequest *request, QObject *parent, const char *slot);
+ static QProcess *launchJsonDbDaemon(const QStringList &args = QStringList());
+
+ QProcess *m_jsondbProcess;
QJsonDbConnection *m_connection;
QList<QJsonObject> m_results;
};
diff --git a/tests/auto/qplacemanager_jsondb/qplacemanager_jsondb.pro b/tests/auto/qplacemanager_jsondb/qplacemanager_jsondb.pro
index acc3afaa..c7f8020d 100644
--- a/tests/auto/qplacemanager_jsondb/qplacemanager_jsondb.pro
+++ b/tests/auto/qplacemanager_jsondb/qplacemanager_jsondb.pro
@@ -12,5 +12,7 @@ QT += location testlib
QT += jsondb
+DEFINES += JSONDB_DAEMON_BASE=\\\"$$QT.jsondb.bins\\\"
+
RESOURCES += resources.qrc
CONFIG += insignificant_test
diff --git a/tests/auto/qplacemanager_jsondb/tst_qplacemanager_jsondb.cpp b/tests/auto/qplacemanager_jsondb/tst_qplacemanager_jsondb.cpp
index 9dfd7335..62a44e64 100644
--- a/tests/auto/qplacemanager_jsondb/tst_qplacemanager_jsondb.cpp
+++ b/tests/auto/qplacemanager_jsondb/tst_qplacemanager_jsondb.cpp
@@ -264,6 +264,8 @@ tst_QPlaceManagerJsonDb::tst_QPlaceManagerJsonDb()
void tst_QPlaceManagerJsonDb::initTestCase()
{
+ QVERIFY(dbUtils->hasJsonDbConnection());
+
qRegisterMetaType<QPlaceIdReply *>();
qRegisterMetaType<QJsonObject>();
@@ -2657,6 +2659,9 @@ void tst_QPlaceManagerJsonDb::iconFormats()
if (imageFormat == "svg")
QSKIP("There is currently a crash issue with QImage and svg, see QTBUG-24468, so skip for now");
+ if (imageFormat == "tiff")
+ QSKIP("This test currently fails, investigate");
+
QTemporaryFile sourceIconFile;
sourceIconFile.open();
QImage sourceIconImage;