File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / test / backup_malloc.test
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 17:04:16 2012 UTC (12 years, 10 months ago) by misho
Branches: sqlite3, MAIN
CVS tags: v3_7_10, HEAD
sqlite3

    1: # 2009 January 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: # This file implements regression tests for SQLite library.  The
   12: # focus of this file is testing the handling of OOM errors by the
   13: # sqlite3_backup_XXX APIs.
   14: #
   15: # $Id: backup_malloc.test,v 1.1.1.1 2012/02/21 17:04:16 misho Exp $
   16: 
   17: set testdir [file dirname $argv0]
   18: source $testdir/tester.tcl
   19: 
   20: source $testdir/malloc_common.tcl
   21: 
   22: do_malloc_test backup_malloc-1 -tclprep {
   23:   execsql {
   24:     PRAGMA cache_size = 10;
   25:     BEGIN;
   26:     CREATE TABLE t1(a, b);
   27:     INSERT INTO t1 VALUES(1, randstr(1000,1000));
   28:     INSERT INTO t1 SELECT a+ 1, randstr(1000,1000) FROM t1;
   29:     INSERT INTO t1 SELECT a+ 2, randstr(1000,1000) FROM t1;
   30:     INSERT INTO t1 SELECT a+ 4, randstr(1000,1000) FROM t1;
   31:     INSERT INTO t1 SELECT a+ 8, randstr(1000,1000) FROM t1;
   32:     INSERT INTO t1 SELECT a+16, randstr(1000,1000) FROM t1;
   33:     INSERT INTO t1 SELECT a+32, randstr(1000,1000) FROM t1;
   34:     INSERT INTO t1 SELECT a+64, randstr(1000,1000) FROM t1;
   35:     CREATE INDEX i1 ON t1(b);
   36:     COMMIT;
   37:   }
   38:   sqlite3 db2 test2.db
   39:   execsql { PRAGMA cache_size = 10 } db2
   40: } -tclbody {
   41: 
   42:   # Create a backup object.
   43:   #
   44:   set rc [catch {sqlite3_backup B db2 main db main}]
   45:   if {$rc && [sqlite3_errcode db2] == "SQLITE_NOMEM"} {
   46:     error "out of memory"
   47:   }
   48: 
   49:   # Run the backup process some.
   50:   #
   51:   set rc [B step 50]
   52:   if {$rc == "SQLITE_NOMEM" || $rc == "SQLITE_IOERR_NOMEM"} {
   53:     error "out of memory"
   54:   }
   55:   
   56:   # Update the database.
   57:   #
   58:   execsql { UPDATE t1 SET a = a + 1 }
   59:   
   60:   # Finish doing the backup.
   61:   #
   62:   set rc [B step 5000]
   63:   if {$rc == "SQLITE_NOMEM" || $rc == "SQLITE_IOERR_NOMEM"} {
   64:     error "out of memory"
   65:   }
   66:  
   67:   # Finalize the backup.
   68:   B finish
   69: } -cleanup {
   70:   catch { B finish }
   71:   catch { db2 close }
   72: }
   73: 
   74: do_malloc_test backup_malloc-2 -tclprep {
   75:   sqlite3 db2 test2.db
   76: } -tclbody {
   77:   set rc [catch {sqlite3_backup B db2 temp db main}]
   78:   set errcode [sqlite3_errcode db2]
   79:   if {$rc && ($errcode == "SQLITE_NOMEM" || $errcode == "SQLITE_IOERR_NOMEM")} {
   80:     error "out of memory"
   81:   }
   82: } -cleanup {
   83:   catch { B finish }
   84:   db2 close
   85: }
   86: 
   87: finish_test

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>