OLD | NEW |
1 # 2010 September 1 | 1 # 2010 September 1 |
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 #*********************************************************************** |
11 # | 11 # |
12 | 12 |
13 set testdir [file dirname $argv0] | 13 set testdir [file dirname $argv0] |
14 source $testdir/tester.tcl | 14 source $testdir/tester.tcl |
| 15 |
| 16 # If SQLITE_CURDIR is not defined, omit this file. |
| 17 ifcapable !curdir { |
| 18 finish_test |
| 19 return |
| 20 } |
| 21 |
15 source $testdir/malloc_common.tcl | 22 source $testdir/malloc_common.tcl |
16 | 23 |
| 24 unset -nocomplain defaultVfs |
| 25 set defaultVfs [file_control_vfsname db] |
17 db close | 26 db close |
18 | 27 |
19 do_test quota-1.1 { sqlite3_quota_initialize nosuchvfs 1 } {SQLITE_ERROR} | 28 do_test quota-1.1 { sqlite3_quota_initialize nosuchvfs 1 } {SQLITE_ERROR} |
20 do_test quota-1.2 { sqlite3_quota_initialize "" 1 } {SQLITE_OK} | 29 do_test quota-1.2 { sqlite3_quota_initialize "" 1 } {SQLITE_OK} |
21 do_test quota-1.3 { sqlite3_quota_initialize "" 1 } {SQLITE_MISUSE} | 30 do_test quota-1.3 { sqlite3_quota_initialize "" 1 } {SQLITE_MISUSE} |
22 do_test quota-1.4 { sqlite3_quota_shutdown } {SQLITE_OK} | 31 do_test quota-1.4 { sqlite3_quota_shutdown } {SQLITE_OK} |
23 | 32 |
24 do_test quota-1.5 { sqlite3_quota_initialize "" 0 } {SQLITE_OK} | 33 do_test quota-1.5 { sqlite3_quota_initialize "" 0 } {SQLITE_OK} |
25 do_test quota-1.6 { sqlite3_quota_shutdown } {SQLITE_OK} | 34 do_test quota-1.6 { sqlite3_quota_shutdown } {SQLITE_OK} |
26 do_test quota-1.7 { sqlite3_quota_initialize "" 1 } {SQLITE_OK} | 35 do_test quota-1.7 { sqlite3_quota_initialize "" 1 } {SQLITE_OK} |
(...skipping 14 matching lines...) Expand all Loading... |
41 # quota-2.3.*: Open and close a db that is not part of any quota group. At | 50 # quota-2.3.*: Open and close a db that is not part of any quota group. At |
42 # one point this was causing mutex refs to be leaked. | 51 # one point this was causing mutex refs to be leaked. |
43 # | 52 # |
44 # quota-2.4.*: Try to shutdown the quota system before closing the db | 53 # quota-2.4.*: Try to shutdown the quota system before closing the db |
45 # file. Check that this fails and the quota system still works | 54 # file. Check that this fails and the quota system still works |
46 # afterwards. Then close the database and successfully shut | 55 # afterwards. Then close the database and successfully shut |
47 # down the quota system. | 56 # down the quota system. |
48 # | 57 # |
49 sqlite3_quota_initialize "" 1 | 58 sqlite3_quota_initialize "" 1 |
50 | 59 |
| 60 unset -nocomplain quota_request_ok |
51 proc quota_check {filename limitvar size} { | 61 proc quota_check {filename limitvar size} { |
52 upvar $limitvar limit | 62 upvar $limitvar limit |
53 | 63 |
54 lappend ::quota [set limit] $size | 64 lappend ::quota [set limit] $size |
55 if {[info exists ::quota_request_ok]} { set limit $size } | 65 if {[info exists ::quota_request_ok]} { set limit $size } |
56 } | 66 } |
57 | 67 |
58 do_test quota-2.1.1 { | 68 do_test quota-2.1.1 { |
59 sqlite3_quota_set *test.db 4096 quota_check | 69 sqlite3_quota_set *test.db 4096 quota_check |
60 } {SQLITE_OK} | 70 } {SQLITE_OK} |
61 do_test quota-2.1.2 { | 71 do_test quota-2.1.2 { |
62 sqlite3 db test.db | 72 sqlite3 db test.db |
63 execsql { | 73 execsql { |
64 PRAGMA page_size=1024; | 74 PRAGMA page_size=1024; |
65 PRAGMA auto_vacuum=OFF; | 75 PRAGMA auto_vacuum=OFF; |
66 PRAGMA journal_mode=DELETE; | 76 PRAGMA journal_mode=DELETE; |
67 } | 77 } |
68 set ::quota [list] | 78 set ::quota [list] |
69 execsql { | 79 execsql { |
70 CREATE TABLE t1(a, b); | 80 CREATE TABLE t1(a, b); |
71 INSERT INTO t1 VALUES(1, randomblob(1100)); | 81 INSERT INTO t1 VALUES(1, randomblob(1100)); |
72 INSERT INTO t1 VALUES(2, randomblob(1100)); | 82 INSERT INTO t1 VALUES(2, randomblob(1100)); |
73 } | 83 } |
74 set ::quota | 84 set ::quota |
75 } {} | 85 } {} |
| 86 do_test quota-2.1.2.1 { |
| 87 file_control_vfsname db |
| 88 } quota/$defaultVfs |
76 do_test quota-2.1.3 { file size test.db } {4096} | 89 do_test quota-2.1.3 { file size test.db } {4096} |
77 do_test quota-2.1.4 { | 90 do_test quota-2.1.4 { |
78 catchsql { INSERT INTO t1 VALUES(3, randomblob(1100)) } | 91 catchsql { INSERT INTO t1 VALUES(3, randomblob(1100)) } |
79 } {1 {database or disk is full}} | 92 } {1 {database or disk is full}} |
80 do_test quota-2.1.5 { set ::quota } {4096 5120} | 93 do_test quota-2.1.5 { set ::quota } {4096 5120} |
81 | 94 |
82 set ::quota_request_ok 1 | 95 set ::quota_request_ok 1 |
83 set ::quota [list] | 96 set ::quota [list] |
84 do_test quota-2.2.1 { | 97 do_test quota-2.2.1 { |
85 execsql { INSERT INTO t1 VALUES(3, randomblob(1100)) } | 98 execsql { INSERT INTO t1 VALUES(3, randomblob(1100)) } |
(...skipping 30 matching lines...) Expand all Loading... |
116 # quota-3.2.*: Two connections to each of several database files (that | 129 # quota-3.2.*: Two connections to each of several database files (that |
117 # are in the same quota group). | 130 # are in the same quota group). |
118 # | 131 # |
119 proc quota_check {filename limitvar size} { | 132 proc quota_check {filename limitvar size} { |
120 upvar $limitvar limit | 133 upvar $limitvar limit |
121 lappend ::quota [set limit] $size | 134 lappend ::quota [set limit] $size |
122 if {[info exists ::quota_request_ok]} { set limit $size } | 135 if {[info exists ::quota_request_ok]} { set limit $size } |
123 } | 136 } |
124 | 137 |
125 do_test quota-3.1.1 { | 138 do_test quota-3.1.1 { |
126 file delete -force test.db | 139 forcedelete test.db |
127 sqlite3_quota_initialize "" 1 | 140 sqlite3_quota_initialize "" 1 |
128 sqlite3_quota_set *test.db 4096 quota_check | 141 sqlite3_quota_set *test.db 4096 quota_check |
129 } {SQLITE_OK} | 142 } {SQLITE_OK} |
130 do_test quota-3.1.2 { | 143 do_test quota-3.1.2 { |
131 sqlite3 db test.db | 144 sqlite3 db test.db |
132 execsql { | 145 execsql { |
133 PRAGMA page_size = 1024; | 146 PRAGMA page_size = 1024; |
134 PRAGMA journal_mode = delete; | 147 PRAGMA journal_mode = delete; |
135 PRAGMA auto_vacuum = off; | 148 PRAGMA auto_vacuum = off; |
136 CREATE TABLE t1(a PRIMARY KEY, b); | 149 CREATE TABLE t1(a PRIMARY KEY, b); |
(...skipping 14 matching lines...) Expand all Loading... |
151 set ::quota_request_ok 1 | 164 set ::quota_request_ok 1 |
152 execsql { CREATE TABLE t3(a, b) } | 165 execsql { CREATE TABLE t3(a, b) } |
153 } {} | 166 } {} |
154 do_test quota-3.1.6 { | 167 do_test quota-3.1.6 { |
155 db close | 168 db close |
156 db2 close | 169 db2 close |
157 sqlite3_quota_set *test.db 0 {} | 170 sqlite3_quota_set *test.db 0 {} |
158 } {SQLITE_OK} | 171 } {SQLITE_OK} |
159 | 172 |
160 do_test quota-3.2.1 { | 173 do_test quota-3.2.1 { |
161 file delete force test.db test2.db | 174 delete_file force test.db test2.db |
162 | 175 |
163 sqlite3_quota_set * 4096 {} | 176 sqlite3_quota_set * 4096 {} |
164 sqlite3 db1a test.db | 177 sqlite3 db1a test.db |
165 sqlite3 db2a test2.db | 178 sqlite3 db2a test2.db |
166 | 179 |
167 foreach db {db1a db2a} { | 180 foreach db {db1a db2a} { |
168 execsql { | 181 execsql { |
169 PRAGMA page_size = 1024; | 182 PRAGMA page_size = 1024; |
170 PRAGMA journal_mode = delete; | 183 PRAGMA journal_mode = delete; |
171 PRAGMA auto_vacuum = off; | 184 PRAGMA auto_vacuum = off; |
(...skipping 23 matching lines...) Expand all Loading... |
195 do_test quota-3.2.8 { | 208 do_test quota-3.2.8 { |
196 catchsql { INSERT INTO t1 VALUES(randomblob(500), randomblob(500)) } db2a | 209 catchsql { INSERT INTO t1 VALUES(randomblob(500), randomblob(500)) } db2a |
197 } {1 {database or disk is full}} | 210 } {1 {database or disk is full}} |
198 do_test quota-3.2.9 { | 211 do_test quota-3.2.9 { |
199 catchsql { INSERT INTO t1 VALUES(randomblob(500), randomblob(500)) } db2b | 212 catchsql { INSERT INTO t1 VALUES(randomblob(500), randomblob(500)) } db2b |
200 } {1 {database or disk is full}} | 213 } {1 {database or disk is full}} |
201 | 214 |
202 set ::quota [list] | 215 set ::quota [list] |
203 proc quota_callback {file limitvar size} { | 216 proc quota_callback {file limitvar size} { |
204 upvar $limitvar limit | 217 upvar $limitvar limit |
| 218 if {$::tcl_platform(platform)=="windows"} { |
| 219 set file [ lindex [string map {\\ \/} $file] 0 ] |
| 220 } |
205 lappend ::quota $file $size | 221 lappend ::quota $file $size |
206 set limit 0 | 222 set limit 0 |
207 } | 223 } |
208 sqlite3_quota_set * 4096 quota_callback | 224 sqlite3_quota_set * 4096 quota_callback |
209 do_test quota-3.3.1 { | 225 do_test quota-3.3.1 { |
210 execsql { INSERT INTO t1 VALUES(randomblob(500), randomblob(500)) } db1a | 226 execsql { INSERT INTO t1 VALUES(randomblob(500), randomblob(500)) } db1a |
211 execsql { INSERT INTO t1 VALUES(randomblob(500), randomblob(500)) } db1b | 227 execsql { INSERT INTO t1 VALUES(randomblob(500), randomblob(500)) } db1b |
212 execsql { INSERT INTO t1 VALUES(randomblob(500), randomblob(500)) } db2a | 228 execsql { INSERT INTO t1 VALUES(randomblob(500), randomblob(500)) } db2a |
213 execsql { INSERT INTO t1 VALUES(randomblob(500), randomblob(500)) } db2b | 229 execsql { INSERT INTO t1 VALUES(randomblob(500), randomblob(500)) } db2b |
214 set ::quota | 230 set ::quota |
215 } [list [file join [pwd] test.db] 5120] | 231 } [list [file join [get_pwd] test.db] 5120] |
216 | 232 |
217 do_test quota-3.2.X { | 233 do_test quota-3.2.X { |
218 foreach db {db1a db2a db2b db1b} { catch { $db close } } | 234 foreach db {db1a db2a db2b db1b} { catch { $db close } } |
219 sqlite3_quota_set * 0 {} | 235 sqlite3_quota_set * 0 {} |
220 } {SQLITE_OK} | 236 } {SQLITE_OK} |
221 | 237 |
222 #------------------------------------------------------------------------- | 238 #------------------------------------------------------------------------- |
223 # Quotas are deleted when unused and when there limit is set to zero | 239 # Quotas are deleted when unused and when their limit is set to zero |
224 # | 240 # |
225 | 241 |
226 # Return a list of all currently defined quotas. Each quota is identified | 242 # Return a list of all currently defined quotas. Each quota is identified |
227 # by its pattern. | 243 # by its pattern. |
228 proc quota_list {} { | 244 proc quota_list {} { |
229 set allq {} | 245 set allq {} |
230 foreach q [sqlite3_quota_dump] { | 246 foreach q [sqlite3_quota_dump] { |
231 lappend allq [lindex $q 0] | 247 lappend allq [lindex $q 0] |
232 } | 248 } |
233 return [lsort $allq] | 249 return [lsort $allq] |
234 } | 250 } |
| 251 proc quota_size {name} { |
| 252 set allq {} |
| 253 foreach q [sqlite3_quota_dump] { |
| 254 if {[lindex $q 0]==$name} {return [lindex $q 2]} |
| 255 } |
| 256 return 0 |
| 257 } |
235 | 258 |
236 do_test quota-4.1.1 { | 259 do_test quota-4.1.1 { |
237 sqlite3_quota_set *test.db 0 {} | 260 sqlite3_quota_set *test.db 0 {} |
238 quota_list | 261 quota_list |
239 } {} | 262 } {} |
240 do_test quota-4.1.2 { | 263 do_test quota-4.1.2 { |
241 sqlite3_quota_set *test.db 4096 {} | 264 sqlite3_quota_set *test.db 4096 {} |
242 quota_list | 265 quota_list |
243 } {*test.db} | 266 } {*test.db} |
244 do_test quota-4.1.3 { | 267 do_test quota-4.1.3 { |
245 sqlite3_quota_set *test2.db 0 {} | 268 sqlite3_quota_set *test2.db 0 {} |
246 quota_list | 269 quota_list |
247 } {*test.db} | 270 } {*test.db} |
248 do_test quota-4.1.4 { | 271 do_test quota-4.1.4 { |
249 sqlite3_quota_set *test2.db 100000 {} | 272 sqlite3_quota_set *test2.db 100000 {} |
250 quota_list | 273 quota_list |
251 } {*test.db *test2.db} | 274 } {*test.db *test2.db} |
252 do_test quota-4.1.5 { | 275 do_test quota-4.1.5 { |
253 sqlite3_quota_set *test.db 0 {} | 276 sqlite3_quota_set *test.db 0 {} |
254 quota_list | 277 quota_list |
255 } {*test2.db} | 278 } {*test2.db} |
256 do_test quota-4.1.6 { | 279 do_test quota-4.1.6 { |
257 file delete -force test2.db test2.db-journal test2.db-wal | 280 forcedelete test2.db test2.db-journal test2.db-wal |
258 sqlite3 db test2.db | 281 sqlite3 db test2.db |
259 db eval {CREATE TABLE t2(x); INSERT INTO t2 VALUES('tab-t2');} | 282 db eval {CREATE TABLE t2(x); INSERT INTO t2 VALUES('tab-t2');} |
260 quota_list | 283 quota_list |
261 } {*test2.db} | 284 } {*test2.db} |
262 do_test quota-4.1.7 { | 285 do_test quota-4.1.7 { |
263 catchsql {INSERT INTO t2 VALUES(zeroblob(200000))} | 286 catchsql {INSERT INTO t2 VALUES(zeroblob(200000))} |
264 } {1 {database or disk is full}} | 287 } {1 {database or disk is full}} |
265 do_test quota-4.1.8 { | 288 do_test quota-4.1.8 { |
266 sqlite3 db2 test2.db | 289 sqlite3 db2 test2.db |
267 db2 eval {SELECT * FROM t2} | 290 db2 eval {SELECT * FROM t2} |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
319 } {} | 342 } {} |
320 | 343 |
321 do_test quota-4.3.1 { | 344 do_test quota-4.3.1 { |
322 sqlite3_quota_set A 1000 quota_callback | 345 sqlite3_quota_set A 1000 quota_callback |
323 sqlite3 db A | 346 sqlite3 db A |
324 sqlite3_quota_set A 0 quota_callback | 347 sqlite3_quota_set A 0 quota_callback |
325 db close | 348 db close |
326 quota_list | 349 quota_list |
327 } {} | 350 } {} |
328 | 351 |
| 352 unset -nocomplain quotagroup |
| 353 if {$tcl_platform(platform)=="windows"} { |
| 354 set quotagroup *\\quota-test-A?.db |
| 355 } else { |
| 356 set quotagroup */quota-test-A?.db |
| 357 } |
| 358 foreach file [glob -nocomplain quota-test-A*] { |
| 359 forcedelete $file |
| 360 } |
329 do_test quota-4.4.1 { | 361 do_test quota-4.4.1 { |
| 362 set ::quota {} |
| 363 sqlite3_quota_set $::quotagroup 10000 quota_callback |
| 364 forcedelete ./quota-test-A1.db ./quota-test-A2.db |
| 365 sqlite3 db ./quota-test-A1.db |
| 366 db eval { |
| 367 CREATE TABLE t1(x); |
| 368 INSERT INTO t1 VALUES(randomblob(5000)); |
| 369 } |
| 370 quota_list |
| 371 } [list $quotagroup] |
| 372 do_test quota-4.4.2 { |
| 373 expr {$::quota==""} |
| 374 } {1} |
| 375 do_test quota-4.4.3 { |
| 376 db close |
| 377 sqlite3 db ./quota-test-A2.db |
| 378 db eval { |
| 379 CREATE TABLE t1(x); |
| 380 INSERT INTO t1 VALUES(randomblob(5000)); |
| 381 } |
| 382 quota_list |
| 383 } [list $quotagroup] |
| 384 do_test quota-4.4.4 { |
| 385 expr {$::quota!=""} |
| 386 } {1} |
| 387 do_test quota-4.4.5 { |
| 388 db close |
| 389 sqlite3_quota_set $::quotagroup 0 {} |
| 390 sqlite3_quota_dump |
| 391 } {} |
| 392 do_test quota-4.4.6 { |
| 393 sqlite3_quota_set $quotagroup 10000 quota_callback |
| 394 sqlite3 db quota-test-A1.db |
| 395 db eval {SELECT count(*) FROM sqlite_master} |
| 396 quota_size $quotagroup |
| 397 } [file size quota-test-A1.db] |
| 398 do_test quota-4.4.7 { |
| 399 sqlite3_quota_file quota-test-A2.db |
| 400 quota_size $::quotagroup |
| 401 } [expr {[file size quota-test-A1.db]+[file size quota-test-A2.db]}] |
| 402 |
| 403 unset -nocomplain quotagroup |
| 404 if {$tcl_platform(platform)=="windows"} { |
| 405 set quotagroup *\\quota-test-B* |
| 406 } else { |
| 407 set quotagroup */quota-test-B* |
| 408 } |
| 409 foreach file [glob -nocomplain quota-test-B*] { |
| 410 forcedelete $file |
| 411 } |
| 412 do_test quota-4.5.1 { |
| 413 sqlite3_quota_set $::quotagroup 100000 quota_callback |
| 414 quota_size $::quotagroup |
| 415 } {0} |
| 416 do_test quota-4.5.2 { |
| 417 sqlite3_quota_file quota-test-B1.txt |
| 418 quota_size $::quotagroup |
| 419 } {0} |
| 420 proc add_to_file {name n} { |
| 421 set out [open $name a] |
| 422 fconfigure $out -translation binary |
| 423 puts -nonewline $out [string repeat x $n] |
| 424 close $out |
| 425 } |
| 426 do_test quota-4.5.3 { |
| 427 add_to_file quota-test-B1.txt 123 |
| 428 sqlite3_quota_file quota-test-B1.txt |
| 429 quota_size $::quotagroup |
| 430 } {123} |
| 431 do_test quota-4.5.4 { |
| 432 add_to_file quota-test-B2.txt 234 |
| 433 sqlite3_quota_file quota-test-B2.txt |
| 434 quota_size $::quotagroup |
| 435 } {357} |
| 436 do_test quota-4.5.5 { |
| 437 add_to_file quota-test-B1.txt 2000 |
| 438 sqlite3_quota_file quota-test-B1.txt |
| 439 quota_size $::quotagroup |
| 440 } {2357} |
| 441 do_test quota-4.5.6 { |
| 442 forcedelete quota-test-B1.txt |
| 443 sqlite3_quota_file quota-test-B1.txt |
| 444 quota_size $::quotagroup |
| 445 } {234} |
| 446 do_test quota-4.5.7 { |
| 447 forcedelete quota-test-B2.txt |
| 448 sqlite3_quota_file quota-test-B2.txt |
| 449 quota_size $::quotagroup |
| 450 } {0} |
| 451 do_test quota-4.5.8 { |
| 452 add_to_file quota-test-B3.txt 1234 |
| 453 sqlite3_quota_file quota-test-B3.txt |
| 454 quota_size $::quotagroup |
| 455 } {1234} |
| 456 do_test quota-4.5.9 { |
| 457 sqlite3_quota_set $quotagroup 0 {} |
| 458 quota_size $::quotagroup |
| 459 } {0} |
| 460 |
| 461 do_test quota-4.9.1 { |
| 462 db close |
330 sqlite3_quota_set A 1000 quota_callback | 463 sqlite3_quota_set A 1000 quota_callback |
331 sqlite3_quota_shutdown | 464 sqlite3_quota_shutdown |
332 } {SQLITE_OK} | 465 } {SQLITE_OK} |
333 do_test quota-4.4.2 { | 466 do_test quota-4.9.2 { |
334 quota_list | 467 quota_list |
335 } {} | 468 } {} |
336 | 469 |
337 #------------------------------------------------------------------------- | 470 #------------------------------------------------------------------------- |
338 # The following tests test that the quota VFS handles malloc and IO | 471 # The following tests test that the quota VFS handles malloc and IO |
339 # errors. | 472 # errors. |
340 # | 473 # |
341 | 474 |
342 sqlite3_quota_initialize "" 1 | 475 sqlite3_quota_initialize "" 1 |
343 sqlite3_quota_set *test.db 4096 {} | 476 sqlite3_quota_set *test.db 4096 {} |
344 | 477 |
345 do_faultsim_test quota-5.1 -prep { | 478 do_faultsim_test quota-5.1 -prep { |
346 catch {db close} | 479 catch {db close} |
347 } -body { | 480 } -body { |
348 sqlite3 db test2.db | 481 sqlite3 db test2.db |
349 } | 482 } |
350 do_faultsim_test quota-5.2 -prep { | 483 do_faultsim_test quota-5.2 -prep { |
351 catch {db close} | 484 catch {db close} |
352 } -body { | 485 } -body { |
353 sqlite3 db test.db | 486 sqlite3 db test.db |
354 } | 487 } |
355 | 488 |
356 catch { db close } | 489 catch { db close } |
357 file delete -force test.db | 490 forcedelete test.db |
358 | 491 |
359 do_test quota-5.3.prep { | 492 do_test quota-5.3.prep { |
360 sqlite3 db test.db | 493 sqlite3 db test.db |
361 execsql { | 494 execsql { |
362 PRAGMA auto_vacuum = 1; | 495 PRAGMA auto_vacuum = 1; |
363 PRAGMA page_size = 1024; | 496 PRAGMA page_size = 1024; |
364 CREATE TABLE t1(a, b); | 497 CREATE TABLE t1(a, b); |
365 INSERT INTO t1 VALUES(10, zeroblob(1200)); | 498 INSERT INTO t1 VALUES(10, zeroblob(1200)); |
366 } | 499 } |
367 faultsim_save_and_close | 500 faultsim_save_and_close |
368 } {} | 501 } {} |
369 do_faultsim_test quota-5.3 -prep { | 502 do_faultsim_test quota-5.3 -prep { |
370 faultsim_restore_and_reopen | 503 faultsim_restore_and_reopen |
371 } -body { | 504 } -body { |
372 execsql { DELETE FROM t1 } | 505 execsql { DELETE FROM t1 } |
373 } | 506 } |
374 | 507 |
375 do_test quota-5.4.1 { | 508 do_test quota-5.4.1 { |
376 catch { db close } | 509 catch { db close } |
377 file delete -force test.db | 510 forcedelete test.db |
378 file mkdir test.db | 511 file mkdir test.db |
379 list [catch { sqlite3 db test.db } msg] $msg | 512 list [catch { sqlite3 db test.db } msg] $msg |
380 } {1 {unable to open database file}} | 513 } {1 {unable to open database file}} |
381 | 514 |
382 do_faultsim_test quota-5.5 -prep { | 515 do_faultsim_test quota-5.5 -prep { |
383 catch { sqlite3_quota_shutdown } | 516 catch { sqlite3_quota_shutdown } |
384 } -body { | 517 } -body { |
385 sqlite3_quota_initialize "" 1 | 518 sqlite3_quota_initialize "" 1 |
386 } | 519 } |
387 | 520 |
388 do_faultsim_test quota-5.6 -prep { | 521 do_faultsim_test quota-5.6 -prep { |
389 catch { sqlite3_quota_shutdown } | 522 catch { sqlite3_quota_shutdown } |
390 sqlite3_quota_initialize "" 1 | 523 sqlite3_quota_initialize "" 1 |
391 } -body { | 524 } -body { |
392 sqlite3_quota_set * 4096 {} | 525 sqlite3_quota_set * 4096 {} |
393 } | 526 } |
394 | 527 |
395 catch { sqlite3_quota_shutdown } | 528 catch { sqlite3_quota_shutdown } |
396 finish_test | 529 finish_test |
OLD | NEW |