Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix errors in threadtest3 tests caused by earlier tests neglecting to close database handles. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
1d44f1b1a9fefeb2449892775c59765c |
User & Date: | dan 2014-12-15 08:46:17.172 |
Context
2014-12-15
| ||
16:27 | Add new test file e_walauto.test. (check-in: 62ef45140c user: dan tags: trunk) | |
08:46 | Fix errors in threadtest3 tests caused by earlier tests neglecting to close database handles. (check-in: 1d44f1b1a9 user: dan tags: trunk) | |
2014-12-13
| ||
17:41 | Further enhancements to threadtest3 stress tests. (check-in: ba772cff60 user: dan tags: trunk) | |
Changes
Changes to test/threadtest3.c.
︙ | ︙ | |||
1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 | for(i=1; i<9; i++){ char *zSql = sqlite3_mprintf("DROP TRIGGER dtr%d", i); execsql(&err, &db, zSql); sqlite3_free(zSql); nDrop++; } } print_and_free_err(&err); return sqlite3_mprintf("%d created, %d dropped", nCreate, nDrop); } static char *dynamic_triggers_2(int iTid, void *pArg){ Error err = {0}; /* Error code and message */ | > | 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 | for(i=1; i<9; i++){ char *zSql = sqlite3_mprintf("DROP TRIGGER dtr%d", i); execsql(&err, &db, zSql); sqlite3_free(zSql); nDrop++; } } closedb(&err, &db); print_and_free_err(&err); return sqlite3_mprintf("%d created, %d dropped", nCreate, nDrop); } static char *dynamic_triggers_2(int iTid, void *pArg){ Error err = {0}; /* Error code and message */ |
︙ | ︙ | |||
1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 | do { iVal = (iVal+1)%100; execsql(&err, &db, "DELETE FROM t1 WHERE x = :iX", &iVal); nDelete++; } while( iVal ); } print_and_free_err(&err); return sqlite3_mprintf("%d inserts, %d deletes", nInsert, nDelete); } static void dynamic_triggers(int nMs){ Error err = {0}; | > | 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 | do { iVal = (iVal+1)%100; execsql(&err, &db, "DELETE FROM t1 WHERE x = :iX", &iVal); nDelete++; } while( iVal ); } closedb(&err, &db); print_and_free_err(&err); return sqlite3_mprintf("%d inserts, %d deletes", nInsert, nDelete); } static void dynamic_triggers(int nMs){ Error err = {0}; |
︙ | ︙ | |||
1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 | "CREATE TABLE t4(x, y);" "CREATE TABLE t5(x, y);" "CREATE TABLE t6(x, y);" "CREATE TABLE t7(x, y);" "CREATE TABLE t8(x, y);" "CREATE TABLE t9(x, y);" ); setstoptime(&err, nMs); sqlite3_enable_shared_cache(1); launch_thread(&err, &threads, dynamic_triggers_2, 0); launch_thread(&err, &threads, dynamic_triggers_2, 0); | > | 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 | "CREATE TABLE t4(x, y);" "CREATE TABLE t5(x, y);" "CREATE TABLE t6(x, y);" "CREATE TABLE t7(x, y);" "CREATE TABLE t8(x, y);" "CREATE TABLE t9(x, y);" ); closedb(&err, &db); setstoptime(&err, nMs); sqlite3_enable_shared_cache(1); launch_thread(&err, &threads, dynamic_triggers_2, 0); launch_thread(&err, &threads, dynamic_triggers_2, 0); |
︙ | ︙ | |||
1442 1443 1444 1445 1446 1447 1448 | { lookaside1, "lookaside1", 10000 }, { vacuum1, "vacuum1", 10000 }, { stress1, "stress1", 10000 }, { stress2, "stress2", 10000 }, }; int i; | < < < < < < < < < < < < < > | > > > > > | | | | < | | 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 | { lookaside1, "lookaside1", 10000 }, { vacuum1, "vacuum1", 10000 }, { stress1, "stress1", 10000 }, { stress2, "stress2", 10000 }, }; int i; int bTestfound = 0; sqlite3_config(SQLITE_CONFIG_MULTITHREAD); sqlite3_config(SQLITE_CONFIG_MULTITHREAD); for(i=0; i<sizeof(aTest)/sizeof(aTest[0]); i++){ char const *z = aTest[i].zTest; if( argc>1 ){ int iArg; for(iArg=1; iArg<argc; iArg++){ if( 0==sqlite3_strglob(argv[iArg], z) ) break; } if( iArg==argc ) continue; } printf("Running %s for %d seconds...\n", z, aTest[i].nMs/1000); aTest[i].xTest(aTest[i].nMs); bTestfound++; } if( bTestfound==0 ) goto usage; printf("Total of %d errors across all tests\n", nGlobalErr); return (nGlobalErr>0 ? 255 : 0); usage: printf("Usage: %s [testname|testprefix*]...\n", argv[0]); printf("Available tests are:\n"); for(i=0; i<sizeof(aTest)/sizeof(aTest[0]); i++){ printf(" %s\n", aTest[i].zTest); } return 254; } |