1add995ccSdan# 2010 October 29 2add995ccSdan# 3add995ccSdan# The author disclaims copyright to this source code. In place of 4add995ccSdan# a legal notice, here is a blessing: 5add995ccSdan# 6add995ccSdan# May you do good and not evil. 7add995ccSdan# May you find forgiveness for yourself and forgive others. 8add995ccSdan# May you share freely, never taking more than you give. 9add995ccSdan# 10add995ccSdan#*********************************************************************** 11add995ccSdan# 12add995ccSdan 13add995ccSdanset testdir [file dirname $argv0] 14add995ccSdansource $testdir/tester.tcl 15add995ccSdansource $testdir/malloc_common.tcl 16add995ccSdansource $testdir/lock_common.tcl 17*27e69643Sdan 18add995ccSdan 19add995ccSdando_multiclient_test tn { 20add995ccSdan code1 { catch { sqlite3_multiplex_initialize "" 0 } } 21add995ccSdan code2 { catch { sqlite3_multiplex_initialize "" 0 } } 22add995ccSdan 23add995ccSdan code1 { db close } 24add995ccSdan code2 { db2 close } 25add995ccSdan 26add995ccSdan code1 { sqlite3 db test.db -vfs multiplex } 27add995ccSdan code2 { sqlite3 db2 test.db -vfs multiplex } 28add995ccSdan 29add995ccSdan code1 { sqlite3_multiplex_control db main chunk_size [expr 1024*1024] } 30add995ccSdan code2 { sqlite3_multiplex_control db2 main chunk_size [expr 1024*1024] } 31add995ccSdan 32add995ccSdan sql1 { 33add995ccSdan CREATE TABLE t1(a, b); 34add995ccSdan INSERT INTO t1 VALUES(randomblob(10), randomblob(4000)); -- 1 35add995ccSdan INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 2 36add995ccSdan INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 4 37add995ccSdan INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 8 38add995ccSdan INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 16 39add995ccSdan INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 32 40add995ccSdan INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 64 41add995ccSdan INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 128 42add995ccSdan INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 256 43add995ccSdan INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 512 44add995ccSdan SELECT count(*) FROM t1; 45add995ccSdan } 46add995ccSdan 47add995ccSdan do_test multiplex-1.$tn.1 { sql1 { SELECT count(*) FROM t1 } } 512 48add995ccSdan do_test multiplex-1.$tn.2 { sql2 { SELECT count(*) FROM t1 } } 512 49add995ccSdan sql2 { DELETE FROM t1 ; VACUUM } 50*27e69643Sdan do_test multiplex-1.$tn.3 { sql1 { SELECT count(*) FROM t1 } } 0 51*27e69643Sdan 52add995ccSdan sql1 { 53*27e69643Sdan INSERT INTO t1 VALUES(randomblob(10), randomblob(4000)); -- 1 54add995ccSdan INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 2 55add995ccSdan INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 4 56add995ccSdan INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 8 57add995ccSdan INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 16 58add995ccSdan INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 32 59add995ccSdan INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 64 60add995ccSdan INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 128 61add995ccSdan INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 256 62add995ccSdan INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 512 63add995ccSdan SELECT count(*) FROM t1; 64add995ccSdan } 65add995ccSdan 66add995ccSdan do_test multiplex-1.$tn.4 { sql2 { SELECT count(*) FROM t1 } } 512 67add995ccSdan} 68add995ccSdan 69*27e69643Sdancatch { sqlite3_multiplex_shutdown } 70add995ccSdanfinish_test 71add995ccSdan