Browse Source

Cutelyst: Improve Fortunes tests a bit and do some code cleanup

Daniel Nicoletti 8 years ago
parent
commit
c6e56a803a

+ 1 - 0
frameworks/C++/cutelyst/src/cutelyst-benchmarks.cpp

@@ -23,6 +23,7 @@ static QMutex mutex;
 
 
 cutelyst_benchmarks::cutelyst_benchmarks(QObject *parent) : Application(parent)
 cutelyst_benchmarks::cutelyst_benchmarks(QObject *parent) : Application(parent)
 {
 {
+    qsrand(QDateTime::currentMSecsSinceEpoch());
 }
 }
 
 
 cutelyst_benchmarks::~cutelyst_benchmarks()
 cutelyst_benchmarks::~cutelyst_benchmarks()

+ 5 - 5
frameworks/C++/cutelyst/src/databaseupdatestest.cpp

@@ -2,12 +2,12 @@
 
 
 #include <Cutelyst/Plugins/Utils/Sql>
 #include <Cutelyst/Plugins/Utils/Sql>
 
 
-#include <QtSql/QSqlQuery>
+#include <QSqlQuery>
 
 
-#include <QtCore/QThread>
-#include <QtCore/QJsonDocument>
-#include <QtCore/QJsonObject>
-#include <QtCore/QJsonArray>
+#include <QThread>
+#include <QJsonDocument>
+#include <QJsonObject>
+#include <QJsonArray>
 
 
 DatabaseUpdatesTest::DatabaseUpdatesTest(QObject *parent) : Controller(parent)
 DatabaseUpdatesTest::DatabaseUpdatesTest(QObject *parent) : Controller(parent)
 {
 {

+ 21 - 31
frameworks/C++/cutelyst/src/fortunetest.cpp

@@ -2,14 +2,9 @@
 
 
 #include <Cutelyst/Plugins/Utils/Sql>
 #include <Cutelyst/Plugins/Utils/Sql>
 
 
-#include <QStringBuilder>
+#include <QSqlQuery>
 
 
-#include <QtSql/QSqlQuery>
-
-#include <QtCore/QThread>
-#include <QtCore/QJsonDocument>
-#include <QtCore/QJsonObject>
-#include <QtCore/QJsonArray>
+#include <QThread>
 
 
 FortuneTest::FortuneTest(QObject *parent) : Controller(parent)
 FortuneTest::FortuneTest(QObject *parent) : Controller(parent)
 {
 {
@@ -18,30 +13,20 @@ FortuneTest::FortuneTest(QObject *parent) : Controller(parent)
 
 
 void FortuneTest::fortunes_raw_postgres(Context *c)
 void FortuneTest::fortunes_raw_postgres(Context *c)
 {
 {
-    QSqlQuery query = postgresQuery();
+    QSqlQuery query = CPreparedSqlQueryForDatabase(
+                QLatin1String("SELECT id, message FROM fortune"),
+                QSqlDatabase::database(QLatin1String("postgres-") + QThread::currentThread()->objectName()));
     auto fortunes = processQuery(c, query);
     auto fortunes = processQuery(c, query);
     renderRaw(c, fortunes);
     renderRaw(c, fortunes);
 }
 }
 
 
 void FortuneTest::fortunes_raw_mysql(Context *c)
 void FortuneTest::fortunes_raw_mysql(Context *c)
 {
 {
-    QSqlQuery query = mysqlQuery();
-    auto fortunes = processQuery(c, query);
-    renderRaw(c, fortunes);
-}
-
-QSqlQuery FortuneTest::postgresQuery()
-{
-    return CPreparedSqlQueryForDatabase(
-                QLatin1String("SELECT id, message FROM fortune"),
-                QSqlDatabase::database(QLatin1String("postgres-") + QThread::currentThread()->objectName()));
-}
-
-QSqlQuery FortuneTest::mysqlQuery()
-{
-    return CPreparedSqlQueryForDatabase(
+    QSqlQuery query = CPreparedSqlQueryForDatabase(
                 QLatin1String("SELECT id, message FROM fortune"),
                 QLatin1String("SELECT id, message FROM fortune"),
                 QSqlDatabase::database(QLatin1String("mysql-") + QThread::currentThread()->objectName()));
                 QSqlDatabase::database(QLatin1String("mysql-") + QThread::currentThread()->objectName()));
+    auto fortunes = processQuery(c, query);
+    renderRaw(c, fortunes);
 }
 }
 
 
 static bool caseSensitiveLessThan(const Fortune &a1, const Fortune &a2)
 static bool caseSensitiveLessThan(const Fortune &a1, const Fortune &a2)
@@ -59,14 +44,12 @@ FortuneList FortuneTest::processQuery(Context *c, QSqlQuery &query)
     }
     }
 
 
     while (query.next()) {
     while (query.next()) {
-        fortunes.append(qMakePair(query.value(0).toInt(), query.value(1).toString()));
+        fortunes.push_back({query.value(0).toInt(), query.value(1).toString()});
     }
     }
-    fortunes.append(qMakePair(0, QStringLiteral("Additional fortune added at request time.")));
+    fortunes.push_back({0, QStringLiteral("Additional fortune added at request time.")});
 
 
     qSort(fortunes.begin(), fortunes.end(), caseSensitiveLessThan);
     qSort(fortunes.begin(), fortunes.end(), caseSensitiveLessThan);
 
 
-    c->response()->setContentType(QStringLiteral("text/html; charset=UTF-8"));
-
     return fortunes;
     return fortunes;
 }
 }
 
 
@@ -79,12 +62,19 @@ void FortuneTest::renderRaw(Context *c, const FortuneList &fortunes)
                               "<body>"
                               "<body>"
                               "<table>"
                               "<table>"
                               "<tr><th>id</th><th>message</th></tr>"));
                               "<tr><th>id</th><th>message</th></tr>"));
-
-    Q_FOREACH (const Fortune &fortune, fortunes) {
-        out.append(QLatin1String("<tr><td>") % QString::number(fortune.first) % QLatin1String("</td><td>") % fortune.second.toHtmlEscaped() % QLatin1String("</td></tr>"));
+    out.reserve(4096);
+
+    for (const Fortune &fortune : fortunes) {
+        out.append(QStringLiteral("<tr><td>"))
+                .append(QString::number(fortune.first))
+                .append(QStringLiteral("</td><td>"))
+                .append(fortune.second.toHtmlEscaped())
+                .append(QStringLiteral("</td></tr>"));
     }
     }
 
 
     out.append(QStringLiteral("</table></body></html>"));
     out.append(QStringLiteral("</table></body></html>"));
 
 
-    c->response()->setBody(out);
+    auto response = c->response();
+    response->setBody(out);
+    response->setContentType(QStringLiteral("text/html; charset=UTF-8"));
 }
 }

+ 2 - 4
frameworks/C++/cutelyst/src/fortunetest.h

@@ -5,8 +5,8 @@
 
 
 using namespace Cutelyst;
 using namespace Cutelyst;
 
 
-typedef QPair<int, QString> Fortune;
-typedef QList<Fortune> FortuneList;
+typedef std::pair<int, QString> Fortune;
+typedef std::vector<Fortune> FortuneList;
 
 
 class QSqlQuery;
 class QSqlQuery;
 class FortuneTest : public Controller
 class FortuneTest : public Controller
@@ -23,8 +23,6 @@ public:
     void fortunes_raw_mysql(Context *c);
     void fortunes_raw_mysql(Context *c);
 
 
 private:
 private:
-    inline QSqlQuery postgresQuery();
-    inline QSqlQuery mysqlQuery();
     inline FortuneList processQuery(Context *c, QSqlQuery &query);
     inline FortuneList processQuery(Context *c, QSqlQuery &query);
     inline void renderRaw(Context *c, const FortuneList &fortunes);
     inline void renderRaw(Context *c, const FortuneList &fortunes);
 };
 };

+ 2 - 2
frameworks/C++/cutelyst/src/jsontest.cpp

@@ -1,7 +1,7 @@
 #include "jsontest.h"
 #include "jsontest.h"
 
 
-#include <QtCore/QJsonDocument>
-#include <QtCore/QJsonObject>
+#include <QJsonDocument>
+#include <QJsonObject>
 
 
 JsonTest::JsonTest(QObject *parent) : Controller(parent)
 JsonTest::JsonTest(QObject *parent) : Controller(parent)
 {
 {

+ 5 - 5
frameworks/C++/cutelyst/src/multipledatabasequeriestest.cpp

@@ -2,12 +2,12 @@
 
 
 #include <Cutelyst/Plugins/Utils/Sql>
 #include <Cutelyst/Plugins/Utils/Sql>
 
 
-#include <QtSql/QSqlQuery>
+#include <QSqlQuery>
 
 
-#include <QtCore/QThread>
-#include <QtCore/QJsonDocument>
-#include <QtCore/QJsonObject>
-#include <QtCore/QJsonArray>
+#include <QThread>
+#include <QJsonDocument>
+#include <QJsonObject>
+#include <QJsonArray>
 
 
 MultipleDatabaseQueriesTest::MultipleDatabaseQueriesTest(QObject *parent) : Controller(parent)
 MultipleDatabaseQueriesTest::MultipleDatabaseQueriesTest(QObject *parent) : Controller(parent)
 {
 {

+ 2 - 2
frameworks/C++/cutelyst/src/root.cpp

@@ -26,8 +26,8 @@ QString setupHeader(Context *c)
 
 
 void Root::End(Context *c)
 void Root::End(Context *c)
 {
 {
-    static QString lastDate = setupHeader(c);
-    static QElapsedTimer timer = timerSetup(c);
+    static thread_local QString lastDate = setupHeader(c);
+    static thread_local QElapsedTimer timer = timerSetup(c);
     if (timer.hasExpired(1000)) {
     if (timer.hasExpired(1000)) {
         lastDate = setupHeader(c);
         lastDate = setupHeader(c);
         timer.restart();
         timer.restart();

+ 1 - 1
frameworks/C++/cutelyst/src/singledatabasequerytest.cpp

@@ -10,7 +10,7 @@
 
 
 SingleDatabaseQueryTest::SingleDatabaseQueryTest(QObject *parent) : Controller(parent)
 SingleDatabaseQueryTest::SingleDatabaseQueryTest(QObject *parent) : Controller(parent)
 {
 {
-    qsrand(QDateTime::currentMSecsSinceEpoch());
+
 }
 }
 
 
 void SingleDatabaseQueryTest::db_postgres(Context *c)
 void SingleDatabaseQueryTest::db_postgres(Context *c)