Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add some test cases simulating crashes with various storage medium sector sizes. (CVS 3704) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
c3c5f658cf9c69b6e81e63fbde5dd0a8 |
User & Date: | danielk1977 2007-03-19 15:04:54.000 |
Context
2007-03-19
| ||
17:44 | Modify the interface to the pager sub-system in preparation for performing IO in blocks based on sector-size, not database page-size. (CVS 3705) (check-in: 7dc7658887 user: danielk1977 tags: trunk) | |
15:04 | Add some test cases simulating crashes with various storage medium sector sizes. (CVS 3704) (check-in: c3c5f658cf user: danielk1977 tags: trunk) | |
13:53 | Fix some problems with test cases in shared_err.test. Also a real bug causing a segfault after an IO error in pager.c. (CVS 3703) (check-in: 9f62ef1ec3 user: danielk1977 tags: trunk) | |
Changes
Changes to test/crash2.test.
︙ | ︙ | |||
12 13 14 15 16 17 18 | # # The focus of this file is testing the ability of the database to # uses its rollback journal to recover intact (no database corruption) # from a power failure during the middle of a COMMIT. Even more # specifically, the tests in this file verify this functionality # for storage mediums with various sector sizes. # | | | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # # The focus of this file is testing the ability of the database to # uses its rollback journal to recover intact (no database corruption) # from a power failure during the middle of a COMMIT. Even more # specifically, the tests in this file verify this functionality # for storage mediums with various sector sizes. # # $Id: crash2.test,v 1.3 2007/03/19 15:04:54 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !crashtest { finish_test return |
︙ | ︙ | |||
55 56 57 58 59 60 61 62 63 64 | crashsql -file test.db -blocksize 2048 " [string repeat {SELECT random();} $ii] CREATE TABLE hij(h, i, j); " db eval {PRAGMA integrity_check} } {ok} } finish_test | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | crashsql -file test.db -blocksize 2048 " [string repeat {SELECT random();} $ii] CREATE TABLE hij(h, i, j); " db eval {PRAGMA integrity_check} } {ok} } proc signature {} { return [db eval {SELECT count(*), md5sum(a), md5sum(b), md5sum(c) FROM abc}] } # Test case for crashing during journal sync with simulated # sector-size values from 1024 to 8192. # do_test crash2-2.0 { execsql BEGIN for {set n 0} {$n < 1000} {incr n} { execsql "INSERT INTO abc VALUES($n, [expr 2*$n], [expr 3*$n])" } execsql { INSERT INTO abc SELECT * FROM abc; INSERT INTO abc SELECT * FROM abc; INSERT INTO abc SELECT * FROM abc; INSERT INTO abc SELECT * FROM abc; INSERT INTO abc SELECT * FROM abc; } execsql COMMIT expr ([file size test.db] / 1024) > 450 } {1} for {set i 1} {$i < 30} {incr i} { set sig [signature] set sector [expr 1024 * 1<<($i%4)] do_test crash-2.$i.1 { crashsql -blocksize $sector -delay [expr $i%5 + 1] -file test.db-journal " BEGIN; SELECT random() FROM abc LIMIT $i; INSERT INTO abc SELECT randstr(10,10), 0, 0 FROM abc WHERE random()%2==0; DELETE FROM abc WHERE random()%2!=0; COMMIT; " } {1 {child process exited abnormally}} do_test crash-2.$i.2 { signature } $sig } # Test case for crashing during database sync with simulated # sector-size values from 1024 to 8192. # for {set i 1} {$i < 10} {incr i} { set sig [signature] set sector [expr 1024 * 1<<($i%4)] do_test crash-3.$i.1 { crashsql -blocksize $sector -file test.db " BEGIN; SELECT random() FROM abc LIMIT $i; INSERT INTO abc SELECT randstr(10,10), 0, 0 FROM abc WHERE random()%2==0; DELETE FROM abc WHERE random()%2!=0; COMMIT; " } {1 {child process exited abnormally}} do_test crash-3.$i.2 { signature } $sig } finish_test |