1: # 2005 August 28
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: # This file implements regression tests for SQLite library.
12: #
13: # This file implements tests to verify that fsync is disabled when
14: # pragma synchronous=off even for multi-database commits.
15: #
16: # $Id: sync.test,v 1.1.1.1 2012/02/21 17:04:16 misho Exp $
17:
18: set testdir [file dirname $argv0]
19: source $testdir/tester.tcl
20:
21: #
22: # These tests are only applicable when pager pragma are
23: # enabled. Also, since every test uses an ATTACHed database, they
24: # are only run when ATTACH is enabled.
25: #
26: ifcapable !pager_pragmas||!attach {
27: finish_test
28: return
29: }
30:
31: set sqlite_sync_count 0
32: proc cond_incr_sync_count {adj} {
33: global sqlite_sync_count
34: if {$::tcl_platform(platform) == "windows"} {
35: incr sqlite_sync_count $adj
36: } {
37: ifcapable !dirsync {
38: incr sqlite_sync_count $adj
39: }
40: }
41: }
42:
43: do_test sync-1.1 {
44: set sqlite_sync_count 0
45: forcedelete test2.db
46: forcedelete test2.db-journal
47: execsql {
48: PRAGMA fullfsync=OFF;
49: CREATE TABLE t1(a,b);
50: ATTACH DATABASE 'test2.db' AS db2;
51: CREATE TABLE db2.t2(x,y);
52: }
53: cond_incr_sync_count 2
54: set sqlite_sync_count
55: } 8
56: ifcapable pager_pragmas {
57: do_test sync-1.2 {
58: set sqlite_sync_count 0
59: execsql {
60: PRAGMA main.synchronous=on;
61: PRAGMA db2.synchronous=on;
62: BEGIN;
63: INSERT INTO t1 VALUES(1,2);
64: INSERT INTO t2 VALUES(3,4);
65: COMMIT;
66: }
67: cond_incr_sync_count 3
68: set sqlite_sync_count
69: } 8
70: }
71: do_test sync-1.3 {
72: set sqlite_sync_count 0
73: execsql {
74: PRAGMA main.synchronous=full;
75: PRAGMA db2.synchronous=full;
76: BEGIN;
77: INSERT INTO t1 VALUES(3,4);
78: INSERT INTO t2 VALUES(5,6);
79: COMMIT;
80: }
81: cond_incr_sync_count 3
82: set sqlite_sync_count
83: } 10
84: ifcapable pager_pragmas {
85: do_test sync-1.4 {
86: set sqlite_sync_count 0
87: execsql {
88: PRAGMA main.synchronous=off;
89: PRAGMA db2.synchronous=off;
90: BEGIN;
91: INSERT INTO t1 VALUES(5,6);
92: INSERT INTO t2 VALUES(7,8);
93: COMMIT;
94: }
95: set sqlite_sync_count
96: } 0
97: }
98:
99:
100: finish_test
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>