diff options
author | zelig <viktor.tron@gmail.com> | 2015-01-22 00:22:49 +0800 |
---|---|---|
committer | Felix Lange <fjl@twurst.com> | 2015-02-06 07:00:35 +0800 |
commit | faa069a126da29a246193713568634e5be6edd2d (patch) | |
tree | 2ee6f138ecc703f61df878678b787408b09e8b3f /p2p/crypto_test.go | |
parent | 20aade56c3057a221d7fa7152a4969d5f8f980d5 (diff) | |
download | go-tangerine-faa069a126da29a246193713568634e5be6edd2d.tar.gz go-tangerine-faa069a126da29a246193713568634e5be6edd2d.tar.zst go-tangerine-faa069a126da29a246193713568634e5be6edd2d.zip |
peer-level integration test for crypto handshake
- add const length params for handshake messages
- add length check to fail early
- add debug logs to help interop testing (!ABSOLUTELY SHOULD BE DELETED LATER)
- wrap connection read/writes in error check
- add cryptoReady channel in peer to signal when secure session setup is finished
- wait for cryptoReady or timeout in TestPeersHandshake
Diffstat (limited to 'p2p/crypto_test.go')
-rw-r--r-- | p2p/crypto_test.go | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/p2p/crypto_test.go b/p2p/crypto_test.go index 5fbdc61e3..47b16040a 100644 --- a/p2p/crypto_test.go +++ b/p2p/crypto_test.go @@ -8,6 +8,7 @@ import ( "fmt" "net" "testing" + "time" "github.com/ethereum/go-ethereum/crypto" "github.com/obscuren/ecies" @@ -184,7 +185,17 @@ func TestPeersHandshake(t *testing.T) { _, err := receiver.loop() errc1 <- err }() + ready := make(chan bool) + go func() { + <-initiator.cryptoReady + <-receiver.cryptoReady + close(ready) + }() + timeout := time.After(1 * time.Second) select { + case <-ready: + case <-timeout: + t.Errorf("crypto handshake hanging for too long") case err = <-errc0: t.Errorf("peer 0 quit with error: %v", err) case err = <-errc1: |