Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
7c707b06
提交
7c707b06
authored
3月 06, 2017
作者:
Jeromy Johnson
提交者:
GitHub
3月 06, 2017
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #3635 from ipfs/feat/bitswap-tx-stats
Add more info to bitswap stat
上级
ea57c694
332d760f
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
162 行增加
和
0 行删除
+162
-0
bitswap.go
core/commands/bitswap.go
+3
-0
bitswap.go
exchange/bitswap/bitswap.go
+4
-0
bitswap_test.go
exchange/bitswap/bitswap_test.go
+38
-0
stat.go
exchange/bitswap/stat.go
+6
-0
workers.go
exchange/bitswap/workers.go
+4
-0
t0125-twonode.sh
test/sharness/t0125-twonode.sh
+101
-0
t0220-bitswap.sh
test/sharness/t0220-bitswap.sh
+6
-0
没有找到文件。
core/commands/bitswap.go
浏览文件 @
7c707b06
...
...
@@ -159,6 +159,9 @@ var bitswapStatCmd = &cmds.Command{
fmt
.
Fprintln
(
buf
,
"bitswap status"
)
fmt
.
Fprintf
(
buf
,
"
\t
provides buffer: %d / %d
\n
"
,
out
.
ProvideBufLen
,
bitswap
.
HasBlockBufferSize
)
fmt
.
Fprintf
(
buf
,
"
\t
blocks received: %d
\n
"
,
out
.
BlocksReceived
)
fmt
.
Fprintf
(
buf
,
"
\t
blocks sent: %d
\n
"
,
out
.
BlocksSent
)
fmt
.
Fprintf
(
buf
,
"
\t
data received: %d
\n
"
,
out
.
DataReceived
)
fmt
.
Fprintf
(
buf
,
"
\t
data sent: %d
\n
"
,
out
.
DataSent
)
fmt
.
Fprintf
(
buf
,
"
\t
dup blocks received: %d
\n
"
,
out
.
DupBlksReceived
)
fmt
.
Fprintf
(
buf
,
"
\t
dup data received: %s
\n
"
,
humanize
.
Bytes
(
out
.
DupDataReceived
))
fmt
.
Fprintf
(
buf
,
"
\t
wantlist [%d keys]
\n
"
,
len
(
out
.
Wantlist
))
...
...
exchange/bitswap/bitswap.go
浏览文件 @
7c707b06
...
...
@@ -157,6 +157,9 @@ type Bitswap struct {
blocksRecvd
int
dupBlocksRecvd
int
dupDataRecvd
uint64
blocksSent
int
dataSent
uint64
dataRecvd
uint64
// Metrics interface metrics
dupMetric
metrics
.
Histogram
...
...
@@ -401,6 +404,7 @@ func (bs *Bitswap) updateReceiveCounters(b blocks.Block) {
defer
bs
.
counterLk
.
Unlock
()
bs
.
blocksRecvd
++
bs
.
dataRecvd
+=
uint64
(
len
(
b
.
RawData
()))
if
has
{
bs
.
dupBlocksRecvd
++
bs
.
dupDataRecvd
+=
uint64
(
blkLen
)
...
...
exchange/bitswap/bitswap_test.go
浏览文件 @
7c707b06
...
...
@@ -3,6 +3,7 @@ package bitswap
import
(
"bytes"
"context"
"fmt"
"sync"
"testing"
"time"
...
...
@@ -299,6 +300,25 @@ func TestEmptyKey(t *testing.T) {
}
}
func
assertStat
(
st
*
Stat
,
sblks
,
rblks
int
,
sdata
,
rdata
uint64
)
error
{
if
sblks
!=
st
.
BlocksSent
{
return
fmt
.
Errorf
(
"mismatch in blocks sent: %d vs %d"
,
sblks
,
st
.
BlocksSent
)
}
if
rblks
!=
st
.
BlocksReceived
{
return
fmt
.
Errorf
(
"mismatch in blocks recvd: %d vs %d"
,
rblks
,
st
.
BlocksReceived
)
}
if
sdata
!=
st
.
DataSent
{
return
fmt
.
Errorf
(
"mismatch in data sent: %d vs %d"
,
sdata
,
st
.
DataSent
)
}
if
rdata
!=
st
.
DataReceived
{
return
fmt
.
Errorf
(
"mismatch in data recvd: %d vs %d"
,
rdata
,
st
.
DataReceived
)
}
return
nil
}
func
TestBasicBitswap
(
t
*
testing
.
T
)
{
net
:=
tn
.
VirtualNetwork
(
mockrouting
.
NewServer
(),
delay
.
Fixed
(
kNetworkDelay
))
sg
:=
NewTestSessionGenerator
(
net
)
...
...
@@ -321,6 +341,24 @@ func TestBasicBitswap(t *testing.T) {
t
.
Fatal
(
err
)
}
st0
,
err
:=
instances
[
0
]
.
Exchange
.
Stat
()
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
st1
,
err
:=
instances
[
1
]
.
Exchange
.
Stat
()
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
if
err
:=
assertStat
(
st0
,
1
,
0
,
1
,
0
);
err
!=
nil
{
t
.
Fatal
(
err
)
}
if
err
:=
assertStat
(
st1
,
0
,
1
,
0
,
1
);
err
!=
nil
{
t
.
Fatal
(
err
)
}
t
.
Log
(
blk
)
for
_
,
inst
:=
range
instances
{
err
:=
inst
.
Exchange
.
Close
()
...
...
exchange/bitswap/stat.go
浏览文件 @
7c707b06
...
...
@@ -11,6 +11,9 @@ type Stat struct {
Wantlist
[]
*
cid
.
Cid
Peers
[]
string
BlocksReceived
int
DataReceived
uint64
BlocksSent
int
DataSent
uint64
DupBlksReceived
int
DupDataReceived
uint64
}
...
...
@@ -23,6 +26,9 @@ func (bs *Bitswap) Stat() (*Stat, error) {
st
.
BlocksReceived
=
bs
.
blocksRecvd
st
.
DupBlksReceived
=
bs
.
dupBlocksRecvd
st
.
DupDataReceived
=
bs
.
dupDataRecvd
st
.
BlocksSent
=
bs
.
blocksSent
st
.
DataSent
=
bs
.
dataSent
st
.
DataReceived
=
bs
.
dataRecvd
bs
.
counterLk
.
Unlock
()
for
_
,
p
:=
range
bs
.
engine
.
Peers
()
{
...
...
exchange/bitswap/workers.go
浏览文件 @
7c707b06
...
...
@@ -64,6 +64,10 @@ func (bs *Bitswap) taskWorker(ctx context.Context, id int) {
})
bs
.
wm
.
SendBlock
(
ctx
,
envelope
)
bs
.
counterLk
.
Lock
()
bs
.
blocksSent
++
bs
.
dataSent
+=
uint64
(
len
(
envelope
.
Block
.
RawData
()))
bs
.
counterLk
.
Unlock
()
case
<-
ctx
.
Done
()
:
return
}
...
...
test/sharness/t0125-twonode.sh
0 → 100755
浏览文件 @
7c707b06
#!/bin/sh
#
# Copyright (c) 2017 Jeromy Johnson
# MIT Licensed; see the LICENSE file in this repository.
#
test_description
=
"Test two ipfs nodes transferring a file"
.
lib/test-lib.sh
check_file_fetch
()
{
node
=
$1
fhash
=
$2
fname
=
$3
test_expect_success
"can fetch file"
'
ipfsi $node cat $fhash > fetch_out
'
test_expect_success
"file looks good"
'
test_cmp $fname fetch_out
'
}
check_dir_fetch
()
{
node
=
$1
ref
=
$2
test_expect_success
"node can fetch all refs for dir"
'
ipfsi $node refs -r $ref > /dev/null
'
}
run_single_file_test
()
{
test_expect_success
"add a file on node1"
'
random 1000000 > filea &&
FILEA_HASH=$(ipfsi 1 add -q filea)
'
check_file_fetch 0
$FILEA_HASH
filea
}
run_random_dir_test
()
{
test_expect_success
"create a bunch of random files"
'
random-files -depth=3 -dirs=4 -files=5 -seed=5 foobar > /dev/null
'
test_expect_success
"add those on node 0"
'
DIR_HASH=$(ipfsi 0 add -r -q foobar | tail -n1)
'
check_dir_fetch 1
$DIR_HASH
}
run_advanced_test
()
{
startup_cluster 2
"
$@
"
test_expect_success
"clean repo before test"
'
ipfsi 0 repo gc > /dev/null &&
ipfsi 1 repo gc > /dev/null
'
run_single_file_test
run_random_dir_test
test_expect_success
"node0 data transferred looks correct"
'
ipfsi 0 bitswap stat > stat0 &&
grep "blocks sent: 126" stat0 > /dev/null &&
grep "blocks received: 5" stat0 > /dev/null &&
grep "data sent: 228113" stat0 > /dev/null &&
grep "data received: 1000256" stat0 > /dev/null
'
test_expect_success
"node1 data transferred looks correct"
'
ipfsi 1 bitswap stat > stat1 &&
grep "blocks received: 126" stat1 > /dev/null &&
grep "blocks sent: 5" stat1 > /dev/null &&
grep "data received: 228113" stat1 > /dev/null &&
grep "data sent: 1000256" stat1 > /dev/null
'
test_expect_success
"shut down nodes"
'
iptb stop
'
}
test_expect_success
"set up tcp testbed"
'
iptb init -n 2 -p 0 -f --bootstrap=none
'
# test multiplex muxer
export
LIBP2P_MUX_PREFS
=
"/mplex/6.7.0"
run_advanced_test
"--enable-mplex-experiment"
unset
LIBP2P_MUX_PREFS
# test default configuration
run_advanced_test
test_done
test/sharness/t0220-bitswap.sh
浏览文件 @
7c707b06
...
...
@@ -20,6 +20,9 @@ test_expect_success "'ipfs bitswap stat' output looks good" '
bitswap status
provides buffer: 0 / 256
blocks received: 0
blocks sent: 0
data received: 0
data sent: 0
dup blocks received: 0
dup data received: 0 B
wantlist [0 keys]
...
...
@@ -55,6 +58,9 @@ test_expect_success "'ipfs bitswap stat' output looks good" '
bitswap status
provides buffer: 0 / 256
blocks received: 0
blocks sent: 0
data received: 0
data sent: 0
dup blocks received: 0
dup data received: 0 B
wantlist [0 keys]
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论