aboutsummaryrefslogtreecommitdiffstats
path: root/p2p/peer_test.go
blob: da62cc380e2065cb22df39a8176330f050e0e062 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package p2p

// "net"

// func TestPeer(t *testing.T) {
//  handlers := make(Handlers)
//  testProtocol := &TestProtocol{recv: make(chan testMsg)}
//  handlers["aaa"] = func(p *Peer) Protocol { return testProtocol }
//  handlers["ccc"] = func(p *Peer) Protocol { return testProtocol }
//  addr := &TestAddr{"test:30"}
//  conn := NewTestNetworkConnection(addr)
//  _, server := SetupTestServer(handlers)
//  server.Handshake()
//  peer := NewPeer(conn, addr, true, server)
//  // peer.Messenger().AddProtocols([]string{"aaa", "ccc"})
//  peer.Start()
//  defer peer.Stop()
//  time.Sleep(2 * time.Millisecond)
//  if len(conn.Out) != 1 {
//      t.Errorf("handshake not sent")
//  } else {
//      out := conn.Out[0]
//      packet := Packet(0, HandshakeMsg, P2PVersion, []byte(peer.server.identity.String()), []interface{}{peer.server.protocols}, peer.server.port, peer.server.identity.Pubkey()[1:])
//      if bytes.Compare(out, packet) != 0 {
//          t.Errorf("incorrect handshake packet %v != %v", out, packet)
//      }
//  }

//  packet := Packet(0, HandshakeMsg, P2PVersion, []byte("peer"), []interface{}{"bbb", "aaa", "ccc"}, 30, []byte("0000000000000000000000000000000000000000000000000000000000000000"))
//  conn.In(0, packet)
//  time.Sleep(10 * time.Millisecond)

//  pro, _ := peer.Messenger().protocols[0].(*BaseProtocol)
//  if pro.state != handshakeReceived {
//      t.Errorf("handshake not received")
//  }
//  if peer.Port != 30 {
//      t.Errorf("port incorrectly set")
//  }
//  if peer.Id != "peer" {
//      t.Errorf("id incorrectly set")
//  }
//  if string(peer.Pubkey) != "0000000000000000000000000000000000000000000000000000000000000000" {
//      t.Errorf("pubkey incorrectly set")
//  }
//  fmt.Println(peer.Caps)
//  if len(peer.Caps) != 3 || peer.Caps[0] != "aaa" || peer.Caps[1] != "bbb" || peer.Caps[2] != "ccc" {
//      t.Errorf("protocols incorrectly set")
//  }

//  msg := NewMsg(3)
//  err := peer.Write("aaa", msg)
//  if err != nil {
//      t.Errorf("expect no error for known protocol: %v", err)
//  } else {
//      time.Sleep(1 * time.Millisecond)
//      if len(conn.Out) != 2 {
//          t.Errorf("msg not written")
//      } else {
//          out := conn.Out[1]
//          packet := Packet(16, 3)
//          if bytes.Compare(out, packet) != 0 {
//              t.Errorf("incorrect packet %v != %v", out, packet)
//          }
//      }
//  }

//  msg = NewMsg(2)
//  err = peer.Write("ccc", msg)
//  if err != nil {
//      t.Errorf("expect no error for known protocol: %v", err)
//  } else {
//      time.Sleep(1 * time.Millisecond)
//      if len(conn.Out) != 3 {
//          t.Errorf("msg not written")
//      } else {
//          out := conn.Out[2]
//          packet := Packet(21, 2)
//          if bytes.Compare(out, packet) != 0 {
//              t.Errorf("incorrect packet %v != %v", out, packet)
//          }
//      }
//  }

//  err = peer.Write("bbb", msg)
//  time.Sleep(1 * time.Millisecond)
//  if err == nil {
//      t.Errorf("expect error for unknown protocol")
//  }
// }