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

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

Issue 883353008: [sql] Import reference version of SQLite 3.8.7.4. (Closed) Base URL: http://chromium.googlesource.com/chromium/src.git@master
Patch Set: Hold back encoding change which is messing up patch. Created 5 years, 10 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 # 2014-05-07
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 implements regression tests for SQLite library. The
13 # focus of this file is testing the nolock=1 and immutable=1 query
14 # parameters and the SQLITE_IOCAP_IMMUTABLE device characteristic.
15 #
16
17 set testdir [file dirname $argv0]
18 source $testdir/tester.tcl
19
20 unset -nocomplain tvfs_calls
21 proc tvfs_reset {} {
22 global tvfs_calls
23 array set tvfs_calls {xLock 0 xUnlock 0 xCheckReservedLock 0 xAccess 0}
24 }
25 proc tvfs_callback {op args} {
26 global tvfs_calls
27 incr tvfs_calls($op)
28 return SQLITE_OK
29 }
30 tvfs_reset
31
32 testvfs tvfs
33 tvfs script tvfs_callback
34 tvfs filter {xLock xUnlock xCheckReservedLock xAccess}
35
36 ############################################################################
37 # Verify that the nolock=1 query parameter for URI filenames disables all
38 # calls to xLock and xUnlock for rollback databases.
39 #
40 do_test nolock-1.0 {
41 db close
42 forcedelete test.db
43 tvfs_reset
44 sqlite db test.db -vfs tvfs
45 db eval {CREATE TABLE t1(a,b,c); INSERT INTO t1 VALUES(1,2,3);}
46 list xLock $::tvfs_calls(xLock) xUnlock $::tvfs_calls(xUnlock) \
47 xCheckReservedLock $::tvfs_calls(xCheckReservedLock)
48 } {xLock 7 xUnlock 5 xCheckReservedLock 0}
49
50 do_test nolock-1.1 {
51 db close
52 forcedelete test.db
53 tvfs_reset
54 sqlite db file:test.db?nolock=0 -vfs tvfs -uri 1
55 db eval {CREATE TABLE t1(a,b,c); INSERT INTO t1 VALUES(1,2,3);}
56 list xLock $::tvfs_calls(xLock) xUnlock $::tvfs_calls(xUnlock) \
57 xCheckReservedLock $::tvfs_calls(xCheckReservedLock)
58 } {xLock 7 xUnlock 5 xCheckReservedLock 0}
59
60 do_test nolock-1.2 {
61 db close
62 forcedelete test.db
63 tvfs_reset
64 sqlite db file:test.db?nolock=1 -vfs tvfs -uri 1
65 db eval {CREATE TABLE t1(a,b,c); INSERT INTO t1 VALUES(1,2,3);}
66 list xLock $::tvfs_calls(xLock) xUnlock $::tvfs_calls(xUnlock) \
67 xCheckReservedLock $::tvfs_calls(xCheckReservedLock)
68 } {xLock 0 xUnlock 0 xCheckReservedLock 0}
69
70 do_test nolock-1.3 {
71 db close
72 tvfs_reset
73 sqlite db file:test.db?nolock=0 -vfs tvfs -uri 1 -readonly 1
74 db eval {SELECT * FROM t1}
75 list xLock $::tvfs_calls(xLock) xUnlock $::tvfs_calls(xUnlock) \
76 xCheckReservedLock $::tvfs_calls(xCheckReservedLock)
77 } {xLock 2 xUnlock 2 xCheckReservedLock 0}
78
79 do_test nolock-1.4 {
80 db close
81 tvfs_reset
82 sqlite db file:test.db?nolock=1 -vfs tvfs -uri 1 -readonly 1
83 db eval {SELECT * FROM t1}
84 list xLock $::tvfs_calls(xLock) xUnlock $::tvfs_calls(xUnlock) \
85 xCheckReservedLock $::tvfs_calls(xCheckReservedLock)
86 } {xLock 0 xUnlock 0 xCheckReservedLock 0}
87
88 #############################################################################
89 # Verify that immutable=1 disables both locking and xAccess calls to the
90 # journal files.
91 #
92 do_test nolock-2.0 {
93 db close
94 forcedelete test.db
95 # begin by creating a test database
96 sqlite3 db test.db
97 db eval {
98 CREATE TABLE t1(a,b);
99 INSERT INTO t1 VALUES('hello','world');
100 CREATE TABLE t2(x,y);
101 INSERT INTO t2 VALUES(12345,67890);
102 SELECT * FROM t1, t2;
103 }
104 } {hello world 12345 67890}
105 do_test nolock-2.1 {
106 tvfs_reset
107 sqlite3 db2 test.db -vfs tvfs
108 db2 eval {SELECT * FROM t1, t2}
109 } {hello world 12345 67890}
110 do_test nolock-2.2 {
111 list xLock $::tvfs_calls(xLock) xUnlock $::tvfs_calls(xUnlock) \
112 xCheckReservedLock $::tvfs_calls(xCheckReservedLock) \
113 xAccess $::tvfs_calls(xAccess)
114 } {xLock 2 xUnlock 2 xCheckReservedLock 0 xAccess 4}
115
116
117 do_test nolock-2.11 {
118 db2 close
119 tvfs_reset
120 sqlite3 db2 file:test.db?immutable=0 -vfs tvfs -uri 1
121 db2 eval {SELECT * FROM t1, t2}
122 } {hello world 12345 67890}
123 do_test nolock-2.12 {
124 list xLock $::tvfs_calls(xLock) xUnlock $::tvfs_calls(xUnlock) \
125 xCheckReservedLock $::tvfs_calls(xCheckReservedLock) \
126 xAccess $::tvfs_calls(xAccess)
127 } {xLock 2 xUnlock 2 xCheckReservedLock 0 xAccess 4}
128
129
130 do_test nolock-2.21 {
131 db2 close
132 tvfs_reset
133 sqlite3 db2 file:test.db?immutable=1 -vfs tvfs -uri 1
134 db2 eval {SELECT * FROM t1, t2}
135 } {hello world 12345 67890}
136 do_test nolock-2.22 {
137 list xLock $::tvfs_calls(xLock) xUnlock $::tvfs_calls(xUnlock) \
138 xCheckReservedLock $::tvfs_calls(xCheckReservedLock) \
139 xAccess $::tvfs_calls(xAccess)
140 } {xLock 0 xUnlock 0 xCheckReservedLock 0 xAccess 0}
141
142 do_test nolock-2.31 {
143 db2 close
144 tvfs_reset
145 sqlite3 db2 file:test.db?immutable=1 -vfs tvfs -uri 1 -readonly 1
146 db2 eval {SELECT * FROM t1, t2}
147 } {hello world 12345 67890}
148 do_test nolock-2.32 {
149 list xLock $::tvfs_calls(xLock) xUnlock $::tvfs_calls(xUnlock) \
150 xCheckReservedLock $::tvfs_calls(xCheckReservedLock) \
151 xAccess $::tvfs_calls(xAccess)
152 } {xLock 0 xUnlock 0 xCheckReservedLock 0 xAccess 0}
153
154 ############################################################################
155 # Verify that the SQLITE_IOCAP_IMMUTABLE flag works
156 #
157 do_test nolock-3.1 {
158 db2 close
159 tvfs devchar immutable
160 tvfs_reset
161 sqlite3 db2 test.db -vfs tvfs
162 db2 eval {SELECT * FROM t1, t2}
163 } {hello world 12345 67890}
164 do_test nolock-3.2 {
165 list xLock $::tvfs_calls(xLock) xUnlock $::tvfs_calls(xUnlock) \
166 xCheckReservedLock $::tvfs_calls(xCheckReservedLock) \
167 xAccess $::tvfs_calls(xAccess)
168 } {xLock 0 xUnlock 0 xCheckReservedLock 0 xAccess 0}
169
170 do_test nolock-3.11 {
171 db2 close
172 tvfs_reset
173 sqlite3 db2 test.db -vfs tvfs -readonly 1
174 db2 eval {SELECT * FROM t1, t2}
175 } {hello world 12345 67890}
176 do_test nolock-3.12 {
177 list xLock $::tvfs_calls(xLock) xUnlock $::tvfs_calls(xUnlock) \
178 xCheckReservedLock $::tvfs_calls(xCheckReservedLock) \
179 xAccess $::tvfs_calls(xAccess)
180 } {xLock 0 xUnlock 0 xCheckReservedLock 0 xAccess 0}
181
182 db2 close
183 db close
184 tvfs delete
185 finish_test
OLDNEW
« no previous file with comments | « third_party/sqlite/sqlite-src-3080704/test/nan.test ('k') | third_party/sqlite/sqlite-src-3080704/test/notify1.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698