blob: d12a3aa03f60ba0a2360c62f6fc78f8a7799d828 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon">
<link rel="stylesheet" href="common/testing.css"/>
<title>sqlite3 WASM Testing Page Index</title>
</head>
<body>
<style>
header {
background: #044a64;
color: white;
padding: 0.5em;
border-radius: 0.25em;
}
</style>
<header id='titlebar'><span>sqlite3 WASM test pages</span></header>
<hr>
<div>Below is the list of test pages for the sqlite3 WASM
builds. All of them require that this directory have been
"make"d first. The intent is that <em>this</em> page be run
using:</div>
<blockquote><pre>althttpd -enable-sab -page index.html</pre></blockquote>
<div>and the individual tests be started in their own tab.
Warnings and Caveats:
<ul class='warning'>
<li>All of these pages must be served via an HTTP
server. Browsers do not support loading WASM files via
file:// URLs.</li>
<li>Any OPFS-related pages or tests require:
<ul>
<li>An OPFS-capable browser released after February
2023. Some tests will work with Chromium-based browsers
going back to around v102.</li>
<li>That the web server emit the so-called
<a href='https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Opener-Policy'>COOP</a>
and
<a href='https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Embedder-Policy'>COEP</a>
headers. <a href='https://sqlite.org/althttpd'>althttpd</a> requires the
<code>-enable-sab</code> flag for that.
</li>
</ul>
</li>
</ul>
</div>
<div>The tests and demos...
<ul id='test-list'>
<li>Core-most tests
<ul>
<li><a href='tester1.html'>tester1</a>: Core unit and
regression tests for the various APIs and surrounding
utility code.</li>
<li><a href='tester1-worker.html'>tester1-worker</a>: same thing
but running in a Worker.</li>
<li><a href='tester1-esm.html'>tester1-esm</a>: same as
<code>tester1</code> but loads sqlite3 in the main thread via
an ES6 module.
</li>
<li><a href='tester1-worker.html?esm'>tester1-worker?esm</a>:
same as <code>tester1-esm</code> but loads a Worker Module which
then loads the sqlite3 API via an ES6 module. Note that
not all browsers permit loading modules in Worker
threads.
</li>
</ul>
</li>
<li>High-level apps and demos...
<ul>
<li><a href='fiddle/index.html'>fiddle</a> is an HTML front-end
to a wasm build of the sqlite3 shell.</li>
<li><a href='demo-123.html'>demo-123</a> provides a
no-nonsense example of adding sqlite3 support to a web
page in the UI thread.</li>
<li><a href='demo-123-worker.html'>demo-123-worker</a> is
the same as <code>demo-123</code> but loads and runs
sqlite3 from a Worker thread.</li>
<li><a href='demo-jsstorage.html'>demo-jsstorage</a>: very basic
demo of using the key-value VFS for storing a persistent db
in JS <code>localStorage</code> or <code>sessionStorage</code>.</li>
<li><a href='demo-worker1.html'>demo-worker1</a>:
Worker-based wrapper of the OO API #1. Its Promise-based
wrapper is significantly easier to use, however.</li>
<li><a href='demo-worker1-promiser.html'>demo-worker1-promiser</a>:
a demo of the Promise-based wrapper of the Worker1 API.</li>
<li><a href='demo-worker1-promiser-esm.html'>demo-worker1-promiser-esm</a>:
same as the previous demo except loads the promiser from an ESM module.</li>
</ul>
</li>
<li>speedtest1 ports (sqlite3's primary benchmarking tool)...
<ul>
<li><a href='speedtest1.html'>speedtest1</a>: a main-thread WASM build of speedtest1.</li>
<li><a href='speedtest1.html?vfs=kvvfs'>speedtest1?vfs=kvvfs</a>: speedtest1 with the kvvfs.</li>
<li><a href='speedtest1-worker.html?size=15'>speedtest1-worker</a>: an interactive Worker-thread variant of speedtest1.</li>
<li><a href='speedtest1-worker.html?vfs=opfs&size=10'>speedtest1-worker?vfs=opfs</a>: speedtest1-worker with the
OPFS VFS preselected and configured for a moderate workload.</li>
<li><a href='speedtest1-worker.html?vfs=opfs-sahpool&size=10'>speedtest1-worker?vfs=opfs-sahpool</a>:
speedtest1-worker with the OPFS-SAHPOOL VFS preselected
and configured for a moderate workload.
</li>
</ul>
</li>
<li>The obligatory "misc." category...
<ul>
<li><a href='module-symbols.html'>module-symbols</a> gives
a high-level overview of the symbols exposed by the JS
module.</li>
<!--li><a href='batch-runner.html'>batch-runner</a>: runs batches of
SQL exported from speedtest1.</li-->
<li><a href='test-opfs-vfs.html'>test-opfs-vfs</a>
(<a href='test-opfs-vfs.html?opfs-sanity-check&opfs-verbose'>same
with verbose output and sanity-checking tests</a>) is an
sqlite3_vfs OPFS proxy using SharedArrayBuffer and the
Atomics APIs to regulate communication between the
synchronous sqlite3_vfs interface and the async OPFS
impl.
</li>
<li><a href='tests/opfs/concurrency/index.html'>OPFS concurrency</a>
tests using multiple workers.
</li>
</ul>
</li>
<li><strong>WASMFS</strong>-specific tests which require that
the WASMFS build is available on this server (it is not by
default) and that this server emits the COOP/COEP headers.
<ul>
<li><a href='scratchpad-wasmfs.html'>scratchpad-wasmfs</a>:
experimenting with WASMFS/OPFS-based persistence.
</li>
<li><a href='speedtest1-wasmfs.html?flags=--size,15'>speedtest1-wasmfs</a>:
a variant of speedtest1 built solely for the wasmfs/opfs
feature.
</li>
</ul>
</li>
<!--li><a href='x.html'></a></li-->
</ul>
</div>
<style>
#test-list { font-size: 120%; }
</style>
<script>//Assign a distinct target tab name for each test page...
document.querySelectorAll('a').forEach(function(e){
e.target = e.href.replace(/^http*:\/\/[^/]+\//, '');
});
</script>
</body>
</html>
|