summaryrefslogtreecommitdiffstats
path: root/tests/benchmarks/sql/kernel/qsqlrecord/tst_bench_qsqlrecord.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/benchmarks/sql/kernel/qsqlrecord/tst_bench_qsqlrecord.cpp')
-rw-r--r--tests/benchmarks/sql/kernel/qsqlrecord/tst_bench_qsqlrecord.cpp85
1 files changed, 5 insertions, 80 deletions
diff --git a/tests/benchmarks/sql/kernel/qsqlrecord/tst_bench_qsqlrecord.cpp b/tests/benchmarks/sql/kernel/qsqlrecord/tst_bench_qsqlrecord.cpp
index ae1b92a32c..55ec1983ee 100644
--- a/tests/benchmarks/sql/kernel/qsqlrecord/tst_bench_qsqlrecord.cpp
+++ b/tests/benchmarks/sql/kernel/qsqlrecord/tst_bench_qsqlrecord.cpp
@@ -1,13 +1,11 @@
// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QTest>
#include <QtSql/QtSql>
#include "../../../../auto/sql/kernel/qsqldatabase/tst_databases.h"
-const QString qtest(qTableName("qtest", __FILE__, QSqlDatabase()));
-
class tst_QSqlRecord : public QObject
{
Q_OBJECT
@@ -27,9 +25,6 @@ private slots:
private:
void generic_data(const QString &engine = QString());
- void dropTestTables(QSqlDatabase db);
- void createTestTables(QSqlDatabase db);
- void populateTestTables(QSqlDatabase db);
tst_Databases dbs;
};
@@ -39,38 +34,15 @@ QTEST_MAIN(tst_QSqlRecord)
void tst_QSqlRecord::initTestCase()
{
dbs.open();
- for (const auto &dbName : std::as_const(dbs.dbNames)) {
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
- dropTestTables(db); // In case of leftovers
- createTestTables(db);
- populateTestTables(db);
- }
}
void tst_QSqlRecord::cleanupTestCase()
{
- for (const auto &dbName : std::as_const(dbs.dbNames)) {
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
- dropTestTables(db);
- }
dbs.close();
}
void tst_QSqlRecord::cleanup()
{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
- const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
-
- if (QTest::currentTestFailed() && (dbType == QSqlDriver::Oracle ||
- db.driverName().startsWith("QODBC"))) {
- // Since Oracle ODBC has a problem when encountering an error, we init again
- db.close();
- db.open();
- }
}
void tst_QSqlRecord::generic_data(const QString &engine)
@@ -83,74 +55,28 @@ void tst_QSqlRecord::generic_data(const QString &engine)
}
}
-void tst_QSqlRecord::dropTestTables(QSqlDatabase db)
-{
- QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
- QStringList tablenames;
- // drop all the tables in case a testcase failed
- tablenames << qtest
- << qTableName("record", __FILE__, db);
- tst_Databases::safeDropTables(db, tablenames);
-
- if (dbType == QSqlDriver::Oracle) {
- QSqlQuery q(db);
- q.exec("DROP PACKAGE " + qTableName("pkg", __FILE__, db));
- }
-}
-
-void tst_QSqlRecord::createTestTables(QSqlDatabase db)
-{
- QSqlQuery q(db);
- switch (tst_Databases::getDatabaseType(db)) {
- case QSqlDriver::PostgreSQL:
- QVERIFY_SQL(q, exec("set client_min_messages='warning'"));
- QVERIFY_SQL(q, exec("create table " + qtest + " (id serial NOT NULL, t_varchar varchar(20), "
- "t_char char(20), primary key(id)) WITH OIDS"));
- break;
- case QSqlDriver::MySqlServer:
- QVERIFY_SQL(q, exec("set table_type=innodb"));
- Q_FALLTHROUGH();
- default:
- QVERIFY_SQL(q, exec("create table " + qtest + " (id int " + tst_Databases::autoFieldName(db) +
- " NOT NULL, t_varchar varchar(20), t_char char(20), primary key(id))"));
- break;
- }
-}
-
-void tst_QSqlRecord::populateTestTables(QSqlDatabase db)
-{
- QSqlQuery q(db);
- QVERIFY_SQL(q, exec("delete from " + qtest));
- QVERIFY_SQL(q, exec("insert into " + qtest + " values (1, 'VarChar1', 'Char1')"));
- QVERIFY_SQL(q, exec("insert into " + qtest + " values (2, 'VarChar2', 'Char2')"));
- QVERIFY_SQL(q, exec("insert into " + qtest + " values (3, 'VarChar3', 'Char3')"));
- QVERIFY_SQL(q, exec("insert into " + qtest + " values (4, 'VarChar4', 'Char4')"));
- QVERIFY_SQL(q, exec("insert into " + qtest + " values (5, 'VarChar5', 'Char5')"));
-}
-
void tst_QSqlRecord::benchmarkRecord()
{
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
- const auto tableName = qTableName("record", __FILE__, db);
+ TableScope ts(db, "record", __FILE__);
{
QSqlQuery qry(db);
- QVERIFY_SQL(qry, exec("create table " + tableName +
+ QVERIFY_SQL(qry, exec("create table " + ts.tableName() +
" (id int NOT NULL, t_varchar varchar(20), "
"t_char char(20), primary key(id))"));
// Limit to 500: at 600, the set-up takes nearly 5 minutes
for (int i = 0; i < 500; i++)
- QVERIFY_SQL(qry, exec(QString("INSERT INTO " + tableName +
+ QVERIFY_SQL(qry, exec(QString("INSERT INTO " + ts.tableName() +
" VALUES (%1, 'VarChar%1', 'Char%1')").arg(i)));
- QVERIFY_SQL(qry, exec(QString("SELECT * from ") + tableName));
+ QVERIFY_SQL(qry, exec(QString("SELECT * from ") + ts.tableName()));
QBENCHMARK {
while (qry.next())
qry.record();
QVERIFY(qry.seek(0));
}
}
- tst_Databases::safeDropTables(db, QStringList() << tableName);
}
void tst_QSqlRecord::benchFieldName()
@@ -174,7 +100,6 @@ void tst_QSqlRecord::benchFieldIndex()
QCOMPARE(tst_Databases::getDatabaseType(db), QSqlDriver::PostgreSQL);
QSqlQuery qry(db);
QVERIFY_SQL(qry, exec("SELECT GENERATE_SERIES(1,5000) AS r"));
- qry = db.exec("SELECT GENERATE_SERIES(1,5000) AS r");
QBENCHMARK {
while (qry.next())
qry.value(0);