MCPcopy Create free account
hub / github.com/CovenantSQL/CovenantSQL / TestNAConn

Function TestNAConn

naconn/conn_test.go:73–158  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

71}
72
73func TestNAConn(t *testing.T) {
74 Convey("Test dial timeout", t, func(c C) {
75 // Register node with invalid IP address
76 resolver := &simpleResolver{}
77 nodeinfo := thisNode()
78 So(nodeinfo, ShouldNotBeNil)
79 resolver.registerNode(&proto.Node{
80 Addr: "240.0.0.1:8080",
81 ID: nodeinfo.ID,
82 PublicKey: nodeinfo.PublicKey,
83 Nonce: nodeinfo.Nonce,
84 })
85 // Register resolver
86 RegisterResolver(resolver)
87 // Test dial timeout
88 _, err := Dial(nodeinfo.ID)
89 nerr, ok := errors.Cause(err).(net.Error)
90 t.Logf("err: %v\n", err)
91 So(ok, ShouldBeTrue)
92 So(nerr.Timeout(), ShouldBeTrue)
93 })
94 Convey("Test simple NAConn", t, func(c C) {
95 l, err := net.Listen("tcp", "localhost:0")
96 So(err, ShouldBeNil)
97 defer func() { _ = l.Close() }()
98 // Register node
99 resolver := &simpleResolver{}
100 nodeinfo := thisNode()
101 So(nodeinfo, ShouldNotBeNil)
102 resolver.registerNode(&proto.Node{
103 Addr: l.Addr().String(),
104 ID: nodeinfo.ID,
105 PublicKey: nodeinfo.PublicKey,
106 Nonce: nodeinfo.Nonce,
107 })
108 // Register resolver
109 RegisterResolver(resolver)
110 // Serve
111 rounds := 100
112 message := [1024]byte{}
113 rand.Read(message[:])
114 wg := &sync.WaitGroup{}
115 wg.Add(1)
116 go func(c C) {
117 defer wg.Done()
118 for i := 0; i < rounds; i++ {
119 conn, err := l.Accept()
120 c.So(err, ShouldBeNil)
121 wg.Add(1)
122 go func(c C, conn net.Conn) {
123 defer wg.Done()
124 naconn, err := Accept(conn)
125 c.So(err, ShouldBeNil)
126 defer func() { _ = naconn.Close() }()
127 t.Logf("accept conn %s <- %s", naconn.LocalAddr(), naconn.RemoteAddr())
128 buffer, err := ioutil.ReadAll(naconn)
129 c.So(err, ShouldBeNil)
130 c.So(buffer, ShouldResemble, message[:])

Callers

nothing calls this directly

Calls 15

registerNodeMethod · 0.95
RegisterResolverFunction · 0.85
AcceptFunction · 0.85
DialExFunction · 0.85
AddrMethod · 0.80
AcceptMethod · 0.80
LocalAddrMethod · 0.80
RemoteAddrMethod · 0.80
WaitMethod · 0.80
thisNodeFunction · 0.70
DialFunction · 0.70
CloseMethod · 0.65

Tested by

no test coverage detected