Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Additional error checking and tests for multiplex VFS. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
1ab9a59237bed6d03b55153a67588486 |
User & Date: | shaneh 2010-11-05 03:58:59.000 |
Original Comment: | Additional error checking and tests. |
Context
2010-11-05
| ||
17:51 | More tests and added support for xDelete in multiplex VFS. (check-in: f2004b44bf user: shaneh tags: trunk) | |
03:58 | Additional error checking and tests for multiplex VFS. (check-in: 1ab9a59237 user: shaneh tags: trunk) | |
03:43 | Additional tests and commenting for the multiplex VFS. (check-in: 8ed944ba74 user: shaneh tags: trunk) | |
Changes
Changes to src/test_multiplex.c.
︙ | ︙ | |||
337 338 339 340 341 342 343 | for(i=(int)(size/gMultiplex.nChunkSize)+1; i<gMultiplex.nMaxChunks; i++){ /* close any open chunks before deleting them */ if( pGroup->bOpen[i] ){ pSubOpen = pGroup->pReal[i]; rc2 = pSubOpen->pMethods->xClose(pSubOpen); if( rc2!=SQLITE_OK ) rc = SQLITE_IOERR_TRUNCATE; } | | | 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 | for(i=(int)(size/gMultiplex.nChunkSize)+1; i<gMultiplex.nMaxChunks; i++){ /* close any open chunks before deleting them */ if( pGroup->bOpen[i] ){ pSubOpen = pGroup->pReal[i]; rc2 = pSubOpen->pMethods->xClose(pSubOpen); if( rc2!=SQLITE_OK ) rc = SQLITE_IOERR_TRUNCATE; } sqlite3_snprintf(pGroup->nName+6, pGroup->zName+pGroup->nName, "-%04d", i); rc2 = pOrigVfs->xDelete(pOrigVfs, pGroup->zName, 0); if( rc2!=SQLITE_OK ) rc = SQLITE_IOERR_TRUNCATE; } pSubOpen = multiplexSubOpen(p, (int)(size/gMultiplex.nChunkSize), &rc2, NULL); if( pSubOpen ){ rc2 = pSubOpen->pMethods->xTruncate(pSubOpen, size%gMultiplex.nChunkSize); if( rc2!=SQLITE_OK ) rc = rc2; |
︙ | ︙ | |||
634 635 636 637 638 639 640 641 642 643 644 645 646 647 | */ int sqlite3_multiplex_set( int nChunkSize, /* Max chunk size */ int nMaxChunks /* Max number of chunks */ ){ if( !gMultiplex.isInitialized ) return SQLITE_MISUSE; if( gMultiplex.pGroups ) return SQLITE_MISUSE; if( nMaxChunks>SQLITE_MULTIPLEX_MAX_CHUNKS ) return SQLITE_MISUSE; multiplexEnter(); gMultiplex.nChunkSize = nChunkSize; gMultiplex.nMaxChunks = nMaxChunks; multiplexLeave(); return SQLITE_OK; } | > > | 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 | */ int sqlite3_multiplex_set( int nChunkSize, /* Max chunk size */ int nMaxChunks /* Max number of chunks */ ){ if( !gMultiplex.isInitialized ) return SQLITE_MISUSE; if( gMultiplex.pGroups ) return SQLITE_MISUSE; if( nChunkSize<32 ) return SQLITE_MISUSE; if( nMaxChunks<1 ) return SQLITE_MISUSE; if( nMaxChunks>SQLITE_MULTIPLEX_MAX_CHUNKS ) return SQLITE_MISUSE; multiplexEnter(); gMultiplex.nChunkSize = nChunkSize; gMultiplex.nMaxChunks = nMaxChunks; multiplexLeave(); return SQLITE_OK; } |
︙ | ︙ | |||
728 729 730 731 732 733 734 | if( objc!=3 ){ Tcl_WrongNumArgs(interp, 1, objv, "CHUNK_SIZE MAX_CHUNKS"); return TCL_ERROR; } if( Tcl_GetIntFromObj(interp, objv[1], &nChunkSize) ) return TCL_ERROR; if( Tcl_GetIntFromObj(interp, objv[2], &nMaxChunks) ) return TCL_ERROR; | < < < < < | 730 731 732 733 734 735 736 737 738 739 740 741 742 743 | if( objc!=3 ){ Tcl_WrongNumArgs(interp, 1, objv, "CHUNK_SIZE MAX_CHUNKS"); return TCL_ERROR; } if( Tcl_GetIntFromObj(interp, objv[1], &nChunkSize) ) return TCL_ERROR; if( Tcl_GetIntFromObj(interp, objv[2], &nMaxChunks) ) return TCL_ERROR; /* Invoke sqlite3_multiplex_set() */ rc = sqlite3_multiplex_set(nChunkSize, nMaxChunks); Tcl_SetResult(interp, (char *)sqlite3TestErrorName(rc), TCL_STATIC); return TCL_OK; } |
︙ | ︙ |
Changes to test/multiplex.test.
︙ | ︙ | |||
34 35 36 37 38 39 40 41 42 43 44 45 46 47 | do_test multiplex-1.3 { sqlite3_multiplex_initialize "" 1 } {SQLITE_MISUSE} do_test multiplex-1.4 { sqlite3_multiplex_shutdown } {SQLITE_OK} do_test multiplex-1.5 { sqlite3_multiplex_initialize "" 0 } {SQLITE_OK} do_test multiplex-1.6 { sqlite3_multiplex_shutdown } {SQLITE_OK} do_test multiplex-1.7 { sqlite3_multiplex_initialize "" 1 } {SQLITE_OK} do_test multiplex-1.8 { sqlite3_multiplex_shutdown } {SQLITE_OK} #------------------------------------------------------------------------- # Some simple warm-body tests with a single database file in rollback # mode: # # multiplex-2.1.*: Test simple writing to a multiplex file. | > > > > > > > > | 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | do_test multiplex-1.3 { sqlite3_multiplex_initialize "" 1 } {SQLITE_MISUSE} do_test multiplex-1.4 { sqlite3_multiplex_shutdown } {SQLITE_OK} do_test multiplex-1.5 { sqlite3_multiplex_initialize "" 0 } {SQLITE_OK} do_test multiplex-1.6 { sqlite3_multiplex_shutdown } {SQLITE_OK} do_test multiplex-1.7 { sqlite3_multiplex_initialize "" 1 } {SQLITE_OK} do_test multiplex-1.8 { sqlite3_multiplex_shutdown } {SQLITE_OK} do_test multiplex-1.9 { sqlite3_multiplex_initialize "" 1 } {SQLITE_OK} do_test multiplex-1.10.1 { sqlite3_multiplex_set 0x8000 16 } {SQLITE_OK} do_test multiplex-1.10.2 { sqlite3_multiplex_set 0x8000 -1 } {SQLITE_MISUSE} do_test multiplex-1.10.3 { sqlite3_multiplex_set -1 16 } {SQLITE_MISUSE} do_test multiplex-1.10.4 { sqlite3_multiplex_set 31 16 } {SQLITE_MISUSE} do_test multiplex-1.10.5 { sqlite3_multiplex_set 0x8000 33 } {SQLITE_MISUSE} do_test multiplex-1.11 { sqlite3_multiplex_shutdown } {SQLITE_OK} #------------------------------------------------------------------------- # Some simple warm-body tests with a single database file in rollback # mode: # # multiplex-2.1.*: Test simple writing to a multiplex file. |
︙ | ︙ |