Franck Royer
f2a25ee49b
Move definitions out of lib.rs
2021-01-22 09:00:46 +11:00
Daniel Karzel
33a9057b1f
Move run_until is_target_state comparison functions into testutils
2021-01-21 23:39:55 +11:00
Daniel Karzel
3593f5323a
Bob saves lock proof after received so he can resume swap
2021-01-21 23:35:54 +11:00
Daniel Karzel
433704e48c
Top to bottom pub mod
then mod
then pub use
then use
(incl. use crate
and use self
)
2021-01-21 19:10:51 +11:00
Daniel Karzel
6a75c840b5
Fix Alice redeem scenario
...
- Properly check the timelocks before trying to redeem
- Distinguish different failure scenarios and reactions to it.
- if we fail to construct the redeem transaction: wait for cancel.
- if we fail to publish the redeem transaction: wait for cancel but let the user know that restarting the application will result in retrying to publish the tx.
- if we succeed to publish the tx but then fail when waiting for finality, print error to the user (secreat already leaked, the user has to check manually if the tx was included)
2021-01-21 12:13:02 +11:00
Daniel Karzel
8a7d746e96
Wait for Bob's refund finality
...
For Alice we ensure to wait for redeem/punish finality, so it should be the same for Bob.
2021-01-21 10:36:08 +11:00
Franck Royer
94045b9a69
Use builder in tests
2021-01-20 21:42:35 +11:00
Franck Royer
c11042ff0d
Use builder
terminology instead of factory
...
This is not really a factory as a factory design pattern is about
producing several instances.
In the current usage, we are only interested in one swap instance. Once
the swap instance is created, the factory becomes useless. Hence, it is
more of a builder pattern.
2021-01-20 14:56:06 +11:00
Franck Royer
9148af2dbe
bob::SwapFactory
should be consumed once a swap is returned
2021-01-20 14:51:37 +11:00
Franck Royer
b21dc03ed0
alice::SwapFactory
should be consumed once a swap is returned
2021-01-20 14:51:36 +11:00
Franck Royer
9e3ef7ea24
Remove StartingBalances
from release code
2021-01-20 14:51:35 +11:00
Franck Royer
181999e04f
Remove unnecessary alice
qualifiers in alice::SwapFactor
2021-01-20 14:51:35 +11:00
Franck Royer
f0e6e45d56
Remove unecessary bob
qualifier
2021-01-20 14:51:34 +11:00
Franck Royer
e26629b593
Remove unecessary fields from bob::SwapFactory
2021-01-20 14:51:34 +11:00
Franck Royer
96b1b18037
Keep terminology consistent
...
Also avoid redundant qualifiers.
2021-01-20 14:51:33 +11:00
Daniel Karzel
37f619dbfc
Move StartingBalances into protocol module
2021-01-20 13:29:46 +11:00
Daniel Karzel
acfd43ee79
Rename Test to TestContext and argument to ctx
2021-01-20 10:40:40 +11:00
Daniel Karzel
82974412b2
Remove roles from SwapFactory name as implied by module and cleanup
2021-01-19 09:43:50 +11:00
Daniel Karzel
75f89f3b25
Use Bob swap factory in production
2021-01-19 09:16:05 +11:00
Daniel Karzel
3398ef8236
Use Alice swap factory in production
2021-01-19 09:16:05 +11:00
Daniel Karzel
67e925fe1f
Refactor Bob's peer-id and identity to be handled on the outside
...
Doing this in the behaviour is a weird indirection that is not needed.
2021-01-19 09:16:04 +11:00
Daniel Karzel
0c19af9090
Refactor Alice's peer-id and identity to be handled on the outside
...
Doing this in the behaviour is a weird indirection that is not needed.
2021-01-19 09:16:04 +11:00
Daniel Karzel
8bf467b550
Make the factory code usable in production
...
- Introduce Test abstraction instead of tow harnesses, move test specific data into Test
- Change the abstraction from actors to swap, because we are creating swaps, not actors
- rename actor::swap to run, because we are running a swap
2021-01-19 09:16:04 +11:00
Franck Royer
9a823dca4c
Do not introduced State6
2021-01-18 15:27:38 +11:00
Daniel Karzel
8615aaed6e
Make lock-tx id available in redeem/punish state to be able to assert exact fees
2021-01-18 14:45:47 +11:00
Daniel Karzel
317b251302
Re-arrange order of structs/functions in testutils
...
move important things to the top and harmonize structure for alice and bob.
2021-01-18 14:10:17 +11:00
Daniel Karzel
7832ee94f3
Remove unused code and only expose necessary functionality
2021-01-18 14:10:17 +11:00
Daniel Karzel
8ef8240771
Refactor refund test
2021-01-18 14:10:16 +11:00
Daniel Karzel
55024572ae
Refactor punish test and punish assertions
2021-01-18 14:10:16 +11:00
Daniel Karzel
73a2841ec5
Refactor happy path bob restart tests
2021-01-18 14:10:00 +11:00
Daniel Karzel
8a2eb07928
Harmonize names and structure
...
Simple renames and structure changes, no logical changes.
2021-01-15 19:34:51 +11:00
Daniel Karzel
bede1c13dd
Refactor Bob's side (happy path + alice restart)
...
Refactor Bob's test setup in the same way as Alice's.
Introduce BobHarness that allows creating and restarting as well as asserting redeemed for Bob.
2021-01-15 19:29:26 +11:00
Daniel Karzel
59f9a1c286
Fix usage of StartingBalance in Alice and Bob
2021-01-15 19:03:11 +11:00
Daniel Karzel
87edec0d50
Rename Alice's factory to harness and include redeem assertions
...
This makes the redeem assertion reusable for all tests with a redeem scenario.
Since the factory was not a clean factory before and is now doing even more it was renamed to harness.
2021-01-15 18:46:14 +11:00
Daniel Karzel
152c8d7eba
Refactor Alice restart test by introducing factory for creating Alices
...
The factory keeps all static state of Alice to be able to simulate a restart.
2021-01-15 18:14:19 +11:00
rishflab
537d05e01e
Add reusable test function
...
We introduce a reusable test function to make it easier to add new tests and make our existing tests more readable.
2021-01-15 11:26:32 +11:00
rishflab
f5cfe014be
Fix imports
2021-01-15 10:13:39 +11:00
Daniel Karzel
664958939d
Create network::Seed from swap::Seed instead of abstracting over byte array
2021-01-11 12:03:29 +11:00
Daniel Karzel
f18d01dfaf
Deterministic peer id from seed for bob
2021-01-11 12:03:29 +11:00
Daniel Karzel
0a21040e08
Deterministic peer id from seed for alice
...
This includes the introduction of the --data-dir parameter instead of the --database.
Both the seed file and the database are stored in the data-dir, the database in sub-folder `database`.
2021-01-11 12:00:48 +11:00
rishflab
dcea54dbf1
Move protocol parent states into appropriate module
2021-01-08 12:34:36 +11:00
rishflab
c900d12593
Merge xmr_btc crate
...
Created network, storage and protocol modules. Organised
files into the modules where the belong.
xmr_btc crate moved into isolated modulein swap crate.
Remove the xmr_btc module and integrate into swap crate.
Consolidate message related code
Reorganise imports
Remove unused parent Message enum
Remove unused parent State enum
Remove unused dependencies from Cargo.toml
2021-01-08 12:34:33 +11:00
Daniel Karzel
487b880371
Cleanup unused config param that was accidentally introduced
2021-01-07 12:23:29 +11:00
Daniel Karzel
e031681369
Add minimum monero confirmations to config use it for Bob
2021-01-06 17:17:37 +11:00
Daniel Karzel
4d9559fc2e
Monero network settings and testnet
2021-01-04 20:30:47 +11:00
Franck Royer
e1e8533862
Embed state mod in database mod
...
The `Swap` struct is now database specific, no need to have a 20 lines
module.
2020-12-23 15:30:23 +11:00
Franck Royer
59708c57e6
Move Alice and Bob db states in separate modules
2020-12-23 15:26:08 +11:00
Franck Royer
b410de01df
Move state.rs under database module
...
The types in state are only used for the database
2020-12-23 15:20:24 +11:00
Franck Royer
8c7964bfee
Rename storage.rs to database.rs to reduce terminology variants
2020-12-23 15:17:27 +11:00
Franck Royer
4150e75488
Replace Try_From
state conversion with From
for Bob
2020-12-23 14:12:29 +11:00
Franck Royer
e541f7b83d
Replace TryFrom
with From
for Alice states
2020-12-23 14:12:29 +11:00
Franck Royer
a31db63e54
Improve state names and display
2020-12-23 14:12:29 +11:00
Franck Royer
f0736d0906
Remove Refund timelock and T0/T1/T2
...
There are no refund timelock, only a cancellation timelock and punish
timelock.
Refund can be done as soon as the cancellation transaction is published.
2020-12-23 14:12:26 +11:00
Franck Royer
405e377f79
Rename EncSign
to EncSig
...
`EncSig` means "encrypted signature", the item,
not be confused with "signing", the action
2020-12-23 13:41:55 +11:00
Franck Royer
297b15e3ce
Remove async block when it is not needed
2020-12-23 09:17:56 +11:00
Franck Royer
e079b84500
Ensure we wait for other party to complete
...
Before we check the balances.
2020-12-23 09:17:41 +11:00
Daniel Karzel
8296490764
Merge pull request #111 from comit-network/trace-xmr-btc
...
Fix tracing subscribe filter for xmr-btc`
2020-12-22 16:17:27 +11:00
Daniel Karzel
5f8b7f2624
Fix tracing subscribe filter for xmr-btc`
2020-12-22 14:11:55 +11:00
Franck Royer
49b84d84b9
Add address at the start
...
Do not carry peer id around as we currently only expect one peer.
2020-12-22 13:47:05 +11:00
Franck Royer
1e4b115556
Separate Bob restart tests
...
To stabilize CI
2020-12-21 12:19:04 +11:00
Franck Royer
e366d3a73b
Join all futures to avoid hanging tests
2020-12-21 12:17:40 +11:00
Franck Royer
1a4bd0e2b4
Bob refunds swap after restart that requires communication
...
As Bob is dialing Alice, we now ensure that we are connected to Alice
at each step that needs communication.
If we are not connected, we proceed with dialing.
In an attempt to improve libp2p usage, we also add known address of
Alice first and only use peer_id to dial.
This ensures that we use the expected peer id.
2020-12-21 08:31:21 +11:00
Franck Royer
d9ea7ab605
Only carry the tx_lock_id instead of the full state
2020-12-21 08:19:39 +11:00
Franck Royer
edfab58246
Scope alice db
...
To better match the restart scenario
2020-12-21 08:19:39 +11:00
Franck Royer
dc96b3d1e9
Stop running first event loop after Alice restarts
2020-12-21 08:19:39 +11:00
Franck Royer
638143a10d
Replace hard coded port by dynamic available one
...
Fixes #84 .
2020-12-21 08:19:31 +11:00
Franck Royer
2212758d17
Rename refund test as it is alice specific
2020-12-21 08:13:42 +11:00
bors[bot]
3db71997d3
Merge #99
...
99: Cleanup resume_from_database functions only used in tests r=da-kami a=da-kami
Follow up of https://github.com/comit-network/xmr-btc-swap/pull/88
Co-authored-by: Daniel Karzel <daniel@comit.network>
2020-12-18 03:01:18 +00:00
Daniel Karzel
773eebc723
Cleanup resume_from_database functions only used in tests
2020-12-18 10:50:32 +11:00
Daniel Karzel
43d05935e7
Remove tor module
2020-12-17 18:50:15 +11:00
rishflab
9d266fc648
Add balance assertions to restart tests
2020-12-15 13:11:16 +11:00
Franck Royer
5ba830f3bf
Replace swap recover
terminology with resume
2020-12-15 11:52:00 +11:00
Daniel Karzel
b83ab71669
Split up tests into separate files to overcome CI failure
2020-12-15 11:43:28 +11:00
Daniel Karzel
7cae6a9e4d
Add Bob restart test
2020-12-15 11:43:28 +11:00
Daniel Karzel
4ec2da29a0
Modularize Bob's test setup (separate init for state, event_loop)
2020-12-15 11:43:28 +11:00
Daniel Karzel
9a930af33f
Remove duplicated restart+refund test, move tests into separate files
2020-12-15 11:43:28 +11:00
Daniel Karzel
91d4d5da25
Cleanup swap execution to not return EventLoopHandle, refactor both_refund test
2020-12-15 11:43:28 +11:00
Daniel Karzel
bf39c34ada
Alice restart and refund test if restarted before encsig learner
2020-12-15 11:43:27 +11:00
Daniel Karzel
8c929564ef
Refactor container initialization
2020-12-15 11:43:27 +11:00
rishflab
143d8bc07d
Move message0 response handler out of NB
2020-12-15 11:43:24 +11:00
Daniel Karzel
4143394767
Add recovery function for Alice
2020-12-15 11:40:40 +11:00
rishflab
4b00141c29
Fix happy path test
2020-12-15 11:40:36 +11:00
Franck Royer
7092af457a
Introduced DB for Alice & Bob
2020-12-15 11:38:36 +11:00
Franck Royer
4ce8695dfc
Align with origin/database
2020-12-15 11:29:38 +11:00
Franck Royer
1a5b9f9fa9
Update tests after rebase
2020-12-15 10:19:45 +11:00
Franck Royer
caf903acda
wip: Add test for when bob restarts
2020-12-15 10:18:48 +11:00
Franck Royer
7e0a1ffe84
Remove generator for bob
2020-12-15 10:14:43 +11:00
Franck Royer
c6af5eb9ac
Introduce test where alice restarts before all communications are done
2020-12-15 10:10:43 +11:00
Franck Royer
3580b7ed2c
Add test where Alice restart after encsign is learned
2020-12-15 10:10:42 +11:00
Franck Royer
a22efaa7bc
Remove unneeded peer id argument
2020-12-15 10:10:42 +11:00
Franck Royer
9323f22009
Reorder calls
2020-12-15 10:10:42 +11:00
Franck Royer
a24d1a49b9
Remove unneeded as_ref_calls
2020-12-15 10:10:42 +11:00
Franck Royer
1c7cc7ee46
Scope futures' instanciation
2020-12-15 10:10:42 +11:00
Franck Royer
6226e5789f
Introduce test where alice restart mid-swap
2020-12-15 10:10:42 +11:00
Franck Royer
71a0832ef4
Add zero const to monero::Amount
2020-12-15 10:10:42 +11:00
Franck Royer
64b021daf4
Save Alice states in db
2020-12-15 10:10:40 +11:00
Franck Royer
11cea9ba69
Remove passing alice peer id
...
The usage of the peer id is incorrect as we do not even check it when
dialing. For now, we can ignore it.
We can then re-introduce it and use it properly at a later stage.
2020-12-15 09:15:38 +11:00
rishflab
082f4eb005
Use unused port in refund test
2020-12-11 17:36:28 +11:00
rishflab
7af4b6980a
Test Alice refunds after Bob refund
...
Reworked Alice XmrLocked state transition handler to handle the
scenario when Alice received the encsig but Bob refunds.
Previously Alice was trying to redeem after receiving the encsig
without checking if t1 had elapsed.
2020-12-11 17:05:34 +11:00
rishflab
773390886b
Test that Bob refunds if Alice fails to act
2020-12-11 16:59:29 +11:00
rishflab
f806ad7231
Assert balances after punish
2020-12-11 16:59:29 +11:00
bors[bot]
9fecf7008e
Merge #61
...
61: Prepare CLI for mainnet swap r=da-kami a=da-kami
Co-authored-by: Daniel Karzel <daniel@comit.network>
2020-12-11 03:48:01 +00:00
Daniel Karzel
03b8e5f52e
Upgrade CLI for mainnet test
2020-12-11 14:46:29 +11:00
Daniel Karzel
aad7a22f81
Utility function for initializing tracing for tests
2020-12-11 13:35:47 +11:00
Franck Royer
c0478d7191
Move expiries to config
...
So they can be different for mainnet and regtest
2020-12-10 14:43:17 +11:00
rishflab
9ba89194b0
Rename swarm driver to event loop
2020-12-10 13:29:53 +11:00
rishflab
f5d3d54b13
Prevent premature Bob t1 timeout
...
Bob was hitting the t1 timeout and entering cancel
instead of redeem. This was resolved by increasing
the timeouts to 50.
2020-12-10 13:29:53 +11:00
rishflab
27d1334726
Init Alice behaviour with state0
...
Previously state0 had to be set after creating Alice's behaviour.
With the event loop we no longer has access to the swarm so
set_state0() has to be called indirectly through a channel. This
means it is difficult to guarantee state0 is being set due to the
asynchronous nature of channels. This was solved by initialising
Alice with state0.
2020-12-10 13:29:53 +11:00
rishflab
3d8866f1a0
Convert event loop to use fused futures select
...
Co-authored-by: Daniel Karzel <daniel@comit.network>
2020-12-10 13:29:53 +11:00
rishflab
58da1df9dc
Create SwarmDriverHandle to resolve ownership issues
2020-12-10 11:24:08 +11:00
rishflab
6f7408ecce
Drive swarm in seperate async task
...
Previously the libp2p swarm had to be manually polled within the
protocol execution code to execute actions such as sending a
message. The swarm is now wrapped in SwarmDriver which polls the
swarm in a seperate task
2020-12-10 11:24:05 +11:00
rishflab
bd8e6e36e0
Fix monero blocktime config
2020-12-09 15:10:29 +11:00
Daniel Karzel
1a2857af29
Properly init tracing per test and reverse the filter to be exclusive
...
Tracing should be initialized by test and the `_guard` kept alive within the test.
Re-using this code in different tests does not really have any additional value.
Instead of specifying what messages we want to include, I went for a filter that excludes noise.
That way we get more useful logging.
2020-12-09 11:48:53 +11:00
rishflab
883a913f30
Remove nonsensical monero * monero multiplication
2020-12-08 16:12:00 +11:00
rishflab
627b1a9f00
Remove unnecessary execution restart
2020-12-07 14:03:50 +11:00
rishflab
8592ef5f79
Address PR feedback
...
Add context to logging statements. Use amount type for monero in tests. Remove stale
code and comments.
2020-12-07 13:55:13 +11:00
rishflab
b4ac69fa9c
Reduce stack size to prevent CI resource issues
2020-12-07 09:44:26 +11:00
rishflab
e4eed7b1a5
Change multiaddr for test runs
2020-12-05 14:06:08 +11:00
rishflab
c91e9652aa
Add alice punish test
...
Use reusable test init functions for happy path test
Extract tracing setup to reusable function
Move test initialization to seperate functions
Increase stack size in CI
Fix monero max finality time
Force Bob swarm polling to send message 2
Run Bob state to xmr_locked in punish test to force the sending of
message2. Previously Bob state was run until btc_locked. Although
this was the right thing to do, message2 was not being sent as the
swarm was not polled in btc_locked. Alice punish test passes.
Add info logging to executor
2020-12-04 17:23:37 +11:00
Franck Royer
765482b0aa
Implement wait_for_transaction_finality
2020-12-02 10:02:20 +11:00
rishflab
1c401aad31
Fix clippy warnings and formatting
2020-12-01 15:38:24 +11:00
rishflab
47c3ddc6f7
Fix happy path test
...
Poll bob swarm to send encsig after calling send message3. Comment
out unimplmented wait for transaction finality trait. Dial alice.
2020-12-01 14:30:02 +11:00
Franck Royer
9e13034e54
Extract execution details from driving loop
2020-11-30 15:13:20 +11:00
rishflab
24631d464d
Add test for recursive executor
2020-11-30 15:13:20 +11:00
Franck Royer
c4cd64d134
Implemented Alice transition from Started
to Negotiated
2020-11-27 09:34:35 +11:00
rishflab
ff7daf16f3
WIP: Test simplified swap execution
2020-11-27 09:21:21 +11:00
Lucas Soriano del Pino
483c819e17
Correctly re-export types from bitcoin and monero modules
2020-11-12 13:49:07 +11:00
Lucas Soriano del Pino
f5ff50157e
Some more fixes and comments after testing Alice's recovery
2020-11-12 13:49:07 +11:00
Lucas Soriano del Pino
28225f8643
Implement swap recover function for Alice
...
This introduces a lot of duplication between the binary and the
library, but it's okay because this module should only be a temporary
measure until we allow recovery to be handled by the original state
machine.
Also, fix a bug in `xmr_btc::alice::action_generator` caused by the
incorrect assumption that Alice's ability to punish Bob could be
determined before the cancel transaction hits the blockchain.
2020-11-12 13:49:07 +11:00
Lucas Soriano del Pino
33a111d879
Move Swap state out of storage
2020-11-12 13:49:07 +11:00
Lucas Soriano del Pino
ac2cfd7f65
Print swap history on --history flag
2020-11-12 13:49:07 +11:00
Lucas Soriano del Pino
823add218e
Remove temporary test tracing guards
2020-11-12 13:49:07 +11:00
Lucas Soriano del Pino
a26890001b
Fix swap e2e test
2020-11-12 13:49:07 +11:00
Philipp Hoenisch
981fcacc95
Make swap e2e test work with new monerod lib
2020-11-03 16:52:00 +11:00
rishflab
a44303f839
Add monerod to config
...
Fixed rebase issues
2020-11-03 16:08:46 +11:00
Lucas Soriano del Pino
92c7e8e84f
Run swap e2e test without tor feature
...
Not worth automatically testing both `tor` and `not(tor)`, it should
not make a difference.
2020-11-02 10:31:53 +11:00
Lucas Soriano del Pino
a37f43a1ba
wip: Provide enough funds to both parties
...
Also use cosntant backoff retry strategy as opposed to exponential
backoff. This is in case retrying several times quickly causes the
retry intervals to become large enough that the test is very slow
and/or the Bitcoin lock transaction expires.
The current problem occurs on the last message i.e. Bob sending
tx_redeem_encsig to Alice. The action is yielded for Bob to do it, but
Alice appears to never receive it (unconfirmed claim, requires more
logging).
2020-10-30 14:07:15 +11:00
Lucas Soriano del Pino
62c4501926
wip: Add xmr_btc tracing filter
2020-10-30 14:05:45 +11:00
Lucas Soriano del Pino
ae87c10cae
wip: fixed message0
2020-10-30 14:05:45 +11:00
Tobin C. Harding
b8ab4b4eee
wip: add env filter
2020-10-30 14:05:45 +11:00
Tobin C. Harding
3e2f0b74a2
Do not trace events meant for other NBs
2020-10-30 14:05:45 +11:00
Tobin C. Harding
c464555f5e
Enable trace output
2020-10-30 14:04:27 +11:00
Lucas Soriano del Pino
9384b0cf3c
[WIP] Swap app e2e test
2020-10-30 14:04:27 +11:00
Philipp Hoenisch
17b32fed90
Moving tor into swap
2020-10-23 12:47:52 +11:00