| Index: third_party/sqlite/src/test/quota.test
|
| diff --git a/third_party/sqlite/src/test/quota.test b/third_party/sqlite/src/test/quota.test
|
| index 2cf7628004a941bc5984770ae971c7c5b6d18ad0..f9655fb8c0ad0e40c54d246318f4acfabcd16393 100644
|
| --- a/third_party/sqlite/src/test/quota.test
|
| +++ b/third_party/sqlite/src/test/quota.test
|
| @@ -12,8 +12,17 @@
|
|
|
| set testdir [file dirname $argv0]
|
| source $testdir/tester.tcl
|
| +
|
| +# If SQLITE_CURDIR is not defined, omit this file.
|
| +ifcapable !curdir {
|
| + finish_test
|
| + return
|
| +}
|
| +
|
| source $testdir/malloc_common.tcl
|
|
|
| +unset -nocomplain defaultVfs
|
| +set defaultVfs [file_control_vfsname db]
|
| db close
|
|
|
| do_test quota-1.1 { sqlite3_quota_initialize nosuchvfs 1 } {SQLITE_ERROR}
|
| @@ -48,6 +57,7 @@ do_test quota-1.8 { sqlite3_quota_shutdown } {SQLITE_OK}
|
| #
|
| sqlite3_quota_initialize "" 1
|
|
|
| +unset -nocomplain quota_request_ok
|
| proc quota_check {filename limitvar size} {
|
| upvar $limitvar limit
|
|
|
| @@ -73,6 +83,9 @@ do_test quota-2.1.2 {
|
| }
|
| set ::quota
|
| } {}
|
| +do_test quota-2.1.2.1 {
|
| + file_control_vfsname db
|
| +} quota/$defaultVfs
|
| do_test quota-2.1.3 { file size test.db } {4096}
|
| do_test quota-2.1.4 {
|
| catchsql { INSERT INTO t1 VALUES(3, randomblob(1100)) }
|
| @@ -123,7 +136,7 @@ proc quota_check {filename limitvar size} {
|
| }
|
|
|
| do_test quota-3.1.1 {
|
| - file delete -force test.db
|
| + forcedelete test.db
|
| sqlite3_quota_initialize "" 1
|
| sqlite3_quota_set *test.db 4096 quota_check
|
| } {SQLITE_OK}
|
| @@ -158,7 +171,7 @@ do_test quota-3.1.6 {
|
| } {SQLITE_OK}
|
|
|
| do_test quota-3.2.1 {
|
| - file delete force test.db test2.db
|
| + delete_file force test.db test2.db
|
|
|
| sqlite3_quota_set * 4096 {}
|
| sqlite3 db1a test.db
|
| @@ -202,6 +215,9 @@ do_test quota-3.2.9 {
|
| set ::quota [list]
|
| proc quota_callback {file limitvar size} {
|
| upvar $limitvar limit
|
| + if {$::tcl_platform(platform)=="windows"} {
|
| + set file [ lindex [string map {\\ \/} $file] 0 ]
|
| + }
|
| lappend ::quota $file $size
|
| set limit 0
|
| }
|
| @@ -212,7 +228,7 @@ do_test quota-3.3.1 {
|
| execsql { INSERT INTO t1 VALUES(randomblob(500), randomblob(500)) } db2a
|
| execsql { INSERT INTO t1 VALUES(randomblob(500), randomblob(500)) } db2b
|
| set ::quota
|
| -} [list [file join [pwd] test.db] 5120]
|
| +} [list [file join [get_pwd] test.db] 5120]
|
|
|
| do_test quota-3.2.X {
|
| foreach db {db1a db2a db2b db1b} { catch { $db close } }
|
| @@ -220,7 +236,7 @@ do_test quota-3.2.X {
|
| } {SQLITE_OK}
|
|
|
| #-------------------------------------------------------------------------
|
| -# Quotas are deleted when unused and when there limit is set to zero
|
| +# Quotas are deleted when unused and when their limit is set to zero
|
| #
|
|
|
| # Return a list of all currently defined quotas. Each quota is identified
|
| @@ -232,6 +248,13 @@ proc quota_list {} {
|
| }
|
| return [lsort $allq]
|
| }
|
| +proc quota_size {name} {
|
| + set allq {}
|
| + foreach q [sqlite3_quota_dump] {
|
| + if {[lindex $q 0]==$name} {return [lindex $q 2]}
|
| + }
|
| + return 0
|
| +}
|
|
|
| do_test quota-4.1.1 {
|
| sqlite3_quota_set *test.db 0 {}
|
| @@ -254,7 +277,7 @@ do_test quota-4.1.5 {
|
| quota_list
|
| } {*test2.db}
|
| do_test quota-4.1.6 {
|
| - file delete -force test2.db test2.db-journal test2.db-wal
|
| + forcedelete test2.db test2.db-journal test2.db-wal
|
| sqlite3 db test2.db
|
| db eval {CREATE TABLE t2(x); INSERT INTO t2 VALUES('tab-t2');}
|
| quota_list
|
| @@ -326,11 +349,121 @@ do_test quota-4.3.1 {
|
| quota_list
|
| } {}
|
|
|
| +unset -nocomplain quotagroup
|
| +if {$tcl_platform(platform)=="windows"} {
|
| + set quotagroup *\\quota-test-A?.db
|
| +} else {
|
| + set quotagroup */quota-test-A?.db
|
| +}
|
| +foreach file [glob -nocomplain quota-test-A*] {
|
| + forcedelete $file
|
| +}
|
| do_test quota-4.4.1 {
|
| + set ::quota {}
|
| + sqlite3_quota_set $::quotagroup 10000 quota_callback
|
| + forcedelete ./quota-test-A1.db ./quota-test-A2.db
|
| + sqlite3 db ./quota-test-A1.db
|
| + db eval {
|
| + CREATE TABLE t1(x);
|
| + INSERT INTO t1 VALUES(randomblob(5000));
|
| + }
|
| + quota_list
|
| +} [list $quotagroup]
|
| +do_test quota-4.4.2 {
|
| + expr {$::quota==""}
|
| +} {1}
|
| +do_test quota-4.4.3 {
|
| + db close
|
| + sqlite3 db ./quota-test-A2.db
|
| + db eval {
|
| + CREATE TABLE t1(x);
|
| + INSERT INTO t1 VALUES(randomblob(5000));
|
| + }
|
| + quota_list
|
| +} [list $quotagroup]
|
| +do_test quota-4.4.4 {
|
| + expr {$::quota!=""}
|
| +} {1}
|
| +do_test quota-4.4.5 {
|
| + db close
|
| + sqlite3_quota_set $::quotagroup 0 {}
|
| + sqlite3_quota_dump
|
| +} {}
|
| +do_test quota-4.4.6 {
|
| + sqlite3_quota_set $quotagroup 10000 quota_callback
|
| + sqlite3 db quota-test-A1.db
|
| + db eval {SELECT count(*) FROM sqlite_master}
|
| + quota_size $quotagroup
|
| +} [file size quota-test-A1.db]
|
| +do_test quota-4.4.7 {
|
| + sqlite3_quota_file quota-test-A2.db
|
| + quota_size $::quotagroup
|
| +} [expr {[file size quota-test-A1.db]+[file size quota-test-A2.db]}]
|
| +
|
| +unset -nocomplain quotagroup
|
| +if {$tcl_platform(platform)=="windows"} {
|
| + set quotagroup *\\quota-test-B*
|
| +} else {
|
| + set quotagroup */quota-test-B*
|
| +}
|
| +foreach file [glob -nocomplain quota-test-B*] {
|
| + forcedelete $file
|
| +}
|
| +do_test quota-4.5.1 {
|
| + sqlite3_quota_set $::quotagroup 100000 quota_callback
|
| + quota_size $::quotagroup
|
| +} {0}
|
| +do_test quota-4.5.2 {
|
| + sqlite3_quota_file quota-test-B1.txt
|
| + quota_size $::quotagroup
|
| +} {0}
|
| +proc add_to_file {name n} {
|
| + set out [open $name a]
|
| + fconfigure $out -translation binary
|
| + puts -nonewline $out [string repeat x $n]
|
| + close $out
|
| +}
|
| +do_test quota-4.5.3 {
|
| + add_to_file quota-test-B1.txt 123
|
| + sqlite3_quota_file quota-test-B1.txt
|
| + quota_size $::quotagroup
|
| +} {123}
|
| +do_test quota-4.5.4 {
|
| + add_to_file quota-test-B2.txt 234
|
| + sqlite3_quota_file quota-test-B2.txt
|
| + quota_size $::quotagroup
|
| +} {357}
|
| +do_test quota-4.5.5 {
|
| + add_to_file quota-test-B1.txt 2000
|
| + sqlite3_quota_file quota-test-B1.txt
|
| + quota_size $::quotagroup
|
| +} {2357}
|
| +do_test quota-4.5.6 {
|
| + forcedelete quota-test-B1.txt
|
| + sqlite3_quota_file quota-test-B1.txt
|
| + quota_size $::quotagroup
|
| +} {234}
|
| +do_test quota-4.5.7 {
|
| + forcedelete quota-test-B2.txt
|
| + sqlite3_quota_file quota-test-B2.txt
|
| + quota_size $::quotagroup
|
| +} {0}
|
| +do_test quota-4.5.8 {
|
| + add_to_file quota-test-B3.txt 1234
|
| + sqlite3_quota_file quota-test-B3.txt
|
| + quota_size $::quotagroup
|
| +} {1234}
|
| +do_test quota-4.5.9 {
|
| + sqlite3_quota_set $quotagroup 0 {}
|
| + quota_size $::quotagroup
|
| +} {0}
|
| +
|
| +do_test quota-4.9.1 {
|
| + db close
|
| sqlite3_quota_set A 1000 quota_callback
|
| sqlite3_quota_shutdown
|
| } {SQLITE_OK}
|
| -do_test quota-4.4.2 {
|
| +do_test quota-4.9.2 {
|
| quota_list
|
| } {}
|
|
|
| @@ -354,7 +487,7 @@ do_faultsim_test quota-5.2 -prep {
|
| }
|
|
|
| catch { db close }
|
| -file delete -force test.db
|
| +forcedelete test.db
|
|
|
| do_test quota-5.3.prep {
|
| sqlite3 db test.db
|
| @@ -374,7 +507,7 @@ do_faultsim_test quota-5.3 -prep {
|
|
|
| do_test quota-5.4.1 {
|
| catch { db close }
|
| - file delete -force test.db
|
| + forcedelete test.db
|
| file mkdir test.db
|
| list [catch { sqlite3 db test.db } msg] $msg
|
| } {1 {unable to open database file}}
|
|
|