Annotation of embedaddon/sqlite3/test/mutex2.test, revision 1.1.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>