Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Change OS_UNIX to SQLITE_OS_UNIX in test_thread.c. Modify notify2.test to print out its timings in addition to reporting success or failure. (CVS 6382) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
940d72d2bae95ddd1aea9b6342417973 |
User & Date: | drh 2009-03-24 18:42:16.000 |
Context
2009-03-25
| ||
01:06 | Use fdatasync() only on linux, unless -Dfdatasync=fdatasync is set at compilation time. (CVS 6383) (check-in: cbf2ca4cc4 user: drh tags: trunk) | |
2009-03-24
| ||
18:42 | Change OS_UNIX to SQLITE_OS_UNIX in test_thread.c. Modify notify2.test to print out its timings in addition to reporting success or failure. (CVS 6382) (check-in: 940d72d2ba user: drh tags: trunk) | |
17:43 | Get the OOM tester in async2.test working again. (CVS 6381) (check-in: f398a2d1b0 user: drh tags: trunk) | |
Changes
Changes to src/test_thread.c.
︙ | ︙ | |||
10 11 12 13 14 15 16 | ** ************************************************************************* ** ** This file contains the implementation of some Tcl commands used to ** test that sqlite3 database handles may be concurrently accessed by ** multiple threads. Right now this only works on unix. ** | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | ** ************************************************************************* ** ** This file contains the implementation of some Tcl commands used to ** test that sqlite3 database handles may be concurrently accessed by ** multiple threads. Right now this only works on unix. ** ** $Id: test_thread.c,v 1.14 2009/03/24 18:42:16 drh Exp $ */ #include "sqliteInt.h" #include <tcl.h> #if SQLITE_THREADSAFE |
︙ | ︙ | |||
111 112 113 114 115 116 117 | int rc; SqlThread *p = (SqlThread *)pSqlThread; extern int Sqlitetest_mutex_Init(Tcl_Interp*); interp = Tcl_CreateInterp(); Tcl_CreateObjCommand(interp, "clock_seconds", clock_seconds_proc, 0, 0); Tcl_CreateObjCommand(interp, "sqlthread", sqlthread_proc, pSqlThread, 0); | | | 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | int rc; SqlThread *p = (SqlThread *)pSqlThread; extern int Sqlitetest_mutex_Init(Tcl_Interp*); interp = Tcl_CreateInterp(); Tcl_CreateObjCommand(interp, "clock_seconds", clock_seconds_proc, 0, 0); Tcl_CreateObjCommand(interp, "sqlthread", sqlthread_proc, pSqlThread, 0); #if defined(SQLITE_OS_UNIX) && defined(SQLITE_ENABLE_UNLOCK_NOTIFY) Tcl_CreateObjCommand(interp, "sqlite3_blocking_step", blocking_step_proc,0,0); Tcl_CreateObjCommand(interp, "sqlite3_blocking_prepare_v2", blocking_prepare_v2_proc, (void *)1, 0); Tcl_CreateObjCommand(interp, "sqlite3_nonblocking_prepare_v2", blocking_prepare_v2_proc, 0, 0); #endif Sqlitetest1_Init(interp); |
︙ | ︙ | |||
384 385 386 387 388 389 390 | ** The source code for the C functions sqlite3_blocking_step(), ** blocking_step_notify() and the structure UnlockNotification is ** automatically extracted from this file and used as part of the ** documentation for the sqlite3_unlock_notify() API function. This ** should be considered if these functions are to be extended (i.e. to ** support windows) in the future. */ | | | 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 | ** The source code for the C functions sqlite3_blocking_step(), ** blocking_step_notify() and the structure UnlockNotification is ** automatically extracted from this file and used as part of the ** documentation for the sqlite3_unlock_notify() API function. This ** should be considered if these functions are to be extended (i.e. to ** support windows) in the future. */ #if defined(SQLITE_OS_UNIX) && defined(SQLITE_ENABLE_UNLOCK_NOTIFY) /* BEGIN_SQLITE_BLOCKING_STEP */ /* This example uses the pthreads API */ #include <pthread.h> /* ** A pointer to an instance of this structure is passed as the user-context |
︙ | ︙ | |||
606 607 608 609 610 611 612 | /* ** Register commands with the TCL interpreter. */ int SqlitetestThread_Init(Tcl_Interp *interp){ Tcl_CreateObjCommand(interp, "sqlthread", sqlthread_proc, 0, 0); Tcl_CreateObjCommand(interp, "clock_seconds", clock_seconds_proc, 0, 0); | | | 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 | /* ** Register commands with the TCL interpreter. */ int SqlitetestThread_Init(Tcl_Interp *interp){ Tcl_CreateObjCommand(interp, "sqlthread", sqlthread_proc, 0, 0); Tcl_CreateObjCommand(interp, "clock_seconds", clock_seconds_proc, 0, 0); #if defined(SQLITE_OS_UNIX) && defined(SQLITE_ENABLE_UNLOCK_NOTIFY) Tcl_CreateObjCommand(interp, "sqlite3_blocking_step", blocking_step_proc,0,0); Tcl_CreateObjCommand(interp, "sqlite3_blocking_prepare_v2", blocking_prepare_v2_proc, (void *)1, 0); Tcl_CreateObjCommand(interp, "sqlite3_nonblocking_prepare_v2", blocking_prepare_v2_proc, 0, 0); #endif return TCL_OK; } #else int SqlitetestThread_Init(Tcl_Interp *interp){ return TCL_OK; } #endif |
Changes to test/notify2.test.
1 2 3 4 5 6 7 8 9 10 11 | # 2009 March 04 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # 2009 March 04 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # # $Id: notify2.test,v 1.4 2009/03/24 18:42:16 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # The tests in this file test the sqlite3_blocking_step() function in # test_thread.c. sqlite3_blocking_step() is not an SQLite API function, # it is just a demonstration of how the sqlite3_unlock_notify() function |
︙ | ︙ | |||
45 46 47 48 49 50 51 | } db close set ::enable_shared_cache [sqlite3_enable_shared_cache 1] source $testdir/thread_common.tcl # Number of threads to run simultaneously. # | | | 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | } db close set ::enable_shared_cache [sqlite3_enable_shared_cache 1] source $testdir/thread_common.tcl # Number of threads to run simultaneously. # set nThread 6 set nSecond 5 # The Tcl script executed by each of the $nThread threads used by this test. # set ThreadProgram { # Proc used by threads to execute SQL. |
︙ | ︙ | |||
223 224 225 226 227 228 229 230 231 232 233 234 235 | + (SELECT max(a) FROM t2) + (SELECT max(a) FROM t3) }] db close } {} } do_test notify2-3 { expr {$anWrite(sqlite3_blocking_step) > $anWrite(sqlite3_step)} } {1} sqlite3_enable_shared_cache $::enable_shared_cache finish_test | > > > > > > > < | 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 | + (SELECT max(a) FROM t2) + (SELECT max(a) FROM t3) }] db close } {} } # The following tests checks to make sure sqlite3_blocking_step() is # faster than sqlite3_step(). blocking_step() is always faster on # multi-core and is usually faster on single-core. But sometimes, by # chance, step() will be faster on a single core, in which case the # following test will fail. # puts [array get anWrite] do_test notify2-3 { expr {$anWrite(sqlite3_blocking_step) > $anWrite(sqlite3_step)} } {1} sqlite3_enable_shared_cache $::enable_shared_cache finish_test |