OLD | NEW |
| (Empty) |
1 # 2015 Mar 13 | |
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 # Crash tests for the multiplex module with 8.3 filenames enabled. | |
13 # | |
14 | |
15 set testdir [file dirname $argv0] | |
16 source $testdir/tester.tcl | |
17 set testprefix crashM | |
18 | |
19 ifcapable !crashtest||!8_3_names { | |
20 finish_test | |
21 return | |
22 } | |
23 | |
24 db close | |
25 sqlite3_shutdown | |
26 sqlite3_config_uri 1 | |
27 | |
28 foreach f [glob -nocomplain test1.* test2.*] { forcedelete $f } | |
29 sqlite3_multiplex_initialize "" 1 | |
30 sqlite3 db file:test1.db?8_3_names=1 | |
31 sqlite3_multiplex_control db main chunk_size [expr 64*1024] | |
32 | |
33 do_execsql_test 1.0 { | |
34 ATTACH 'file:test2.db?8_3_names=1' AS aux; | |
35 | |
36 CREATE TABLE t1(x, y); | |
37 CREATE INDEX t1x ON t1(x); | |
38 CREATE INDEX t1y ON t1(y); | |
39 | |
40 CREATE TABLE aux.t2(x, y); | |
41 CREATE INDEX aux.t2x ON t2(x); | |
42 CREATE INDEX aux.t2y ON t2(y); | |
43 | |
44 WITH s(a) AS ( | |
45 SELECT 1 UNION ALL SELECT a+1 FROM s WHERE a<1000 | |
46 ) | |
47 INSERT INTO t1 SELECT a, randomblob(500) FROM s; | |
48 | |
49 WITH s(a) AS ( | |
50 SELECT 1 UNION ALL SELECT a+1 FROM s WHERE a<1000 | |
51 ) | |
52 INSERT INTO t2 SELECT a, randomblob(500) FROM s; | |
53 } {} | |
54 | |
55 for {set i 0} {$i < 20} {incr i} { | |
56 do_test 2.$i.1 { | |
57 crashsql -delay 1 -file test1.db -opendb { | |
58 sqlite3_shutdown | |
59 sqlite3_config_uri 1 | |
60 sqlite3_multiplex_initialize crash 1 | |
61 sqlite3 db file:test1.db?8_3_names=1 | |
62 sqlite3_multiplex_control db main chunk_size [expr 64*1024] | |
63 } { | |
64 ATTACH 'file:test2.db?8_3_names=1' AS aux; | |
65 BEGIN; | |
66 UPDATE t1 SET y = randomblob(500) WHERE (x%10)==0; | |
67 UPDATE t2 SET y = randomblob(500) WHERE (x%10)==0; | |
68 COMMIT; | |
69 } | |
70 } {1 {child process exited abnormally}} | |
71 | |
72 do_execsql_test 2.$i.2 { | |
73 PRAGMA main.integrity_check; | |
74 PRAGMA aux.integrity_check; | |
75 } {ok ok} | |
76 } | |
77 | |
78 catch { db close } | |
79 sqlite3_multiplex_shutdown | |
80 finish_test | |
OLD | NEW |