UT: Share setUp and tearDown code.

This commit is contained in:
Arthur Britto
2012-10-21 15:30:16 -07:00
parent 59a61d7b35
commit cc3c640322
5 changed files with 123 additions and 109 deletions

View File

@@ -7,10 +7,12 @@ var path = require("path");
// Where to find the binary.
exports.rippled = path.join(process.cwd(), "rippled");
exports.server_default = "alpha";
// Configuration for servers.
exports.servers = {
// A local test server.
'alpha' : {
"alpha" : {
'trusted' : true,
// "peer_ip" : "0.0.0.0",
// "peer_port" : 51235,
@@ -26,39 +28,39 @@ exports.servers = {
// Configuration for test accounts.
exports.accounts = {
// Users
'alice' : {
'account' : 'rG1QQv2nh2gr7RCZ1P8YYcBUKCCN633jCn',
'secret' : 'alice',
"alice" : {
'account' : "rG1QQv2nh2gr7RCZ1P8YYcBUKCCN633jCn",
'secret' : "alice",
},
'bob' : {
'account' : 'rPMh7Pi9ct699iZUTWaytJUoHcJ7cgyziK',
'secret' : 'bob',
"bob" : {
'account' : "rPMh7Pi9ct699iZUTWaytJUoHcJ7cgyziK",
'secret' : "bob",
},
'carol' : {
'account' : 'rH4KEcG9dEwGwpn6AyoWK9cZPLL4RLSmWW',
'secret' : 'carol',
"carol" : {
'account' : "rH4KEcG9dEwGwpn6AyoWK9cZPLL4RLSmWW",
'secret' : "carol",
},
// Nexuses
'bitstamp' : {
'account' : 'r4jKmc2nQb5yEU6eycefiNKGHTU5NQJASx',
'secret' : 'bitstamp',
"bitstamp" : {
'account' : "r4jKmc2nQb5yEU6eycefiNKGHTU5NQJASx",
'secret' : "bitstamp",
},
'mtgox' : {
'account' : 'rGihwhaqU8g7ahwAvTq6iX5rvsfcbgZw6v',
'secret' : 'mtgox',
"mtgox" : {
'account' : "rGihwhaqU8g7ahwAvTq6iX5rvsfcbgZw6v",
'secret' : "mtgox",
},
// Merchants
'amazon' : {
'account' : 'rhheXqX7bDnXePJeMHhubDDvw2uUTtenPd',
'secret' : 'amazon',
"amazon" : {
'account' : "rhheXqX7bDnXePJeMHhubDDvw2uUTtenPd",
'secret' : "amazon",
},
// Master account
'root' : {
'account' : 'rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh',
'secret' : 'masterpassphrase',
"root" : {
'account' : "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
'secret' : "masterpassphrase",
},
};

View File

@@ -6,34 +6,22 @@ var Amount = require("../js/amount.js").Amount;
var Remote = require("../js/remote.js").Remote;
var Server = require("./server.js").Server;
var testutils = require("./testutils.js");
buster.testRunner.timeout = 5000;
var alpha;
buster.testCase("Offer tests", {
'setUp' :
function (done) {
server = Server.from_config("alpha").on('started', function () {
alpha = Remote.from_config("alpha").once('ledger_closed', done) .connect();
}).start();
},
'tearDown' :
function (done) {
alpha
.on('disconnected', function () {
server.on('stopped', done).stop();
})
.connect(false);
},
'setUp' : testutils.test_setup,
'tearDown' : testutils.test_teardown,
"offer create then cancel in one ledger" :
function (done) {
var self = this;
var final_create;
async.waterfall([
function (callback) {
alpha.transaction()
self.remote.transaction()
.offer_create("root", "500", "100/USD/root")
.on("proposed", function (m) {
// console.log("PROPOSED: offer_create: %s", JSON.stringify(m));
@@ -49,7 +37,7 @@ buster.testCase("Offer tests", {
.submit();
},
function (m, callback) {
alpha.transaction()
self.remote.transaction()
.offer_cancel("root", m.transaction.Sequence)
.on("proposed", function (m) {
// console.log("PROPOSED: offer_cancel: %s", JSON.stringify(m));
@@ -65,7 +53,7 @@ buster.testCase("Offer tests", {
.submit();
},
function (m, callback) {
alpha
self.remote
.once("ledger_closed", function (ledger_closed, ledger_closed_index) {
// console.log("LEDGER_CLOSED: %d: %s", ledger_closed_index, ledger_closed);
})
@@ -81,12 +69,13 @@ buster.testCase("Offer tests", {
"offer_create then ledger_accept then offer_cancel then ledger_accept." :
function (done) {
var self = this;
var final_create;
var offer_seq;
async.waterfall([
function (callback) {
alpha.transaction()
self.remote.transaction()
.offer_create("root", "500", "100/USD/root")
.on("proposed", function (m) {
// console.log("PROPOSED: offer_create: %s", JSON.stringify(m));
@@ -108,7 +97,7 @@ buster.testCase("Offer tests", {
},
function (callback) {
if (!final_create) {
alpha
self.remote
.once("ledger_closed", function (ledger_closed, ledger_closed_index) {
// console.log("LEDGER_CLOSED: %d: %s", ledger_closed_index, ledger_closed);
@@ -122,7 +111,7 @@ buster.testCase("Offer tests", {
function (callback) {
// console.log("CANCEL: offer_cancel: %d", offer_seq);
alpha.transaction()
self.remote.transaction()
.offer_cancel("root", offer_seq)
.on("proposed", function (m) {
// console.log("PROPOSED: offer_cancel: %s", JSON.stringify(m));
@@ -140,7 +129,7 @@ buster.testCase("Offer tests", {
},
// See if ledger_accept will crash.
function (callback) {
alpha
self.remote
.once("ledger_closed", function (ledger_closed, ledger_closed_index) {
// console.log("LEDGER_CLOSED: A: %d: %s", ledger_closed_index, ledger_closed);
callback();
@@ -148,7 +137,7 @@ buster.testCase("Offer tests", {
.ledger_accept();
},
function (callback) {
alpha
self.remote
.once("ledger_closed", function (ledger_closed, ledger_closed_index) {
// console.log("LEDGER_CLOSED: B: %d: %s", ledger_closed_index, ledger_closed);
callback();
@@ -166,12 +155,13 @@ buster.testCase("Offer tests", {
"new user offer_create then ledger_accept then offer_cancel then ledger_accept." :
function (done) {
var self = this;
var final_create;
var offer_seq;
async.waterfall([
function (callback) {
alpha.transaction()
self.remote.transaction()
.payment('root', 'alice', "1000")
.set_flags('CreateAccount')
.on('proposed', function (m) {
@@ -182,7 +172,7 @@ buster.testCase("Offer tests", {
.submit()
},
function (callback) {
alpha.transaction()
self.remote.transaction()
.offer_create("alice", "500", "100/USD/alice")
.on("proposed", function (m) {
// console.log("PROPOSED: offer_create: %s", JSON.stringify(m));
@@ -204,7 +194,7 @@ buster.testCase("Offer tests", {
},
function (callback) {
if (!final_create) {
alpha
self.remote
.once("ledger_closed", function (ledger_closed, ledger_closed_index) {
// console.log("LEDGER_CLOSED: %d: %s", ledger_closed_index, ledger_closed);
@@ -218,7 +208,7 @@ buster.testCase("Offer tests", {
function (callback) {
// console.log("CANCEL: offer_cancel: %d", offer_seq);
alpha.transaction()
self.remote.transaction()
.offer_cancel("alice", offer_seq)
.on("proposed", function (m) {
// console.log("PROPOSED: offer_cancel: %s", JSON.stringify(m));
@@ -236,7 +226,7 @@ buster.testCase("Offer tests", {
},
// See if ledger_accept will crash.
function (callback) {
alpha
self.remote
.once("ledger_closed", function (ledger_closed, ledger_closed_index) {
// console.log("LEDGER_CLOSED: A: %d: %s", ledger_closed_index, ledger_closed);
callback();
@@ -244,7 +234,7 @@ buster.testCase("Offer tests", {
.ledger_accept();
},
function (callback) {
alpha
self.remote
.once("ledger_closed", function (ledger_closed, ledger_closed_index) {
// console.log("LEDGER_CLOSED: B: %d: %s", ledger_closed_index, ledger_closed);
callback();
@@ -260,11 +250,12 @@ buster.testCase("Offer tests", {
"offer cancel past and future sequence" :
function (done) {
var self = this;
var final_create;
async.waterfall([
function (callback) {
alpha.transaction()
self.remote.transaction()
.payment('root', 'alice', Amount.from_json("10000"))
.set_flags('CreateAccount')
.on("proposed", function (m) {
@@ -281,7 +272,7 @@ buster.testCase("Offer tests", {
},
// Past sequence but wrong
function (m, callback) {
alpha.transaction()
self.remote.transaction()
.offer_cancel("root", m.transaction.Sequence)
.on("proposed", function (m) {
// console.log("PROPOSED: offer_cancel past: %s", JSON.stringify(m));
@@ -291,7 +282,7 @@ buster.testCase("Offer tests", {
},
// Same sequence
function (m, callback) {
alpha.transaction()
self.remote.transaction()
.offer_cancel("root", m.transaction.Sequence+1)
.on("proposed", function (m) {
// console.log("PROPOSED: offer_cancel same: %s", JSON.stringify(m));
@@ -302,9 +293,9 @@ buster.testCase("Offer tests", {
// Future sequence
function (m, callback) {
// After a malformed transaction, need to recover correct sequence.
alpha.set_account_seq("root", alpha.account_seq("root")-1);
self.remote.set_account_seq("root", self.remote.account_seq("root")-1);
alpha.transaction()
self.remote.transaction()
.offer_cancel("root", m.transaction.Sequence+2)
.on("proposed", function (m) {
// console.log("ERROR: offer_cancel future: %s", JSON.stringify(m));
@@ -314,7 +305,7 @@ buster.testCase("Offer tests", {
},
// See if ledger_accept will crash.
function (callback) {
alpha
self.remote
.once("ledger_closed", function (ledger_closed, ledger_closed_index) {
// console.log("LEDGER_CLOSED: A: %d: %s", ledger_closed_index, ledger_closed);
callback();
@@ -322,7 +313,7 @@ buster.testCase("Offer tests", {
.ledger_accept();
},
function (callback) {
alpha
self.remote
.once("ledger_closed", function (ledger_closed, ledger_closed_index) {
// console.log("LEDGER_CLOSED: B: %d: %s", ledger_closed_index, ledger_closed);
callback();

View File

@@ -4,6 +4,8 @@ var Amount = require("../js/amount.js").Amount;
var Remote = require("../js/remote.js").Remote;
var Server = require("./server.js").Server;
var testutils = require("./testutils.js");
var fastTearDown = true;
// How long to wait for server to start.
@@ -12,25 +14,12 @@ var serverDelay = 1500; // XXX Not implemented.
buster.testRunner.timeout = 5000;
buster.testCase("Remote functions", {
'setUp' :
function (done) {
server = Server.from_config("alpha").on('started', function () {
alpha = Remote.from_config("alpha").once('ledger_closed', done) .connect();
}).start();
},
'tearDown' :
function (done) {
alpha
.on('disconnected', function () {
server.on('stopped', done).stop();
})
.connect(false);
},
'setUp' : testutils.test_setup,
'tearDown' : testutils.test_teardown,
'request_ledger_current' :
function (done) {
alpha.request_ledger_current().on('success', function (m) {
this.remote.request_ledger_current().on('success', function (m) {
// console.log(m);
buster.assert.equals(m.ledger_current_index, 3);
@@ -46,7 +35,7 @@ buster.testCase("Remote functions", {
'request_ledger_closed' :
function (done) {
alpha.request_ledger_closed().on('success', function (m) {
this.remote.request_ledger_closed().on('success', function (m) {
// console.log("result: %s", JSON.stringify(m));
buster.assert.equals(m.ledger_closed_index, 2);
@@ -62,10 +51,12 @@ buster.testCase("Remote functions", {
'manual account_root success' :
function (done) {
alpha.request_ledger_closed().on('success', function (r) {
var self = this;
this.remote.request_ledger_closed().on('success', function (r) {
// console.log("result: %s", JSON.stringify(r));
alpha
self.remote
.request_ledger_entry('account_root')
.ledger_closed(r.ledger_closed)
.account_root("rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh")
@@ -93,10 +84,12 @@ buster.testCase("Remote functions", {
// XXX This should be detected locally.
'account_root remote malformedAddress' :
function (done) {
alpha.request_ledger_closed().on('success', function (r) {
var self = this;
this.remote.request_ledger_closed().on('success', function (r) {
// console.log("result: %s", JSON.stringify(r));
alpha
self.remote
.request_ledger_entry('account_root')
.ledger_closed(r.ledger_closed)
.account_root("zHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh")
@@ -124,10 +117,12 @@ buster.testCase("Remote functions", {
'account_root entryNotFound' :
function (done) {
alpha.request_ledger_closed().on('success', function (r) {
var self = this;
this.remote.request_ledger_closed().on('success', function (r) {
// console.log("result: %s", JSON.stringify(r));
alpha
self.remote
.request_ledger_entry('account_root')
.ledger_closed(r.ledger_closed)
.account_root("alice")
@@ -154,10 +149,12 @@ buster.testCase("Remote functions", {
'ledger_entry index' :
function (done) {
alpha.request_ledger_closed().on('success', function (r) {
var self = this;
this.remote.request_ledger_closed().on('success', function (r) {
// console.log("result: %s", JSON.stringify(r));
alpha
self.remote
.request_ledger_entry('index')
.ledger_closed(r.ledger_closed)
.account_root("alice")
@@ -185,7 +182,7 @@ buster.testCase("Remote functions", {
'create account' :
function (done) {
alpha.transaction()
this.remote.transaction()
.payment('root', 'alice', Amount.from_json("10000"))
.set_flags('CreateAccount')
.on('success', function (r) {
@@ -204,10 +201,12 @@ buster.testCase("Remote functions", {
"create account final" :
function (done) {
var self = this;
var got_proposed;
var got_success;
alpha.transaction()
this.remote.transaction()
.payment('root', 'alice', Amount.from_json("10000"))
.set_flags('CreateAccount')
.on('success', function (r) {
@@ -234,7 +233,7 @@ buster.testCase("Remote functions", {
got_proposed = true;
alpha.ledger_accept();
self.remote.ledger_accept();
})
.on('status', function (s) {
// console.log("status: %s", JSON.stringify(s));

View File

@@ -4,36 +4,24 @@ var Amount = require("../js/amount.js").Amount;
var Remote = require("../js/remote.js").Remote;
var Server = require("./server.js").Server;
var testutils = require("./testutils.js");
// How long to wait for server to start.
var serverDelay = 1500;
buster.testRunner.timeout = 5000;
var alpha;
buster.testCase("Sending", {
'setUp' :
function (done) {
server = Server.from_config("alpha").on('started', function () {
alpha = Remote.from_config("alpha").once('ledger_closed', done) .connect();
}).start();
},
'tearDown' :
function (done) {
alpha
.on('disconnected', function () {
server.on('stopped', done).stop();
})
.connect(false);
},
'setUp' : testutils.test_setup,
'tearDown' : testutils.test_teardown,
"send to non-existant account without create." :
function (done) {
var got_proposed;
var self = this;
var ledgers = 20;
var got_proposed;
alpha.transaction()
this.remote.transaction()
.payment('root', 'alice', Amount.from_json("10000"))
.on('success', function (r) {
// Transaction sent.
@@ -46,7 +34,7 @@ buster.testCase("Sending", {
ledgers -= 1;
if (ledgers) {
alpha.ledger_accept();
self.remote.ledger_accept();
}
else {
buster.assert(false, "Final never received.");
@@ -68,7 +56,7 @@ buster.testCase("Sending", {
got_proposed = true;
alpha.ledger_accept(); // Move it along.
self.remote.ledger_accept(); // Move it along.
})
.on('final', function (m) {
// console.log("final: %s", JSON.stringify(m));

34
test/testutils.js Normal file
View File

@@ -0,0 +1,34 @@
var Remote = require("../js/remote.js").Remote;
var Server = require("./server.js").Server;
var config = require("./config.js");
var test_setup = function (done, host) {
var self = this;
var host = host || config.server_default;
this.store = this.store || {};
var data = this.store[host] = this.store[host] || {};
data.server = Server.from_config(host).on('started', function () {
self.remote = data.remote = Remote.from_config(host).once('ledger_closed', done).connect();
}).start();
};
var test_teardown = function (done, host) {
var host = host || config.server_default;
var data = this.store[host];
data.remote
.on('disconnected', function () {
data.server.on('stopped', done).stop();
})
.connect(false);
};
exports.test_setup = test_setup;
exports.test_teardown = test_teardown;
// vim:sw=2:sts=2:ts=8