Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(406)

Side by Side Diff: third_party/sqlite/src/test/malloc.test

Issue 949043002: Add //third_party/sqlite to dirs_to_snapshot, remove net_sql.patch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/sqlite/src/test/main.test ('k') | third_party/sqlite/src/test/malloc3.test » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # 2001 September 15 1 # 2001 September 15
2 # 2 #
3 # The author disclaims copyright to this source code. In place of 3 # The author disclaims copyright to this source code. In place of
4 # a legal notice, here is a blessing: 4 # a legal notice, here is a blessing:
5 # 5 #
6 # May you do good and not evil. 6 # May you do good and not evil.
7 # May you find forgiveness for yourself and forgive others. 7 # May you find forgiveness for yourself and forgive others.
8 # May you share freely, never taking more than you give. 8 # May you share freely, never taking more than you give.
9 # 9 #
10 #*********************************************************************** 10 #***********************************************************************
11 # 11 #
12 # This file attempts to check the behavior of the SQLite library in 12 # This file attempts to check the behavior of the SQLite library in
13 # an out-of-memory situation. When compiled with -DSQLITE_DEBUG=1, 13 # an out-of-memory situation. When compiled with -DSQLITE_DEBUG=1,
14 # the SQLite library accepts a special command (sqlite3_memdebug_fail N C) 14 # the SQLite library accepts a special command (sqlite3_memdebug_fail N C)
15 # which causes the N-th malloc to fail. This special feature is used 15 # which causes the N-th malloc to fail. This special feature is used
16 # to see what happens in the library if a malloc were to really fail 16 # to see what happens in the library if a malloc were to really fail
17 # due to an out-of-memory situation. 17 # due to an out-of-memory situation.
18 # 18 #
19 # $Id: malloc.test,v 1.81 2009/06/24 13:13:45 drh Exp $ 19 # $Id: malloc.test,v 1.81 2009/06/24 13:13:45 drh Exp $
20 20
21 set testdir [file dirname $argv0] 21 set testdir [file dirname $argv0]
22 source $testdir/tester.tcl 22 source $testdir/tester.tcl
23 set ::testprefix malloc
23 24
24 25
25 # Only run these tests if memory debugging is turned on. 26 # Only run these tests if memory debugging is turned on.
26 # 27 #
27 source $testdir/malloc_common.tcl 28 source $testdir/malloc_common.tcl
28 if {!$MEMDEBUG} { 29 if {!$MEMDEBUG} {
29 puts "Skipping malloc tests: not compiled with -DSQLITE_MEMDEBUG..." 30 puts "Skipping malloc tests: not compiled with -DSQLITE_MEMDEBUG..."
30 finish_test 31 finish_test
31 return 32 return
32 } 33 }
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 INSERT INTO abc1 VALUES(1, 2, 3); 264 INSERT INTO abc1 VALUES(1, 2, 3);
264 INSERT INTO abc2 VALUES(1, 2, 3); 265 INSERT INTO abc2 VALUES(1, 2, 3);
265 COMMIT; 266 COMMIT;
266 } 267 }
267 268
268 # This block tests malloc() failures that occur while opening a 269 # This block tests malloc() failures that occur while opening a
269 # connection to a database. 270 # connection to a database.
270 do_malloc_test 10 -tclprep { 271 do_malloc_test 10 -tclprep {
271 catch {db2 close} 272 catch {db2 close}
272 db close 273 db close
273 file delete -force test.db test.db-journal 274 forcedelete test.db test.db-journal
274 sqlite3 db test.db 275 sqlite3 db test.db
275 sqlite3_extended_result_codes db 1 276 sqlite3_extended_result_codes db 1
276 db eval {CREATE TABLE abc(a, b, c)} 277 db eval {CREATE TABLE abc(a, b, c)}
277 } -tclbody { 278 } -tclbody {
278 db close 279 db close
279 sqlite3 db2 test.db 280 sqlite3 db2 test.db
280 sqlite3_extended_result_codes db2 1 281 sqlite3_extended_result_codes db2 1
281 db2 eval {SELECT * FROM sqlite_master} 282 db2 eval {SELECT * FROM sqlite_master}
282 db2 close 283 db2 close
283 } 284 }
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 sqlite3 db2 test2.db 335 sqlite3 db2 test2.db
335 sqlite3_extended_result_codes db2 1 336 sqlite3_extended_result_codes db2 1
336 db2 eval { 337 db2 eval {
337 PRAGMA journal_mode = DELETE; /* For inmemory_journal permutation */ 338 PRAGMA journal_mode = DELETE; /* For inmemory_journal permutation */
338 PRAGMA synchronous = 0; 339 PRAGMA synchronous = 0;
339 CREATE TABLE t1(a, b); 340 CREATE TABLE t1(a, b);
340 INSERT INTO t1 VALUES(1, 2); 341 INSERT INTO t1 VALUES(1, 2);
341 BEGIN; 342 BEGIN;
342 INSERT INTO t1 VALUES(3, 4); 343 INSERT INTO t1 VALUES(3, 4);
343 } 344 }
344 copy_file test2.db test.db 345 forcecopy test2.db test.db
345 copy_file test2.db-journal test.db-journal 346 forcecopy test2.db-journal test.db-journal
346 db2 close 347 db2 close
347 } -tclbody { 348 } -tclbody {
348 sqlite3 db test.db 349 sqlite3 db test.db
349 sqlite3_extended_result_codes db 1 350 sqlite3_extended_result_codes db 1
350 351
351 # If an out-of-memory occurs within a call to a VFS layer function during 352 # If an out-of-memory occurs within a call to a VFS layer function during
352 # hot-journal rollback, sqlite will report SQLITE_CORRUPT. See commit 353 # hot-journal rollback, sqlite will report SQLITE_CORRUPT. See commit
353 # [5668] for details. 354 # [5668] for details.
354 set rc [catch {db eval { SELECT * FROM t1 }} msg] 355 set rc [catch {db eval { SELECT * FROM t1 }} msg]
355 if {$msg eq "database disk image is malformed"} { set msg "out of memory" } 356 if {$msg eq "database disk image is malformed"} { set msg "out of memory" }
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 } 493 }
493 } 494 }
494 unset static_string 495 unset static_string
495 496
496 # Make sure SQLITE_NOMEM is reported out on an ATTACH failure even 497 # Make sure SQLITE_NOMEM is reported out on an ATTACH failure even
497 # when the malloc failure occurs within the nested parse. 498 # when the malloc failure occurs within the nested parse.
498 # 499 #
499 ifcapable attach { 500 ifcapable attach {
500 do_malloc_test 20 -tclprep { 501 do_malloc_test 20 -tclprep {
501 db close 502 db close
502 file delete -force test2.db test2.db-journal 503 forcedelete test2.db test2.db-journal
503 sqlite3 db test2.db 504 sqlite3 db test2.db
504 sqlite3_extended_result_codes db 1 505 sqlite3_extended_result_codes db 1
505 db eval {CREATE TABLE t1(x);} 506 db eval {CREATE TABLE t1(x);}
506 db close 507 db close
507 } -tclbody { 508 } -tclbody {
508 if {[catch {sqlite3 db test.db}]} { 509 if {[catch {sqlite3 db test.db}]} {
509 error "out of memory" 510 error "out of memory"
510 } 511 }
511 sqlite3_extended_result_codes db 1 512 sqlite3_extended_result_codes db 1
512 } -sqlbody { 513 } -sqlbody {
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
835 } 836 }
836 837
837 do_malloc_test 36 -sqlprep { 838 do_malloc_test 36 -sqlprep {
838 CREATE TABLE t1(a, b); 839 CREATE TABLE t1(a, b);
839 INSERT INTO t1 VALUES(1, 2); 840 INSERT INTO t1 VALUES(1, 2);
840 INSERT INTO t1 VALUES(3, 4); 841 INSERT INTO t1 VALUES(3, 4);
841 } -sqlbody { 842 } -sqlbody {
842 SELECT test_agg_errmsg16(), group_concat(a) FROM t1 843 SELECT test_agg_errmsg16(), group_concat(a) FROM t1
843 } 844 }
844 845
845 # At one point, if an OOM occured immediately after obtaining a shared lock 846 # At one point, if an OOM occurred immediately after obtaining a shared lock
846 # on the database file, the file remained locked. This test case ensures 847 # on the database file, the file remained locked. This test case ensures
847 # that bug has been fixed.i 848 # that bug has been fixed.i
848 if {[db eval {PRAGMA locking_mode}]!="exclusive"} { 849 if {[db eval {PRAGMA locking_mode}]!="exclusive"} {
849 do_malloc_test 37 -tclprep { 850 do_malloc_test 37 -tclprep {
850 sqlite3 db2 test.db 851 sqlite3 db2 test.db
851 execsql { 852 execsql {
852 CREATE TABLE t1(a, b); 853 CREATE TABLE t1(a, b);
853 INSERT INTO t1 VALUES(1, 2); 854 INSERT INTO t1 VALUES(1, 2);
854 } db2 855 } db2
855 } -sqlbody { 856 } -sqlbody {
856 SELECT * FROM t1; 857 SELECT * FROM t1;
857 } -cleanup { 858 } -cleanup {
858 # Try to write to the database using connection [db2]. If connection [db] 859 # Try to write to the database using connection [db2]. If connection [db]
859 # has correctly released the shared lock, this write attempt should 860 # has correctly released the shared lock, this write attempt should
860 # succeed. If [db] has not released the lock, this should hit an 861 # succeed. If [db] has not released the lock, this should hit an
861 # SQLITE_BUSY error. 862 # SQLITE_BUSY error.
862 do_test malloc-36.$zRepeat.${::n}.unlocked { 863 do_test malloc-36.$zRepeat.${::n}.unlocked {
863 execsql {INSERT INTO t1 VALUES(3, 4)} db2 864 execsql {INSERT INTO t1 VALUES(3, 4)} db2
864 } {} 865 } {}
865 db2 close 866 db2 close
866 } 867 }
867 catch { db2 close } 868 catch { db2 close }
868 } 869 }
869 870
870 ifcapable stat2&&utf16 { 871
871 do_malloc_test 38 -tclprep { 872 # Test that if an OOM error occurs, aux-data is still correctly destroyed.
872 add_test_collate db 0 0 1 873 # This test case was causing either a memory-leak or an assert() failure
873 execsql { 874 # at one point, depending on the configuration.
874 ANALYZE; 875 #
875 CREATE TABLE t4(x COLLATE test_collate); 876 do_malloc_test 39 -tclprep {
876 CREATE INDEX t4x ON t4(x); 877 sqlite3 db test.db
877 INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 0, 'aaa'); 878 } -sqlbody {
878 INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 1, 'aaa'); 879 SELECT test_auxdata('abc', 'def');
879 INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 2, 'aaa'); 880 } -cleanup {
880 INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 3, 'aaa'); 881 db close
881 INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 4, 'aaa'); 882 }
882 INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 5, 'aaa'); 883
883 INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 6, 'aaa'); 884 reset_db
884 INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 7, 'aaa'); 885 add_test_utf16bin_collate db
885 INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 8, 'aaa'); 886 do_execsql_test 40.1 {
886 INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 9, 'aaa'); 887 CREATE TABLE t1(a);
887 } 888 INSERT INTO t1 VALUES('fghij');
888 db close 889 INSERT INTO t1 VALUES('pqrst');
889 sqlite3 db test.db 890 INSERT INTO t1 VALUES('abcde');
890 sqlite3_db_config_lookaside db 0 0 0 891 INSERT INTO t1 VALUES('uvwxy');
891 add_test_collate db 0 0 1 892 INSERT INTO t1 VALUES('klmno');
892 } -sqlbody { 893 }
893 SELECT * FROM t4 AS t41, t4 AS t42 WHERE t41.x>'ddd' AND t42.x>'ccc' 894 do_execsql_test 40.2 {
895 SELECT * FROM t1 ORDER BY 1 COLLATE utf16bin;
896 } {abcde fghij klmno pqrst uvwxy}
897 do_faultsim_test 40.3 -faults oom-trans* -body {
898 execsql {
899 SELECT * FROM t1 ORDER BY 1 COLLATE utf16bin;
894 } 900 }
901 } -test {
902 faultsim_test_result {0 {abcde fghij klmno pqrst uvwxy}}
903 faultsim_integrity_check
904 }
905
906 reset_db
907 add_test_utf16bin_collate db
908 set big [string repeat x 200]
909 do_execsql_test 41.1 {
910 DROP TABLE IF EXISTS t1;
911 CREATE TABLE t1(a COLLATE utf16bin);
912 INSERT INTO t1 VALUES('fghij' || $::big);
913 INSERT INTO t1 VALUES('pqrst' || $::big);
914 INSERT INTO t1 VALUES('abcde' || $::big);
915 INSERT INTO t1 VALUES('uvwxy' || $::big);
916 INSERT INTO t1 VALUES('klmno' || $::big);
917 CREATE INDEX i1 ON t1(a);
918 }
919 do_faultsim_test 41.2 -faults oom* -body {
920 execsql { SELECT * FROM t1 WHERE a = ('abcde' || $::big)}
921 } -test {
922 faultsim_test_result [list 0 "abcde$::big"]
923 faultsim_integrity_check
895 } 924 }
896 925
897 # Ensure that no file descriptors were leaked. 926 # Ensure that no file descriptors were leaked.
898 do_test malloc-99.X { 927 do_test malloc-99.X {
899 catch {db close} 928 catch {db close}
900 set sqlite_open_file_count 929 set sqlite_open_file_count
901 } {0} 930 } {0}
902 931
903 puts open-file-count=$sqlite_open_file_count 932 puts open-file-count=$sqlite_open_file_count
904 finish_test 933 finish_test
OLDNEW
« no previous file with comments | « third_party/sqlite/src/test/main.test ('k') | third_party/sqlite/src/test/malloc3.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698