| OLD | NEW |
| 1 # 2008 June 17 | 1 # 2008 June 17 |
| 2 # | 2 # |
| 3 # The author disclaims copyright to this source code. In place of | 3 # The author disclaims copyright to this source code. In place of |
| 4 # a legal notice, here is a blessing: | 4 # a legal notice, here is a blessing: |
| 5 # | 5 # |
| 6 # May you do good and not evil. | 6 # May you do good and not evil. |
| 7 # May you find forgiveness for yourself and forgive others. | 7 # May you find forgiveness for yourself and forgive others. |
| 8 # May you share freely, never taking more than you give. | 8 # May you share freely, never taking more than you give. |
| 9 # | 9 # |
| 10 #*********************************************************************** | 10 #*********************************************************************** |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 upvar $varname var | 30 upvar $varname var |
| 31 set var(total) 0 | 31 set var(total) 0 |
| 32 foreach {name value} [read_mutex_counters] { | 32 foreach {name value} [read_mutex_counters] { |
| 33 set var($name) $value | 33 set var($name) $value |
| 34 incr var(total) $value | 34 incr var(total) $value |
| 35 } | 35 } |
| 36 } | 36 } |
| 37 | 37 |
| 38 #------------------------------------------------------------------------- | 38 #------------------------------------------------------------------------- |
| 39 # Tests mutex1-1.* test that sqlite3_config() returns SQLITE_MISUSE if | 39 # Tests mutex1-1.* test that sqlite3_config() returns SQLITE_MISUSE if |
| 40 # is called at the wrong time. And that the first time sqlite3_initialize | 40 # is called at the wrong time. And that the first time sqlite3_initialize |
| 41 # is called it obtains the 'static_master' mutex 3 times and a recursive | 41 # is called it obtains the 'static_master' mutex 3 times and a recursive |
| 42 # mutex (sqlite3Config.pInitMutex) twice. Subsequent calls are no-ops | 42 # mutex (sqlite3Config.pInitMutex) twice. Subsequent calls are no-ops |
| 43 # that do not require any mutexes. | 43 # that do not require any mutexes. |
| 44 # | 44 # |
| 45 do_test mutex1-1.0 { | 45 do_test mutex1-1.0 { |
| 46 install_mutex_counters 1 | 46 install_mutex_counters 1 |
| 47 } {SQLITE_MISUSE} | 47 } {SQLITE_MISUSE} |
| 48 | 48 |
| 49 do_test mutex1-1.1 { | 49 do_test mutex1-1.1 { |
| 50 db close | 50 db close |
| 51 install_mutex_counters 1 | 51 install_mutex_counters 1 |
| 52 } {SQLITE_MISUSE} | 52 } {SQLITE_MISUSE} |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 95 # | 95 # |
| 96 # * Serialized mode, | 96 # * Serialized mode, |
| 97 # * Multi-threaded mode, | 97 # * Multi-threaded mode, |
| 98 # * Single-threaded mode. | 98 # * Single-threaded mode. |
| 99 # | 99 # |
| 100 ifcapable threadsafe&&shared_cache { | 100 ifcapable threadsafe&&shared_cache { |
| 101 set enable_shared_cache [sqlite3_enable_shared_cache 1] | 101 set enable_shared_cache [sqlite3_enable_shared_cache 1] |
| 102 foreach {mode mutexes} { | 102 foreach {mode mutexes} { |
| 103 singlethread {} | 103 singlethread {} |
| 104 multithread { | 104 multithread { |
| 105 fast static_lru static_master static_mem static_open static_prng | 105 fast static_app1 static_app2 static_app3 |
| 106 static_pmem | 106 static_lru static_master static_mem static_open |
| 107 static_prng static_pmem static_vfs1 static_vfs2 |
| 108 static_vfs3 |
| 107 } | 109 } |
| 108 serialized { | 110 serialized { |
| 109 fast recursive static_lru static_master static_mem static_open | 111 fast recursive static_app1 static_app2 |
| 110 static_prng static_pmem | 112 static_app3 static_lru static_master static_mem |
| 113 static_open static_prng static_pmem static_vfs1 |
| 114 static_vfs2 static_vfs3 |
| 111 } | 115 } |
| 112 } { | 116 } { |
| 113 | 117 |
| 114 do_test mutex1.2.$mode.1 { | 118 do_test mutex1.2.$mode.1 { |
| 115 catch {db close} | 119 catch {db close} |
| 116 sqlite3_shutdown | 120 sqlite3_shutdown |
| 117 sqlite3_config $mode | 121 sqlite3_config $mode |
| 118 } SQLITE_OK | 122 } SQLITE_OK |
| 119 | 123 |
| 120 do_test mutex1.2.$mode.2 { | 124 do_test mutex1.2.$mode.2 { |
| 121 sqlite3_initialize | 125 sqlite3_initialize |
| 122 clear_mutex_counters | 126 clear_mutex_counters |
| 123 sqlite3 db test.db -nomutex 0 -fullmutex 0 | 127 sqlite3 db test.db -nomutex 0 -fullmutex 0 |
| 124 catchsql { CREATE TABLE abc(a, b, c) } | 128 catchsql { CREATE TABLE abc(a, b, c) } |
| 125 db eval { | 129 db eval { |
| 126 INSERT INTO abc VALUES(1, 2, 3); | 130 INSERT INTO abc VALUES(1, 2, 3); |
| 127 } | 131 } |
| 128 } {} | 132 } {} |
| 129 ifcapable !memorymanage { | 133 ifcapable !memorymanage { |
| 130 regsub { static_lru} $mutexes {} mutexes | 134 regsub { static_lru} $mutexes {} mutexes |
| 131 } | 135 } |
| 132 do_test mutex1.2.$mode.3 { | 136 if {$mode ne "singlethread"} { |
| 137 do_test mutex1.2.$mode.3 { |
| 138 # |
| 139 # NOTE: Make sure all the app and vfs mutexes get used. |
| 140 # |
| 141 enter_static_mutex static_app1 |
| 142 leave_static_mutex static_app1 |
| 143 enter_static_mutex static_app2 |
| 144 leave_static_mutex static_app2 |
| 145 enter_static_mutex static_app3 |
| 146 leave_static_mutex static_app3 |
| 147 enter_static_mutex static_vfs1 |
| 148 leave_static_mutex static_vfs1 |
| 149 enter_static_mutex static_vfs2 |
| 150 leave_static_mutex static_vfs2 |
| 151 enter_static_mutex static_vfs3 |
| 152 leave_static_mutex static_vfs3 |
| 153 } {} |
| 154 } |
| 155 do_test mutex1.2.$mode.4 { |
| 133 mutex_counters counters | 156 mutex_counters counters |
| 134 | 157 |
| 135 set res [list] | 158 set res [list] |
| 136 foreach {key value} [array get counters] { | 159 foreach {key value} [array get counters] { |
| 137 if {$key ne "total" && $value > 0} { | 160 if {$key ne "total" && $value > 0} { |
| 138 lappend res $key | 161 lappend res $key |
| 139 } | 162 } |
| 140 } | 163 } |
| 141 lsort $res | 164 lsort $res |
| 142 } [lsort $mutexes] | 165 } [lsort $mutexes] |
| 143 } | 166 } |
| 144 sqlite3_enable_shared_cache $enable_shared_cache | 167 sqlite3_enable_shared_cache $enable_shared_cache |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 do_test mutex1-X { | 206 do_test mutex1-X { |
| 184 catch {db close} | 207 catch {db close} |
| 185 sqlite3_shutdown | 208 sqlite3_shutdown |
| 186 clear_mutex_counters | 209 clear_mutex_counters |
| 187 install_mutex_counters 0 | 210 install_mutex_counters 0 |
| 188 sqlite3_initialize | 211 sqlite3_initialize |
| 189 } {SQLITE_OK} | 212 } {SQLITE_OK} |
| 190 | 213 |
| 191 autoinstall_test_functions | 214 autoinstall_test_functions |
| 192 finish_test | 215 finish_test |
| OLD | NEW |