mirror of
https://github.com/gundb/panic-server.git
synced 2026-04-15 03:00:16 -04:00
3
.gitignore
vendored
3
.gitignore
vendored
@@ -4,4 +4,5 @@
|
||||
/bower_components/
|
||||
/node_modules/
|
||||
level/
|
||||
.DS_Store
|
||||
.DS_Store
|
||||
results/
|
||||
19
browser.js
19
browser.js
@@ -9,18 +9,19 @@ var Browser;
|
||||
}
|
||||
var browser = this;
|
||||
browser.opt = opt;
|
||||
opt.done.cb = (function () {
|
||||
var cb = opt.done.cb;
|
||||
return function (opt) {
|
||||
if (cb) {
|
||||
cb.apply(this, arguments);
|
||||
}
|
||||
browser.close();
|
||||
};
|
||||
}());
|
||||
browser.window = window.open('./', browser.opt.id);
|
||||
browser.window.addEventListener('load', function () {
|
||||
browser.window.test(browser.opt);
|
||||
|
||||
opt.done.cb = (function () {
|
||||
var cb = opt.done.cb;
|
||||
return function (opt) {
|
||||
if (cb) {
|
||||
cb.apply(this, arguments);
|
||||
}
|
||||
browser.close();
|
||||
};
|
||||
}());
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
21
index.html
21
index.html
@@ -39,15 +39,8 @@
|
||||
<button id="start">start the test</button>
|
||||
<button id="close">Close tabs</button>
|
||||
</div>
|
||||
<div id="stats">
|
||||
Status: <span id="test-status">Not Started.</span>
|
||||
<div>
|
||||
<h3>Peers:</h3>
|
||||
<ul id="peers">
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<table id="stats">
|
||||
</table>
|
||||
<div class="model" style="display: none;">
|
||||
<li class="peer">
|
||||
<span class="id">peer ID</span> is <span class="status">null</span>.
|
||||
@@ -56,23 +49,23 @@
|
||||
<p>
|
||||
Future versions of this test will want to include:
|
||||
<ul>
|
||||
<li>Automatically calculate results.</li>
|
||||
<li>Ability to cause random chaos, like network hiccups.</li>
|
||||
<li>Collaboratively run across multiple browsers and devices.</li>
|
||||
<li>Do complex tasks on different data structures.</li>
|
||||
<li>Multi-peer connections.</li>
|
||||
<li>Jepsen level awesomeness.</li>
|
||||
</ul>
|
||||
Any help on building this out would be appreciated!
|
||||
</p>
|
||||
<script src="gun.js"></script>
|
||||
<script src="polyfill.js"></script>
|
||||
<script src="statistics.js"></script>
|
||||
<script src="lib/polyfill.js"></script>
|
||||
<script src="lib/statistics.js"></script>
|
||||
<script src="lib/jquery.min.js"></script>
|
||||
<script src="done.js"></script>
|
||||
<script src="node_modules/mavis/index.js"></script>
|
||||
<script src="patch.js"></script>
|
||||
<script src="lib/patch.js"></script>
|
||||
<script src="index.js"></script>
|
||||
<script src="browser.js"></script>
|
||||
<script src="ui.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
21
index.js
21
index.js
@@ -1,7 +1,5 @@
|
||||
/*globals Gun, console, patch, finisher, stats */
|
||||
var test;
|
||||
|
||||
test = function (opt) {
|
||||
function test(opt) {
|
||||
'use strict';
|
||||
|
||||
opt = patch(opt);
|
||||
@@ -9,14 +7,18 @@ test = function (opt) {
|
||||
var gun, resetDoneTimer, db, confirmed = {};
|
||||
resetDoneTimer = finisher();
|
||||
gun = new Gun(opt.peers);
|
||||
db = gun.get(opt.key).set();
|
||||
db = gun.get(opt.key);
|
||||
|
||||
function ack(num) {
|
||||
return function (err, ok) {
|
||||
if (confirmed[num]) {
|
||||
if (confirmed[num] && !err) {
|
||||
return;
|
||||
}
|
||||
opt.requests[num - 1].end = Gun.time.is();
|
||||
var request = opt.requests[num - 1];
|
||||
request.end = Gun.time.is();
|
||||
if (err) {
|
||||
request.errors.push(err);
|
||||
}
|
||||
confirmed[num] = true;
|
||||
opt.progress(opt, num);
|
||||
resetDoneTimer(db, stats(opt));
|
||||
@@ -27,10 +29,11 @@ test = function (opt) {
|
||||
var cb, packet = opt.packet();
|
||||
cb = ack(num);
|
||||
opt.requests[num - 1] = {
|
||||
start: packet.time
|
||||
start: packet.time,
|
||||
errors: []
|
||||
};
|
||||
|
||||
db.path(opt.path).set(packet, cb);
|
||||
db.path(opt.path).path(Gun.text.random()).put(packet, cb);
|
||||
|
||||
if (num === opt.packets) {
|
||||
return;
|
||||
@@ -45,7 +48,7 @@ test = function (opt) {
|
||||
resetDoneTimer(db, opt);
|
||||
|
||||
return run(1);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
6
lib/jquery.min.js
vendored
Normal file
6
lib/jquery.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -32,6 +32,8 @@ console.log = (function () {
|
||||
};
|
||||
}());
|
||||
|
||||
Gun.log.squelch = true;
|
||||
|
||||
Gun.chain.each = function (cb, end) {
|
||||
'use strict';
|
||||
var n = function () {},
|
||||
@@ -25,6 +25,8 @@
|
||||
},
|
||||
"homepage": "https://github.com/PsychoLlama/panic#readme",
|
||||
"dependencies": {
|
||||
"gun-level": "^2.1.1"
|
||||
"express": "^4.13.3",
|
||||
"gun-level": "psychollama/gun-level#zero-three",
|
||||
"mavis": "^1.4.1"
|
||||
}
|
||||
}
|
||||
|
||||
18
server.js
18
server.js
@@ -1,9 +1,17 @@
|
||||
/*jslint node: true, nomen: true */
|
||||
var port, app, express = require('express');
|
||||
app = express();
|
||||
var port, server, gun, Gun, express = require('express');
|
||||
server = express();
|
||||
port = process.argv[2] || 8080;
|
||||
Gun = require('gun-level');
|
||||
|
||||
app.use('/', express['static'](__dirname));
|
||||
server.use('/', express['static'](__dirname));
|
||||
|
||||
server.listen(port);
|
||||
gun = new Gun({
|
||||
level: {
|
||||
blaze: 'results/',
|
||||
share: true
|
||||
}
|
||||
}).wsp(server);
|
||||
server.use(gun.wsp.server);
|
||||
|
||||
require('gun-level')().attach(app);
|
||||
app.listen(port);
|
||||
|
||||
26
ui.js
Normal file
26
ui.js
Normal file
@@ -0,0 +1,26 @@
|
||||
/*globals $, Gun, Browser, console*/
|
||||
|
||||
function render(test) {
|
||||
'use strict';
|
||||
console.log(test.stats);
|
||||
// $('stats');
|
||||
}
|
||||
|
||||
$('#start').click(function () {
|
||||
'use strict';
|
||||
$('<tr>').appendTo('#stats').append('<th>').text('Peer thing');
|
||||
|
||||
var b, i, opt = {
|
||||
packets: Number($('#each').val()),
|
||||
interval: Number($('#interval').val()),
|
||||
progress: render,
|
||||
packet: function () {
|
||||
return Gun.text.random(Number($('#length').val()));
|
||||
}
|
||||
};
|
||||
for (i = 0; i < Number($('#tabs').val()); i += 1) {
|
||||
b = new Browser(opt);
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user