aboutsummaryrefslogtreecommitdiff
path: root/ext/wasm/tester1.c-pp.js
diff options
context:
space:
mode:
authorstephan <stephan@noemail.net>2025-02-20 04:14:26 +0000
committerstephan <stephan@noemail.net>2025-02-20 04:14:26 +0000
commita32ea731a0cab7bf643b97b207d4d70611a42d30 (patch)
treeba8bc78783ad34732172c58a92462add294ad63c /ext/wasm/tester1.c-pp.js
parentf8a9f455956933e08d7f5c5d7f409906c7391862 (diff)
parentcee760907489075386e27c37fe6c86c835604857 (diff)
downloadsqlite-a32ea731a0cab7bf643b97b207d4d70611a42d30.tar.gz
sqlite-a32ea731a0cab7bf643b97b207d4d70611a42d30.zip
Add the pause/unpause capability to the opfs-sahpool VFS, as discussed in [forum:fe8cdb8431c|forum thread fe8cdb8431c]. Summary: this gives clients a way to eke some degree of multi-page/tab/Worker concurrency out of this VFS but requires that coordination to be implemented client-side, e.g. via a SharedWorker or WebLocks.
FossilOrigin-Name: b5dbd521951e129b4dec69f191a872500dbf387b34a8479ad58b053ffcccbab9
Diffstat (limited to 'ext/wasm/tester1.c-pp.js')
-rw-r--r--ext/wasm/tester1.c-pp.js19
1 files changed, 18 insertions, 1 deletions
diff --git a/ext/wasm/tester1.c-pp.js b/ext/wasm/tester1.c-pp.js
index 28d61de07..8638845a7 100644
--- a/ext/wasm/tester1.c-pp.js
+++ b/ext/wasm/tester1.c-pp.js
@@ -3189,8 +3189,25 @@ globalThis.sqlite3InitModule = sqlite3InitModule;
db.close();
T.assert(1 === u1.getFileCount());
db = new u2.OpfsSAHPoolDb(dbName);
- T.assert(1 === u1.getFileCount());
+ T.assert(1 === u1.getFileCount())
+ .mustThrowMatching(
+ ()=>u1.pauseVfs(),
+ (err)=>{
+ return capi.SQLITE_MISUSE===err.resultCode
+ && /^SQLITE_MISUSE: Cannot pause VFS /.test(err.message);
+ },
+ "Cannot pause VFS with opened db."
+ );
db.close();
+ T.assert( u2===u2.pauseVfs() )
+ .assert( u2.isPaused() )
+ .assert( 0===capi.sqlite3_vfs_find(u2.vfsName) )
+ .mustThrowMatching(()=>new u2.OpfsSAHPoolDb(dbName),
+ /.+no such vfs: .+/,
+ "VFS is not available")
+ .assert( u2===await u2.unpauseVfs() )
+ .assert( u2===await u1.unpauseVfs(), "unpause is a no-op if the VFS is not paused" )
+ .assert( 0!==capi.sqlite3_vfs_find(u2.vfsName) );
const fileNames = u1.getFileNames();
T.assert(1 === fileNames.length)
.assert(dbName === fileNames[0])