mirror of
https://github.com/amark/gun.git
synced 2025-03-30 15:08:33 +00:00
Merge pull request #380 from entenitconsulting/master
s2s test with peer aded after init
This commit is contained in:
commit
84b0e211bf
@ -22,7 +22,9 @@ var gun = Gun({
|
||||
bucket: '' // The bucket you want to save into
|
||||
}
|
||||
});
|
||||
// Sync everything
|
||||
gun.on('out', {get: {'#': {'*': ''}}});
|
||||
|
||||
server.listen(port);
|
||||
|
||||
console.log('Server started on port ' + port + ' with /gun');
|
||||
console.log('Server started on port ' + port + ' with /gun');
|
||||
|
148
test/panic/s2s-all-delayed-peer-add.js
Normal file
148
test/panic/s2s-all-delayed-peer-add.js
Normal file
@ -0,0 +1,148 @@
|
||||
var config = {
|
||||
IP: require('ip').address(),
|
||||
port: 8080,
|
||||
servers: 2,
|
||||
browsers: 0,
|
||||
dir: __dirname,
|
||||
route: {
|
||||
'/': __dirname + '/index.html',
|
||||
'/gun.js': __dirname + '/../../gun.js',
|
||||
'/jquery.js': __dirname + '/../../examples/jquery.js'
|
||||
}
|
||||
}
|
||||
|
||||
var panic = require('panic-server');
|
||||
panic.server().on('request', function(req, res){
|
||||
config.route[req.url] && require('fs').createReadStream(config.route[req.url]).pipe(res);
|
||||
}).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 servers = clients;
|
||||
var alice = servers.pluck(1);
|
||||
var bob = clients.excluding(alice).pluck(1);
|
||||
|
||||
describe("Sync all data from one server to another one added as peer after initialisation!", function(){
|
||||
//this.timeout(5 * 60 * 1000);
|
||||
this.timeout(10 * 60 * 1000);
|
||||
|
||||
it("Servers have joined!", function(){
|
||||
return servers.atLeast(config.servers);
|
||||
});
|
||||
|
||||
it("Alice GUN has spawned!", function(){
|
||||
return alice.run(function(test){
|
||||
var env = test.props;
|
||||
test.async();
|
||||
global.ALICE = true;
|
||||
try{ require('fs').unlinkSync(env.i+'alldata') }catch(e){}
|
||||
var server = require('http').createServer(function(req, res){
|
||||
res.end("I am "+ env.i +"!");
|
||||
});
|
||||
var port = env.config.port + env.i;
|
||||
var Gun = require(env.config.dir + '/../../');
|
||||
|
||||
var peers = [], i = env.config.servers;
|
||||
var gun = Gun({file: env.i+'alldata', peers: peers, web: server});
|
||||
|
||||
gun.get('a1').put({a:1});
|
||||
gun.get('b2').put({b:2});
|
||||
gun.get('c3').put({c:3});
|
||||
gun.get('d4').put({d:4});
|
||||
|
||||
server.listen(port, function(){
|
||||
setTimeout(function(){
|
||||
test.done();
|
||||
},1000);
|
||||
});
|
||||
}, {i: 1, config: config});
|
||||
});
|
||||
|
||||
it("Bob GUN has spawned!", function(){
|
||||
return bob.run(function(test){
|
||||
var env = test.props;
|
||||
test.async();
|
||||
try{ require('fs').unlinkSync(env.i+'alldata') }catch(e){}
|
||||
var server = require('http').createServer(function(req, res){
|
||||
res.end("I am "+ env.i +"!");
|
||||
});
|
||||
var port = env.config.port + env.i;
|
||||
var Gun = require(env.config.dir + '/../../');
|
||||
|
||||
// Initialise gun with no peers
|
||||
var peers = [];
|
||||
var gun = Gun({file: env.i+'alldata', peers: peers, web: server});
|
||||
|
||||
server.listen(port);
|
||||
console.log("IGNORE 'invalid' WARNINGS!");
|
||||
gun.on('out', {'#': 'loadthemall', get: {'#': {'*': ''}}});
|
||||
|
||||
// Add the other server as a peer
|
||||
var i = env.config.servers;
|
||||
while(i--){
|
||||
var tmp = (env.config.port + (i + 1));
|
||||
if(port != tmp){ // ignore ourselves
|
||||
peers.push('http://'+ env.config.IP + ':' + tmp + '/gun');
|
||||
}
|
||||
}
|
||||
console.log(port, " connect to ", peers);
|
||||
gun.opt({peers: peers});
|
||||
|
||||
setTimeout(function(){
|
||||
test.done();
|
||||
}, 2000);
|
||||
}, {i: 2, config: config});
|
||||
});
|
||||
|
||||
|
||||
it("Bob checked his file!", function(){
|
||||
return bob.run(function(test){
|
||||
var env = test.props;
|
||||
test.async();
|
||||
var raw = require('fs').readFileSync(env.i+'alldata');
|
||||
var json = JSON.parse(raw);
|
||||
var graph = json.graph;
|
||||
console.log("Bob's graph on disk:", json);
|
||||
|
||||
if(!graph.a1 || graph.a1.a !== 1){
|
||||
throw "a1 was not synced!";
|
||||
}
|
||||
if(!graph.b2 || graph.b2.b !== 2){
|
||||
throw "b2 was not synced!";
|
||||
}
|
||||
if(!graph.c3 || graph.c3.c !== 3){
|
||||
throw "c3 was not synced!";
|
||||
}
|
||||
if(!graph.d4 || graph.d4.d !== 4){
|
||||
throw "b4 was not synced!";
|
||||
}
|
||||
|
||||
test.done();
|
||||
}, {i: 2, 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();
|
||||
});
|
||||
});
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user