Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
dms3
go-bitswap
Commits
1910e213
Unverified
Commit
1910e213
authored
Jun 03, 2020
by
Steven Allen
Committed by
GitHub
Jun 03, 2020
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #405 from ipfs/fix/register-session
Ensure sessions register with PeerManager
parents
88373cd4
103776ec
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
55 additions
and
1 deletion
+55
-1
internal/session/sessionwantsender.go
internal/session/sessionwantsender.go
+5
-1
internal/session/sessionwantsender_test.go
internal/session/sessionwantsender_test.go
+50
-0
No files found.
internal/session/sessionwantsender.go
View file @
1910e213
...
...
@@ -271,7 +271,11 @@ func (sws *sessionWantSender) onChange(changes []change) {
// If the update includes blocks or haves, treat it as signaling that
// the peer is available
if
len
(
chng
.
update
.
ks
)
>
0
||
len
(
chng
.
update
.
haves
)
>
0
{
availability
[
chng
.
update
.
from
]
=
true
p
:=
chng
.
update
.
from
availability
[
p
]
=
true
// Register with the PeerManager
sws
.
pm
.
RegisterSession
(
p
,
sws
)
}
updates
=
append
(
updates
,
chng
.
update
)
...
...
internal/session/sessionwantsender_test.go
View file @
1910e213
...
...
@@ -66,6 +66,16 @@ func (pm *mockPeerManager) RegisterSession(p peer.ID, sess bspm.Session) bool {
return
true
}
func
(
pm
*
mockPeerManager
)
has
(
p
peer
.
ID
,
sid
uint64
)
bool
{
pm
.
lk
.
Lock
()
defer
pm
.
lk
.
Unlock
()
if
session
,
ok
:=
pm
.
peerSessions
[
p
];
ok
{
return
session
.
ID
()
==
sid
}
return
false
}
func
(
*
mockPeerManager
)
UnregisterSession
(
uint64
)
{}
func
(
*
mockPeerManager
)
BroadcastWantHaves
(
context
.
Context
,
[]
cid
.
Cid
)
{}
func
(
*
mockPeerManager
)
SendCancels
(
context
.
Context
,
[]
cid
.
Cid
)
{}
...
...
@@ -324,6 +334,46 @@ func TestCancelWants(t *testing.T) {
}
}
func
TestRegisterSessionWithPeerManager
(
t
*
testing
.
T
)
{
cids
:=
testutil
.
GenerateCids
(
2
)
peers
:=
testutil
.
GeneratePeers
(
2
)
peerA
:=
peers
[
0
]
peerB
:=
peers
[
1
]
sid
:=
uint64
(
1
)
pm
:=
newMockPeerManager
()
fpm
:=
newFakeSessionPeerManager
()
swc
:=
newMockSessionMgr
()
bpm
:=
bsbpm
.
New
()
onSend
:=
func
(
peer
.
ID
,
[]
cid
.
Cid
,
[]
cid
.
Cid
)
{}
onPeersExhausted
:=
func
([]
cid
.
Cid
)
{}
spm
:=
newSessionWantSender
(
sid
,
pm
,
fpm
,
swc
,
bpm
,
onSend
,
onPeersExhausted
)
defer
spm
.
Shutdown
()
go
spm
.
Run
()
// peerA: HAVE cid0
spm
.
Update
(
peerA
,
nil
,
cids
[
:
1
],
nil
)
// Wait for processing to complete
time
.
Sleep
(
10
*
time
.
Millisecond
)
// Expect session to have been registered with PeerManager
if
!
pm
.
has
(
peerA
,
sid
)
{
t
.
Fatal
(
"Expected HAVE to register session with PeerManager"
)
}
// peerB: block cid1
spm
.
Update
(
peerB
,
cids
[
1
:
],
nil
,
nil
)
// Wait for processing to complete
time
.
Sleep
(
10
*
time
.
Millisecond
)
// Expect session to have been registered with PeerManager
if
!
pm
.
has
(
peerB
,
sid
)
{
t
.
Fatal
(
"Expected HAVE to register session with PeerManager"
)
}
}
func
TestPeerUnavailable
(
t
*
testing
.
T
)
{
cids
:=
testutil
.
GenerateCids
(
2
)
peers
:=
testutil
.
GeneratePeers
(
2
)
...
...
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