]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add tests to this branch.
authordan <dan@noemail.net>
Fri, 18 Aug 2017 18:55:22 +0000 (18:55 +0000)
committerdan <dan@noemail.net>
Fri, 18 Aug 2017 18:55:22 +0000 (18:55 +0000)
FossilOrigin-Name: abb6e076c851c0b10f62c02d0d7e54f24d86c75f01036dddbc0a8a7dfc627a0d

manifest
manifest.uuid
test/permutations.test
test/server_common.tcl
test/serverfreelist.test [moved from test/server5.test with 100% similarity]
test/serverlimit.test [new file with mode: 0644]
test/serverreadonly.test [moved from test/server4.test with 100% similarity]

index 4b9f259342bda8b6bf64e7474d04c429d3aa77e5..b1acfb148201de11bc344719449ee3e7b4d1ac94 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Do\snot\ssearch\sfor\slocks\sto\sclear\swhen\sconnecting\sto\sa\sdb\sin\smulti-process\smode\nunless\sit\slooks\slike\sthe\sprevious\suser\sof\sthe\sclient-id\scrashed.
-D 2017-08-18T16:04:40.867
+C Add\stests\sto\sthis\sbranch.
+D 2017-08-18T18:55:22.047
 F Makefile.in d9873c9925917cca9990ee24be17eb9613a668012c85a343aef7e5536ae266e8
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 02b469e9dcd5b7ee63fc1fb05babc174260ee4cfa4e0ef2e48c3c6801567a016
@@ -1094,7 +1094,7 @@ F test/parser1.test 391b9bf9a229547a129c61ac345ed1a6f5eb1854
 F test/pcache.test c8acbedd3b6fd0f9a7ca887a83b11d24a007972b
 F test/pcache2.test af7f3deb1a819f77a6d0d81534e97d1cf62cd442
 F test/percentile.test 4243af26b8f3f4555abe166f723715a1f74c77ff
-F test/permutations.test b3326d58fe5c183ebcb359fe880db6c98ed1d3f4d3b350ec718f74287e063bee
+F test/permutations.test 4554a5c671d480ba482260b5f3e92640c31902aac51d556cc5eb5bf129eb47a9
 F test/pragma.test f274259d6393b6681eb433beb8dd39a26ec06a4431052a4880b43b84912a3f58
 F test/pragma2.test e5d5c176360c321344249354c0c16aec46214c9f
 F test/pragma3.test 14c12bc5352b1e100e0b6b44f371053a81ccf8ed
@@ -1173,10 +1173,11 @@ F test/selectG.test e8600e379589e85e9fefd2fe4d44a4cdd63f6982
 F test/server1.test 46803bd3fe8b99b30dbc5ff38ffc756f5c13a118
 F test/server2.test e7890fb1eb9a11a0f94cd0892279e0f3cd1ba8c3006fa343637ee9ff3c4689f6
 F test/server3.test c3ae4ca7a6e7df870bfcd2450a9815507eaa80b9cdc44ee6c7975d48311505d4
-F test/server4.test 97040670597948a695b1973537d770417589f1998bcbb3959302aaee3c211250
-F test/server5.test 2e554001145170094a19731a8ce2981d040cf44c947542b35d130e6e31256fca
-F test/server_common.tcl 551923cf8d51fefcdb4444bfd72b88ca5c5228fe1525da5b6528ae4edb7a2f2e
+F test/server_common.tcl c491d0f509b94a5cca845d45ca3bb47e464ad3a4bc89641982269112d0f1f3f4
 F test/servercrash.test 1cbd2f98cadee2d8d42ed85ad76fbcf48958fedd537c82221838cd9bc6899dae
+F test/serverfreelist.test 2e554001145170094a19731a8ce2981d040cf44c947542b35d130e6e31256fca w test/server5.test
+F test/serverlimit.test 4bc013c0b991956486ddbff6ea3bee78a0d14a3d8091f5ec00e2bd34a7fa9aa7
+F test/serverreadonly.test 97040670597948a695b1973537d770417589f1998bcbb3959302aaee3c211250 w test/server4.test
 F test/session.test 78fa2365e93d3663a6e933f86e7afc395adf18be
 F test/shared.test 1da9dbad400cee0d93f252ccf76e1ae007a63746
 F test/shared2.test 03eb4a8d372e290107d34b6ce1809919a698e879
@@ -1657,7 +1658,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P a8115f95e80cc90c095fdd0a151da51f4d3ee427defdc34780e977585a68776d
-R 3a806093fb1d82eb28aea633865a3bda
+P 66fb9e1cb479f1e764f1606f041bd97fd3bd428093832c000ee36b643377e9e2
+R 6a3c43c16b1d75fce7516d061ebaa6d6
 U dan
-Z 66a9c79489e9385c1bc99754d5e08a1b
+Z f1a62abc260e8d42c995536e20991d87
index 0a6b25db9f3ab0544d6c10130b32e96176457559..74095647dde6ab2ca822b6d6574c40c9c2484285 100644 (file)
@@ -1 +1 @@
-66fb9e1cb479f1e764f1606f041bd97fd3bd428093832c000ee36b643377e9e2
\ No newline at end of file
+abb6e076c851c0b10f62c02d0d7e54f24d86c75f01036dddbc0a8a7dfc627a0d
\ No newline at end of file
index 736c4ddedb572b215ad6bf95e9a2817c852b6e2c..b7b6e3c8961b2e07d594e64006d61c3af6ccf5aa 100644 (file)
@@ -278,8 +278,8 @@ test_suite "server" -prefix "" -description {
   All server-edition tests.
 } -files [
   test_set \
-      select1.test server2.test server3.test server4.test server5.test \
-      servercrash.test
+      select1.test server2.test server3.test serverfreelist.test \
+      serverreadonly.test servercrash.test serverlimit.test
 ]
 
 test_suite "fts5-light" -prefix "" -description {
index d21c60085d193cf485b403885f896f1cd7e083b5..937bb5ef908fc8c8ff0c029300f9654905d44f39 100644 (file)
@@ -32,8 +32,15 @@ proc server_reset_db {} {
   server_sqlite3 db test.db 
 }
 
+
 set ::server_vfs unix-excl
 proc server_set_vfs {vfs} {
-  set ::server_vfs $vfs
+  if {$vfs=="single"} {
+    set ::server_vfs unix-excl
+  } elseif {$vfs=="multi"} {
+    set ::server_vfs unix
+  } else {
+    set ::server_vfs $vfs
+  }
 }
 
similarity index 100%
rename from test/server5.test
rename to test/serverfreelist.test
diff --git a/test/serverlimit.test b/test/serverlimit.test
new file mode 100644 (file)
index 0000000..2c8a262
--- /dev/null
@@ -0,0 +1,177 @@
+# 2017 April 25
+#
+# 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.
+#
+#***********************************************************************
+# This file implements regression tests for SQLite library.  The
+# focus of this script is testing the server mode of SQLite.
+#
+
+
+set testdir [file dirname $argv0]
+source $testdir/tester.tcl
+set testprefix serverlimit
+
+source $testdir/server_common.tcl
+source $testdir/lock_common.tcl
+return_if_no_server
+
+#-------------------------------------------------------------------------
+# Test plan:
+#
+#   1.* The concurrent connections limit in multi-process mode. With all
+#       connections in the local process.
+#
+#   2.* The concurrent connections limit in multi-process mode. Using
+#       multiple processes.
+#
+#   3.* The concurrent transactions limit in single-process mode.
+#
+
+server_set_vfs multi
+server_reset_db
+
+set MLIMIT 16           ;# maximum number of allowed connections
+
+do_test 1.0 {
+  server_sqlite3 db test.db
+  db eval {
+    CREATE TABLE t1(x);
+    INSERT INTO t1 VALUES('hello'), ('world');
+  }
+  db close
+  for {set i 0} {$i < $MLIMIT} {incr i} {
+    server_sqlite3 db.$i test.db
+    db.$i eval { SELECT * FROM t1 }
+  }
+  set {} {}
+} {}
+
+# Connection [db] cannot connect - all client slots are occupied.
+#
+do_test 1.1 {
+  server_sqlite3 db test.db
+  list [catch { db eval { SELECT * FROM t1 } } msg] $msg
+} {1 {database is locked}}
+
+# But, if one connection disconnects, [db] can then connect and
+# query the db.
+#
+do_test 1.2 {
+  db.0 close
+  list [catch { db eval { SELECT * FROM t1 } } msg] $msg
+} {0 {hello world}}
+
+do_test 1.3 {
+  for {set i 0} {$i < $MLIMIT} {incr i} {
+    catch { db.$i close }
+  }
+  set {} {}
+} {}
+
+#-------------------------------------------------------------------------
+# Connections in different processes.
+do_multiclient_test tn {
+  code1 { db close }
+  code2 { db2 close }
+  code3 { db3 close }
+
+  set N1 [expr $MLIMIT / 2]
+  set N2 [expr $MLIMIT - $N1]
+
+  do_test 2.$tn.0 {
+    file mkdir test.db-journal
+    code1 {
+      sqlite3 db test.db
+      db eval {
+        CREATE TABLE t11(a, b);
+        INSERT INTO t11 VALUES(1, 2), (3, 4);
+      }
+      db close
+
+      for {set i 0} {$i < $N1} {incr i} {
+        sqlite3 db.$i test.db
+        db.$i eval { SELECT * FROM t11 }
+      }
+    }
+
+    code2 [string map [list %N2% $N2] {
+      for {set i 0} {$i < %N2%} {incr i} {
+        sqlite3 db2.$i test.db
+        db2.$i eval { SELECT * FROM t11 }
+      }
+    }]
+
+    code2 { db2.0 eval {SELECT * FROM t11} }
+  } {1 2 3 4}
+
+  do_test 2.$tn.1 {
+    code3 { sqlite3 db3 test.db }
+    csql3 { SELECT * FROM t11 }
+  } {1 {database is locked}}
+
+  do_test 2.$tn.2 {
+    code2 { db2.0 close }
+    csql3 { SELECT * FROM t11 }
+  } {0 {1 2 3 4}}
+
+  do_test 2.$tn.3 {
+    code1 { sqlite3 db test.db }
+    csql1 { SELECT * FROM t11 }
+  } {1 {database is locked}}
+
+  do_test 2.$tn.4 {
+    code2 { db2.1 close }
+    csql1 { SELECT * FROM t11 }
+  } {0 {1 2 3 4}}
+
+  do_test 2.$tn.X {
+    code1 { for {set i 0} {$i < 50} {incr i} { catch {db.$i close} } }
+    code2 { for {set i 0} {$i < 50} {incr i} { catch {db2.$i close} } }
+  } {}
+}
+
+server_set_vfs single
+server_reset_db
+
+set TLIMIT 16
+
+do_test 3.0 {
+  execsql "CREATE TABLE t1 (o PRIMARY KEY) WITHOUT ROWID"
+  for {set i 0} {$i < $TLIMIT} {incr i} {
+    execsql "CREATE TABLE x$i (o PRIMARY KEY) WITHOUT ROWID"
+  }
+  set "" ""
+} {}
+do_test 3.1 {
+  for {set i 0} {$i < $TLIMIT} {incr i} {
+    sqlite3 db.$i test.db
+    db.$i eval "
+      BEGIN;
+        INSERT INTO x$i VALUES ('one');
+    "
+  }
+} {}
+do_catchsql_test 3.2 {
+  INSERT INTO t1 VALUES('two');
+} {1 {database is locked}}
+do_test 3.3 {
+  db.0 eval COMMIT
+  execsql { INSERT INTO t1 VALUES('two'); }
+} {}
+do_catchsql_test 3.4 { SELECT * FROM x1 } {1 {database is locked}}
+do_catchsql_test 3.5 { SELECT * FROM x0 } {0 one}
+do_test 3.6 {
+  for {set i 1} {$i < $TLIMIT} {incr i} {
+    db.$i eval COMMIT
+  }
+} {}
+
+
+finish_test
+
similarity index 100%
rename from test/server4.test
rename to test/serverreadonly.test