xref: /sqlite-3.40.0/test/permutations.test (revision 5130c31b)
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