Snapshot of upstream SQLite 3.40.1
[sqlcipher.git] / ext / rbu / rbubusy.test
blob8cc47db8f97ab25cdad8150b5470a71c36d6e0ab
1 # 2014 August 30
3 # The author disclaims copyright to this source code.  In place of
4 # a legal notice, here is a blessing:
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.
10 #***********************************************************************
14 source [file join [file dirname [info script]] rbu_common.tcl]
15 set ::testprefix rbubusy
17 db close
18 sqlite3_shutdown
19 test_sqlite3_log xLog
20 reset_db
22 set db_sql {
23   CREATE TABLE t1(a PRIMARY KEY, b, c);
24   INSERT INTO t1 VALUES(1000, 2000, 3000);
27 set rbu_sql {
28   CREATE TABLE data_t1(a, b, c, rbu_control);
29   INSERT INTO data_t1 VALUES(1, 2, 3, 0);
30   INSERT INTO data_t1 VALUES(4, 5, 6, 0);
31   INSERT INTO data_t1 VALUES(7, 8, 9, 0);
34 do_test 1.1 {
35   forcedelete rbu.db
36   sqlite3 rbu rbu.db
37   rbu eval $rbu_sql
38   rbu close
40   db eval $db_sql
41 } {}
43 do_execsql_test 1.2 {
44   BEGIN;
45     SELECT * FROM t1
46 } {1000 2000 3000}
48 do_test 1.3 {
49   sqlite3rbu rbu test.db rbu.db
50   rbu step
51 } {SQLITE_OK}
53 do_test 1.4 {
54   while 1 {
55     set rc [rbu step]
56     if {$rc!="SQLITE_OK"} break
57   }
58   set rc
59 } {SQLITE_BUSY}
61 do_test 1.5 {
62   rbu step
63 } {SQLITE_BUSY}
65 do_test 1.6 {
66   db eval COMMIT
67   rbu step
68 } {SQLITE_BUSY}
69 catch { rbu close }
71 do_test 1.7 {
72   sqlite3rbu rbu test.db rbu.db
73   while 1 {
74     set rc [rbu step]
75     if {$rc!="SQLITE_OK"} break
76   }
77   set rc
78 } {SQLITE_DONE}
80 rbu close
82 db close
83 sqlite3_shutdown
84 test_sqlite3_log 
85 sqlite3_initialize
86 finish_test