1*100b496dSstephan<!doctype html> 2*100b496dSstephan<html lang="en-us"> 3*100b496dSstephan <head> 4*100b496dSstephan <meta charset="utf-8"> 5*100b496dSstephan <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 6*100b496dSstephan <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon"> 7*100b496dSstephan <link rel="stylesheet" href="common/emscripten.css"/> 8*100b496dSstephan <link rel="stylesheet" href="common/testing.css"/> 9*100b496dSstephan <title>speedtest1.wasm</title> 10*100b496dSstephan </head> 11*100b496dSstephan <body> 12*100b496dSstephan <header id='titlebar'><span>speedtest1.wasm</span></header> 13*100b496dSstephan <!-- emscripten bits --> 14*100b496dSstephan <figure id="module-spinner"> 15*100b496dSstephan <div class="spinner"></div> 16*100b496dSstephan <div class='center'><strong>Initializing app...</strong></div> 17*100b496dSstephan <div class='center'> 18*100b496dSstephan On a slow internet connection this may take a moment. If this 19*100b496dSstephan message displays for "a long time", intialization may have 20*100b496dSstephan failed and the JavaScript console may contain clues as to why. 21*100b496dSstephan </div> 22*100b496dSstephan </figure> 23*100b496dSstephan <div class="emscripten" id="module-status">Downloading...</div> 24*100b496dSstephan <div class="emscripten"> 25*100b496dSstephan <progress value="0" max="100" id="module-progress" hidden='1'></progress> 26*100b496dSstephan </div><!-- /emscripten bits --> 27*100b496dSstephan <div>Output is sent to the dev console because we cannot update the UI while the 28*100b496dSstephan speedtest is running unless/until we move the speedtest to a worker thread.</div> 29*100b496dSstephan <hr> 30*100b496dSstephan <div id='test-output'></div> 31*100b496dSstephan <script src="common/whwasmutil.js"></script> 32*100b496dSstephan <script src="common/SqliteTestUtil.js"></script> 33*100b496dSstephan <script src="speedtest1.js"></script> 34*100b496dSstephan <script> 35*100b496dSstephan (function(){ 36*100b496dSstephan const eOut = document.querySelector('#test-output'); 37*100b496dSstephan const logHtml2 = async function(cssClass,...args){ 38*100b496dSstephan const ln = document.createElement('div'); 39*100b496dSstephan if(cssClass) ln.classList.add(cssClass); 40*100b496dSstephan ln.append(document.createTextNode(args.join(' '))); 41*100b496dSstephan eOut.append(ln); 42*100b496dSstephan //this.e.output.lastElementChild.scrollIntoViewIfNeeded(); 43*100b496dSstephan }; 44*100b496dSstephan const doHtmlOutput = false 45*100b496dSstephan /* can't update DOM while speedtest is running unless we run 46*100b496dSstephan speedtest in a worker thread. */; 47*100b496dSstephan const logHtml = (...args)=>{ 48*100b496dSstephan console.log(...args); 49*100b496dSstephan if(doHtmlOutput) logHtml2('', ...args); 50*100b496dSstephan }; 51*100b496dSstephan const logErr = function(...args){ 52*100b496dSstephan console.error(...args); 53*100b496dSstephan if(doHtmlOutput) this.logHtml2('error', ...args); 54*100b496dSstephan }; 55*100b496dSstephan 56*100b496dSstephan const runTests = function(EmscriptenModule){ 57*100b496dSstephan console.log("Module inited."); 58*100b496dSstephan const wasm = { 59*100b496dSstephan exports: EmscriptenModule.asm, 60*100b496dSstephan alloc: (n)=>EmscriptenModule._malloc(n), 61*100b496dSstephan dealloc: (m)=>EmscriptenModule._free(m) 62*100b496dSstephan }; 63*100b496dSstephan //console.debug('Emscripten Module =',EmscriptenModule); 64*100b496dSstephan //console.debug('wasm =',wasm); 65*100b496dSstephan self.WhWasmUtilInstaller(wasm); 66*100b496dSstephan const scope = wasm.scopedAllocPush(); 67*100b496dSstephan try{ 68*100b496dSstephan const maxArgc = 12; 69*100b496dSstephan const aArgs = [ 70*100b496dSstephan // TODO: accept flags via URL arguments and/or a 71*100b496dSstephan // UI control. A multi-SELECT element should do 72*100b496dSstephan // nicely. 73*100b496dSstephan "speedtest1", 74*100b496dSstephan "--memdb", 75*100b496dSstephan "--stats" 76*100b496dSstephan ]; 77*100b496dSstephan wasm.xCall('__main_argc_argv', aArgs.length, 78*100b496dSstephan wasm.scopedAllocMainArgv(aArgs)); 79*100b496dSstephan }finally{ 80*100b496dSstephan wasm.scopedAllocPop(scope); 81*100b496dSstephan } 82*100b496dSstephan }; 83*100b496dSstephan 84*100b496dSstephan self.sqlite3TestModule.print = logHtml; 85*100b496dSstephan self.sqlite3TestModule.printErr = logErr; 86*100b496dSstephan sqlite3Speedtest1InitModule(self.sqlite3TestModule).then(function(M){ 87*100b496dSstephan setTimeout(()=>runTests(M), 100); 88*100b496dSstephan }); 89*100b496dSstephan })(); 90*100b496dSstephan </script> 91*100b496dSstephan </body> 92*100b496dSstephan</html> 93