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>