xref: /sqlite-3.40.0/ext/rbu/rbubusy.test (revision 9684d710)
1# 2014 August 30
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#
13
14source [file join [file dirname [info script]] rbu_common.tcl]
15set ::testprefix rbubusy
16
17db close
18sqlite3_shutdown
19test_sqlite3_log xLog
20reset_db
21
22set db_sql {
23  CREATE TABLE t1(a PRIMARY KEY, b, c);
24  INSERT INTO t1 VALUES(1000, 2000, 3000);
25}
26
27set 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);
32}
33
34do_test 1.1 {
35  forcedelete rbu.db
36  sqlite3 rbu rbu.db
37  rbu eval $rbu_sql
38  rbu close
39
40  db eval $db_sql
41} {}
42
43do_execsql_test 1.2 {
44  BEGIN;
45    SELECT * FROM t1
46} {1000 2000 3000}
47
48do_test 1.3 {
49  sqlite3rbu rbu test.db rbu.db
50  rbu step
51} {SQLITE_OK}
52
53do_test 1.4 {
54  while 1 {
55    set rc [rbu step]
56    if {$rc!="SQLITE_OK"} break
57  }
58  set rc
59} {SQLITE_BUSY}
60
61do_test 1.5 {
62  rbu step
63} {SQLITE_BUSY}
64
65do_test 1.6 {
66  db eval COMMIT
67  rbu step
68} {SQLITE_BUSY}
69catch { rbu close }
70
71do_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}
79
80rbu close
81
82db close
83sqlite3_shutdown
84test_sqlite3_log
85sqlite3_initialize
86finish_test
87
88