version bump

This commit is contained in:
Mark Nadal 2018-02-27 15:02:52 -08:00
parent 273036cad6
commit d56c80cccf
5 changed files with 210 additions and 7 deletions

2
gun.min.js vendored

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{ {
"name": "gun", "name": "gun",
"version": "0.9.95", "version": "0.9.96",
"description": "A realtime, decentralized, offline-first, graph data synchronization engine.", "description": "A realtime, decentralized, offline-first, graph data synchronization engine.",
"main": "index.js", "main": "index.js",
"browser": "gun.min.js", "browser": "gun.min.js",

130
test/panic/curl-server.js Normal file
View File

@ -0,0 +1,130 @@
var config = {
IP: require('ip').address(),
port: 8080,
servers: 2,
dir: __dirname
}
var panic = require('panic-server');
panic.server().listen(config.port);
var clients = panic.clients;
var manager = require('panic-manager')();
manager.start({
clients: Array(config.servers).fill().map(function(u, i){
return {
type: 'node',
port: config.port + (i + 1)
}
}),
panic: 'http://' + config.IP + ':' + config.port
});
var servers = clients.filter('Node.js');
var alice = servers.pluck(1);
var bob = servers.excluding(alice).pluck(1);
describe("Server to server sync", function(){
this.timeout(5000);
it("Servers have joined!", function(){
return servers.atLeast(config.servers);
});
it("Start GUN Bob server.", function(){
return bob.run(function(test){
test.async();
var express = require('express');
var bodyParser = require('body-parser');
var Gun = require('gun');
var app = express();
app.use(Gun.serve)
app.use(bodyParser.json())
app.post('/foo', function(req, res) {
gun.get('bar').put(req.body)
res.sendStatus(200)
});
var server = app.listen(8082, function(){ test.done() })
var gun = Gun({peers: 'http://localhost:8081/gun', web: server})
gun.get('bar').on(function(data, key){
console.log('bob', data, key)
})
}, {i: 1, config: config});
});
it("Start GUN Alice server.", function(){
return alice.run(function(test){
test.async();
var express = require('express');
var bodyParser = require('body-parser');
var Gun = require('gun');
var app = express()
app.use(Gun.serve)
var server = app.listen(8081, function(){ test.done() })
var gun = Gun({peers: 'http://localhost:8082/gun', web: server})
gun.get('bar').on(function(data, key){
console.log('alice', data, key)
global.DATA = data;
})
}, {i: 1, config: config});
});
it("Curl Bob!", function(){
var reply = require('child_process').execSync("curl --request POST "
+ "--url http://localhost:8082/foo "
+ "--header 'content-type: application/json' "
+ "--data '"+JSON.stringify({bar: "FOOBAR"})+"'");
console.log("REPLY:", reply.toString());
if(reply.toString().indexOf("err") >= 0){
console.log(reply.toString());
throw new Error("Server did not like the request!");
}
return;
});
it("Did Alice get it?", function(){
return alice.run(function(test){
test.async();
setTimeout(function(){
console.log("does Alice have it?", global.DATA);
if(!global.DATA){
console.log("no data!");
return;
}
test.done();
}, 1000);
}, {i: 1, config: config});
});
it("All finished!", function(done){
console.log("Done! Cleaning things up...");
setTimeout(function(){
done();
},1000);
});
after("Everything shut down.", function(){
return servers.run(function(){
process.exit();
});
});
});

View File

@ -3,7 +3,7 @@ var config = {
port: 8080, port: 8080,
servers: 2, servers: 2,
browsers: 2, browsers: 2,
each: 1000000, each: 10000000,
burst: 12000, burst: 12000,
wait: 1, wait: 1,
dir: __dirname, dir: __dirname,
@ -41,7 +41,7 @@ var bob = browsers.excluding(alice).pluck(1);
describe("Make sure the Radix Storage Engine (RSE) works.", function(){ describe("Make sure the Radix Storage Engine (RSE) works.", function(){
//this.timeout(5 * 60 * 1000); //this.timeout(5 * 60 * 1000);
this.timeout(10 * 60 * 1000); this.timeout(100 * 60 * 1000);
it("Servers have joined!", function(){ it("Servers have joined!", function(){
return servers.atLeast(config.servers); return servers.atLeast(config.servers);
@ -50,12 +50,18 @@ describe("Make sure the Radix Storage Engine (RSE) works.", function(){
it("GUN started!", function(){ it("GUN started!", function(){
return server.run(function(test){ return server.run(function(test){
var env = test.props; var env = test.props;
console.log("????", process.argv);
test.async(); test.async();
if(require('fs').existsSync('radata')){ if(require('fs').existsSync('radata')){
console.log("Please delete previous data first!"); console.log("Please delete previous data first!");
explode; explode;
return; return;
} }
setInterval(function(){
var mem = process.memoryUsage();
var u = Math.round(mem.heapUsed / 1024 / 1024 * 100) / 100;
console.log(u, 'MB of', Math.round(mem.heapTotal / 1024 / 1024 * 100) / 100);
}, 1000);
var port = env.config.port + env.i; var port = env.config.port + env.i;
var server = require('http').createServer(function(req, res){ var server = require('http').createServer(function(req, res){
res.end("I am "+ env.i +"!"); res.end("I am "+ env.i +"!");
@ -84,6 +90,7 @@ describe("Make sure the Radix Storage Engine (RSE) works.", function(){
window.gun = gun; window.gun = gun;
var n = Gun.time.is(), i = 0, c = 0, b = env.config.burst, l = env.config.each; var n = Gun.time.is(), i = 0, c = 0, b = env.config.burst, l = env.config.each;
var raw = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
function save(i){ function save(i){
if(i > l){ if(i > l){
@ -91,12 +98,13 @@ describe("Make sure the Radix Storage Engine (RSE) works.", function(){
} }
var d; var d;
var ref = window.gun.get('asdf'+i); var ref = window.gun.get('asdf'+i);
ref.put({hello: 'world' + i + '!'}, function(ack){ ref.put({hello: raw + i}, function(ack){
if(d){ return } d = true; if(d){ return } d = true;
c++; c++;
!(i % b) && console.log(i+'/'+l);//, '@'+Math.floor(b/((-n + (n = Gun.time.is()))/1000))+'/sec'); !(i % b) && console.log(i+'/'+l);//, '@'+Math.floor(b/((-n + (n = Gun.time.is()))/1000))+'/sec');
//localStorage.clear(); //localStorage.clear();
ref.off(); ref.off();
//console.log("gl:", Object.keys(window.gun._.graph).length);
if(c < l){ return } if(c < l){ return }
setTimeout(function(){ setTimeout(function(){
test.done(); test.done();
@ -127,6 +135,11 @@ describe("Make sure the Radix Storage Engine (RSE) works.", function(){
explode; explode;
return; return;
} }
setInterval(function(){
var mem = process.memoryUsage();
var u = Math.round(mem.heapUsed / 1024 / 1024 * 100) / 100;
console.log(u, 'MB');
}, 1000);
var port = env.config.port + env.i; var port = env.config.port + env.i;
var server = require('http').createServer(function(req, res){ var server = require('http').createServer(function(req, res){
res.end("I am "+ env.i +"!"); res.end("I am "+ env.i +"!");
@ -143,6 +156,8 @@ describe("Make sure the Radix Storage Engine (RSE) works.", function(){
it("Bob read data", function(){ it("Bob read data", function(){
return bob.run(function(test){ return bob.run(function(test){
test.async(); test.async();
test.done();
return;asdf;
console.log("I AM BOB"); console.log("I AM BOB");
localStorage.clear(); localStorage.clear();
var env = test.props; var env = test.props;
@ -150,17 +165,19 @@ describe("Make sure the Radix Storage Engine (RSE) works.", function(){
window.gun = gun; window.gun = gun;
var n = Gun.time.is(), i = 0, c = 0, b = env.config.burst, l = env.config.each; var n = Gun.time.is(), i = 0, c = 0, b = env.config.burst, l = env.config.each;
var raw = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
function check(i){ function check(i){
var d; var d;
var ref = window.gun.get('asdf' + i); var ref = window.gun.get('asdf' + i);
ref.on(function(data){ ref.on(function(data){
if(('world'+i+'!') !== data.hello){ return test.fail('wrong ' + i) } if((raw+i) !== data.hello){ return test.fail('wrong ' + i) }
if(d){ return } d = true; if(d){ return } d = true;
!(i % b) && console.log(i+'/'+l);//, '@'+Math.floor(b/((-n + (n = Gun.time.is()))/1000))+'/sec')); !(i % b) && console.log(i+'/'+l);//, '@'+Math.floor(b/((-n + (n = Gun.time.is()))/1000))+'/sec'));
c++; c++;
//localStorage.clear(); //localStorage.clear();
ref.off(); ref.off();
//console.log("gl:", Object.keys(window.gun._.graph).length);
if(c < l){ return } if(c < l){ return }
console.log("DONE!", c+'/'+l); console.log("DONE!", c+'/'+l);
test.done(); test.done();

56
test/ptsd/memory.html Normal file
View File

@ -0,0 +1,56 @@
<button onclick="START()">spam</button>
<button onclick="STOP()">stop</button>
<script src="../../gun.js"></script>
<script>
;(function(){
window.SPAM = function(cb, opt){
opt = Gun.num.is(opt)? {each: opt} : opt || {};
setInterval(burst, opt.wait);
var n = Gun.time.is(), i = 0, c = 0, b = opt.burst || 1, l = opt.each || 100;
var raw = "AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA "
function save(i){
if(!window.SPAM){ return }
if(i > l){
return clearTimeout(t);
}
cb(i, raw + i);
return;
var d;
var ref = window.gun.get('asdf'+i);
ref.put({hello: raw + i}, function(ack){
if(d){ return } d = true;
c++;
!(i % b) && console.log(i+'/'+l);//, '@'+Math.floor(b/((-n + (n = Gun.time.is()))/1000))+'/sec');
//localStorage.clear();
ref.off();
//console.log("gl:", Object.keys(window.gun._.graph).length);
if(c < l){ return }
setTimeout(function(){
test.done();
}, 1000);
});
}
function burst(){
for(var j = 0; j <= b; j++){
save(++i);
}
}
var t;
}
}());
var gun = Gun();
window.foo = [];
function START(){
alert(1);
SPAM(function(i, v){
//foo.push(Gun.text.random(1000));
gun.get('asdf/'+i).put({data: Gun.text.random(1000), i: i});
}, 10000);
}
function STOP(){
window.SPAM = false;
}
</script>