gun/test/rad/browser.html
2019-03-23 18:07:07 -07:00

102 lines
3.7 KiB
HTML

<html>
<body>
<h1>RindexedDB</h1>
<script src="../../../gun/gun.js"></script>
<script src="../../../gun/lib/radix.js"></script>
<script src="../../../gun/lib/radisk.js"></script>
<script src="../../../gun/lib/store.js"></script>
<script src="../../../gun/lib/rindexed.js"></script>
<!-- script src="../../../gun/lib/rls.js"></script -->
<button onclick="spam()">spam</button>
<button onclick="read()">read</button>
<input id="wait" placeholder="wait" type="number">
<input id="burst" placeholder="burst" type="number">
<div id='debugs'></div>
<div id='debug'></div>
<script>
Gun.TESTING = true;
try{localStorage.clear()}catch(e){}
indexedDB.deleteDatabase('radatatest');
var opt = {localStorage: false};
//opt.store = RindexedDB(opt);
var gun = Gun(opt);
</script>
<script>
wait.onchange = function(){ spam.wait = this.value }
burst.onchange = function(){ spam.burst = this.value }
//setTimeout(spam, 1);
function spam(){
//spam.max = 100000; spam.left = spam.max; spam.wait = 1; spam.burst = 250; spam.c = 0; spam.s = (+new Date);
//spam.max = 100000; spam.left = spam.max; spam.wait = 1; spam.burst = 100; spam.c = 0; spam.s = (+new Date);
spam.max = 1000000; spam.left = spam.max; spam.wait = 1; spam.burst = 250; spam.c = 0; spam.s = (+new Date);
//spam.max = 100; spam.left = spam.max; spam.wait = 1; spam.burst = 1; spam.c = 0; spam.s = (+new Date);
var to = setInterval(function(){ var b = spam.burst;
if(spam.c >= spam.max){ clearTimeout(to); return; }
if(!b){ b = burst = 1 }
while(b--){ go(++spam.c) }
function go(i){ var d = 0;
//loc.put(i, {test: i}, function(err, ok){ var ack = {err: err, ok: ok};
//ind.put(i, {test: i}, function(err, ok){ var ack = {err: err, ok: ok};
var ref = gun.get(i).put({test: i}, function(ack){
if(ack.err){ console.log(ack); }
if(d++){ return }
if(--spam.left){ return }
spam.end = (+new Date) - spam.s;
console.log('DONE!\n', spam.max, 'in', spam.end/1000, 'seconds\n', Math.round(spam.max / (spam.end/1000)), 'per second.');
document.body.style.backgroundColor = 'lime';
});
}
},wait);
setInterval(function(){
if(spam.end === true){ return }
if(spam.end){ spam.end = true }
var t = (+new Date) - spam.s, tmp, sec;
var status = 'saved\n'+ (tmp = (spam.max - spam.left)) +' in '+ (sec = (t/1000)) +' seconds\n'+ Math.round(tmp / sec) +' per second';
debugs.innerText = status;
}, 500);
}
</script>
<script>
;(function(){
var f = 'index';
indexedDB.deleteDatabase(f);
var o = indexedDB.open(f, 1), ind = {}, db;
o.onupgradeneeded = function(eve){ (eve.target.result).createObjectStore(f) }
o.onsuccess = function(){ db = o.result }
o.onerror = function(eve){ console.log(eve||1); }
ind.put = function(key, data, cb){
if(!db){ setTimeout(function(){ ind.put(key, data, cb) },9); return }
var tx = db.transaction([f], 'readwrite');
var obj = tx.objectStore(f);
var req = obj.put(data, ''+key);
req.onsuccess = obj.onsuccess = tx.onsuccess = function(){ cb(null, 1) }
req.onabort = obj.onabort = tx.onabort = function(eve){ cb(eve||2) }
req.onerror = obj.onerror = tx.onerror = function(eve){ cb(eve||3) }
}
ind.get = function(key, cb){
if(!db){ setTimeout(function(){ ind.get(key, cb) },9); return }
var tx = db.transaction([f], 'readwrite');
var obj = tx.objectStore(f);
var req = obj.get(''+key);
req.onsuccess = function(){ cb(null, req.result) }
req.onabort = function(eve){ cb(eve||4) }
req.onerror = function(eve){ cb(eve||5) }
}
window.ind = ind;
}());
</script>
<script>
;(function(){
localStorage.clear();
var ls = localStorage, loc = {};
loc.put = function(key, data, cb){ ls[''+key] = data; cb(null, 1) }
loc.get = function(key, cb){ cb(null, ls[''+key]) }
window.loc = loc;
}());
</script>
</body>
</html>