Annotation of embedaddon/sqlite3/test/pagerfault3.test, revision 1.1

1.1     ! misho       1: # 2011 January 28
        !             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: 
        !            13: set testdir [file dirname $argv0]
        !            14: source $testdir/tester.tcl
        !            15: source $testdir/lock_common.tcl
        !            16: source $testdir/malloc_common.tcl
        !            17: 
        !            18: if {[permutation] == "inmemory_journal"} {
        !            19:   finish_test
        !            20:   return
        !            21: }
        !            22: 
        !            23: # Create a database with page-size 2048 bytes that uses 2 pages. Populate
        !            24: # it so that if the page-size is changed to 1024 bytes and the db vacuumed, 
        !            25: # the new db size is 3 pages.
        !            26: #
        !            27: do_test pagerfault3-pre1 {
        !            28:   execsql {
        !            29:     PRAGMA auto_vacuum = 0;
        !            30:     PRAGMA page_size = 2048;
        !            31:     CREATE TABLE t1(x);
        !            32:     INSERT INTO t1 VALUES(randomblob(1200));
        !            33:     PRAGMA page_count;
        !            34:   }
        !            35: } {2}
        !            36: do_test pagerfault3-pre2 {
        !            37:   faultsim_save_and_close
        !            38:   faultsim_restore_and_reopen
        !            39:   execsql { 
        !            40:     PRAGMA page_size = 1024;
        !            41:     VACUUM;
        !            42:     PRAGMA page_count;
        !            43:   }
        !            44: } {3}
        !            45: 
        !            46: # Now do the page-size change and VACUUM with IO error injection. When
        !            47: # an IO error is injected into the final xSync() of the commit, the pager
        !            48: # will have to extend the db file from 3072 to 4096 byts when rolling
        !            49: # back the hot-journal file. This is a special case in pager_truncate().
        !            50: #
        !            51: do_faultsim_test pagerfault3-1 -faults ioerr-transient -prep {
        !            52:   faultsim_restore_and_reopen
        !            53: } -body {
        !            54:   execsql { 
        !            55:     PRAGMA page_size = 1024;
        !            56:     VACUUM;
        !            57:   }
        !            58: } -test {
        !            59:   faultsim_test_result {0 {}} 
        !            60:   faultsim_integrity_check
        !            61: }
        !            62: 
        !            63: finish_test
        !            64: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>