Commit Graph

935 Commits

Author SHA1 Message Date
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
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
Brian Warner
a4234cdecf test_machines: fix for change to got_wormhole_versions 2018-12-23 15:23:27 -05:00
Brian Warner
8a1a8b1f9c manager: factor out make_side for testing and override 2018-12-23 15:23:27 -05:00
Brian Warner
7e168b819e manager: clean up versions, merge state machines 2018-12-23 15:23:27 -05:00
Brian Warner
d4a551c6b8 boss: remove sides from call to D.got_wormhole_versions() 2018-12-23 15:23:27 -05:00
Brian Warner
74e5d9948b move old-follower.py out of src, kept for temporary reference 2018-12-23 15:23:27 -05:00
Brian Warner
a594a85427 Revert "Boss/Receive: add 'side' to got_message"
This reverts commit 1fece5701c9de5e470526d2e7e9cfd7b461977e0.
2018-12-23 15:23:27 -05:00
Brian Warner
d65fcaa1a6 more flake8 fixes 2018-12-23 15:22:57 -05:00
Brian Warner
5f61531445 more flake8 fixes, in wormhole.py and _interfaces.py 2018-12-23 15:22:57 -05:00
Brian Warner
bf0c93eddc more flake8 fixes 2018-12-23 15:22:57 -05:00
Brian Warner
05900bd08b fix some flake8 complaints 2018-12-23 15:22:57 -05:00
Brian Warner
34686a346a add dilation code
(this compresses several months of false starts and rearchitecting)
2018-12-23 15:21:08 -05:00
Brian Warner
cd6ae6390f _rendezvous: add note to use EventualQueue 2018-12-23 15:20:25 -05:00
Brian Warner
6cfabba31a add reactor/cooperator to Wormhole and Boss calls 2018-12-23 15:20:25 -05:00
Brian Warner
a693b1fc48 Boss/Receive: add 'side' to got_message
this will be used later by Dilation
2018-12-23 15:20:25 -05:00
Brian Warner
e260369be1 __main__.py: stop breaking automat-visualize 2018-12-23 15:20:24 -05:00
Brian Warner
eb7c04e366 observer.py: add EmptyableSet 2018-12-23 15:18:38 -05:00
Brian Warner
e6b4ccb565 Merge branch 'pr318' 2018-12-09 14:28:56 -08:00
Edward Betts
010d1843c0 Correct spelling mistakes 2018-11-23 07:38:21 +00:00
Mario Rodas
504ddb0d91 Add inlineCallbacks decorator to test_wormholes testcase 2018-11-19 23:38:29 -05:00
Brian Warner
4e97bb041a fix/hush some flake8 warnings
test_ipaddrs.py had an invalid regexp, caught by the latest version of flake8

The new flake8 complains about both W503 (line break inside a conditional
before a binary operator) and W504 (line break *after* the operator). I think
break-before is the new preferred style, but for now I'm just going to ignore
them both and leave the code alone.
2018-11-13 10:21:41 -08:00
Brian Warner
74da87bec2 change __main__.py to use relative imports
This should fix `python -m wormhole` on py2. Closes #315.
2018-11-13 09:59:36 -08:00
Brian Warner
6d4eb8e69b add test_keys to nail down symmetric encryption format
This establishes what our mailbox protocol does to encrypt the
individual (post-SPAKE2) messages, which combines NaCl SecretBox and our own
key-derivation choices. I'd like to move off of NaCl/libsodium and I think
some RFC7539-implementing library might be compatible, and with these test
vectors I can check that. I also want to copy these tests into the Rust port.
2018-08-21 10:12:23 -07:00
Brian Warner
4531513602 cmd_send/receive: work around python3.7.0 bug
See https://bugs.python.org/issue26175 . tempfile.SpooledTemporaryFile
doesn't fully implement the IOBase abstract class, which breaks because
py3.7.0's new zipfile module tries to delegate .seekable down to the wrapped
file and causes an AttributeError.

refs #306
2018-07-01 14:27:32 -07:00
Brian Warner
41fabd39ba test_machines: remove no-longer relevant comment
The flake8 config excludes E741, which would complain about using
'l' (lower-case ell) as a variable name. We use this for the Lister object in
one test that uses single-character variable names for all the machines ('b'
for Boss, 'm' for Mailbox, etc). That comment was added before excluding
E741. If we ever restore that warning, we might want to rename the variable.
2018-06-16 16:33:27 -07:00
Brian Warner
fc177726e1 cli.py: move timing check back to top
We care about how long it takes to import all the wormhole-specific things,
to investigate user-perceived latency from the time the command is launched
to the time they can actually interact with it. So we need to record
`time.time()` before doing the rest of the imports, even though pep8 says all
imports should be done before any non-importing statements.
2018-06-16 16:27:11 -07:00
Brian Warner
1444e32746 extreme measures to appease last pep8 complaint
a singly-parenthesized 'if' condition will always line up with the 'then'
body, won't it
2018-06-16 16:22:40 -07:00
Brian Warner
dada79d85c fix remaining pep8 complaints 2018-06-16 16:19:38 -07:00
Brian Warner
b5b8cd1260 Merge branch 'master' into pr296 2018-06-16 16:09:38 -07:00
Thomas Waldmann
a333a02366 use pyinstaller to build wormhole fat/standalone binary
tested with/on:
- ubuntu linux 18.04 amd64
- pyinstaller 3.3.1 (pip install pyinstaller)
- python 3.6.5

There is a good chance it also works on FreeBSD, maybe also on macOS.

The change in __main__.py was required because otherwise it complains about
__main__ not being a package when trying the dot-relative import.
2018-06-02 18:05:45 +02:00
Vasudev Kamath
12dcd6a184 Make code pep-8 compliant 2018-04-21 13:00:08 +05:30
Brian Warner
5c84f6a373 wormhole: slightly different way to unicode-encode the version
(this is somewhat more in line with how this distinction is made elsewhere in
the code)
2018-04-03 17:10:46 -07:00
Brian Warner
0dd3a12546 cosmetic changes, remove debug print 2018-04-03 17:05:33 -07:00
Baime
1197e5fb6d fix py 3.x versioneer issue 2018-03-23 18:19:31 +01:00
Baime
e77a2d605b bind passes tuple, fixed implementation issues 2018-03-23 17:33:48 +01:00
Baeumla
82dc4a4e2e py 2.7 3.x fix 2018-03-09 10:20:03 +01:00
Baeumla
0322d341e8 py 2.7 fix 2018-03-09 09:31:59 +01:00
Baeumla
4f8aa5a69e report clinet version on bind 2018-03-08 11:54:27 +01:00
Brian Warner
be47f53e7c wormhole: switch to observers for all APIs
Tests can pass an EventualQueue into wormhole.create(), to override the
default. This lets the tests flush the queue without using a haphazard
real-time delay.

closes #23

(in fact, we added multiple-Deferreds-per-API a while ago, but this does it
in a much cleaner fashion, and with the safety of an eventual-send)
2018-02-26 17:50:40 -08:00
Brian Warner
caabb3510c add OneShotObserver and SequenceObserver, with tests
This factors out the various "give me a Deferred for an value that may or may
not eventually be successfully generated" routines in _DeferredWormhole. It
uses an eventual-send to fire the Deferreds to avoid plan-coordination
hazards when the attached callbacks then call back into the Wormhole object
before the rest of the state transition has finished.
2018-02-26 17:50:40 -08:00
Brian Warner
43965d5289 add eventual-send queue
We defer starting a new timer until we've completely emptied the queue, since
we know we'll get to any new events added inside one of our callbacks. The
old design in Foolscap (which copied the list, cleared the original, then
fired everything in the copy) didn't look at these new events. OTOH, this
pop(0)-until-empty approach makes it easier to get into an infinite loop (any
callback which queues a new callback will get priority over anything else).
But the code is simpler.
2018-02-26 17:50:40 -08:00
Brian Warner
1c21119a73 add test_ipaddrs, adapted from tahoe's test_iputil 2018-02-22 21:32:44 -08:00
Brian Warner
9cb763e83a add "pragma: no cover" to set_trace() and debug code
we've got some tests to exercise this, so it shouldn't bitrot completely, but
there are some branches-not-taken warnings that I think are spurious
2018-02-22 09:42:43 -08:00
Brian Warner
e7d0dbbb88 oops, typo 2018-02-21 01:57:07 -08:00