Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
9c6a3b20
提交
9c6a3b20
authored
9月 16, 2014
作者:
Juan Batiz-Benet
提交者:
Brian Tiger Chow
9月 22, 2014
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
peerstore test
上级
c08b8958
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
91 行增加
和
8 行删除
+91
-8
peerstore.go
peer/peerstore.go
+9
-8
peerstore_test.go
peer/peerstore_test.go
+82
-0
没有找到文件。
peer/peerstore.go
浏览文件 @
9c6a3b20
...
...
@@ -12,9 +12,9 @@ import (
// Peerstore provides a threadsafe collection for peers.
type
Peerstore
interface
{
Get
(
ID
)
(
*
Peer
,
error
)
Add
(
*
Peer
)
error
Remov
e
(
ID
)
error
All
()
(
*
map
[
u
.
Key
]
*
Peer
,
error
)
Put
(
*
Peer
)
error
Delet
e
(
ID
)
error
All
()
(
*
Map
,
error
)
}
type
peerstore
struct
{
...
...
@@ -33,7 +33,8 @@ func (p *peerstore) Get(i ID) (*Peer, error) {
p
.
RLock
()
defer
p
.
RUnlock
()
val
,
err
:=
p
.
peers
.
Get
(
ds
.
NewKey
(
string
(
i
)))
k
:=
ds
.
NewKey
(
string
(
i
))
val
,
err
:=
p
.
peers
.
Get
(
k
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -45,7 +46,7 @@ func (p *peerstore) Get(i ID) (*Peer, error) {
return
peer
,
nil
}
func
(
p
*
peerstore
)
Add
(
peer
*
Peer
)
error
{
func
(
p
*
peerstore
)
Put
(
peer
*
Peer
)
error
{
p
.
Lock
()
defer
p
.
Unlock
()
...
...
@@ -53,7 +54,7 @@ func (p *peerstore) Add(peer *Peer) error {
return
p
.
peers
.
Put
(
k
,
peer
)
}
func
(
p
*
peerstore
)
Remov
e
(
i
ID
)
error
{
func
(
p
*
peerstore
)
Delet
e
(
i
ID
)
error
{
p
.
Lock
()
defer
p
.
Unlock
()
...
...
@@ -61,7 +62,7 @@ func (p *peerstore) Remove(i ID) error {
return
p
.
peers
.
Delete
(
k
)
}
func
(
p
*
peerstore
)
All
()
(
*
map
[
u
.
Key
]
*
Peer
,
error
)
{
func
(
p
*
peerstore
)
All
()
(
*
Map
,
error
)
{
p
.
RLock
()
defer
p
.
RUnlock
()
...
...
@@ -70,7 +71,7 @@ func (p *peerstore) All() (*map[u.Key]*Peer, error) {
return
nil
,
err
}
ps
:=
&
map
[
u
.
Key
]
*
Peer
{}
ps
:=
&
Map
{}
for
_
,
k
:=
range
l
{
val
,
err
:=
p
.
peers
.
Get
(
k
)
if
err
!=
nil
{
...
...
peer/peerstore_test.go
0 → 100644
浏览文件 @
9c6a3b20
package
peer
import
(
"errors"
"testing"
ma
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
)
func
setupPeer
(
id
string
,
addr
string
)
(
*
Peer
,
error
)
{
tcp
,
err
:=
ma
.
NewMultiaddr
(
addr
)
if
err
!=
nil
{
return
nil
,
err
}
p
:=
&
Peer
{
ID
:
ID
(
id
)}
p
.
AddAddress
(
tcp
)
return
p
,
nil
}
func
TestPeerstore
(
t
*
testing
.
T
)
{
ps
:=
NewPeerstore
()
p11
,
_
:=
setupPeer
(
"11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a31"
,
"/ip4/127.0.0.1/tcp/1234"
)
p21
,
_
:=
setupPeer
(
"11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a32"
,
"/ip4/127.0.0.1/tcp/2345"
)
// p31, _ := setupPeer("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33", "/ip4/127.0.0.1/tcp/3456")
// p41, _ := setupPeer("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a34", "/ip4/127.0.0.1/tcp/4567")
err
:=
ps
.
Put
(
p11
)
if
err
!=
nil
{
t
.
Error
(
err
)
}
p12
,
err
:=
ps
.
Get
(
ID
(
"11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a31"
))
if
err
!=
nil
{
t
.
Error
(
err
)
}
if
p11
!=
p12
{
t
.
Error
(
errors
.
New
(
"peers should be the same"
))
}
err
=
ps
.
Put
(
p21
)
if
err
!=
nil
{
t
.
Error
(
err
)
}
p22
,
err
:=
ps
.
Get
(
ID
(
"11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a32"
))
if
err
!=
nil
{
t
.
Error
(
err
)
}
if
p21
!=
p22
{
t
.
Error
(
errors
.
New
(
"peers should be the same"
))
}
_
,
err
=
ps
.
Get
(
ID
(
"11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"
))
if
err
==
nil
{
t
.
Error
(
errors
.
New
(
"should've been an error here"
))
}
err
=
ps
.
Delete
(
ID
(
"11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a31"
))
if
err
!=
nil
{
t
.
Error
(
err
)
}
_
,
err
=
ps
.
Get
(
ID
(
"11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a31"
))
if
err
==
nil
{
t
.
Error
(
errors
.
New
(
"should've been an error here"
))
}
p22
,
err
=
ps
.
Get
(
ID
(
"11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a32"
))
if
err
!=
nil
{
t
.
Error
(
err
)
}
if
p21
!=
p22
{
t
.
Error
(
errors
.
New
(
"peers should be the same"
))
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论