forked from XRPLF/rippled
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathledger-data-test.js
More file actions
65 lines (57 loc) · 2.02 KB
/
ledger-data-test.js
File metadata and controls
65 lines (57 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
var assert = require('assert');
var Request = require('ripple-lib').Request;
var makeSuite = require('./declarative-suite').makeSuite;
makeSuite('ledger_data', {dump: 'ledger-full-40000.json'},
{
ledger_data: function (remote, done) {
var limit = 20;
// keep track of indexes we've seen
var indexes = {};
// keep all the ledger_data items from multiple requests in one array
var merged = [];
function requestData (marker, callback) {
if (typeof marker === 'function') {
callback = marker;
marker = undefined;
}
var req = new Request(remote, 'ledger_data');
var params = req.message;
params.ledger_index = 'validated';
params.marker = marker;
params.limit = limit;
params.binary = false;
req.callback(function (e, m) {
assert.equal(typeof m.ledger_index, 'number');
assert.equal(typeof m.ledger_hash, 'string');
// make sure we didn't get some error
assert.ifError(e);
// make sure we aren't getting indexes we've seen before
m.state.forEach(function (s) {
assert(indexes[s.index] === undefined);
indexes[s.index] = true;
merged.push(s);
});
// make another request if we have a marker
if (m.marker) {
// make sure our limit was honoured
assert(m.state.length == limit);
requestData(m.marker, callback);
} else {
// make sure our limit was honoured
assert(m.state.length <= limit);
callback();
}
});
}
requestData(function () {
remote.request_ledger({validated: true, full: true}, function (e, m) {
// compare our stitched together account state array with one from
// the ledegr data command
assert.deepEqual(merged/* .concat('watch me fail') */,
m.ledger.accountState);
done();
});
});
}
}
);