From: danielk1977 Date: Wed, 30 May 2007 08:18:04 +0000 (+0000) Subject: Add the start of the soak-test infrastructure. (CVS 4042) X-Git-Tag: version-3.4.0~43 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5453b8da9e6e63c9278a71cb99e03b20d9f1f69e;p=thirdparty%2Fsqlite.git Add the start of the soak-test infrastructure. (CVS 4042) FossilOrigin-Name: 5d0b247ca1667f5d773bda337cb6f58c3b14676a --- diff --git a/manifest b/manifest index 9f9319527a..d2777c8b7d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\sproblem\swith\szeroblob()\sand\sCAST(...)\sexpressions\sthat\scould\scause\san\sassert()\sto\sfail.\s(CVS\s4041) -D 2007-05-30T06:19:33 +C Add\sthe\sstart\sof\sthe\ssoak-test\sinfrastructure.\s(CVS\s4042) +D 2007-05-30T08:18:04 F Makefile.in a42354804b50c2708ce72cf79e4daa30f50191b5 F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028 @@ -145,7 +145,7 @@ F src/vtab.c c5ebebf615b2f29499fbe97a584c4bb342632aa0 F src/where.c 1c27ddb2f19976175fecdcf8f5a0ca23596917fb F tclinstaller.tcl 4356d9d94d2b5ed5e68f9f0c80c4df3048dd7617 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2 -F test/all.test 93a40a7612b3c5e6efd1f5b98496a8b02a45cfdb +F test/all.test f0ea4b968d5fe05d85e9cab6fa491ec7e3b9fcc4 F test/alter.test c2a9402e17a731e5294ef370214bd9f88351d18d F test/alter2.test 50c3f554b8236d179d72511c0a4f23c5eb7f2af3 F test/alter3.test a6eec8f454be9b6ce73d8d7dc711453675a10ce7 @@ -250,7 +250,7 @@ F test/fts2l.test 4c53c89ce3919003765ff4fd8d98ecf724d97dd3 F test/fts2m.test 4b30142ead6f3ed076e880a2a464064c5ad58c51 F test/fts2n.test a70357e72742681eaebfdbe9007b87ff3b771638 F test/func.test 605989453d1b42cec1d05c17aa232dc98e3e04e6 -F test/fuzz.test 3d382b2d3c6b909a4f08b46dc6ca6a149eeb3a81 +F test/fuzz.test 9fdb668167bd38eb7137d49c8e9c250994bdbd5b F test/fuzz2.test ea38692ce2da99ad79fe0be5eb1a452c1c4d37bb F test/hook.test 7e7645fd9a033f79cce8fdff151e32715e7ec50a F test/icu.test e6bfae7f625c88fd14df6f540fe835bdfc1e4329 @@ -322,7 +322,7 @@ F test/pragma.test b0e73879206934a835856a8b8c4cc884cd8562f3 F test/printf.test 69d8cb0771a1a5e4d9d5dece12fc2c16179ac5e5 F test/progress.test 8b22b4974b0a95272566385f8cb8c341c7130df8 x F test/ptrchng.test 1c712dd6516e1377471744fa765e41c79a357da6 -F test/quick.test 3d7f6ffd285e1589a58874dd483ccb6e058ea4a5 +F test/quick.test 41052ccf861fa49145496c9e9db62df4b0a2b6b8 F test/quote.test 215897dbe8de1a6f701265836d6601cc6ed103e6 F test/rdonly.test b34db316525440d3b42c32e83942c02c37d28ef0 F test/reindex.test 38b138abe36bf9a08c791ed44d9f76cd6b97b78b @@ -343,6 +343,7 @@ F test/shared.test 5c39f216ce85d723eda5875804bbf5ef8a03fcfc F test/shared2.test 8b48f8d33494413ef4cf250110d89403e2bf6b23 F test/shared3.test 01e3e124dbb3859788aabc7cfb82f7ea04421749 F test/shared_err.test cc528f6e78665787e93d9ce3a782a2ce5179d821 +F test/soak.test dac7ec07bdedd8f924de69ba029ed1dacbc1082a F test/sort.test 0e4456e729e5a92a625907c63dcdedfbe72c5dc5 F test/speed1.test 22e1b27af0683ed44dcd2f93ed817a9c3e65084a F test/speed2.test 53177056baf6556dcbdcf032bbdfc41c1aa74ded @@ -495,7 +496,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5 -P f9a95e92dfaaa61ec0a44b9b7017b07929c94d26 -R 669d18871f9c948e2f1efb490acd8d0d +P 03750a2a6b5186689f7db6650c0a889429790b03 +R cd63e6e2215c48b174d5e94a02b48d9a U danielk1977 -Z 49b3f7347b55c791931b6c0615c872bf +Z 17f10a57e39853a2feb0d4c1a0988d68 diff --git a/manifest.uuid b/manifest.uuid index 736118dc2e..8ba82a6c22 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -03750a2a6b5186689f7db6650c0a889429790b03 \ No newline at end of file +5d0b247ca1667f5d773bda337cb6f58c3b14676a \ No newline at end of file diff --git a/test/all.test b/test/all.test index 4e6c0b5db2..76f5bbc87b 100644 --- a/test/all.test +++ b/test/all.test @@ -10,7 +10,7 @@ #*********************************************************************** # This file runs all tests. # -# $Id: all.test,v 1.42 2007/05/10 17:32:48 danielk1977 Exp $ +# $Id: all.test,v 1.43 2007/05/30 08:18:04 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -61,6 +61,7 @@ set EXCLUDE { memleak.test sqllimits1.test fuzz.test + soak.test } # Files to include in the test. If this list is empty then everything diff --git a/test/fuzz.test b/test/fuzz.test index 9f6f095a71..6f313a8738 100644 --- a/test/fuzz.test +++ b/test/fuzz.test @@ -19,12 +19,14 @@ # # The most complicated trees are for SELECT statements. # -# $Id: fuzz.test,v 1.12 2007/05/15 07:14:33 danielk1977 Exp $ +# $Id: fuzz.test,v 1.13 2007/05/30 08:18:04 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl set ::REPEATS 5000 + +# If running quick.test, don't do so many iterations. if {[info exists ::ISQUICK]} { if {$::ISQUICK} { set ::REPEATS 20 } } diff --git a/test/quick.test b/test/quick.test index a3d18a8ef0..f1d51ee40d 100644 --- a/test/quick.test +++ b/test/quick.test @@ -6,7 +6,7 @@ #*********************************************************************** # This file runs all tests. # -# $Id: quick.test,v 1.56 2007/05/12 09:30:47 danielk1977 Exp $ +# $Id: quick.test,v 1.57 2007/05/30 08:18:04 danielk1977 Exp $ proc lshift {lvar} { upvar $lvar l @@ -55,6 +55,7 @@ set EXCLUDE { misc7.test misuse.test quick.test + soak.test speed1.test speed2.test sqllimits1.test diff --git a/test/soak.test b/test/soak.test new file mode 100644 index 0000000000..89a8f8c1c3 --- /dev/null +++ b/test/soak.test @@ -0,0 +1,89 @@ +# 2007 May 24 +# +# The author disclaims copyright to this source code. In place of +# a legal notice, here is a blessing: +# +# May you do good and not evil. +# May you find forgiveness for yourself and forgive others. +# May you share freely, never taking more than you give. +# +#*********************************************************************** +# This file is the driver for the "soak" tests. It is a peer of the +# quick.test and all.test scripts. +# +# $Id: soak.test,v 1.1 2007/05/30 08:18:04 danielk1977 Exp $ + +set testdir [file dirname $argv0] +source $testdir/tester.tcl +rename finish_test really_finish_test +proc finish_test {} {} + +# By default, guarantee that the tests will run for at least 1 hour. +# +set TIMEOUT 3600 + +# Process command-line arguments. +# +if {[llength $argv]>0} { + foreach {name value} $argv { + switch -- $name { + -timeout { + set TIMEOUT $value + } + default { + puts stderr "Unknown option: $name" + exit + } + } + } +} +set argv [list] + +# Test plan: +# +# The general principle is to run those SQLite tests that use +# pseudo-random data in some way over and over again for a very +# long time. The number of tests run depends on the value of +# global variable $TIMEOUT - tests are run for at least $TIMEOUT +# seconds. +# +# fuzz.test (pseudo-random SQL statements) +# trans.test (pseudo-random changes to a database followed by rollbacks) +# +# fuzzy malloc? +# +# Many database changes maintaining some kind of invariant. +# Storing checksums etc. +# + +# List of test files that are run by this file. +# +set SOAKTESTS { + fuzz.test + trans.test +} + +set ISQUICK 1 + +set soak_starttime [clock seconds] +set soak_finishtime [expr {$soak_starttime + $TIMEOUT}] + +# Loop until the timeout is reached or an error occurs. +# +for {set iRun 0} {[clock seconds] < $soak_finishtime && $nErr==0} {incr iRun} { + + set iIdx [expr {$iRun % [llength $SOAKTESTS]}] + source [file join $testdir [lindex $SOAKTESTS $iIdx]] + catch {db close} + + if {$sqlite_open_file_count>0} { + puts "$tail did not close all files: $sqlite_open_file_count" + incr nErr + lappend ::failList $tail + set sqlite_open_file_count 0 + } + +} + +really_finish_test +