📄 mutex1.test
字号:
# 2008 June 17## 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: mutex1.test,v 1.13 2008/08/22 16:22:17 danielk1977 Exp $set testdir [file dirname $argv0]source $testdir/tester.tclif {[info exists tester_do_binarylog]} { finish_test return}sqlite3_reset_auto_extensionproc mutex_counters {varname} { upvar $varname var set var(total) 0 foreach {name value} [read_mutex_counters] { set var($name) $value incr var(total) $value }}#-------------------------------------------------------------------------# Tests mutex1-1.* test that sqlite3_config() returns SQLITE_MISUSE if# is called at the wrong time. And that the first time sqlite3_initialize # is called it obtains the 'static_master' mutex 3 times and a recursive# mutex (sqlite3Config.pInitMutex) twice. Subsequent calls are no-ops # that do not require any mutexes.#do_test mutex1-1.0 { install_mutex_counters 1} {SQLITE_MISUSE}do_test mutex1-1.1 { db close install_mutex_counters 1} {SQLITE_MISUSE}do_test mutex1-1.2 { sqlite3_shutdown install_mutex_counters 1} {SQLITE_OK}do_test mutex1-1.3 { install_mutex_counters 0} {SQLITE_OK}do_test mutex1-1.4 { install_mutex_counters 1} {SQLITE_OK}do_test mutex1-1.5 { mutex_counters counters set counters(total)} {0}do_test mutex1-1.6 { sqlite3_initialize} {SQLITE_OK}do_test mutex1-1.7 { mutex_counters counters # list $counters(total) $counters(static_master) expr {$counters(total)>0}} {1}do_test mutex1-1.8 { clear_mutex_counters sqlite3_initialize} {SQLITE_OK}do_test mutex1-1.9 { mutex_counters counters list $counters(total) $counters(static_master)} {0 0}#-------------------------------------------------------------------------# Tests mutex1-2.* test the three thread-safety related modes that# can be selected using sqlite3_config:## * Serialized mode,# * Multi-threaded mode,# * Single-threaded mode.#set enable_shared_cache [sqlite3_enable_shared_cache 1]ifcapable threadsafe { foreach {mode mutexes} { singlethread {} multithread {fast static_lru static_master static_mem static_prng } serialized {fast recursive static_lru static_master static_mem static_prng } } { do_test mutex1.2.$mode.1 { catch {db close} sqlite3_shutdown sqlite3_config $mode } SQLITE_OK do_test mutex1.2.$mode.2 { sqlite3_initialize clear_mutex_counters sqlite3 db test.db catchsql { CREATE TABLE abc(a, b, c) } db eval { INSERT INTO abc VALUES(1, 2, 3); } } {} do_test mutex1.2.$mode.3 { mutex_counters counters set res [list] foreach {key value} [array get counters] { if {$key ne "total" && $value > 0} { lappend res $key } } lsort $res } [lsort $mutexes] }}sqlite3_enable_shared_cache $enable_shared_cache# Open and use a connection in "nomutex" mode. Test that no recursive# mutexes are obtained.ifcapable threadsafe { do_test mutex1.3.1 { catch {db close} clear_mutex_counters sqlite3 db test.db -nomutex 1 execsql { SELECT * FROM abc } } {1 2 3 1 2 3 1 2 3} do_test mutex1.3.2 { mutex_counters counters set counters(recursive) } {0}}do_test mutex1-X { catch {db close} sqlite3_shutdown clear_mutex_counters install_mutex_counters 0 sqlite3_initialize} {SQLITE_OK}autoinstall_test_functionsfinish_test
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -