Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
257bfff3
Commit
257bfff3
authored
Jan 17, 2019
by
holisticode
Committed by
Anton Evangelatov
Jan 17, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Upload speed (#18442)
parent
66f0c464
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
102 additions
and
0 deletions
+102
-0
main.go
cmd/swarm/swarm-smoke/main.go
+6
-0
upload_speed.go
cmd/swarm/swarm-smoke/upload_speed.go
+96
-0
No files found.
cmd/swarm/swarm-smoke/main.go
View file @
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
View file @
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
}
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