////var assert = require('assert'); ////var async = require("async"); ////var extend = require('extend'); ////var Amount = require("ripple-lib").Amount; ////var Remote = require("ripple-lib").Remote; ////var Transaction = require("ripple-lib").Transaction; ////var RippleError = require("ripple-lib").RippleError; ////var Server = require("./server").Server; ////var testutils = require("./testutils"); ////var config = testutils.init_config(); //// ////// Hard-coded limits we'll be testing: ////var BINARY_LIMIT = 500; ////var NONBINARY_LIMIT = 200; //// ////var ACCOUNT = "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh"; ////var OFFSET = 180; ////var LIMIT = 170; //// ////var FIRST_BATCH = 199; // Within both limits ////var SECOND_BATCH = 10; // Between NONBINARY_LIMIT and BINARY_LIMIT ////var THIRD_BATCH = 295; // Exceeds both limits ////var VERBOSE = false; //// //// ////suite('Account_tx tests', function() { //// var $ = { }; //// //// setup(function(done) { //// testutils.build_setup().call($, done); //// }); //// //// teardown(function(done) { //// testutils.build_teardown().call($, done); //// }); //// //// test('make many transactions and query using account_tx', function(done) { //// var root_id = $.remote.account('root')._account_id; //// $.remote.request_subscribe().accounts(root_id).request(); //// //// var self = this; //// var transactionCounter = 0; //// var final_create; //// //// function createOffer(callback) { //// var tx = $.remote.transaction(); //// tx.offer_create("root", "500", "100/USD/root"); //// //// tx.once('proposed', function(m) { //// $.remote.ledger_accept(); //// }); //// //// tx.once('error', callback); //// //// tx.once('final', function(m) { //// callback(); //// }); //// //// tx.submit(); //// }; //// //// function lotsOfTransactions(count, callback) { //// ;(function nextOffer(i) { //// createOffer(function(err) { //// console.log(i, count); //// if (err) callback(err); //// else if (++i === count) callback(null); //// else nextOffer(i); //// }); //// })(0); //// }; //// //// function firstBatch() { //// lotsOfTransactions(FIRST_BATCH, function(a, b) { //// runTests(self, FIRST_BATCH, 0, void(0), function() { //// console.log('2'); //// runTests(self, FIRST_BATCH, OFFSET, void(0), function() { //// console.log('3'); //// runTests(self, FIRST_BATCH, -1, LIMIT, secondBatch); //// }) //// })}); //// } //// //// function secondBatch() { //// lotsOfTransactions(SECOND_BATCH, function() { //// runTests(self, FIRST_BATCH+SECOND_BATCH, 0, void(0), function() { //// runTests(self, FIRST_BATCH+SECOND_BATCH, OFFSET, void(0), thirdBatch); //// })}); //// } //// //// function thirdBatch() { //// lotsOfTransactions(THIRD_BATCH, function() { //// runTests(self, FIRST_BATCH+SECOND_BATCH+THIRD_BATCH, 0, void(0), function() { //// runTests(self, FIRST_BATCH+SECOND_BATCH+THIRD_BATCH, OFFSET, void(0), done); //// })}); //// } //// //// firstBatch(); //// //// function errorHandler(callback) { //// return function(r) { //// if (VERBOSE) console.log("ERROR!"); //// if (VERBOSE) console.log(r); //// callback(r); //// } //// } //// //// function txOptions(ext) { //// var defaults = { //// account: ACCOUNT, //// ledger_index_min: -1, //// ledger_index_max: -1 //// } //// return extend(defaults, ext); //// }; //// //// function sortByLedger(a, b) { //// assert(a.tx, 'Transaction missing'); //// assert(b.tx, 'Transaction missing'); //// if (a.tx.inLedger > b.tx.inLedger) { //// return 1; //// } else if (a.tx.inLedger < b.tx.inLedger) { //// return -1; //// } else { //// return 0; //// } //// }; //// //// function runTests(self, transactionCount, offset, limit, callback) { //// var steps = [ //// function(callback) { //// if (VERBOSE) console.log('nonbinary'); //// //// var req = $.remote.request_account_tx(txOptions({ offset: offset, limit: limit })); //// //// req.callback(function(err, r) { //// if (err) return callback(err); //// assert(r && r.transactions); //// var targetLength = Math.min(NONBINARY_LIMIT, limit ? Math.min(limit, transactionCount - offset) : transactionCount - offset); //// assert.strictEqual(r.transactions.length, targetLength, 'Transactions unexpected length'); //// //assert.deepEqual(r.transactions.sort(sortByLedger), r.transactions, 'Transactions out of order'); //// callback(); //// }); //// }, //// //// function(callback) { //// if (VERBOSE) console.log('binary'); //// //// var req = $.remote.request_account_tx(txOptions({ binary: true, offset: offset, limit: limit })); //// //// req.callback(function(err, r) { //// if (err) return callback(err); //// assert(r && r.transactions); //// var targetLength = Math.min(BINARY_LIMIT, limit ? Math.min(limit, transactionCount-offset) : transactionCount-offset); //// assert.strictEqual(r.transactions.length, targetLength, 'Transactions unexpected length'); //// //assert.deepEqual(r.transactions.sort(sortByLedger), r.transactions, 'Transactions out of order'); //// callback(); //// }); //// }, //// //// function(callback) { //// if (VERBOSE) console.log('nonbinary+offset'); //// //// var req = $.remote.request_account_tx(txOptions({ descending: true, offset: offset, limit: limit })); //// //// req.callback(function(err, r) { //// if (err) return callback(err); //// assert(r && r.transactions); //// var targetLength = Math.min(NONBINARY_LIMIT, limit ? Math.min(limit,transactionCount-offset) : transactionCount-offset ); //// assert.strictEqual(r.transactions.length, targetLength, 'Transactions unexpected length'); //// //assert.deepEqual(r.transactions.sort(sortByLedger), r.transactions, 'Transactions out of order'); //// callback(); //// }); //// } //// ] //// //// async.series(steps, function(error) { //// console.log(error); //// assert.ifError(error); //// callback(); //// }); //// } //// }); ////}); //======= //var async = require("async"); //var buster = require("buster"); // //var Amount = require("ripple-lib").Amount; //var Remote = require("ripple-lib").Remote; //var Transaction = require("ripple-lib").Transaction; //var Server = require("./server").Server; // //var testutils = require("./testutils"); //var config = testutils.init_config(); // //buster.testRunner.timeout = 350000; //This is a very long test! // // //// Hard-coded limits we'll be testing: //var BINARY_LIMIT = 500; //var NONBINARY_LIMIT = 200; // //var ACCOUNT = "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh"; //var FIRST_BATCH = 199; // Within both limits //var OFFSET = 180; //var LIMIT = 170; //var SECOND_BATCH = 10; // Between NONBINARY_LIMIT and BINARY_LIMIT //var THIRD_BATCH = 295; // Exceeds both limits //var VERBOSE = false; // //buster.testCase("//Account_tx tests", { // 'setUp' : testutils.build_setup(), // 'tearDown' : testutils.build_teardown(), // // "make a lot of transactions and query using account_tx" : function (done) { // var self = this; // var final_create; // var transactionCounter = 0; // var f = 0; // var functionHolder; // var createOfferFunction = function (callback) { // self.remote.transaction() // .offer_create("root", "500", "100/USD/root") // .on('proposed', function (m) { // transactionCounter++; // if (VERBOSE) console.log('Submitted transaction', transactionCounter); // // callback(m.result !== 'tesSUCCESS'); // }) // .on('final', function (m) { // f++; // if (VERBOSE) console.log("Finalized transaction", f); // buster.assert.equals('tesSUCCESS', m.metadata.TransactionResult); // buster.assert(final_create); // if ( f == transactionCounter ) { // if (VERBOSE) console.log("All transactions have been finalized."); // functionHolder(); // } // }) // .submit(); // }; // // function lotsOfTransactions(number, whenDone) { // var bunchOfOffers = []; // for (var i=0; it2.inLedger || (t1.inLedger==t2.inLedger && t1.Sequence > t2.Sequence ), // // "Transactions were not ordered correctly: "+t1.inLedger+"#"+t1.Sequence+" should not have come before "+t2.inLedger+"#"+t2.Sequence); // buster.assert(t1.inLedger>=t2.inLedger, // "Transactions were not ordered correctly: "+t1.inLedger+"#"+t1.Sequence+" should not have come before "+t2.inLedger+"#"+t2.Sequence); // } // } else { // buster.assert(r.transactions, "No transactions returned: "+offset+" "+limit); // } // // // callback(false); // }) // .on('error', standardErrorHandler(callback)) // .request(); // }, // // // ], function (error) { // buster.refute(error); // finalCallback(); // } // ); // } // } //}); // // // //// TODO: //// Test the "count" feature.