Brian Warner
53ad951c11
DilatedConnectionProtocol/Role: prettier repr
2019-02-10 16:57:16 -08:00
Brian Warner
ebc63e52e0
add description to inbound connections
2019-02-10 16:52:17 -08:00
Brian Warner
74c416517f
scids are four-byte strings, not integers
...
be consistent about it
2019-02-10 16:23:20 -08:00
Brian Warner
2ec7b8e662
update_ack_watermark takes seqnum, not record
2019-02-10 16:22:30 -08:00
Brian Warner
bf25dc68cf
connector: use disconnect(), not loseConnection()
2019-02-10 15:57:55 -08:00
Brian Warner
0c9d2c927a
fix hashability of dilation objects
2019-02-10 15:57:39 -08:00
Brian Warner
e4264971d7
add dilate/test_full, still failing
2019-02-10 11:51:54 -08:00
Brian Warner
a2a149946b
test_connect: skip integration test when Noise is unavailable
2019-02-10 11:51:54 -08:00
Brian Warner
7f03adda3a
dilate.test_connect: basic integration test
...
This mocks out the mailbox connection, and makes sure that endpoints are
constructed.
2019-02-10 11:51:54 -08:00
Brian Warner
059338a257
Add Dilator.stop(), fix delivery of connection made/lost messages
...
Dilator.stop() now shuts everything down, and returns a Deferred when it all
stops moving. This needed some Manager state machine changes (to notify
Dilator when it enters the STOPPED state). This also revealed problems in the
delivery of connector_connection_made() (which was misnamed) and
connector_connection_lost() (which wasn't being called at all).
2019-02-10 11:51:54 -08:00
Brian Warner
39fed50071
add no_listen=False to Manager and Dilator
...
This is only used by tests so far (and will simplify the integration test
that hasn't landed yet), but is not yet wired up to Boss, so there's no way
for applications to enable it yet.
2019-02-10 11:51:54 -08:00
Brian Warner
64618bcb64
manager: tidy up repr, leave out keys and some other fields
2019-02-10 11:51:54 -08:00
Brian Warner
b538dd6758
dilation.outbound: registerProducer goes on transport, not Protocol
2019-02-10 11:51:54 -08:00
Brian Warner
53ffbe1632
fix Noise handshake ordering
...
I mistakenly believed that Noise handshakes are simultaneous. In fact, the
Responder waits until it sees the Initiator's handshake before sending its
own. I had to update the Connection state machines to work this way (the
Record machine now has set_role_leader and set_role_follower), and update the
tests to match.
For debugging I added a `_role` property to Record, but it should probably be
removed.
2019-02-10 11:51:54 -08:00
Brian Warner
d1ff97f988
make some dilation objects hashable
...
necessary to include them in a set like _pending_connectors
2019-02-10 11:51:54 -08:00
Brian Warner
be2dc01a94
wormhole.py: add debug switch to enable dilation (for tests)
2019-02-10 11:47:28 -08:00
Brian Warner
6bd7e85a53
test_transit sometimes fails with EADDRINUSE on travis
2019-02-10 11:22:04 -08:00
Brian Warner
baf5ce4ead
setup.py: hush deprecation warning
...
open(mode=U) is deprecated in py3, remove it
2019-02-10 11:18:48 -08:00
Brian Warner
66e227ee61
Merge branch 'tox-nodilate'
2019-02-10 11:17:15 -08:00
Brian Warner
41129faca5
travis: run flake8less, not the full flake8
2019-02-10 11:10:39 -08:00
Brian Warner
31de77a875
travis: py37 should no longer require sudo
...
(once upon a time, sudo:true was necessary to get onto a GCE instance, which
has xenail which has py37)
2019-02-10 11:08:00 -08:00
Brian Warner
b65678e5d2
travis: mark FLAKE8 build with an env
2019-02-10 11:07:43 -08:00
Brian Warner
42d849fe52
tox/travis: improve nodilate testing
...
'tox' run locally should only exercise sensible combinations (py27-nodilate,
py34-nodilate, py35/36/37 with dilate). Travis will run exactly these by
using a different script for each version of python. Also added a separate
flake8 builder (which uses a small subset of warnings, as the default set is
currently much too noisy).
2019-02-10 11:02:15 -08:00
Brian Warner
ddba0fc840
Merge branch 'dilate-5'
...
This adds (but does not enable/expose) the low-level code for the new
Dilation protocol (refs #312 ). The spec and docs are done, the unit tests
pass (with full branch coverage).
The next step is to write some higher-level integration tests, which use a
fake/short-circuited mailbox connection (Manager.send) but real localhost TCP
sockets.
Then we need to figure out backwards compatibility with non-dilation-capable
versions. I've got a table in my notes, I'll add it to the ticket.
2018-12-24 23:23:16 -05:00
Brian Warner
803aa07f35
travis: don't test dilation on py3.4 either
2018-12-24 23:00:00 -05:00
Brian Warner
942a04952f
try to fix travis again
...
add a new tox target "no-dilate" to use on py2.7, and use "coverage"
everywhere else
2018-12-24 22:54:01 -05:00
Brian Warner
061ff98383
fix travis
...
don't run all of tox, just a single environment that uses the default
python (selected by travis)
2018-12-24 14:59:13 -05:00
Brian Warner
937a7d93e8
tox: only run coverage on py3.7
...
tox/coverage doesn't know to avoid the "dilate" extra, so it fails on py2.7
and py3.4
2018-12-24 14:49:25 -05:00
Brian Warner
b01f48ad88
tox: test dilation on py3, but not on py2
2018-12-24 14:37:19 -05:00
Brian Warner
4083beeb6c
wormhole.py: disable dilate() API until ready
...
more importantly, turn off the "we can do Dilation" advertisement for now,
since we really can't
2018-12-24 14:34:02 -05:00
Brian Warner
69bab3d814
docs/api: minor fixes
2018-12-24 14:33:41 -05:00
Brian Warner
b0db8add2a
travis: stop allowing failures on py2.7 and py3.7
...
py2.7 now works
py3.7 is now supported by travis
2018-12-24 00:19:58 -05:00
Brian Warner
96f52b931d
drop support for py33
...
current pkg_resources requires py3.4 or newer (or py27)
txtorcon appears to work on py3.4 again, so remove it from allow_failures
2018-12-24 00:16:36 -05:00
Brian Warner
29c269ac8d
get tests to work on py2.7
...
only install 'noiseprotocol' (which is necessary for dilation to work) if the
"dilate" feature is requested (e.g. `pip install magic-wormhole[dilate]`)
2018-12-24 00:07:06 -05:00
Brian Warner
a458fe9ab9
finish test coverage/fixes for connector.py
2018-12-23 15:23:27 -05:00
Brian Warner
6ad6f8f40f
test and fix half of connector.py
...
still to do:
* relay delays
* connection race
* cancellation of losing connections
* shutdown of all connections when abandoned
2018-12-23 15:23:27 -05:00
Brian Warner
e7cb1df785
factor out HKDF
2018-12-23 15:23:27 -05:00
Brian Warner
b4c90b40a2
move parse_hint/encode_hint into _hints.py, add tests
2018-12-23 15:23:27 -05:00
Brian Warner
d64c94a1dc
test_hints: finish coverage of hints.py
2018-12-23 15:23:27 -05:00
Brian Warner
1bb5634d0e
factor Hints tests out of test_transit into a new file
2018-12-23 15:23:27 -05:00
Brian Warner
7720312c8f
factor out parse_tcp_v1_hint
2018-12-23 15:23:27 -05:00
Brian Warner
2f4e4d3031
factor out describe_hint_obj and endpoint_from_hint_obj
2018-12-23 15:23:27 -05:00
Brian Warner
bd1a199f3e
start factoring Hints out to separate file
...
shared between old transit.py and new _dilation/connector.py
2018-12-23 15:23:27 -05:00
Brian Warner
3b7c9831f6
appease flake8 somewhat
2018-12-23 15:23:27 -05:00
Brian Warner
40dadfeb71
finish fixing/testing manager.py
2018-12-23 15:23:27 -05:00
Brian Warner
e55787c693
get most of Manager working and tested
...
still need to test the subchannel interfaces, and ping/pong/kcm
2018-12-23 15:23:27 -05:00
Brian Warner
e19c7d1281
typos/cleanups in docs/dilation-protocol.md
2018-12-23 15:23:27 -05:00
Brian Warner
dd8bff30f2
remove old-follower.py, flake8 still sees it
...
and doesn't like what it sees
2018-12-23 15:23:27 -05:00
Brian Warner
78358358bc
manager: hush flake8
2018-12-23 15:23:27 -05:00
Brian Warner
7084cbcb6f
test_manager: fix
2018-12-23 15:23:27 -05:00