Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
whqwjb
go-ethereum
提交
257bfff3
G
go-ethereum
项目概览
whqwjb
/
go-ethereum
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
go-ethereum
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
257bfff3
编写于
1月 17, 2019
作者:
H
holisticode
提交者:
Anton Evangelatov
1月 17, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Upload speed (#18442)
上级
66f0c464
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
102 addition
and
0 deletion
+102
-0
cmd/swarm/swarm-smoke/main.go
cmd/swarm/swarm-smoke/main.go
+6
-0
cmd/swarm/swarm-smoke/upload_speed.go
cmd/swarm/swarm-smoke/upload_speed.go
+96
-0
未找到文件。
cmd/swarm/swarm-smoke/main.go
浏览文件 @
257bfff3
...
...
@@ -148,6 +148,12 @@ func main() {
Usage
:
"feed update generate, upload and sync"
,
Action
:
cliFeedUploadAndSync
,
},
{
Name
:
"upload_speed"
,
Aliases
:
[]
string
{
"u"
},
Usage
:
"measure upload speed"
,
Action
:
cliUploadSpeed
,
},
}
sort
.
Sort
(
cli
.
FlagsByName
(
app
.
Flags
))
...
...
cmd/swarm/swarm-smoke/upload_speed.go
0 → 100644
浏览文件 @
257bfff3
// Copyright 2018 The go-ethereum Authors
// This file is part of go-ethereum.
//
// go-ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// go-ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
package
main
import
(
"bytes"
"fmt"
"os"
"time"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/metrics"
"github.com/ethereum/go-ethereum/swarm/testutil"
cli
"gopkg.in/urfave/cli.v1"
)
var
endpoint
string
//just use the first endpoint
func
generateEndpoint
(
scheme
string
,
cluster
string
,
app
string
,
from
int
)
{
if
cluster
==
"prod"
{
endpoint
=
fmt
.
Sprintf
(
"%s://%v.swarm-gateways.net"
,
scheme
,
from
)
}
else
{
endpoint
=
fmt
.
Sprintf
(
"%s://%s-%v-%s.stg.swarm-gateways.net"
,
scheme
,
app
,
from
,
cluster
)
}
}
func
cliUploadSpeed
(
c
*
cli
.
Context
)
error
{
log
.
PrintOrigins
(
true
)
log
.
Root
()
.
SetHandler
(
log
.
LvlFilterHandler
(
log
.
Lvl
(
verbosity
),
log
.
StreamHandler
(
os
.
Stdout
,
log
.
TerminalFormat
(
true
))))
metrics
.
GetOrRegisterCounter
(
"upload-speed"
,
nil
)
.
Inc
(
1
)
errc
:=
make
(
chan
error
)
go
func
()
{
errc
<-
uploadSpeed
(
c
)
}()
select
{
case
err
:=
<-
errc
:
if
err
!=
nil
{
metrics
.
GetOrRegisterCounter
(
"upload-speed.fail"
,
nil
)
.
Inc
(
1
)
}
return
err
case
<-
time
.
After
(
time
.
Duration
(
timeout
)
*
time
.
Second
)
:
metrics
.
GetOrRegisterCounter
(
"upload-speed.timeout"
,
nil
)
.
Inc
(
1
)
return
fmt
.
Errorf
(
"timeout after %v sec"
,
timeout
)
}
}
func
uploadSpeed
(
c
*
cli
.
Context
)
error
{
defer
func
(
now
time
.
Time
)
{
totalTime
:=
time
.
Since
(
now
)
log
.
Info
(
"total time"
,
"time"
,
totalTime
,
"kb"
,
filesize
)
metrics
.
GetOrRegisterCounter
(
"upload-speed.total-time"
,
nil
)
.
Inc
(
int64
(
totalTime
))
}(
time
.
Now
())
generateEndpoint
(
scheme
,
cluster
,
appName
,
from
)
seed
:=
int
(
time
.
Now
()
.
UnixNano
()
/
1e6
)
log
.
Info
(
"uploading to "
+
endpoint
,
"seed"
,
seed
)
randomBytes
:=
testutil
.
RandomBytes
(
seed
,
filesize
*
1000
)
t1
:=
time
.
Now
()
hash
,
err
:=
upload
(
&
randomBytes
,
endpoint
)
if
err
!=
nil
{
log
.
Error
(
err
.
Error
())
return
err
}
metrics
.
GetOrRegisterCounter
(
"upload-speed.upload-time"
,
nil
)
.
Inc
(
int64
(
time
.
Since
(
t1
)))
fhash
,
err
:=
digest
(
bytes
.
NewReader
(
randomBytes
))
if
err
!=
nil
{
log
.
Error
(
err
.
Error
())
return
err
}
log
.
Info
(
"uploaded successfully"
,
"hash"
,
hash
,
"digest"
,
fmt
.
Sprintf
(
"%x"
,
fhash
))
return
nil
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录