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

1.1     ! misho       1: # 2008 July 7
        !             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: # Test scripts for deliberate failures of mutex routines.
        !            13: #
        !            14: # $Id: mutex2.test,v 1.9 2008/10/07 15:25:49 drh Exp $
        !            15: 
        !            16: set testdir [file dirname $argv0]
        !            17: source $testdir/tester.tcl
        !            18: ifcapable !mutex {
        !            19:   finish_test
        !            20:   return
        !            21: }
        !            22: 
        !            23: # deinitialize
        !            24: #
        !            25: catch {db close}
        !            26: sqlite3_reset_auto_extension
        !            27: sqlite3_shutdown
        !            28: install_mutex_counters 1
        !            29: 
        !            30: # Fix the mutex subsystem so that it will not initialize.  In other words,
        !            31: # make it so that sqlite3_initialize() always fails.  
        !            32: #
        !            33: do_test mutex2-1.1 {
        !            34:   set ::disable_mutex_init 10
        !            35:   sqlite3_initialize
        !            36: } {SQLITE_IOERR}
        !            37: do_test mutex2-1.1 {
        !            38:   set ::disable_mutex_init 7
        !            39:   sqlite3_initialize
        !            40: } {SQLITE_NOMEM}
        !            41: 
        !            42: proc utf16 {str} {
        !            43:   set r [encoding convertto unicode $str]
        !            44:   append r "\x00\x00"
        !            45:   return $r
        !            46: }
        !            47: 
        !            48: # Now that sqlite3_initialize() is failing, try to run various APIs that
        !            49: # require that SQLite be initialized.  Verify that they fail.
        !            50: #
        !            51: do_test mutex2-2.1 {
        !            52:   set ::disable_mutex_init 7
        !            53:   set rc [catch {sqlite db test.db} msg]
        !            54:   lappend rc $msg
        !            55: } {1 {}}
        !            56: ifcapable utf16 {
        !            57:   do_test mutex2-2.2 {
        !            58:     set db2 [sqlite3_open16 [utf16 test.db] {}]
        !            59:   } {0}
        !            60:   do_test mutex2-2.3 {
        !            61:     sqlite3_complete16 [utf16 {SELECT * FROM t1;}]
        !            62:   } {7}
        !            63: }
        !            64: do_test mutex2-2.4 {
        !            65:   sqlite3_mprintf_int {This is a test %d,%d,%d} 1 2 3
        !            66: } {}
        !            67: ifcapable load_ext {
        !            68:   do_test mutex2-2.5 {
        !            69:     sqlite3_auto_extension_sqr
        !            70:   } {7}
        !            71: }
        !            72: do_test mutex2-2.6 {
        !            73:   sqlite3_reset_auto_extension
        !            74: } {}
        !            75: do_test mutex2-2.7 {
        !            76:   sqlite3_malloc 10000
        !            77: } {0}
        !            78: do_test mutex2-2.8 {
        !            79:   sqlite3_realloc 0 10000
        !            80: } {0}
        !            81: ifcapable threadsafe {
        !            82:   do_test mutex2-2.9 {
        !            83:     alloc_dealloc_mutex
        !            84:   } {0}
        !            85: }
        !            86: do_test mutex2-2.10 {
        !            87:   vfs_initfail_test
        !            88: } {}
        !            89: 
        !            90: # Restore the system to a functional state
        !            91: #
        !            92: install_mutex_counters 0
        !            93: set disable_mutex_init 0
        !            94: autoinstall_test_functions
        !            95: 
        !            96: # Mutex allocation works now.
        !            97: #
        !            98: 
        !            99: do_test mutex2-3.1 {
        !           100:   set ptr [alloc_dealloc_mutex]
        !           101:   expr {$ptr!=0}
        !           102: } {1}
        !           103: 
        !           104: 
        !           105: finish_test

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