Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(479)

Side by Side Diff: third_party/sqlite/sqlite-src-3080704/test/unixexcl.test

Issue 949043002: Add //third_party/sqlite to dirs_to_snapshot, remove net_sql.patch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # 2011 March 30
2 #
3 # The author disclaims copyright to this source code. In place of
4 # a legal notice, here is a blessing:
5 #
6 # May you do good and not evil.
7 # May you find forgiveness for yourself and forgive others.
8 # May you share freely, never taking more than you give.
9 #
10 #***********************************************************************
11 #
12 # This file contains tests for the "unix-excl" VFS module (part of
13 # os_unix.c).
14 #
15
16 set testdir [file dirname $argv0]
17 source $testdir/tester.tcl
18 source $testdir/lock_common.tcl
19 source $testdir/malloc_common.tcl
20
21 if {$::tcl_platform(platform)!="unix" || [info commands test_syscall]==""} {
22 finish_test
23 return
24 }
25 set testprefix unixexcl
26
27
28
29 # Test that when using VFS "unix-excl", the first time the database is read
30 # a process-wide exclusive lock is taken on it. This means other connections
31 # within the process may still access the db normally, but connections from
32 # outside the process cannot.
33 #
34 do_multiclient_test tn {
35 do_test unixexcl-1.$tn.1 {
36 sql1 {
37 CREATE TABLE t1(a, b);
38 INSERT INTO t1 VALUES('hello', 'world');
39 }
40 } {}
41 do_test unixexcl-1.$tn.2 { sql2 { SELECT * FROM t1 } } {hello world}
42 do_test unixexcl-1.$tn.3 {
43 code1 {
44 db close
45 sqlite3 db test.db -vfs unix-excl
46 db eval { SELECT * FROM t1 }
47 }
48 } {hello world}
49 if {$tn==1} {
50 do_test unixexcl-1.$tn.4.multiproc {
51 csql2 { SELECT * FROM t1 }
52 } {1 {database is locked}}
53 } else {
54 do_test unixexcl-1.$tn.4.singleproc {
55 csql2 { SELECT * FROM t1 }
56 } {0 {hello world}}
57 }
58 }
59
60 # Test that when using VFS "unix-excl", if a file is opened in read-only mode
61 # the behaviour is the same as if VFS "unix" were used.
62 #
63 do_multiclient_test tn {
64 do_test unixexcl-2.$tn.1 {
65 sql1 {
66 CREATE TABLE t1(a, b);
67 INSERT INTO t1 VALUES('hello', 'world');
68 }
69 } {}
70 do_test unixexcl-2.$tn.2 { sql2 { SELECT * FROM t1 } } {hello world}
71 do_test unixexcl-2.$tn.3 {
72 code1 {
73 db close
74 sqlite3 db test.db -readonly yes -vfs unix-excl
75 db eval { SELECT * FROM t1 }
76 }
77 } {hello world}
78 do_test unixexcl-2.$tn.4 {
79 csql2 { SELECT * FROM t1 }
80 } {0 {hello world}}
81 }
82
83 do_multiclient_test tn {
84 do_test unixexcl-3.$tn.1 {
85 code1 { db close; sqlite3 db file:test.db?psow=0 -vfs unix-excl -uri 1 }
86 code2 { db2 close; sqlite3 db2 file:test.db?psow=0 -vfs unix-excl -uri 1 }
87 sql1 {
88 PRAGMA auto_vacuum = 0;
89 PRAGMA journal_mode = WAL;
90 CREATE TABLE t1(a, b);
91 INSERT INTO t1 VALUES(1, 2);
92 }
93 } {wal}
94
95 if {$tn==1} {
96 do_test unixexcl-3.$tn.1.multiproc {
97 csql2 { SELECT * FROM t1; }
98 } {1 {database is locked}}
99 } else {
100 do_test unixexcl-3.$tn.1.singleproc {
101 sql2 { SELECT * FROM t1; }
102 } {1 2}
103
104 do_test unixexcl-3.$tn.2 {
105 sql2 {
106 BEGIN;
107 SELECT * FROM t1;
108 }
109 } {1 2}
110 do_test unixexcl-3.$tn.3 {
111 sql1 { PRAGMA wal_checkpoint; INSERT INTO t1 VALUES(3, 4); }
112 } {0 5 5}
113 do_test unixexcl-3.$tn.4 {
114 sql2 { SELECT * FROM t1; }
115 } {1 2}
116 do_test unixexcl-3.$tn.5 {
117 sql1 { SELECT * FROM t1; }
118 } {1 2 3 4}
119 do_test unixexcl-3.$tn.6 {
120 sql2 { COMMIT; SELECT * FROM t1; }
121 } {1 2 3 4}
122 do_test unixexcl-3.$tn.7 {
123 sql1 { PRAGMA wal_checkpoint; }
124 } {0 7 7}
125 }
126 }
127
128 finish_test
OLDNEW
« no previous file with comments | « third_party/sqlite/sqlite-src-3080704/test/unique2.test ('k') | third_party/sqlite/sqlite-src-3080704/test/unordered.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698