From cb1f0f6c26d2bb1422f7d39b3b359729999b1f0d Mon Sep 17 00:00:00 2001 From: drh Date: Tue, 8 Jan 2008 15:18:52 +0000 Subject: [PATCH] Add additional randomness to crash tests. (CVS 4694) FossilOrigin-Name: 3ccce1f58be46787f8a35f0fa6d738ed126c0f07 --- manifest | 14 +++++++------- manifest.uuid | 2 +- test/crash.test | 30 ++++++++++++++++++------------ test/tester.tcl | 9 ++++++++- 4 files changed, 34 insertions(+), 21 deletions(-) diff --git a/manifest b/manifest index 02b0ee81f4..16e81f9397 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Progress\stoward\sregisterification\sof\sthe\sconstraint\schecking\slogic\sfor\nINSERT\sand\sUPDATE.\s(CVS\s4693) -D 2008-01-08T02:57:56 +C Add\sadditional\srandomness\sto\scrash\stests.\s(CVS\s4694) +D 2008-01-08T15:18:52 F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7 F Makefile.in 30789bf70614bad659351660d76b8e533f3340e9 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -239,7 +239,7 @@ F test/corrupt.test 18c7a995b1af76a8c8600b996257f2c7b7bff083 F test/corrupt2.test 572f8df0303d0ce63ddad5c5c9101a83a345ae46 F test/corrupt3.test 263e8bb04e2728df832fddf6973cf54c91db0c32 F test/corrupt4.test acdb01afaedf529004b70e55de1a6f5a05ae7fff -F test/crash.test e8b9385771789851f030045c68fdf369ca030fc6 +F test/crash.test 1b6ac8410689ff78028887f445062dc897c9ac89 F test/crash2.test 26d7a4c5520201e5de2c696ea51ab946b59dc0e9 F test/crash3.test 0b09687ae1a3ccbcefdfaeb4b963e26e36255d76 F test/crashtest1.c 09c1c7d728ccf4feb9e481671e29dda5669bbcc2 @@ -443,7 +443,7 @@ F test/table.test 13b1c2e2fb4727b35ee1fb7641fc469214fd2455 F test/tableapi.test 92651a95c23cf955e92407928e640536402fa3cc F test/tclsqlite.test 3fac87cb1059c46b8fa8a60b553f4f1adb0fb6d9 F test/temptable.test 19b851b9e3e64d91e9867619b2a3f5fffee6e125 -F test/tester.tcl ac4dace5f901b1ba5586b209f533f115d423985c +F test/tester.tcl cfe051326b216c5a6ade6fa6e4d2ee4fd460a0aa F test/thread001.test 8fbd9559da0bbdc273e00318c7fd66c162020af7 F test/thread002.test 2c4ad2c386f60f6fe268cd91c769ee35b3c1fd0b F test/thread1.test 776c9e459b75ba905193b351926ac4019b049f35 @@ -604,7 +604,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5 -P aa48867cfa04da265b906e5b583bc7ac6b6a1157 -R af4f73c6bffdbedd3861a3c5eb6d920e +P b9bf509e39f5ac38c2149d2a648f68e5df5ae9e3 +R f86b7697fbcfb346b78b785f78b0e5e6 U drh -Z 313f66697e8ae592eab31fdd061363d6 +Z 70a8e75efdd2439fff3e31be8bea7e10 diff --git a/manifest.uuid b/manifest.uuid index bf6b8b32fb..3a2f8b985b 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b9bf509e39f5ac38c2149d2a648f68e5df5ae9e3 \ No newline at end of file +3ccce1f58be46787f8a35f0fa6d738ed126c0f07 \ No newline at end of file diff --git a/test/crash.test b/test/crash.test index 6a216be9b5..42f41a36e4 100644 --- a/test/crash.test +++ b/test/crash.test @@ -17,7 +17,7 @@ # These routines allow us to simulate the kind of file damage that # occurs after a power failure. # -# $Id: crash.test,v 1.26 2007/10/09 08:29:32 danielk1977 Exp $ +# $Id: crash.test,v 1.27 2008/01/08 15:18:52 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -67,14 +67,17 @@ do_test crash-1.1 { set ::sig [signature] expr 0 } {0} -do_test crash-1.2 { - crashsql -delay 1 -file test.db-journal { - DELETE FROM abc WHERE a = 1; - } -} {1 {child process exited abnormally}} -do_test crash-1.3 { - signature -} $::sig +for {set i 0} {$i<10} {incr i} { + set seed [expr {int(abs(rand()*10000))}] + do_test crash-1.2.$i { + crashsql -delay 1 -file test.db-journal -seed $seed { + DELETE FROM abc WHERE a = 1; + } + } {1 {child process exited abnormally}} + do_test crash-1.3.$i { + signature + } $::sig +} do_test crash-1.4 { crashsql -delay 1 -file test.db { DELETE FROM abc WHERE a = 1; @@ -185,7 +188,8 @@ do_test crash-3.0 { for {set i 1} {$i < $repeats} {incr i} { set sig [signature] do_test crash-3.$i.1 { - crashsql -delay [expr $i%5 + 1] -file test.db-journal " + set seed [expr {int(abs(rand()*10000))}] + crashsql -delay [expr $i%5 + 1] -file test.db-journal -seed $seed " BEGIN; SELECT random() FROM abc LIMIT $i; INSERT INTO abc VALUES(randstr(10,10), 0, 0); @@ -223,10 +227,11 @@ ifcapable attach { set fin 0 for {set i 1} {$i<$repeats} {incr i} { + set seed [expr {int(abs(rand()*10000))}] set sig [signature] set sig2 [signature2] do_test crash-4.1.$i.1 { - set c [crashsql -delay $i -file test.db-journal " + set c [crashsql -delay $i -file test.db-journal -seed $::seed " ATTACH 'test2.db' AS aux; BEGIN; SELECT randstr($i,$i) FROM abc LIMIT $i; @@ -253,11 +258,12 @@ ifcapable attach { set i 0 set fin 0 while {[incr i]} { + set seed [expr {int(abs(rand()*10000))}] set sig [signature] set sig2 [signature2] set ::fin 0 do_test crash-4.2.$i.1 { - set c [crashsql -delay $i -file test2.db-journal " + set c [crashsql -delay $i -file test2.db-journal -seed $::seed " ATTACH 'test2.db' AS aux; BEGIN; SELECT randstr($i,$i) FROM abc LIMIT $i; diff --git a/test/tester.tcl b/test/tester.tcl index c377fa155e..aeb8f8a5d9 100644 --- a/test/tester.tcl +++ b/test/tester.tcl @@ -11,7 +11,7 @@ # This file implements some common TCL routines used for regression # testing the SQLite library # -# $Id: tester.tcl,v 1.96 2008/01/07 19:20:25 drh Exp $ +# $Id: tester.tcl,v 1.97 2008/01/08 15:18:52 drh Exp $ set tcl_precision 15 @@ -352,6 +352,7 @@ proc crashsql {args} { set blocksize "" set crashdelay 1 + set prngseed 0 set crashfile "" set dc "" set sql [lindex $args end] @@ -362,6 +363,7 @@ proc crashsql {args} { set z2 [lindex $args [expr $ii+1]] if {$n>1 && [string first $z -delay]==0} {set crashdelay $z2} \ + elseif {$n>1 && [string first $z -seed]==0} {set prngseed $z2} \ elseif {$n>1 && [string first $z -file]==0} {set crashfile $z2} \ elseif {$n>1 && [string first $z -blocksize]==0} {set blocksize "-s $z2" } \ elseif {$n>1 && [string first $z -characteristics]==0} {set dc "-c {$z2}" } \ @@ -386,6 +388,11 @@ proc crashsql {args} { puts $f {db eval {SELECT * FROM sqlite_master;}} puts $f {set bt [btree_from_db db]} puts $f {btree_set_cache_size $bt 10} + if {$prngseed} { + set seed [expr {$prngseed%10007+1}] + # puts seed=$seed + puts $f "db eval {SELECT randomblob($seed)}" + } puts $f "db eval {" puts $f "$sql" -- 2.47.3