Annotation of embedaddon/sqlite3/test/async2.test, revision 1.1
1.1 ! misho 1: #
! 2: # May you do good and not evil.
! 3: # May you find forgiveness for yourself and forgive others.
! 4: # May you share freely, never taking more than you give.
! 5: #
! 6: #***********************************************************************
! 7: #
! 8: # $Id: async2.test,v 1.12 2009/04/25 08:39:15 danielk1977 Exp $
! 9:
! 10:
! 11: set testdir [file dirname $argv0]
! 12: source $testdir/tester.tcl
! 13:
! 14: if {
! 15: [info commands sqlite3async_initialize]=="" ||
! 16: [info command sqlite3_memdebug_fail]==""
! 17: } {
! 18: # The async logic is not built into this system
! 19: puts "Skipping async2 tests: not compiled with required features"
! 20: finish_test
! 21: return
! 22: }
! 23:
! 24: # Enable asynchronous IO.
! 25:
! 26: set setup_script {
! 27: CREATE TABLE counter(c);
! 28: INSERT INTO counter(c) VALUES (1);
! 29: }
! 30:
! 31: set sql_script {
! 32: BEGIN;
! 33: UPDATE counter SET c = 2;
! 34: CREATE TABLE t1(a PRIMARY KEY, b, c);
! 35: CREATE TABLE t2(a PRIMARY KEY, b, c);
! 36: COMMIT;
! 37:
! 38: BEGIN;
! 39: UPDATE counter SET c = 3;
! 40: INSERT INTO t1 VALUES('abcdefghij', 'four', 'score');
! 41: INSERT INTO t2 VALUES('klmnopqrst', 'and', 'seven');
! 42: COMMIT;
! 43:
! 44: UPDATE counter SET c = 'FIN';
! 45: }
! 46:
! 47: db close
! 48:
! 49: foreach err [list ioerr malloc-transient malloc-persistent] {
! 50: set ::go 10
! 51: for {set n 1} {$::go} {incr n} {
! 52: set ::sqlite_io_error_pending 0
! 53: sqlite3_memdebug_fail -1
! 54: forcedelete test.db test.db-journal
! 55: sqlite3 db test.db
! 56: execsql $::setup_script
! 57: db close
! 58:
! 59: sqlite3async_initialize "" 1
! 60: sqlite3 db test.db
! 61: sqlite3_db_config_lookaside db 0 0 0
! 62:
! 63: switch -- $err {
! 64: ioerr { set ::sqlite_io_error_pending $n }
! 65: malloc-persistent { sqlite3_memdebug_fail $n -repeat 1 }
! 66: malloc-transient { sqlite3_memdebug_fail $n -repeat 0 }
! 67: }
! 68:
! 69: catchsql $::sql_script
! 70: db close
! 71:
! 72: sqlite3async_control halt idle
! 73: sqlite3async_start
! 74: sqlite3async_wait
! 75: sqlite3async_control halt never
! 76: sqlite3async_shutdown
! 77:
! 78: set ::sqlite_io_error_pending 0
! 79: sqlite3_memdebug_fail -1
! 80:
! 81: sqlite3 db test.db
! 82: set c [db one {SELECT c FROM counter LIMIT 1}]
! 83: switch -- $c {
! 84: 1 {
! 85: do_test async-$err-1.1.$n {
! 86: execsql {
! 87: SELECT name FROM sqlite_master;
! 88: }
! 89: } {counter}
! 90: }
! 91: 2 {
! 92: do_test async-$err-1.2.$n.1 {
! 93: execsql {
! 94: SELECT * FROM t1;
! 95: }
! 96: } {}
! 97: do_test async-$err-1.2.$n.2 {
! 98: execsql {
! 99: SELECT * FROM t2;
! 100: }
! 101: } {}
! 102: }
! 103: 3 {
! 104: do_test async-$err-1.3.$n.1 {
! 105: execsql {
! 106: SELECT * FROM t1;
! 107: }
! 108: } {abcdefghij four score}
! 109: do_test async-$err-1.3.$n.2 {
! 110: execsql {
! 111: SELECT * FROM t2;
! 112: }
! 113: } {klmnopqrst and seven}
! 114: }
! 115: FIN {
! 116: incr ::go -1
! 117: }
! 118: }
! 119:
! 120: db close
! 121: }
! 122: }
! 123:
! 124: catch {db close}
! 125:
! 126: finish_test
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>