aboutsummaryrefslogtreecommitdiffstats
path: root/p2p/peer_test.go
diff options
context:
space:
mode:
authorJeffrey Wilcke <obscuren@users.noreply.github.com>2014-12-15 17:22:35 +0800
committerJeffrey Wilcke <obscuren@users.noreply.github.com>2014-12-15 17:22:35 +0800
commit15e46b97b46864f7f72b932c0fe586ea6d223406 (patch)
tree83b08df50a2978cf518aae1bf70738ecd82ed4be /p2p/peer_test.go
parentccb4fc8d0370afd85ea9ffca635dae7e792dd66d (diff)
parentda900f94358a9b293a286066b0922a6f7b5d571c (diff)
downloaddexon-15e46b97b46864f7f72b932c0fe586ea6d223406.tar
dexon-15e46b97b46864f7f72b932c0fe586ea6d223406.tar.gz
dexon-15e46b97b46864f7f72b932c0fe586ea6d223406.tar.bz2
dexon-15e46b97b46864f7f72b932c0fe586ea6d223406.tar.lz
dexon-15e46b97b46864f7f72b932c0fe586ea6d223406.tar.xz
dexon-15e46b97b46864f7f72b932c0fe586ea6d223406.tar.zst
dexon-15e46b97b46864f7f72b932c0fe586ea6d223406.zip
Merge pull request #204 from fjl/fix-p2p-disconnect
p2p: fix decoding of disconnect reason
Diffstat (limited to 'p2p/peer_test.go')
-rw-r--r--p2p/peer_test.go56
1 files changed, 56 insertions, 0 deletions
diff --git a/p2p/peer_test.go b/p2p/peer_test.go
index d9640292f..f7759786e 100644
--- a/p2p/peer_test.go
+++ b/p2p/peer_test.go
@@ -4,6 +4,7 @@ import (
"bufio"
"bytes"
"encoding/hex"
+ "io"
"io/ioutil"
"net"
"reflect"
@@ -237,3 +238,58 @@ func TestNewPeer(t *testing.T) {
// Should not hang.
p.Disconnect(DiscAlreadyConnected)
}
+
+func TestEOFSignal(t *testing.T) {
+ rb := make([]byte, 10)
+
+ // empty reader
+ eof := make(chan struct{}, 1)
+ sig := &eofSignal{new(bytes.Buffer), 0, eof}
+ if n, err := sig.Read(rb); n != 0 || err != io.EOF {
+ t.Errorf("Read returned unexpected values: (%v, %v)", n, err)
+ }
+ select {
+ case <-eof:
+ default:
+ t.Error("EOF chan not signaled")
+ }
+
+ // count before error
+ eof = make(chan struct{}, 1)
+ sig = &eofSignal{bytes.NewBufferString("aaaaaaaa"), 4, eof}
+ if n, err := sig.Read(rb); n != 8 || err != nil {
+ t.Errorf("Read returned unexpected values: (%v, %v)", n, err)
+ }
+ select {
+ case <-eof:
+ default:
+ t.Error("EOF chan not signaled")
+ }
+
+ // error before count
+ eof = make(chan struct{}, 1)
+ sig = &eofSignal{bytes.NewBufferString("aaaa"), 999, eof}
+ if n, err := sig.Read(rb); n != 4 || err != nil {
+ t.Errorf("Read returned unexpected values: (%v, %v)", n, err)
+ }
+ if n, err := sig.Read(rb); n != 0 || err != io.EOF {
+ t.Errorf("Read returned unexpected values: (%v, %v)", n, err)
+ }
+ select {
+ case <-eof:
+ default:
+ t.Error("EOF chan not signaled")
+ }
+
+ // no signal if neither occurs
+ eof = make(chan struct{}, 1)
+ sig = &eofSignal{bytes.NewBufferString("aaaaaaaaaaaaaaaaaaaaa"), 999, eof}
+ if n, err := sig.Read(rb); n != 10 || err != nil {
+ t.Errorf("Read returned unexpected values: (%v, %v)", n, err)
+ }
+ select {
+ case <-eof:
+ t.Error("unexpected EOF signal")
+ default:
+ }
+}