⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mutex1.test

📁 最新的sqlite3.6.2源代码
💻 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 + -