Commit Graph

39 Commits

Author SHA1 Message Date
Brad Chase
b6a01ea41c Move support test code to src/test/support (RIPD-1313) 2016-12-23 20:39:02 -05:00
Miguel Portilla
a7c4d682d2 Ledger header RPC enhancements (RIPD-692):
This combines two enhancements to the ledger_data RPC
command and related commands.

The ledger_data RPC command will now return the ledger header
in the first query (the one with no marker specified).

Also, ledger_data and related commands will now provide the
ledger header in binary if binary output is specified.

Modified existing ledgerdata unit test to cover new functionality.
2016-12-23 14:36:11 -08:00
JoelKatz
e00a6b0e5a Enable amendments in genesis ledger (RIPD-1281)
When started with "--start", put all known, non-vetoed
amendments in the genesis ledger. This avoids the need
to wait 256 ledgers before amendments are enabled when
testing with a fresh ledger.
2016-12-23 14:36:11 -08:00
JoelKatz
dc3571184a Add a flag to the ledger for SHAMapV2
This will allow code that looks at the ledger header to know what version the
SHAMap uses. This is helpful for code that rebuilds ledger binary structures
from the leaves.
2016-12-23 14:36:11 -08:00
JoelKatz
22a375a5f4 Add support for tick sizes (RIPD-1363):
Add an amendment to allow gateways to set a "tick size"
for assets they issue. There are no changes unless the
amendment is enabled (since the tick size option cannot
be set).

With the amendment enabled:

AccountSet transactions may set a "TickSize" parameter.
Legal values are 0 and 3-15 inclusive. Zero removes the
setting. 3-15 allow that many decimal digits of precision
in the pricing of offers for assets issued by this account.

For asset pairs with XRP, the tick size imposed, if any,
is the tick size of the issuer of the non-XRP asset. For
asset pairs without XRP, the tick size imposed, if any,
is the smaller of the two issuer's configured tick sizes.

The tick size is imposed by rounding the offer quality
down to nearest tick and recomputing the non-critical
side of the offer. For a buy, the amount offered is
rounded down. For a sell, the amount charged is rounded up.

Gateways must enable a TickSize on their account for this
feature to benefit them.

The primary expected benefit is the elimination of bots
fighting over the tip of the order book. This means:

- Quicker price discovery as outpricing someone by a
  microscopic amount is made impossible. Currently
  bots can spend hours outbidding each other with no
  significant price movement.

- A reduction in offer creation and cancellation spam.

- More offers left on the books as priority means
  something when you can't outbid by a microscopic amount.
2016-12-23 14:36:11 -08:00
Scott Schurr
8ab2236cdd Convert DeadlineTimer to chrono (RIPD-1189) 2016-12-23 14:36:10 -08:00
Mike Ellery
28ae522ea2 Migrate freeze-test to cpp (RIPD-1154):
Port all active tests in freeze-test.coffee to c++.
2016-12-23 14:36:10 -08:00
Mike Ellery
c0cf7bd3c1 Port discrepancy-test.coffee to c++ (RIPD-1352):
Add jtx unit test that verifies a transaction net balance against the
reported fee.
2016-12-23 14:36:10 -08:00
Mike Ellery
fd7a2835e4 Migrate path tests to cpp (RIPD-1155):
Implement the existing declarative-path-test in jtx framework.
2016-12-23 14:36:10 -08:00
Mike Ellery
8d83aa5c07 Add server/connection tests (RIPD-1336):
Migrate tests in uniport-test.js to cpp/jtx. Handle exceptions in
WSClient and JSONRPClient constructors. Use shorter timeout
for HTTP and WS Peers when client is localhost. Add missing call to
start_timer in HTTP Peer. Add incomplete WS Upgrade request test
to prove that server timeout is working.
2016-12-23 14:36:10 -08:00
Howard Hinnant
2fd0540ed4 Recognize ripplerpc 2.0 requests and respond in kind:
* Force jtx to request/receive the 2.0 API
* Force the JSON and WebSocket tests to use 2.0 API
*  This specifically allows the Websocket to create 2.0 json/ripple
   and get back a 2.0 response.
* Add test for malformed json2
* Add check for parse failure
* Add check for params to be in array form.
* Correct type-o discovered in tests due to stricter checking.
* Add API version to the WSClient & JSONRPCClient test
* Update source.dox with more headers
2016-12-23 14:36:10 -08:00
Mike Ellery
b712125bc0 Add TrustAndBalance Tests (RIPD-1153):
Migrate tests in send-test.js to cpp/jtx.
2016-11-18 12:17:29 -08:00
Nik Bougalis
d69b16895c Conditional Suspended Payments (RIPD-1140):
A conditional suspended payment is a suspended payment where
completion of the payment is contingent upon the fulfillment
of a condition defined by the sender during creation of the
suspended payment.

This commit also introduces the "CryptoConditions" amendment
which controls whether cryptoconditions will be supported
in suspended payments. The existing "SusPay" amendment can
be used to enable suspended payments without enabling the
cryptoconditions code.
2016-11-18 12:17:28 -08:00
Nik Bougalis
d198b439fd Cryptoconditions: RSA-SHA-256 (RIPD-1213) 2016-11-18 12:17:27 -08:00
Nik Bougalis
83aa5517c0 Cryptoconditions: PREFIX-SHA-256 (RIPD-1211) 2016-11-18 12:17:26 -08:00
Nik Bougalis
5711e7caa9 Cryptoconditions: ED25519 (RIPD-1214) 2016-11-15 21:42:31 -08:00
Nik Bougalis
8d0c93691d Cryptoconditions: PREIMAGE-SHA-256 (RIPD-1210) 2016-11-15 21:41:48 -08:00
Miguel Portilla
4b261b12a4 Prevent misuse of JobQueue header files:
* Move `JobCoro` to `JobQueue::Coro` and remove separate JobCoro.h
2016-11-09 13:58:04 -08:00
Mike Ellery
7e39d645b9 Add Ticket Tests (RIPD-1328):
Migrate ticket-test.js to cpp. Add coverage for Change/Cancel ticket
handlers.
2016-11-09 13:58:03 -08:00
Mike Ellery
35504f1723 Add Ledger RPC Tests (RIPD-1297):
Migrate tests in remote-test.js to cpp/jtx. Add coverage for
ledger_entry RPC request.
2016-11-09 13:58:03 -08:00
Brad Chase
61d9dda4e0 Expand unit test coverage of SetTrust:
* Unit test malformed/tem responses
* Update free trust line test to cover the case where creation is actually adding the opposite trust direction to an existing account lines ledger entry
* Add unit tests for setting and removing quality on trust lines.
2016-11-09 13:58:03 -08:00
Miguel Portilla
bf642404c7 Use ws2 as default in unit tests 2016-10-27 12:43:14 -04:00
Brad Chase
b8cae2dfaf Unit test for free trust lines (RIPD-911) 2016-10-27 12:36:01 -04:00
Mike Ellery
cfcd618aa6 Add Offer tests (RIPD-938):
Migrate tests in offer-test.js to cpp/jtx. Minimally reformat existing
test code. Augment self-cross test to include partner account as well as bridged and
direct crossing.
2016-10-27 12:30:54 -04:00
Miguel Portilla
19258cf980 Remove application dependency from SyncFilters 2016-10-27 12:19:26 -04:00
Nik Bougalis
027b289c91 Remove an unused argument from ripple::verify 2016-10-17 15:28:21 -04:00
wilsonianb
b55edfa8f0 Sign manifest with ephemeral and master keys (RIPD-1083) 2016-10-17 15:28:12 -04:00
Nik Bougalis
6e9c15af92 Correctly parse multi-buffer JSON messages (RIPD-1306):
When attempting to parse a BufferSequence as a JSON object,
if the sequence contained more than buffer, the JSON parser
would incorrectly attempt to decode each buffer as a separate
JSON object, instead of one complete object.
2016-10-01 19:10:16 -07:00
Edward Hennis
0ddeb29c35 Add regression test for multi-buffer JSON message parsing (RIPD-1306) 2016-10-01 19:10:06 -07:00
Nik Bougalis
4b0d8b630c Improve Buffer and Slice:
* Make Buffer constructible from a Slice
* Fix self-move-assignment in Buffer
* Add unit tests
2016-09-29 16:28:37 -07:00
Howard Hinnant
b421559a47 Prepare for boost 1.62
These changes are compatible with previous boost releases.
2016-09-29 19:24:49 -04:00
Mike Ellery
05e7373086 Add book_offers RPC tests (RIPD-1283):
Migrate orderbook-test.js to cpp tests. Provide
coverage for error conditions in book_offers
RPC method.
2016-09-29 19:24:49 -04:00
seelabs
bb0b97f46b Fix unfunded offer not removed (RIPD-1298):
If the mantissas of two non-native amounts differ by less than 10, then
subtracting them leaves a result of zero. This can cause situations
where `a>b`, yet `a-b == 0`.

One consequence of this is unfunded offers were incorrectly left in
order books. The code would check if the offer would be
consumed (`amount in offer > amount needed`), assume it wouldn't be,
yet when `amount needed` was subtracted from `amount in offer` the
result was zero and the offer was unfunded. This unfunded offer
incorrectly remained on the order book.

This patch fixes this bug.
2016-09-29 19:24:49 -04:00
Vinnie Falco
3b639afac2 Integrate NuDB 2016-09-29 19:24:15 -04:00
Miguel Portilla
e6ed9ae4d8 Add Status page:
* Make HTTP(S) requests on websocket ports reply with Status page
* Fix isWebsocketUpgrade to compare case insensitive
* Make websocket upgrades with no websocket protocols configured report error
* Create unit test for unauthorized requests and the status page
2016-09-21 09:03:55 -07:00
Will
5b09dc731f Add jtx cpp test for noripple flag (RIPD-1259):
- Set and clear noripple flag
 - DefaultRipple on account
 - Set noripple on trustline with -ve balance
 - Pairwise noripple
2016-09-12 09:23:30 -07:00
Mike Ellery
51d7e7336f Improve multisign tests (RIPD-1273):
* Migrate some error case tests from js into jTx.
* Create test that invokes sign_for and submit_multisigned rpc methods.
2016-09-12 09:23:29 -07:00
Mike Ellery
ad9be4dbf6 Add LedgerClosed test (RIPD-1272)
Migrate the logic in monitor-test.js to a new jtx test
that covers the ledger_closed RPC method.
2016-09-11 14:01:36 -07:00
Brad Chase
8f97889176 Don't include unit test sources in code coverage (RIPD-1132):
Most files containing unit test code are moved to
src/test. JTx and the test client code are not yet moved.
2016-09-02 15:26:16 -04:00