1# 2008 June 21 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# $Id: permutations.test,v 1.51 2009/07/01 18:09:02 danielk1977 Exp $ 13 14set testdir [file dirname $argv0] 15source $testdir/tester.tcl 16 17# Argument processing. 18# 19#puts "PERM-DEBUG: argv=$argv" 20namespace eval ::perm { 21 variable testmode [lindex $::argv 0] 22 variable testfile [lindex $::argv 1] 23} 24set argv [lrange $argv 2 end] 25#puts "PERM-DEBUG: testmode=$::perm::testmode tstfile=$::perm::testfile" 26 27if {$::perm::testmode eq "veryquick"} { 28 set ::perm::testmode [list persistent_journal no_journal] 29 set G(isquick) 1 30} 31if {$::perm::testmode eq "quick"} { 32 set ::perm::testmode [list persistent_journal no_journal autovacuum_ioerr] 33 set G(isquick) 1 34} 35if {$::perm::testmode eq "all" || $::perm::testmode eq ""} { 36 set ::perm::testmode { 37 memsubsys1 memsubsys2 singlethread multithread onefile utf16 exclusive 38 persistent_journal persistent_journal_error no_journal no_journal_error 39 autovacuum_ioerr no_mutex_try fullmutex journaltest inmemory_journal 40 pcache0 pcache10 pcache50 pcache90 pcache100 41 } 42} 43if {$::perm::testmode eq "targets"} { 44 puts "" 45 puts -nonewline "veryquick " 46 puts "Same as persistent_journal and no_journal" 47 puts -nonewline "quick " 48 puts "Same as persistent_journal, no_journal and autovacuum_ioerr" 49 puts -nonewline "all " 50 puts "Everything except autovacuum_crash" 51} 52#puts "PERM-DEBUG: testmode=$::perm::testmode" 53 54set EXCLUDE { 55 all.test in2.test onefile.test 56 async2.test incrvacuum_ioerr.test permutations.test 57 async.test jrnlmode2.test quick.test 58 autovacuum_crash.test jrnlmode3.test shared_err.test 59 autovacuum_ioerr.test jrnlmode4.test soak.test 60 btree8.test loadext.test speed1p.test 61 corrupt.test malloc2.test speed1.test 62 crash2.test malloc3.test speed2.test 63 crash3.test malloc4.test speed3.test 64 crash4.test mallocAll.test speed4p.test 65 crash6.test malloc.test speed4.test 66 crash7.test memleak.test sqllimits1.test 67 crash.test memsubsys1.test thread001.test 68 exclusive3.test memsubsys2.test thread002.test 69 fts3.test misc7.test utf16.test 70 fuzz_malloc.test misuse.test veryquick.test 71 fuzz.test mutex2.test vtab_err.test 72 lookaside.test fuzz3.test savepoint4.test 73} 74set ALLTESTS [list] 75foreach filename [glob $testdir/*.test] { 76 set filename [file tail $filename] 77 if {[lsearch $EXCLUDE $filename] < 0} { lappend ALLTESTS $filename } 78} 79set ALLTESTS [lsort $ALLTESTS] 80set WALTESTS [list] 81foreach filename $ALLTESTS { 82 if {[regexp {^wal} $filename]} {lappend WALTESTS $filename} 83} 84 85# run_tests NAME OPTIONS 86# 87# where available options are: 88# 89# -description TITLE (default "") 90# -initialize SCRIPT (default "") 91# -shutdown SCRIPT (default "") 92# -include LIST-OF-FILES (default $::ALLTESTS) 93# -exclude LIST-OF-FILES (default "") 94# -presql SQL (default "") 95# -options LIST (default "") 96# 97proc run_tests {name args} { 98 99 set default(-shutdown) "" 100 set default(-initialize) "" 101 set default(-exclude) "" 102 set default(-include) $::ALLTESTS 103 set default(-presql) "" 104 set default(-description) "no description supplied (fixme)" 105 set default(-options) "" 106 107 array set options [array get default] 108 array set options $args 109 foreach k [array names options] { 110 if {[info exists default($k)]==0} { 111 error "Unknown option: $k" 112 } 113 } 114 #puts "PERM-DEBUG: name=$name testfile=$::perm::testfile" 115 #puts "PERM-DEBUG: [array get options]" 116 117 if {$::perm::testmode eq "targets"} { 118 puts [format "% -20s %s" $name [string trim $options(-description)]] 119 return 120 } 121 if {$::perm::testmode ne "" && [lsearch $::perm::testmode $name]<0} { 122 puts "skipping permutation test $name..." 123 return 124 } 125 126 127 set ::G(perm:name) $name 128 set ::G(perm:presql) $options(-presql) 129 set ::G(perm:sqlite3_args) $options(-options) 130 131 uplevel $options(-initialize) 132 133 foreach file [lsort $options(-include)] { 134 if {[lsearch $options(-exclude) $file] < 0 && 135 ( $::perm::testfile eq "" || 136 $::perm::testfile eq $file || 137 "$::perm::testfile.test" eq $file ) 138 } { 139 set ::perm::shared_cache_setting [shared_cache_setting] 140 141 slave_test_file $::testdir/$file 142 143 if {$::perm::shared_cache_setting ne [shared_cache_setting]} { 144 error "File $::testdir/$file changed the shared cache setting from $::perm::shared_cache_setting to [shared_cache_setting]" 145 } 146 } else { 147 # puts "skipping file $file" 148 } 149 } 150 151 152 uplevel $options(-shutdown) 153 154 unset ::G(perm:name) 155 unset ::G(perm:presql) 156 unset ::G(perm:sqlite3_args) 157} 158 159proc shared_cache_setting {} { 160 set ret 0 161 catch { 162 set ret [sqlite3_enable_shared_cache] 163 } 164 return $ret 165} 166 167############################################################################# 168# Start of tests 169 170# Run some tests using pre-allocated page and scratch blocks. 171# 172run_tests "memsubsys1" -description { 173 Tests using pre-allocated page and scratch blocks 174} -exclude { 175 ioerr5.test 176 malloc5.test 177} -initialize { 178 catch {db close} 179 sqlite3_shutdown 180 sqlite3_config_pagecache 4096 24 181 sqlite3_config_scratch 25000 1 182 sqlite3_initialize 183 autoinstall_test_functions 184} -shutdown { 185 catch {db close} 186 sqlite3_shutdown 187 sqlite3_config_pagecache 0 0 188 sqlite3_config_scratch 0 0 189 sqlite3_initialize 190 autoinstall_test_functions 191} 192 193# Run some tests using pre-allocated page and scratch blocks. This time 194# the allocations are too small to use in most cases. 195# 196# Both ioerr5.test and malloc5.test are excluded because they test the 197# sqlite3_soft_heap_limit() and sqlite3_release_memory() functionality. 198# This functionality is disabled if a pre-allocated page block is provided. 199# 200run_tests "memsubsys2" -description { 201 Tests using small pre-allocated page and scratch blocks 202} -exclude { 203 ioerr5.test 204 malloc5.test 205} -initialize { 206 catch {db close} 207 sqlite3_shutdown 208 sqlite3_config_pagecache 512 5 209 sqlite3_config_scratch 1000 1 210 sqlite3_initialize 211 autoinstall_test_functions 212} -shutdown { 213 catch {db close} 214 sqlite3_shutdown 215 sqlite3_config_pagecache 0 0 216 sqlite3_config_scratch 0 0 217 sqlite3_initialize 218 autoinstall_test_functions 219} 220 221# Run all tests with the lookaside allocator disabled. 222# 223run_tests "nolookaside" -description { 224 OOM tests with lookaside disabled 225} -initialize { 226 catch {db close} 227 sqlite3_shutdown 228 sqlite3_config_lookaside 0 0 229 sqlite3_initialize 230 autoinstall_test_functions 231} -shutdown { 232 catch {db close} 233 sqlite3_shutdown 234 sqlite3_config_lookaside 100 500 235 sqlite3_initialize 236 autoinstall_test_functions 237} 238 239# Run some tests in SQLITE_CONFIG_SINGLETHREAD mode. 240# 241run_tests "singlethread" -description { 242 Tests run in SQLITE_CONFIG_SINGLETHREAD mode 243} -initialize { 244 catch {db close} 245 sqlite3_shutdown 246 catch {sqlite3_config singlethread} 247 sqlite3_initialize 248 autoinstall_test_functions 249} -include { 250 delete.test delete2.test insert.test rollback.test select1.test 251 select2.test trans.test update.test vacuum.test types.test 252 types2.test types3.test 253} -shutdown { 254 catch {db close} 255 sqlite3_shutdown 256 catch {sqlite3_config serialized} 257 sqlite3_initialize 258 autoinstall_test_functions 259} 260 261run_tests "nomutex" -description { 262 Tests run with the SQLITE_OPEN_MULTITHREADED flag passed to sqlite3_open(). 263} -initialize { 264 rename sqlite3 sqlite3_nomutex 265 proc sqlite3 {args} { 266 if {[string range [lindex $args 0] 0 0] ne "-"} { 267 lappend args -fullmutex 0 -nomutex 1 268 } 269 uplevel [concat sqlite3_nomutex $args] 270 } 271} -include { 272 delete.test delete2.test insert.test rollback.test select1.test 273 select2.test trans.test update.test vacuum.test types.test 274 types2.test types3.test 275} -shutdown { 276 rename sqlite3 {} 277 rename sqlite3_nomutex sqlite3 278} 279 280# Run some tests in SQLITE_CONFIG_MULTITHREAD mode. 281# 282run_tests "multithread" -description { 283 Tests run in SQLITE_CONFIG_MULTITHREAD mode 284} -initialize { 285 catch {db close} 286 sqlite3_shutdown 287 catch {sqlite3_config multithread} 288 sqlite3_initialize 289 autoinstall_test_functions 290} -include { 291 delete.test delete2.test insert.test rollback.test select1.test 292 select2.test trans.test update.test vacuum.test types.test 293 types2.test types3.test 294} -shutdown { 295 catch {db close} 296 sqlite3_shutdown 297 catch {sqlite3_config serialized} 298 sqlite3_initialize 299 autoinstall_test_functions 300} 301 302# Run some tests in SQLITE_OPEN_FULLMUTEX mode. 303# 304run_tests "fullmutex" -description { 305 Tests run in SQLITE_OPEN_FULLMUTEX mode 306} -initialize { 307 rename sqlite3 sqlite3_fullmutex 308 proc sqlite3 {args} { 309 if {[string range [lindex $args 0] 0 0] ne "-"} { 310 lappend args -nomutex 0 -fullmutex 1 311 } 312 uplevel [concat sqlite3_fullmutex $args] 313 } 314} -include { 315 delete.test delete2.test insert.test rollback.test select1.test 316 select2.test trans.test update.test vacuum.test types.test 317 types2.test types3.test 318} -shutdown { 319 rename sqlite3 {} 320 rename sqlite3_fullmutex sqlite3 321} 322 323# Run some tests using the "onefile" demo. 324# 325run_tests "onefile" -description { 326 Run some tests using the "test_onefile.c" demo 327} -initialize { 328 rename sqlite3 sqlite3_onefile 329 proc sqlite3 {args} { 330 if {[string range [lindex $args 0] 0 0] ne "-"} { 331 lappend args -vfs fs 332 } 333 uplevel [concat sqlite3_onefile $args] 334 } 335} -include { 336 conflict.test insert.test insert2.test insert3.test 337 rollback.test select1.test select2.test select3.test 338} -shutdown { 339 rename sqlite3 {} 340 rename sqlite3_onefile sqlite3 341} 342 343# Run some tests using UTF-16 databases. 344# 345run_tests "utf16" -description { 346 Run tests using UTF-16 databases 347} -presql { 348 pragma encoding = 'UTF-16' 349} -include { 350 alter.test alter3.test 351 auth.test bind.test blob.test capi2.test capi3.test collate1.test 352 collate2.test collate3.test collate4.test collate5.test collate6.test 353 conflict.test date.test delete.test expr.test fkey1.test func.test 354 hook.test index.test insert2.test insert.test interrupt.test in.test 355 intpkey.test ioerr.test join2.test join.test lastinsert.test 356 laststmtchanges.test limit.test lock2.test lock.test main.test 357 memdb.test minmax.test misc1.test misc2.test misc3.test notnull.test 358 null.test progress.test quote.test rowid.test select1.test select2.test 359 select3.test select4.test select5.test select6.test sort.test 360 subselect.test tableapi.test table.test temptable.test 361 trace.test trigger1.test trigger2.test trigger3.test 362 trigger4.test types2.test types.test unique.test update.test 363 vacuum.test view.test where.test 364} 365 366# Run some tests in exclusive locking mode. 367# 368run_tests "exclusive" -description { 369 Run tests in exclusive locking mode. 370} -presql { 371 pragma locking_mode = 'exclusive' 372} -include { 373 rollback.test select1.test select2.test 374 malloc.test ioerr.test 375} 376 377# Run some tests in exclusive locking mode with truncated journals. 378# 379run_tests "exclusive-truncate" -description { 380 Run tests in exclusive locking mode and truncate journal mode. 381} -presql { 382 pragma locking_mode = 'exclusive'; 383 pragma journal_mode = TRUNCATE; 384} -include { 385 delete.test delete2.test insert.test rollback.test select1.test 386 select2.test update.test malloc.test ioerr.test 387} 388 389# Run some tests in persistent journal mode. 390# 391run_tests "persistent_journal" -description { 392 Run tests in persistent-journal mode. 393} -presql { 394 pragma journal_mode = persist 395} -include { 396 delete.test delete2.test insert.test rollback.test select1.test 397 select2.test trans.test update.test vacuum.test 398} 399 400# Run some tests in truncating journal mode. 401# 402run_tests "truncate_journal" -description { 403 Run tests in persistent-journal mode. 404} -presql { 405 pragma journal_mode = truncate 406} -include { 407 delete.test delete2.test insert.test rollback.test select1.test 408 select2.test trans.test update.test vacuum.test 409 malloc.test ioerr.test 410} 411 412# Run some error tests in persistent journal mode. 413# 414run_tests "persistent_journal_error" -description { 415 Run malloc.test and ioerr.test in persistent-journal mode. 416} -presql { 417 pragma journal_mode = persist 418} -include { 419 malloc.test ioerr.test 420} 421 422# Run some tests in no journal mode. 423# 424run_tests "no_journal" -description { 425 Run tests in no-journal mode. 426} -presql { 427 pragma journal_mode = persist 428} -include { 429 delete.test delete2.test insert.test rollback.test select1.test 430 select2.test trans.test update.test vacuum.test 431} 432 433# Run some error tests in no journal mode. 434# 435run_tests "no_journal_error" -description { 436 Run malloc.test and ioerr.test in no-journal mode. 437} -presql { 438 pragma journal_mode = persist 439} -include { 440 malloc.test ioerr.test 441} 442 443# Run some crash-tests in autovacuum mode. 444# 445run_tests "autovacuum_crash" -description { 446 Run crash.test in autovacuum mode. 447} -presql { 448 pragma auto_vacuum = 1 449} -include crash.test 450 451# Run some ioerr-tests in autovacuum mode. 452# 453run_tests "autovacuum_ioerr" -description { 454 Run ioerr.test in autovacuum mode. 455} -presql { 456 pragma auto_vacuum = 1 457} -include ioerr.test 458 459# Run tests with an in-memory journal. 460# 461run_tests "inmemory_journal" -description { 462 Run tests with an in-memory journal file. 463} -presql { 464 pragma journal_mode = 'memory' 465} -exclude { 466 # Exclude all tests that simulate IO errors. 467 autovacuum_ioerr2.test incrvacuum_ioerr.test ioerr.test 468 ioerr.test ioerr2.test ioerr3.test ioerr4.test ioerr5.test 469 vacuum3.test incrblob_err.test diskfull.test backup_ioerr.test 470 e_fts3.test 471 472 # Exclude test scripts that use tcl IO to access journal files or count 473 # the number of fsync() calls. 474 pager.test exclusive.test jrnlmode.test sync.test misc1.test 475 journal1.test conflict.test crash8.test tkt3457.test io.test 476 477 # Exclude stmt.test, which expects sub-journals to use temporary files. 478 stmt.test 479 480 # WAL mode is different. 481 walmode.test walfault.test wal.test wal2.test wal3.test 482} 483 484ifcapable mem3 { 485 run_tests "memsys3" -description { 486 Run tests using the allocator in mem3.c. 487 } -exclude { 488 autovacuum.test delete3.test manydb.test 489 bigrow.test incrblob2.test memdb.test 490 bitvec.test index2.test memsubsys1.test 491 capi3c.test ioerr.test memsubsys2.test 492 capi3.test join3.test pagesize.test 493 collate5.test limit.test backup_ioerr.test 494 backup_malloc.test 495 } -initialize { 496 catch {db close} 497 sqlite3_reset_auto_extension 498 sqlite3_shutdown 499 sqlite3_config_heap 25000000 0 500 sqlite3_config_lookaside 0 0 501 ifcapable mem5 { 502 # If both memsys3 and memsys5 are enabled in the build, the call to 503 # [sqlite3_config_heap] will initialize the system to use memsys5. 504 # The following overrides this preference and installs the memsys3 505 # allocator. 506 sqlite3_install_memsys3 507 } 508 install_malloc_faultsim 1 509 sqlite3_initialize 510 autoinstall_test_functions 511 } -shutdown { 512 catch {db close} 513 sqlite3_shutdown 514 sqlite3_config_heap 0 0 515 sqlite3_config_lookaside 100 500 516 install_malloc_faultsim 1 517 sqlite3_initialize 518 autoinstall_test_functions 519 } 520} 521 522ifcapable mem5 { 523 run_tests "memsys5" -description { 524 Run tests using the allocator in mem5.c. 525 } -exclude { 526 autovacuum.test delete3.test manydb.test 527 bigrow.test incrblob2.test memdb.test 528 bitvec.test index2.test memsubsys1.test 529 capi3c.test ioerr.test memsubsys2.test 530 capi3.test join3.test pagesize.test 531 collate5.test limit.test zeroblob.test 532 } -initialize { 533 catch {db close} 534 sqlite3_shutdown 535 sqlite3_config_heap 25000000 64 536 sqlite3_config_lookaside 0 0 537 install_malloc_faultsim 1 538 sqlite3_initialize 539 autoinstall_test_functions 540 } -shutdown { 541 catch {db close} 542 sqlite3_shutdown 543 sqlite3_config_heap 0 0 544 sqlite3_config_lookaside 100 500 545 install_malloc_faultsim 1 546 sqlite3_initialize 547 autoinstall_test_functions 548 } 549 550 run_tests "memsys5-2" -description { 551 Run tests using the allocator in mem5.c in a different configuration. 552 } -include { 553 select1.test 554 } -initialize { 555 catch {db close} 556 sqlite3_shutdown 557 sqlite3_config_heap 40000000 16 558 sqlite3_config_lookaside 0 0 559 install_malloc_faultsim 1 560 sqlite3_initialize 561 autoinstall_test_functions 562 } -shutdown { 563 catch {db close} 564 sqlite3_shutdown 565 sqlite3_config_heap 0 0 566 sqlite3_config_lookaside 100 500 567 install_malloc_faultsim 1 568 sqlite3_initialize 569 autoinstall_test_functions 570 } 571} 572 573ifcapable threadsafe { 574 run_tests "no_mutex_try" -description { 575 The sqlite3_mutex_try() interface always fails 576 } -exclude [concat $EXCLUDE mutex1.test mutex2.test] \ 577 -initialize { 578 catch {db close} 579 sqlite3_shutdown 580 install_mutex_counters 1 581 set ::disable_mutex_try 1 582 sqlite3_initialize 583 autoinstall_test_functions 584 } -shutdown { 585 catch {db close} 586 sqlite3_shutdown 587 install_mutex_counters 0 588 sqlite3_initialize 589 autoinstall_test_functions 590 } 591} 592 593# run_tests "crash_safe_append" -description { 594# Run crash.test with persistent journals on a SAFE_APPEND file-system. 595# } -initialize { 596# rename crashsql sa_crashsql 597# proc crashsql {args} { 598# set options [lrange $args 0 [expr {[llength $args]-2}]] 599# lappend options -char safe_append 600# set sql [lindex $args end] 601# lappend options " 602# PRAGMA journal_mode=persistent; 603# $sql 604# " 605# set fd [open test.db-journal w] 606# puts $fd [string repeat 1234567890 100000] 607# close $fd 608# eval sa_crashsql $options 609# } 610# } -shutdown { 611# rename crashsql {} 612# rename sa_crashsql crashsql 613# } -include crash.test 614 615run_tests "safe_append" -description { 616 Run some tests on a SAFE_APPEND file-system. 617} -initialize { 618 rename sqlite3 sqlite3_safeappend 619 proc sqlite3 {args} { 620 if {[string range [lindex $args 0] 0 0] ne "-"} { 621 lappend args -vfs devsym 622 } 623 uplevel [concat sqlite3_safeappend $args] 624 } 625 sqlite3_simulate_device -char safe_append 626} -shutdown { 627 rename sqlite3 {} 628 rename sqlite3_shutdown sqlite3 629} -include [lsort [concat shared_err.test $ALLTESTS]] \ 630 -exclude async3.test 631 632# The set of tests to run on the alternative-pcache 633set perm-alt-pcache-testset { 634 async.test 635 attach.test 636 delete.test delete2.test 637 index.test 638 insert.test insert2.test 639 join.test join2.test 640 rollback.test 641 select1.test select2.test 642 trans.test 643 update.test 644} 645 646run_tests "pcache0" -description { 647 Alternative pcache implementation without random discard 648} -initialize { 649 catch {db close} 650 sqlite3_shutdown 651 sqlite3_config_alt_pcache 1 0 1 652 sqlite3_initialize 653 autoinstall_test_functions 654} -shutdown { 655 catch {db close} 656 sqlite3_shutdown 657 sqlite3_config_alt_pcache 0 0 0 658 sqlite3_config_lookaside 100 500 659 install_malloc_faultsim 1 660 sqlite3_initialize 661 autoinstall_test_functions 662} -include ${perm-alt-pcache-testset} 663 664run_tests "pcache10" -description { 665 Alternative pcache implementation without 10% random discard 666} -initialize { 667 catch {db close} 668 sqlite3_shutdown 669 sqlite3_config_alt_pcache 1 50 1 670 sqlite3_initialize 671 autoinstall_test_functions 672} -shutdown { 673 catch {db close} 674 sqlite3_shutdown 675 sqlite3_config_alt_pcache 0 0 0 676 sqlite3_initialize 677 autoinstall_test_functions 678} -include ${perm-alt-pcache-testset} 679 680run_tests "pcache50" -description { 681 Alternative pcache implementation without 50% random discard 682} -initialize { 683 catch {db close} 684 sqlite3_shutdown 685 sqlite3_config_alt_pcache 1 50 1 686 sqlite3_initialize 687 autoinstall_test_functions 688} -shutdown { 689 catch {db close} 690 sqlite3_shutdown 691 sqlite3_config_alt_pcache 0 0 0 692 sqlite3_initialize 693 autoinstall_test_functions 694} -include ${perm-alt-pcache-testset} 695 696run_tests "pcache90" -description { 697 Alternative pcache implementation without 90% random discard 698} -initialize { 699 catch {db close} 700 sqlite3_shutdown 701 sqlite3_config_alt_pcache 1 50 1 702 sqlite3_initialize 703 autoinstall_test_functions 704} -shutdown { 705 catch {db close} 706 sqlite3_shutdown 707 sqlite3_config_alt_pcache 0 0 0 708 sqlite3_initialize 709 autoinstall_test_functions 710} -include ${perm-alt-pcache-testset} 711 712run_tests "pcache100" -description { 713 Alternative pcache implementation that always discards when unpinning 714} -initialize { 715 catch {db close} 716 sqlite3_shutdown 717 sqlite3_config_alt_pcache 1 100 1 718 sqlite3_initialize 719 autoinstall_test_functions 720} -shutdown { 721 catch {db close} 722 sqlite3_shutdown 723 sqlite3_config_alt_pcache 0 0 0 724 sqlite3_initialize 725 autoinstall_test_functions 726} -include ${perm-alt-pcache-testset} 727 728run_tests "journaltest" -description { 729 Check that pages are synced before being written (test_journal.c). 730} -initialize { 731 set G(isquick) 1 732 catch {db close} 733 register_jt_vfs -default "" 734 #sqlite3_instvfs binarylog -default binarylog ostrace.bin 735} -shutdown { 736 #sqlite3_instvfs destroy binarylog 737 unregister_jt_vfs 738} -include $::ALLTESTS -exclude [concat $::WALTESTS { 739 incrvacuum.test 740 ioerr.test 741 corrupt4.test 742 io.test 743 crash8.test 744 async4.test 745 bigfile.test 746}] 747 748if {[info commands register_demovfs] != ""} { 749 run_tests "demovfs" -description { 750 Check that the demovfs (code in test_demovfs.c) more or less works. 751 } -initialize { 752 register_demovfs 753 } -shutdown { 754 unregister_demovfs 755 } -include { 756 insert.test insert2.test insert3.test rollback.test 757 select1.test select2.test select3.test 758 } 759} 760 761run_tests "wal" -description { 762 Run tests with journal_mode=WAL 763} -initialize { 764 set ::G(savepoint6_iterations) 100 765} -shutdown { 766 unset -nocomplain ::G(savepoint6_iterations) 767} -include { 768 savepoint.test savepoint2.test savepoint6.test 769 trans.test avtrans.test 770} 771 772# End of tests 773############################################################################# 774 775if {$::perm::testmode eq "targets"} { puts "" ; exit } 776 777finish_test 778