Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
d2e6a61d
提交
d2e6a61d
authored
3月 10, 2018
作者:
Łukasz Magiera
提交者:
Steven Allen
9月 10, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
coreapi: test using mock swarm
License: MIT Signed-off-by:
Łukasz Magiera
<
magik6k@gmail.com
>
上级
36168542
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
99 行增加
和
48 行删除
+99
-48
dht.go
core/coreapi/dht.go
+18
-13
dht.go
core/coreapi/interface/dht.go
+2
-2
name_test.go
core/coreapi/name_test.go
+8
-4
unixfs_test.go
core/coreapi/unixfs_test.go
+71
-29
没有找到文件。
core/coreapi/dht.go
浏览文件 @
d2e6a61d
...
...
@@ -7,16 +7,16 @@ import (
coreiface
"github.com/ipfs/go-ipfs/core/coreapi/interface"
caopts
"github.com/ipfs/go-ipfs/core/coreapi/interface/options"
dag
"github.com/ipfs/go-ipfs/merkledag"
routing
"gx/ipfs/QmTiWLZ6Fo5j4KcTVutZJ5KWRRJrbxzmxA4td8NfEdrPh7/go-libp2p-routing
"
notif
"gx/ipfs/QmTiWLZ6Fo5j4KcTVutZJ5KWRRJrbxzmxA4td8NfEdrPh7/go-libp2p-routing/notifications
"
ip
dht
"gx/ipfs/QmVSep2WwKcXxMonPASsAJ3nZVjfVMKgMcaSigxKnUWpJv/go-libp2p-kad-dh
t"
ma
"gx/ipfs/QmWWQ2Txc2c6tqjsBpzg5Ar652cHPGNsQQp2SejkNmkUMb/go-multiaddr
"
pstore
"gx/ipfs/QmXauCuJzmzapetmC6W4TuDJLL1yFFrVzSHoWv8YdbmnxH/go-libp2p-peerstore
"
peer
"gx/ipfs/QmZoWKhxUmZ2seW4BzX6fJkNR8hh9PsGModr7q171yq2SS/go-libp2p-pee
r"
cid
"gx/ipfs/Qm
cZfnkapfECQGcLZaf9B79NRg7cRa9EnZh4LSbkCzwNvY
/go-cid"
ipld
"gx/ipfs/Qme5bWv7wtjUNGsK2BNGVUFPKiuxWrsqrtvYwCLRw8YFES/go-ipld-format
"
dag
"gx/ipfs/QmNr4E8z9bGTztvHJktp7uQaMdx9p3r9Asrq6eYk7iCh4a/go-merkledag"
peer
"gx/ipfs/QmQsErDt8Qgw1XrsXf2BpEzDgGWtB1YLsTAARBup5b6B9W/go-libp2p-peer
"
ipdht
"gx/ipfs/QmRNxiPpZf3skMAtmDJpgHuW9uj1ukqV1zjANj9d6bmHfE/go-libp2p-kad-dht
"
ip
ld
"gx/ipfs/QmX5CsuHyVZeTLxgRSYkgLSDQKb9UjE8xnhQzCEJWWWFsC/go-ipld-forma
t"
routing
"gx/ipfs/QmY9JUvS8kbgao3XbPh6WAV3ChE2nxGKhcGTHiwMC4gmcU/go-libp2p-routing
"
notif
"gx/ipfs/QmY9JUvS8kbgao3XbPh6WAV3ChE2nxGKhcGTHiwMC4gmcU/go-libp2p-routing/notifications
"
ma
"gx/ipfs/QmYmsdtJ3HsodkePE3eU3TsCaP2YvPZJ4LoXnNkDE5Tpt7/go-multiadd
r"
cid
"gx/ipfs/Qm
ZFbDTY9jfSBms2MchvYM9oYRbAF19K7Pby47yDBfpPrb
/go-cid"
pstore
"gx/ipfs/Qmda4cPRvSRyox3SqgJN6DfSZGU5TtHufPTp9uXjFj71X6/go-libp2p-peerstore
"
)
var
ErrNotDHT
=
errors
.
New
(
"routing service is not a DHT"
)
...
...
@@ -93,12 +93,12 @@ func (api *DhtAPI) FindProviders(ctx context.Context, p coreiface.Path, opts ...
return
nil
,
ErrNotDHT
}
p
,
err
=
api
.
ResolvePath
(
ctx
,
p
)
rp
,
err
:
=
api
.
ResolvePath
(
ctx
,
p
)
if
err
!=
nil
{
return
nil
,
err
}
c
:=
p
.
Cid
()
c
:=
r
p
.
Cid
()
numProviders
:=
settings
.
NumProviders
if
numProviders
<
1
{
...
...
@@ -162,7 +162,12 @@ func (api *DhtAPI) Provide(ctx context.Context, path coreiface.Path, opts ...cao
return
errors
.
New
(
"cannot provide, no connected peers"
)
}
c
:=
path
.
Cid
()
rp
,
err
:=
api
.
ResolvePath
(
ctx
,
path
)
if
err
!=
nil
{
return
err
}
c
:=
rp
.
Cid
()
has
,
err
:=
api
.
node
.
Blockstore
.
Has
(
c
)
if
err
!=
nil
{
...
...
core/coreapi/interface/dht.go
浏览文件 @
d2e6a61d
...
...
@@ -5,8 +5,8 @@ import (
options
"github.com/ipfs/go-ipfs/core/coreapi/interface/options"
ma
"gx/ipfs/QmWWQ2Txc2c6tqjsBpzg5Ar652cHPGNsQQp2SejkNmkUMb/go-multiadd
r"
peer
"gx/ipfs/QmZoWKhxUmZ2seW4BzX6fJkNR8hh9PsGModr7q171yq2SS/go-libp2p-pee
r"
peer
"gx/ipfs/QmQsErDt8Qgw1XrsXf2BpEzDgGWtB1YLsTAARBup5b6B9W/go-libp2p-pee
r"
ma
"gx/ipfs/QmYmsdtJ3HsodkePE3eU3TsCaP2YvPZJ4LoXnNkDE5Tpt7/go-multiadd
r"
)
// DhtAPI specifies the interface to the DHT
...
...
core/coreapi/name_test.go
浏览文件 @
d2e6a61d
...
...
@@ -21,11 +21,13 @@ func addTestObject(ctx context.Context, api coreiface.CoreAPI) (coreiface.Path,
func
TestBasicPublishResolve
(
t
*
testing
.
T
)
{
ctx
:=
context
.
Background
()
n
,
api
,
err
:=
makeAPIIdent
(
ctx
,
true
)
n
ds
,
apis
,
err
:=
makeAPISwarm
(
ctx
,
true
,
2
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
return
}
n
:=
nds
[
0
]
api
:=
apis
[
0
]
p
,
err
:=
addTestObject
(
ctx
,
api
)
if
err
!=
nil
{
...
...
@@ -60,11 +62,12 @@ func TestBasicPublishResolve(t *testing.T) {
func
TestBasicPublishResolveKey
(
t
*
testing
.
T
)
{
ctx
:=
context
.
Background
()
_
,
api
,
err
:=
makeAPIIdent
(
ctx
,
true
)
_
,
api
s
,
err
:=
makeAPISwarm
(
ctx
,
true
,
2
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
return
}
api
:=
apis
[
0
]
k
,
err
:=
api
.
Key
()
.
Generate
(
ctx
,
"foo"
)
if
err
!=
nil
{
...
...
@@ -107,12 +110,13 @@ func TestBasicPublishResolveTimeout(t *testing.T) {
t
.
Skip
(
"ValidTime doesn't appear to work at this time resolution"
)
ctx
:=
context
.
Background
()
n
,
api
,
err
:=
makeAPIIdent
(
ctx
,
true
)
n
ds
,
apis
,
err
:=
makeAPISwarm
(
ctx
,
true
,
2
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
return
}
n
:=
nds
[
0
]
api
:=
apis
[
0
]
p
,
err
:=
addTestObject
(
ctx
,
api
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
...
...
core/coreapi/unixfs_test.go
浏览文件 @
d2e6a61d
...
...
@@ -4,6 +4,7 @@ import (
"bytes"
"context"
"encoding/base64"
"fmt"
"io"
"math"
"strings"
...
...
@@ -14,6 +15,7 @@ import (
coreiface
"github.com/ipfs/go-ipfs/core/coreapi/interface"
options
"github.com/ipfs/go-ipfs/core/coreapi/interface/options"
coreunix
"github.com/ipfs/go-ipfs/core/coreunix"
mock
"github.com/ipfs/go-ipfs/core/mock"
keystore
"github.com/ipfs/go-ipfs/keystore"
repo
"github.com/ipfs/go-ipfs/repo"
...
...
@@ -22,8 +24,10 @@ import (
peer
"gx/ipfs/QmQsErDt8Qgw1XrsXf2BpEzDgGWtB1YLsTAARBup5b6B9W/go-libp2p-peer"
datastore
"gx/ipfs/QmSpg1CvpXQQow5ernt1gNBXaXV6yxyNqi7XoeerWfzB5w/go-datastore"
syncds
"gx/ipfs/QmSpg1CvpXQQow5ernt1gNBXaXV6yxyNqi7XoeerWfzB5w/go-datastore/sync"
mocknet
"gx/ipfs/QmUEqyXr97aUbNmQADHYNknjwjjdVpJXEt1UZXmSG81EV4/go-libp2p/p2p/net/mock"
unixfs
"gx/ipfs/QmWAfTyD6KEBm7bzqNRBPvqKrZCDtn5PGbs9V1DKfnVK59/go-unixfs"
config
"gx/ipfs/QmYVqYJTVjetcf1guieEgWpK1PZtHPytP624vKzTF1P3r2/go-ipfs-config"
pstore
"gx/ipfs/Qmda4cPRvSRyox3SqgJN6DfSZGU5TtHufPTp9uXjFj71X6/go-libp2p-peerstore"
cbor
"gx/ipfs/QmepvyyduWnXHm1G7ybmGbJfQQHTAo36DjP2nvF7H7ZXjE/go-ipld-cbor"
)
...
...
@@ -36,51 +40,89 @@ var helloStr = "hello, world!"
// `echo -n | ipfs add`
var
emptyFile
=
"/ipfs/QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH"
func
makeAPIIdent
(
ctx
context
.
Context
,
fullIdentity
bool
)
(
*
core
.
IpfsNode
,
coreiface
.
CoreAPI
,
error
)
{
var
ident
config
.
Identity
if
fullIdentity
{
sk
,
pk
,
err
:=
ci
.
GenerateKeyPair
(
ci
.
RSA
,
512
)
if
err
!=
nil
{
return
nil
,
nil
,
err
func
makeAPISwarm
(
ctx
context
.
Context
,
fullIdentity
bool
,
n
int
)
([]
*
core
.
IpfsNode
,
[]
coreiface
.
CoreAPI
,
error
)
{
mn
:=
mocknet
.
New
(
ctx
)
nodes
:=
make
([]
*
core
.
IpfsNode
,
n
)
apis
:=
make
([]
coreiface
.
CoreAPI
,
n
)
for
i
:=
0
;
i
<
n
;
i
++
{
var
ident
config
.
Identity
if
fullIdentity
{
sk
,
pk
,
err
:=
ci
.
GenerateKeyPair
(
ci
.
RSA
,
512
)
if
err
!=
nil
{
return
nil
,
nil
,
err
}
id
,
err
:=
peer
.
IDFromPublicKey
(
pk
)
if
err
!=
nil
{
return
nil
,
nil
,
err
}
kbytes
,
err
:=
sk
.
Bytes
()
if
err
!=
nil
{
return
nil
,
nil
,
err
}
ident
=
config
.
Identity
{
PeerID
:
id
.
Pretty
(),
PrivKey
:
base64
.
StdEncoding
.
EncodeToString
(
kbytes
),
}
}
else
{
ident
=
config
.
Identity
{
PeerID
:
testPeerID
,
}
}
id
,
err
:=
peer
.
IDFromPublicKey
(
pk
)
if
err
!=
nil
{
return
nil
,
nil
,
err
c
:=
config
.
Config
{}
c
.
Addresses
.
Swarm
=
[]
string
{
fmt
.
Sprintf
(
"/ip4/127.0.%d.1/tcp/4001"
,
i
)}
c
.
Identity
=
ident
r
:=
&
repo
.
Mock
{
C
:
c
,
D
:
syncds
.
MutexWrap
(
datastore
.
NewMapDatastore
()),
K
:
keystore
.
NewMemKeystore
(),
}
kbytes
,
err
:=
sk
.
Bytes
()
node
,
err
:=
core
.
NewNode
(
ctx
,
&
core
.
BuildCfg
{
Repo
:
r
,
Host
:
mock
.
MockHostOption
(
mn
),
Online
:
fullIdentity
,
})
if
err
!=
nil
{
return
nil
,
nil
,
err
}
nodes
[
i
]
=
node
apis
[
i
]
=
coreapi
.
NewCoreAPI
(
node
)
}
ident
=
config
.
Identity
{
PeerID
:
id
.
Pretty
(),
PrivKey
:
base64
.
StdEncoding
.
EncodeToString
(
kbytes
),
}
}
else
{
ident
=
config
.
Identity
{
PeerID
:
testPeerID
,
}
err
:=
mn
.
LinkAll
()
if
err
!=
nil
{
return
nil
,
nil
,
err
}
r
:=
&
repo
.
Mock
{
C
:
config
.
Config
{
Identity
:
ident
,
bsinf
:=
core
.
BootstrapConfigWithPeers
(
[]
pstore
.
PeerInfo
{
nodes
[
0
]
.
Peerstore
.
PeerInfo
(
nodes
[
0
]
.
Identity
)
,
},
D
:
syncds
.
MutexWrap
(
datastore
.
NewMapDatastore
()),
K
:
keystore
.
NewMemKeystore
(),
)
for
_
,
n
:=
range
nodes
[
1
:
]
{
if
err
:=
n
.
Bootstrap
(
bsinf
);
err
!=
nil
{
return
nil
,
nil
,
err
}
}
node
,
err
:=
core
.
NewNode
(
ctx
,
&
core
.
BuildCfg
{
Repo
:
r
})
return
nodes
,
apis
,
nil
}
func
makeAPI
(
ctx
context
.
Context
)
(
*
core
.
IpfsNode
,
coreiface
.
CoreAPI
,
error
)
{
nd
,
api
,
err
:=
makeAPISwarm
(
ctx
,
false
,
1
)
if
err
!=
nil
{
return
nil
,
nil
,
err
}
api
:=
coreapi
.
NewCoreAPI
(
node
)
return
node
,
api
,
nil
}
func
makeAPI
(
ctx
context
.
Context
)
(
*
core
.
IpfsNode
,
coreiface
.
CoreAPI
,
error
)
{
return
makeAPIIdent
(
ctx
,
false
)
return
nd
[
0
],
api
[
0
],
nil
}
func
TestAdd
(
t
*
testing
.
T
)
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论