File indexing completed on 2024-05-12 16:45:28
0001 /**********************"***************************************************** 0002 * SPDX-FileCopyrightText: 2022 S. MANKOWSKI stephane@mankowski.fr 0003 * SPDX-FileCopyrightText: 2022 G. DE BURE support@mankowski.fr 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 ***************************************************************************/ 0006 /** @file 0007 * This file is a test script. 0008 * 0009 * @author Stephane MANKOWSKI / Guillaume DE BURE 0010 */ 0011 #include "skgtestmacro.h" 0012 #include <qsqldatabase.h> 0013 #include <qthread.h> 0014 #include <quuid.h> 0015 #include <unistd.h> 0016 0017 void dumpConnections() 0018 { 0019 const auto conNames = QSqlDatabase::connectionNames(); 0020 for (const auto& conName : conNames) { 0021 SKGTRACE << "### " << conName << " ###" << SKGENDL; 0022 auto con = QSqlDatabase::database(conName, false); 0023 SKGTRACE << " connectionName=" << con.connectionName() << SKGENDL; 0024 SKGTRACE << " connectOptions=" << con.connectOptions() << SKGENDL; 0025 SKGTRACE << " isOpen=" << (con.isOpen() ? "Y" : "N") << SKGENDL; 0026 } 0027 } 0028 0029 /** 0030 * The main function of the unit test 0031 * @param argc the number of arguments 0032 * @param argv the list of arguments 0033 */ 0034 int main(int argc, char** argv) 0035 { 0036 Q_UNUSED(argc) 0037 Q_UNUSED(argv) 0038 0039 // Init test 0040 SKGINITTEST(true) 0041 0042 // test class SKGDocument / PARAMETERS 0043 SKGDocument document1; 0044 SKGTESTERROR(QStringLiteral("PARAM:initialize"), document1.initialize(), true) 0045 SKGTESTERROR(QStringLiteral("PARAM:close"), document1.close(), true) 0046 SKGTESTERROR(QStringLiteral("PARAM:initialize"), document1.initialize(), true) 0047 SKGTESTERROR(QStringLiteral("PARAM:beginTransaction"), document1.beginTransaction(QStringLiteral("t1")), true) 0048 SKGTESTERROR(QStringLiteral("PARAM:setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL1")), true) 0049 SKGTESTERROR(QStringLiteral("PARAM:endTransaction"), document1.endTransaction(true), true) 0050 SKGTEST(QStringLiteral("PARAM:getCachedValue"), document1.getCachedValue(QStringLiteral("NOTFOUND")), QLatin1String("")) 0051 0052 SKGDocument document2; 0053 SKGTESTERROR(QStringLiteral("PARAM:initialize"), document2.initialize(), true) 0054 SKGTESTERROR(QStringLiteral("PARAM:beginTransaction"), document2.beginTransaction(QStringLiteral("t2")), true) 0055 SKGTESTERROR(QStringLiteral("PARAM:setParameter"), document2.setParameter(QStringLiteral("ATT2"), QStringLiteral("VAL2")), true) 0056 SKGTESTERROR(QStringLiteral("PARAM:setParameter"), document2.setParameter(QStringLiteral("ATT3"), QStringLiteral("dates.txt"), SKGTest::getTestPath(QStringLiteral("IN")) % "/dates.txt"), true) 0057 SKGTESTERROR(QStringLiteral("PARAM:endTransaction"), document2.endTransaction(true), true) 0058 0059 0060 SKGTEST(QStringLiteral("PARAM:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL1")) 0061 SKGTEST(QStringLiteral("PARAM:getParameter"), document2.getParameter(QStringLiteral("ATT2")), QStringLiteral("VAL2")) 0062 0063 SKGTEST(QStringLiteral("PARAM:getFileExtension"), document2.getFileExtension(), QStringLiteral("skgc")) 0064 0065 document1.formatPercentage(1.1, true); 0066 document1.formatPercentage(1.1, false); 0067 SKGTEST(QStringLiteral("PARAM:getRealAttribute"), document2.getRealAttribute(QStringLiteral("t_ATT")), QLatin1String("")) 0068 SKGTEST(QStringLiteral("PARAM:getRealAttribute"), document2.getRealAttribute(QStringLiteral("t_att")), QStringLiteral("t_att")) 0069 0070 document1.getDatabaseIdentifier(); 0071 document1.getParameters(QStringLiteral("document"), QStringLiteral("t_name like 'ATT%'")); 0072 0073 // Special SQL command 0074 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSqliteOrder(QStringLiteral("SELECT * FROM (SELECT CAPITALIZE(LOWER(UPPER(WORD('Abc Def', 2)))) AS V) WHERE REGEXP('D.*', V) AND WILDCARD('D*', V)")), true) 0075 QString result; 0076 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT TOWEEKYEAR('2019-12-31')"), result), true) 0077 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-TOWEEKYEAR"), result, QStringLiteral("2020-W01")) 0078 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT TODATE('07162013', 'MMDDYYYY')"), result), true) 0079 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-TODATE"), result, QStringLiteral("2013-07-16")) 0080 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT TOFORMATTEDDATE('2013-07-16', 'dd-MM-yyyy')"), result), true) 0081 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-TODATE"), result, QStringLiteral("16-07-2013")) 0082 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT TOFORMATTEDDATE('2013-07-16', 'd M yy')"), result), true) 0083 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-TODATE"), result, QStringLiteral("16 7 13")) 0084 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT TODATE('ABCDEFGHIJ', 'MMDDYYYY')"), result), true) 0085 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-TODATE"), result, SKGServices::dateToSqlString(QDate::currentDate())) 0086 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT WORD('Abc Def Ghi', 0)"), result), true) 0087 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-WORD"), result, QStringLiteral("Abc")) 0088 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT WORD('Abc Def Ghi', 1)"), result), true) 0089 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-WORD"), result, QStringLiteral("Abc")) 0090 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT WORD('Abc Def Ghi', 2)"), result), true) 0091 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-WORD"), result, QStringLiteral("Def")) 0092 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT WORD('Abc Def Ghi', 3)"), result), true) 0093 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-WORD"), result, QStringLiteral("Ghi")) 0094 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT WORD('Abc Def Ghi', 99)"), result), true) 0095 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-WORD"), result, QStringLiteral("Ghi")) 0096 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT WORD('Abc Def Ghi', -99)"), result), true) 0097 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-WORD"), result, QStringLiteral("Abc")) 0098 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT WORD('Abc Def Ghi', -3)"), result), true) 0099 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-WORD"), result, QStringLiteral("Abc")) 0100 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT WORD('Abc Def Ghi', -2)"), result), true) 0101 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-WORD"), result, QStringLiteral("Def")) 0102 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT WORD('Abc Def Ghi', -1)"), result), true) 0103 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-WORD"), result, QStringLiteral("Ghi")) 0104 0105 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT WORD(' Abc Def Ghi ', 1)"), result), true) 0106 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-WORD"), result, QStringLiteral("Abc")) 0107 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT WORD(' Abc Def Ghi ', 2)"), result), true) 0108 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-WORD"), result, QStringLiteral("Def")) 0109 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT WORD(' Abc Def Ghi ', 3)"), result), true) 0110 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-WORD"), result, QStringLiteral("Ghi")) 0111 0112 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT WORD('N:1234', 1)"), result), true) 0113 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-WORD"), result, QStringLiteral("N")) 0114 0115 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT WORD('N:1234', 2)"), result), true) 0116 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-WORD"), result, QStringLiteral("1234")) 0117 0118 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT REGEXPCAPTURE('(.*) CARTE 1234.*', 'MyShopName CARTE 12345678 PAIEME', 0)"), result), true) 0119 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-WORD"), result, QStringLiteral("MyShopName CARTE 12345678 PAIEME")) 0120 0121 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT REGEXPCAPTURE('(.*) CARTE 1234.*', 'MyShopName CARTE 12345678 PAIEME', 1)"), result), true) 0122 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-WORD"), result, QStringLiteral("MyShopName")) 0123 0124 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT REGEXPCAPTURE('(.*) CARTE 1234.*', 'MyShopName CARTE 12345678 PAIEME', 12)"), result), true) 0125 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-WORD"), result, QLatin1String("")) 0126 0127 QMap<QString, QVariant> map; 0128 map[QStringLiteral(":2")] = "20"; 0129 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSqliteOrder(QStringLiteral("SELECT WORD('Abc Def', :2)"), map, nullptr), true) 0130 0131 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT TOCURRENCY(1234, 'F')"), result), true) 0132 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-1234 F"), result.remove(' '), QStringLiteral("1234.00F")) 0133 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT TOCURRENCY(-1234, (SELECT 'F'))"), result), true) 0134 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-1234 F"), result.remove(' '), QStringLiteral("-1234.00F")) 0135 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT PERIOD((SELECT '2013-03-05'), (SELECT 'D'))"), result), true) 0136 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-PERIOD D"), result, QStringLiteral("2013-03-05")) 0137 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT PERIOD('2013-03-05', 'W')"), result), true) 0138 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-PERIOD W"), result, QStringLiteral("2013-W10")) 0139 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT PERIOD('2013-03-05', 'M')"), result), true) 0140 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-PERIOD M"), result, QStringLiteral("2013-03")) 0141 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT PERIOD('2013-03-05', 'Q')"), result), true) 0142 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-PERIOD Q"), result, QStringLiteral("2013-Q1")) 0143 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT PERIOD('2013-03-05', 'S')"), result), true) 0144 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-PERIOD S"), result, QStringLiteral("2013-S1")) 0145 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT PERIOD('2013-03-05', 'Y')"), result), true) 0146 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-PERIOD Y"), result, QStringLiteral("2013")) 0147 0148 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT PERIOD('2014-07-16', 'D')"), result), true) 0149 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-PERIOD D"), result, QStringLiteral("2014-07-16")) 0150 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT PERIOD('2014-07-16', 'W')"), result), true) 0151 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-PERIOD W"), result, QStringLiteral("2014-W29")) 0152 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT PERIOD('2014-07-16', 'M')"), result), true) 0153 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-PERIOD M"), result, QStringLiteral("2014-07")) 0154 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT PERIOD('2014-07-16', 'Q')"), result), true) 0155 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-PERIOD Q"), result, QStringLiteral("2014-Q3")) 0156 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT PERIOD('2014-07-16', 'S')"), result), true) 0157 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-PERIOD S"), result, QStringLiteral("2014-S2")) 0158 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT PERIOD('2014-07-16', 'Y')"), result), true) 0159 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-PERIOD Y"), result, QStringLiteral("2014")) 0160 0161 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT NEXT('12345')"), result), true) 0162 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-NEXT"), result, QStringLiteral("12346")) 0163 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT NEXT('9')"), result), true) 0164 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-NEXT"), result, QStringLiteral("10")) 0165 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT NEXT('ABC')"), result), true) 0166 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-NEXT"), result, QLatin1String("")) 0167 0168 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT XOR('HELLO WORLD!', 'KEY')"), result), true) 0169 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-XOR"), result, QLatin1String("# 030015070a791c0a0b070178")) 0170 for (int i = 1; i < 100; ++i) { 0171 auto string = QUuid::createUuid().toString(); 0172 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT XOR(XOR('") + string + "', 'KEY'), 'KEY')", result), true) 0173 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-XOR"), result, string) 0174 } 0175 for (double i = -1200.53; i < 5023.25; i = i + 125.54) { 0176 auto string = SKGServices::doubleToString(i); 0177 SKGTESTERROR(QStringLiteral("PARAM:executeSqliteOrder"), document1.executeSingleSelectSqliteOrder(QStringLiteral("SELECT XORD(XORD(") + string + ", 'KEY'), 'KEY')", result), true) 0178 SKGTEST(QStringLiteral("PARAM:executeSqliteOrder-XORD"), result, string) 0179 } 0180 0181 SKGTRACE << "####### Before concurrent calls" << SKGENDL; 0182 dumpConnections(); 0183 int nb = 5; 0184 { 0185 SKGTRACE << ">> executeSelectSqliteOrder same order" << SKGENDL; 0186 QString output; 0187 double elapse = SKGServices::getMicroTime(); 0188 for (int i = 0; i < nb; ++i) { 0189 SKGStringListList oResult; 0190 IFOK(document1.executeSelectSqliteOrder(QStringLiteral("SELECT SLEEP(1)"), oResult)) { 0191 output = output + SKGServices::intToString(oResult.count()); 0192 } 0193 } 0194 double time = SKGServices::getMicroTime() - elapse; 0195 SKGTRACE << nb << " x executeSelectSqliteOrder:" << output << " " << time << " ms" << SKGENDL; 0196 SKGTEST(QStringLiteral("PARAM:executeSelectSqliteOrder-PERFO >=1000"), static_cast<unsigned int>(time >= 1000), static_cast<unsigned int>(true)) 0197 SKGTEST(QStringLiteral("PARAM:executeSelectSqliteOrder-PERFO <2000"), static_cast<unsigned int>(time < 2000), static_cast<unsigned int>(true)) 0198 SKGTEST(QStringLiteral("PARAM:executeSelectSqliteOrder"), output, QStringLiteral("22222")) 0199 } 0200 0201 { 0202 SKGTRACE << ">> concurrentExecuteSelectSqliteOrder same order" << SKGENDL; 0203 QString output; 0204 double elapse = SKGServices::getMicroTime(); 0205 for (int i = 0; i < nb; ++i) { 0206 document1.concurrentExecuteSelectSqliteOrder(QStringLiteral("SELECT SLEEP(1), 2"), 0207 [ &output ](const SKGStringListList & iResult) { 0208 output = output + SKGServices::intToString(iResult.count()); 0209 }); 0210 } 0211 double time = SKGServices::getMicroTime() - elapse; 0212 SKGTRACE << nb << " x concurrentExecuteSelectSqliteOrder:" << output << " " << (SKGServices::getMicroTime() - elapse) << " ms" << SKGENDL; 0213 qApp->processEvents(QEventLoop::AllEvents, 500); 0214 for (int i = 1; i < 100; ++i) { 0215 QThread::msleep(100); 0216 qApp->processEvents(QEventLoop::AllEvents, 500); 0217 time = SKGServices::getMicroTime() - elapse; 0218 if (output == QStringLiteral("22222")) { 0219 SKGTEST(QStringLiteral("PARAM:executeSelectSqliteOrder-PERFO >=1000"), static_cast<unsigned int>(time >= 1000), static_cast<unsigned int>(true)) 0220 SKGTEST(QStringLiteral("PARAM:executeSelectSqliteOrder-PERFO <3500"), static_cast<unsigned int>(time < 3500), static_cast<unsigned int>(true)) 0221 break; 0222 } 0223 } 0224 0225 SKGTRACE << nb << " x concurrentExecuteSelectSqliteOrder:" << output << " " << time << " ms" << SKGENDL; 0226 SKGTEST(QStringLiteral("PARAM:concurrentExecuteSelectSqliteOrder"), output, QStringLiteral("22222")) 0227 } 0228 0229 { 0230 SKGTRACE << ">> executeSelectSqliteOrder different orders" << SKGENDL; 0231 QString output; 0232 double elapse = SKGServices::getMicroTime(); 0233 for (int i = 0; i < nb; ++i) { 0234 SKGStringListList oResult; 0235 IFOK(document1.executeSelectSqliteOrder(QStringLiteral("SELECT SLEEP(1), ") + SKGServices::intToString(1000 + i), oResult)) { 0236 output = output + SKGServices::intToString(oResult.count()); 0237 } 0238 } 0239 double time = SKGServices::getMicroTime() - elapse; 0240 SKGTRACE << nb << " x executeSelectSqliteOrder:" << output << " " << time << " ms" << SKGENDL; 0241 SKGTEST(QStringLiteral("PARAM:executeSelectSqliteOrder-PERFO >5000"), static_cast<unsigned int>(time > 5000), static_cast<unsigned int>(true)) 0242 SKGTEST(QStringLiteral("PARAM:executeSelectSqliteOrder-PERFO <6000"), static_cast<unsigned int>(time < 6000), static_cast<unsigned int>(true)) 0243 SKGTEST(QStringLiteral("PARAM:executeSelectSqliteOrder"), output, QStringLiteral("22222")) 0244 } 0245 0246 { 0247 SKGTRACE << ">> concurrentExecuteSelectSqliteOrder different orders" << SKGENDL; 0248 QString output; 0249 double elapse = SKGServices::getMicroTime(); 0250 for (int i = 0; i < nb; ++i) { 0251 document1.concurrentExecuteSelectSqliteOrder(QStringLiteral("SELECT SLEEP(1), ") + SKGServices::intToString(2000 + i), 0252 [ &output ](const SKGStringListList & iResult) { 0253 output = output + SKGServices::intToString(iResult.count()); 0254 }); 0255 } 0256 double time = SKGServices::getMicroTime() - elapse; 0257 SKGTRACE << nb << " x concurrentExecuteSelectSqliteOrder:" << output << " " << (SKGServices::getMicroTime() - elapse) << " ms" << SKGENDL; 0258 qApp->processEvents(QEventLoop::AllEvents, 500); 0259 for (int i = 1; i < 100; ++i) { 0260 QThread::msleep(100); 0261 qApp->processEvents(QEventLoop::AllEvents, 500); 0262 time = SKGServices::getMicroTime() - elapse; 0263 if (output == QStringLiteral("22222")) { 0264 SKGTEST(QStringLiteral("PARAM:executeSelectSqliteOrder-PERFO >=1000"), static_cast<unsigned int>(time >= 1000), static_cast<unsigned int>(true)) 0265 SKGTEST(QStringLiteral("PARAM:executeSelectSqliteOrder-PERFO <3500"), static_cast<unsigned int>(time < 3500), static_cast<unsigned int>(true)) 0266 break; 0267 } 0268 } 0269 0270 SKGTRACE << nb << " x concurrentExecuteSelectSqliteOrder:" << output << " " << time << " ms" << SKGENDL; 0271 SKGTEST(QStringLiteral("PARAM:concurrentExecuteSelectSqliteOrder"), output, QStringLiteral("22222")) 0272 } 0273 SKGTRACE << "####### Before close" << SKGENDL; 0274 dumpConnections(); 0275 SKGTESTERROR(QStringLiteral("PARAM:close"), document1.close(), true) 0276 SKGTRACE << "####### Before initialize" << SKGENDL; 0277 dumpConnections(); 0278 SKGTESTERROR(QStringLiteral("PARAM:initialize"), document1.initialize(), true) 0279 SKGTRACE << "####### Before concurrent calls" << SKGENDL; 0280 dumpConnections(); 0281 0282 { 0283 SKGTRACE << ">> concurrentExecuteSelectSqliteOrder different orders (in other thread)" << SKGENDL; 0284 QString output; 0285 double elapse = SKGServices::getMicroTime(); 0286 for (int i = 0; i < nb; ++i) { 0287 document1.concurrentExecuteSelectSqliteOrder(QStringLiteral("SELECT SLEEP(1), ") + SKGServices::intToString(3000 + i), 0288 [ &output ](const SKGStringListList & iResult) { 0289 QMutex mutex; 0290 mutex.lock(); 0291 output = output + SKGServices::intToString(iResult.count()); 0292 mutex.unlock(); 0293 }, false); 0294 } 0295 double time = SKGServices::getMicroTime() - elapse; 0296 SKGTRACE << nb << " x concurrentExecuteSelectSqliteOrder:" << output << " " << (SKGServices::getMicroTime() - elapse) << " ms" << SKGENDL; 0297 for (int i = 1; i < 100; ++i) { 0298 QThread::msleep(100); 0299 time = SKGServices::getMicroTime() - elapse; 0300 if (output == QStringLiteral("22222")) { 0301 SKGTEST(QStringLiteral("PARAM:executeSelectSqliteOrder-PERFO >=1000"), static_cast<unsigned int>(time >= 1000), static_cast<unsigned int>(true)) 0302 SKGTEST(QStringLiteral("PARAM:executeSelectSqliteOrder-PERFO <3500"), static_cast<unsigned int>(time < 3500), static_cast<unsigned int>(true)) 0303 break; 0304 } 0305 } 0306 0307 SKGTRACE << nb << " x concurrentExecuteSelectSqliteOrder:" << output << " " << time << " ms" << SKGENDL; 0308 SKGTEST(QStringLiteral("PARAM:concurrentExecuteSelectSqliteOrder"), output, QStringLiteral("22222")) 0309 } 0310 SKGTRACE << "####### End" << SKGENDL; 0311 dumpConnections(); 0312 0313 0314 // End test 0315 SKGENDTEST() 0316 }