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

Side by Side Diff: third_party/sqlite/sqlite-src-3170000/test/cffault.test

Issue 2747283002: [sql] Import reference version of SQLite 3.17.. (Closed)
Patch Set: Created 3 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 November 16
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 fault-injection test cases for the
13 # sqlite3_db_cacheflush API.
14 #
15
16 set testdir [file dirname $argv0]
17 source $testdir/tester.tcl
18 set testprefix cffault
19 source $testdir/malloc_common.tcl
20
21 # Run the supplied SQL on a copy of the database currently stored on
22 # disk in file $dbfile.
23 proc diskquery {dbfile sql} {
24 forcecopy $dbfile dq.db
25 sqlite3 dq dq.db
26 set res [execsql $sql dq]
27 dq close
28 set res
29 }
30
31 do_execsql_test 1.0 {
32 CREATE TABLE t1(a PRIMARY KEY, b);
33 CREATE INDEX i1 ON t1(b);
34 INSERT INTO t1 VALUES(1, 2);
35 INSERT INTO t1 VALUES(3, 4);
36 INSERT INTO t1 VALUES(5, 6);
37 INSERT INTO t1 VALUES(7, 8);
38 }
39 faultsim_save_and_close
40
41 do_faultsim_test 1.1 -prep {
42 faultsim_restore_and_reopen
43 db eval {
44 BEGIN;
45 UPDATE t1 SET b=b+1;
46 }
47 } -body {
48 sqlite3_db_cacheflush db
49 } -test {
50 if {[sqlite3_get_autocommit db]} { error "Transaction rolled back!" }
51 faultsim_test_result {0 {}} {1 {disk I/O error}}
52 catch { db eval COMMIT }
53 faultsim_integrity_check
54 }
55
56 do_faultsim_test 1.2 -prep {
57 faultsim_restore_and_reopen
58 db eval {
59 BEGIN;
60 UPDATE t1 SET b=b+1;
61 }
62 } -body {
63 set result [list]
64 db eval { SELECT * FROM t1 } {
65 if {$a==5} { catch { sqlite3_db_cacheflush db } }
66 lappend result $a $b
67 }
68 set result
69 } -test {
70 faultsim_test_result {0 {1 3 3 5 5 7 7 9}} {1 {disk I/O error}}
71 catch { db eval COMMIT }
72 faultsim_integrity_check
73 }
74
75 #-------------------------------------------------------------------------
76 reset_db
77 do_execsql_test 2.0 {
78 CREATE TABLE t1(a PRIMARY KEY, b, c);
79 CREATE INDEX i1 ON t1(b);
80 CREATE INDEX i2 ON t1(c, b);
81 INSERT INTO t1 VALUES(1, 2, randomblob(600));
82 INSERT INTO t1 VALUES(3, 4, randomblob(600));
83 INSERT INTO t1 VALUES(5, 6, randomblob(600));
84 INSERT INTO t1 VALUES(7, 8, randomblob(600));
85 INSERT INTO t1 VALUES(9, 10, randomblob(600));
86 }
87 faultsim_save_and_close
88
89 do_faultsim_test 2.1 -prep {
90 faultsim_restore_and_reopen
91 db eval {
92 BEGIN;
93 UPDATE t1 SET b=b+1;
94 }
95 } -body {
96 set result [list]
97 db eval { SELECT * FROM t1 } {
98 if {$a==5} { catch { sqlite3_db_cacheflush db } }
99 lappend result $a $b
100 }
101 set result
102 } -test {
103 faultsim_test_result {0 {1 3 3 5 5 7 7 9 9 11}} {1 {disk I/O error}}
104 catch { db eval { INSERT INTO t1 VALUES(11, 12, randomblob(600)) } }
105 catch { db eval COMMIT }
106 faultsim_integrity_check
107 }
108
109 do_faultsim_test 2.2 -prep {
110 faultsim_restore_and_reopen
111 db eval {
112 BEGIN;
113 UPDATE t1 SET b=b+1;
114 }
115 } -body {
116 sqlite3_db_cacheflush db
117 } -test {
118 if {[sqlite3_get_autocommit db]} { error "Transaction rolled back!" }
119 faultsim_test_result {0 {}} {1 {disk I/O error}}
120 catch { db eval { SELECT * FROM t1 } }
121 catch { db eval COMMIT }
122 faultsim_integrity_check
123 }
124
125 do_faultsim_test 2.3 -prep {
126 faultsim_restore_and_reopen
127 db eval {
128 BEGIN;
129 UPDATE t1 SET b=b-1;
130 }
131 } -body {
132 sqlite3_db_cacheflush db
133 } -test {
134 if {[sqlite3_get_autocommit db]} { error "Transaction rolled back!" }
135 faultsim_test_result {0 {}} {1 {disk I/O error}}
136 catch { db eval { INSERT INTO t1 VALUES(11, 12, randomblob(600)) } }
137 catch { db eval COMMIT }
138 faultsim_integrity_check
139 }
140
141 do_faultsim_test 2.4 -prep {
142 faultsim_restore_and_reopen
143 db eval {
144 BEGIN;
145 UPDATE t1 SET b=b-1;
146 }
147 } -body {
148 catch { sqlite3_db_cacheflush db }
149 catch { sqlite3_db_release_memory db }
150 catch { sqlite3_db_cacheflush db }
151 execsql { SELECT a, b FROM t1 }
152 } -test {
153 faultsim_test_result {0 {1 1 3 3 5 5 7 7 9 9}} {1 {disk I/O error}}
154 catchsql ROLLBACK
155 faultsim_integrity_check
156 }
157
158 finish_test
OLDNEW
« no previous file with comments | « third_party/sqlite/sqlite-src-3170000/test/cast.test ('k') | third_party/sqlite/sqlite-src-3170000/test/check.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698