Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
go-libp2p
Commits
d3a90434
Commit
d3a90434
authored
9 years ago
by
Jeromy
Browse files
Options
Download
Email Patches
Plain Diff
add test to show concurrency of dials
parent
9d443900
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
p2p/net/conn/dial_test.go
+57
-0
p2p/net/conn/dial_test.go
with
57 additions
and
0 deletions
+57
-0
p2p/net/conn/dial_test.go
View file @
d3a90434
...
...
@@ -6,6 +6,7 @@ import (
"io"
"net"
"strings"
"sync"
"testing"
"time"
...
...
@@ -449,3 +450,59 @@ func TestHangingAccept(t *testing.T) {
c
.
Close
()
<-
done
}
func
TestConcurrentAccept
(
t
*
testing
.
T
)
{
ctx
,
cancel
:=
context
.
WithCancel
(
context
.
Background
())
defer
cancel
()
p1
:=
tu
.
RandPeerNetParamsOrFatal
(
t
)
l1
,
err
:=
Listen
(
ctx
,
p1
.
Addr
,
p1
.
ID
,
p1
.
PrivKey
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
n
:=
300
delay
:=
time
.
Millisecond
*
20
p1
.
Addr
=
l1
.
Multiaddr
()
// Addr has been determined by kernel.
var
wg
sync
.
WaitGroup
for
i
:=
0
;
i
<
n
;
i
++
{
wg
.
Add
(
1
)
go
func
()
{
defer
wg
.
Done
()
con
,
err
:=
net
.
Dial
(
"tcp"
,
l1
.
Addr
()
.
String
())
if
err
!=
nil
{
log
.
Error
(
err
)
t
.
Error
(
"first dial failed: "
,
err
)
return
}
// hang this connection
defer
con
.
Close
()
time
.
Sleep
(
delay
)
err
=
msmux
.
SelectProtoOrFail
(
SecioTag
,
con
)
if
err
!=
nil
{
t
.
Error
(
err
)
}
}()
}
before
:=
time
.
Now
()
for
i
:=
0
;
i
<
n
;
i
++
{
c
,
err
:=
l1
.
Accept
()
if
err
!=
nil
{
t
.
Fatal
(
"connections after a failed accept should still work: "
,
err
)
}
c
.
Close
()
}
limit
:=
delay
*
time
.
Duration
(
n
)
took
:=
time
.
Now
()
.
Sub
(
before
)
if
took
>
limit
{
t
.
Fatal
(
"took too long!"
)
}
log
.
Errorf
(
"took: %s (less than %s)"
,
took
,
limit
)
}
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help