Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
dms3
go-bitswap
Commits
acc22c28
Unverified
Commit
acc22c28
authored
May 22, 2019
by
Steven Allen
Committed by
GitHub
May 22, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #128 from ipfs/feat/tag-peers-with-requests
feat(engine): tag peers with requests
parents
e5465885
b711c363
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
155 additions
and
25 deletions
+155
-25
bitswap.go
bitswap.go
+1
-1
decision/engine.go
decision/engine.go
+37
-11
decision/engine_test.go
decision/engine_test.go
+76
-8
go.mod
go.mod
+16
-5
go.sum
go.sum
+25
-0
No files found.
bitswap.go
View file @
acc22c28
...
...
@@ -111,7 +111,7 @@ func New(parent context.Context, network bsnet.BitSwapNetwork,
bs
:=
&
Bitswap
{
blockstore
:
bstore
,
engine
:
decision
.
NewEngine
(
ctx
,
bstore
),
// TODO close the engine with Close() method
engine
:
decision
.
NewEngine
(
ctx
,
bstore
,
network
.
ConnectionManager
()
),
// TODO close the engine with Close() method
network
:
network
,
process
:
px
,
newBlocks
:
make
(
chan
cid
.
Cid
,
HasBlockBufferSize
),
...
...
decision/engine.go
View file @
acc22c28
...
...
@@ -3,18 +3,19 @@ package decision
import
(
"context"
"fmt"
"sync"
"time"
"github.com/google/uuid"
bsmsg
"github.com/ipfs/go-bitswap/message"
wl
"github.com/ipfs/go-bitswap/wantlist"
cid
"github.com/ipfs/go-cid"
"github.com/ipfs/go-peertaskqueue"
"github.com/ipfs/go-peertaskqueue/peertask"
blocks
"github.com/ipfs/go-block-format"
cid
"github.com/ipfs/go-cid"
bstore
"github.com/ipfs/go-ipfs-blockstore"
logging
"github.com/ipfs/go-log"
"github.com/ipfs/go-peertaskqueue"
"github.com/ipfs/go-peertaskqueue/peertask"
peer
"github.com/libp2p/go-libp2p-peer"
)
...
...
@@ -57,6 +58,11 @@ const (
outboxChanBuffer
=
0
// maxMessageSize is the maximum size of the batched payload
maxMessageSize
=
512
*
1024
// tagPrefix is the tag given to peers associated an engine
tagPrefix
=
"bs-engine-%s"
// tagWeight is the default weight for peers associated with an engine
tagWeight
=
5
)
// Envelope contains a message for a Peer.
...
...
@@ -71,6 +77,13 @@ type Envelope struct {
Sent
func
()
}
// PeerTagger covers the methods on the connection manager used by the decision
// engine to tag peers
type
PeerTagger
interface
{
TagPeer
(
peer
.
ID
,
string
,
int
)
UntagPeer
(
p
peer
.
ID
,
tag
string
)
}
// Engine manages sending requested blocks to peers.
type
Engine
struct
{
// peerRequestQueue is a priority queue of requests received from peers.
...
...
@@ -91,6 +104,9 @@ type Engine struct {
bs
bstore
.
Blockstore
peerTagger
PeerTagger
tag
string
lock
sync
.
Mutex
// protects the fields immediatly below
// ledgerMap lists Ledgers by their Partner key.
ledgerMap
map
[
peer
.
ID
]
*
ledger
...
...
@@ -99,19 +115,29 @@ type Engine struct {
}
// NewEngine creates a new block sending engine for the given block store
func
NewEngine
(
ctx
context
.
Context
,
bs
bstore
.
Blockstore
)
*
Engine
{
func
NewEngine
(
ctx
context
.
Context
,
bs
bstore
.
Blockstore
,
peerTagger
PeerTagger
)
*
Engine
{
e
:=
&
Engine
{
ledgerMap
:
make
(
map
[
peer
.
ID
]
*
ledger
),
bs
:
bs
,
peer
RequestQueue
:
peertaskqueue
.
New
()
,
peer
Tagger
:
peerTagger
,
outbox
:
make
(
chan
(
<-
chan
*
Envelope
),
outboxChanBuffer
),
workSignal
:
make
(
chan
struct
{},
1
),
ticker
:
time
.
NewTicker
(
time
.
Millisecond
*
100
),
}
e
.
tag
=
fmt
.
Sprintf
(
tagPrefix
,
uuid
.
New
()
.
String
())
e
.
peerRequestQueue
=
peertaskqueue
.
New
(
peertaskqueue
.
OnPeerAddedHook
(
e
.
onPeerAdded
),
peertaskqueue
.
OnPeerRemovedHook
(
e
.
onPeerRemoved
))
go
e
.
taskWorker
(
ctx
)
return
e
}
func
(
e
*
Engine
)
onPeerAdded
(
p
peer
.
ID
)
{
e
.
peerTagger
.
TagPeer
(
p
,
e
.
tag
,
tagWeight
)
}
func
(
e
*
Engine
)
onPeerRemoved
(
p
peer
.
ID
)
{
e
.
peerTagger
.
UntagPeer
(
p
,
e
.
tag
)
}
// WantlistForPeer returns the currently understood want list for a given peer
func
(
e
*
Engine
)
WantlistForPeer
(
p
peer
.
ID
)
(
out
[]
wl
.
Entry
)
{
partner
:=
e
.
findOrCreate
(
p
)
...
...
decision/engine_test.go
View file @
acc22c28
...
...
@@ -7,6 +7,7 @@ import (
"strings"
"sync"
"testing"
"time"
message
"github.com/ipfs/go-bitswap/message"
...
...
@@ -18,17 +19,57 @@ import (
testutil
"github.com/libp2p/go-testutil"
)
type
peerAndEngine
struct
{
type
fakePeerTagger
struct
{
lk
sync
.
Mutex
wait
sync
.
WaitGroup
taggedPeers
[]
peer
.
ID
}
func
(
fpt
*
fakePeerTagger
)
TagPeer
(
p
peer
.
ID
,
tag
string
,
n
int
)
{
fpt
.
wait
.
Add
(
1
)
fpt
.
lk
.
Lock
()
defer
fpt
.
lk
.
Unlock
()
fpt
.
taggedPeers
=
append
(
fpt
.
taggedPeers
,
p
)
}
func
(
fpt
*
fakePeerTagger
)
UntagPeer
(
p
peer
.
ID
,
tag
string
)
{
defer
fpt
.
wait
.
Done
()
fpt
.
lk
.
Lock
()
defer
fpt
.
lk
.
Unlock
()
for
i
:=
0
;
i
<
len
(
fpt
.
taggedPeers
);
i
++
{
if
fpt
.
taggedPeers
[
i
]
==
p
{
fpt
.
taggedPeers
[
i
]
=
fpt
.
taggedPeers
[
len
(
fpt
.
taggedPeers
)
-
1
]
fpt
.
taggedPeers
=
fpt
.
taggedPeers
[
:
len
(
fpt
.
taggedPeers
)
-
1
]
return
}
}
}
func
(
fpt
*
fakePeerTagger
)
count
()
int
{
fpt
.
lk
.
Lock
()
defer
fpt
.
lk
.
Unlock
()
return
len
(
fpt
.
taggedPeers
)
}
type
engineSet
struct
{
PeerTagger
*
fakePeerTagger
Peer
peer
.
ID
Engine
*
Engine
Blockstore
blockstore
.
Blockstore
}
func
newEngine
(
ctx
context
.
Context
,
idStr
string
)
peerAndEngine
{
return
peerAndEngine
{
func
newEngine
(
ctx
context
.
Context
,
idStr
string
)
engineSet
{
fpt
:=
&
fakePeerTagger
{}
bs
:=
blockstore
.
NewBlockstore
(
dssync
.
MutexWrap
(
ds
.
NewMapDatastore
()))
return
engineSet
{
Peer
:
peer
.
ID
(
idStr
),
//Strategy: New(true),
PeerTagger
:
fpt
,
Blockstore
:
bs
,
Engine
:
NewEngine
(
ctx
,
b
lockstore
.
NewBlockstore
(
dssync
.
MutexWrap
(
ds
.
NewMapDatastore
()))
),
b
s
,
fpt
),
}
}
...
...
@@ -107,7 +148,7 @@ func peerIsPartner(p peer.ID, e *Engine) bool {
func
TestOutboxClosedWhenEngineClosed
(
t
*
testing
.
T
)
{
t
.
SkipNow
()
// TODO implement *Engine.Close
e
:=
NewEngine
(
context
.
Background
(),
blockstore
.
NewBlockstore
(
dssync
.
MutexWrap
(
ds
.
NewMapDatastore
())))
e
:=
NewEngine
(
context
.
Background
(),
blockstore
.
NewBlockstore
(
dssync
.
MutexWrap
(
ds
.
NewMapDatastore
()))
,
&
fakePeerTagger
{}
)
var
wg
sync
.
WaitGroup
wg
.
Add
(
1
)
go
func
()
{
...
...
@@ -164,7 +205,7 @@ func TestPartnerWantsThenCancels(t *testing.T) {
for
i
:=
0
;
i
<
numRounds
;
i
++
{
expected
:=
make
([][]
string
,
0
,
len
(
testcases
))
e
:=
NewEngine
(
context
.
Background
(),
bs
)
e
:=
NewEngine
(
context
.
Background
(),
bs
,
&
fakePeerTagger
{}
)
for
_
,
testcase
:=
range
testcases
{
set
:=
testcase
[
0
]
cancels
:=
testcase
[
1
]
...
...
@@ -183,6 +224,33 @@ func TestPartnerWantsThenCancels(t *testing.T) {
}
}
func
TestTaggingPeers
(
t
*
testing
.
T
)
{
ctx
,
cancel
:=
context
.
WithTimeout
(
context
.
Background
(),
1
*
time
.
Second
)
defer
cancel
()
sanfrancisco
:=
newEngine
(
ctx
,
"sf"
)
seattle
:=
newEngine
(
ctx
,
"sea"
)
keys
:=
[]
string
{
"a"
,
"b"
,
"c"
,
"d"
,
"e"
}
for
_
,
letter
:=
range
keys
{
block
:=
blocks
.
NewBlock
([]
byte
(
letter
))
if
err
:=
sanfrancisco
.
Blockstore
.
Put
(
block
);
err
!=
nil
{
t
.
Fatal
(
err
)
}
}
partnerWants
(
sanfrancisco
.
Engine
,
keys
,
seattle
.
Peer
)
next
:=
<-
sanfrancisco
.
Engine
.
Outbox
()
envelope
:=
<-
next
if
sanfrancisco
.
PeerTagger
.
count
()
!=
1
{
t
.
Fatal
(
"Incorrect number of peers tagged"
)
}
envelope
.
Sent
()
next
=
<-
sanfrancisco
.
Engine
.
Outbox
()
sanfrancisco
.
PeerTagger
.
wait
.
Wait
()
if
sanfrancisco
.
PeerTagger
.
count
()
!=
0
{
t
.
Fatal
(
"Peers should be untagged but weren't"
)
}
}
func
partnerWants
(
e
*
Engine
,
keys
[]
string
,
partner
peer
.
ID
)
{
add
:=
message
.
New
(
false
)
for
i
,
letter
:=
range
keys
{
...
...
go.mod
View file @
acc22c28
module
github.com/ipfs/go-bitswap
require (
github.com/btcsuite/btcd
v0.0.0-20190427004231-96897255fd17 // indirect
github.com/btcsuite/goleveldb
v1.0.0 // indirect
github.com/cskr/pubsub
v1.0.2
github.com/davecgh/go-spew
v1.1.1 // indirect
github.com/gogo/protobuf
v1.2.1
github.com/golang/protobuf
v1.3.1 // indirect
github.com/google/uuid
v1.1.1
github.com/hashicorp/golang-lru
v0.5.1
github.com/ipfs/go-block-format
v0.0.2
github.com/ipfs/go-cid
v0.0.1
...
...
@@ -17,8 +22,11 @@ require (
github.com/ipfs/go-ipfs-util
v0.0.1
github.com/ipfs/go-log
v0.0.1
github.com/ipfs/go-metrics-interface
v0.0.1
github.com/ipfs/go-peertaskqueue
v0.0.
3
github.com/ipfs/go-peertaskqueue
v0.0.
4
github.com/jbenet/goprocess
v0.0.0-20160826012719-b497e2f366b8
github.com/jessevdk/go-flags
v1.4.0 // indirect
github.com/kisielk/errcheck
v1.2.0 // indirect
github.com/kkdai/bstream
v0.0.0-20181106074824-b3251f7901ec // indirect
github.com/libp2p/go-libp2p
v0.0.2
github.com/libp2p/go-libp2p-host
v0.0.1
github.com/libp2p/go-libp2p-interface-connmgr
v0.0.1
...
...
@@ -31,9 +39,12 @@ require (
github.com/libp2p/go-libp2p-routing
v0.0.1
github.com/libp2p/go-testutil
v0.0.1
github.com/multiformats/go-multiaddr
v0.0.1
golang.org/x/crypto
v0.0.0-20190506204251-e1dfcc566284 // indirect
golang.org/x/net
v0.0.0-20190503192946-f4e77d36d62c // indirect
golang.org/x/sys
v0.0.0-20190509141414-a5b02f93d862 // indirect
github.com/onsi/ginkgo
v1.8.0 // indirect
github.com/onsi/gomega
v1.5.0 // indirect
golang.org/x/crypto
v0.0.0-20190513172903-22d7a77e9e5f // indirect
golang.org/x/net
v0.0.0-20190522135303-fa69b94a3b58 // indirect
golang.org/x/sys
v0.0.0-20190522044717-8097e1b27ff5 // indirect
golang.org/x/text
v0.3.2 // indirect
golang.org/x/tools
v0.0.0-20190509153222-73554e0f7805 // indirect
golang.org/x/tools
v0.0.0-20190521203540-521d6ed310dd // indirect
gopkg.in/yaml.v2
v2.2.2 // indirect
)
go.sum
View file @
acc22c28
...
...
@@ -3,11 +3,16 @@ github.com/Kubuxu/go-os-helper v0.0.1/go.mod h1:N8B+I7vPCT80IcP58r50u4+gEEcsZETF
github.com/aead/siphash
v1.0.1/go.mod h1:
Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
github.com/btcsuite/btcd
v0.0.0-20190213025234-306aecffea32 h1:
qkOC5Gd33k54tobS36cXdAzJbeHaduLtnLQQwNoIi78=
github.com/btcsuite/btcd
v0.0.0-20190213025234-306aecffea32/go.mod h1:
DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8=
github.com/btcsuite/btcd
v0.0.0-20190427004231-96897255fd17 h1:
m0N5Vg5nP3zEz8TREZpwX3gt4Biw3/8fbIf4A3hO96g=
github.com/btcsuite/btcd
v0.0.0-20190427004231-96897255fd17/go.mod h1:
3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI=
github.com/btcsuite/btclog
v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:
TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA=
github.com/btcsuite/btcutil
v0.0.0-20190207003914-4c204d697803/go.mod h1:
+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
github.com/btcsuite/btcutil
v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:
+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
github.com/btcsuite/go-socks
v0.0.0-20170105172521-4720035b7bfd/go.mod h1:
HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg=
github.com/btcsuite/goleveldb
v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:
F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY=
github.com/btcsuite/goleveldb
v1.0.0/go.mod h1:
QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I=
github.com/btcsuite/snappy-go
v0.0.0-20151229074030-0bdef8d06723/go.mod h1:
8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc=
github.com/btcsuite/snappy-go
v1.0.0/go.mod h1:
8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc=
github.com/btcsuite/websocket
v0.0.0-20150119174127-31079b680792/go.mod h1:
ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY=
github.com/btcsuite/winsvc
v1.0.0/go.mod h1:
jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs=
github.com/coreos/go-semver
v0.2.0 h1:
3Jm3tLmsgAYcjC+4Up7hJrFBPr+n7rAqYeSw/SZazuY=
...
...
@@ -17,6 +22,7 @@ github.com/cskr/pubsub v1.0.2/go.mod h1:/8MzYXk/NJAz782G8RPkFzXTZVu63VotefPnR9TI
github.com/davecgh/go-spew
v0.0.0-20171005155431-ecdeabc65495/go.mod h1:
J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew
v1.1.0 h1:
ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew
v1.1.0/go.mod h1:
J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew
v1.1.1/go.mod h1:
J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dgraph-io/badger
v1.5.5-0.20190226225317-8115aed38f8f/go.mod h1:
VZxzAIRPHRVNRKRo6AXrX9BJegn6il06VMTZVJYCIjQ=
github.com/dgryski/go-farm
v0.0.0-20190104051053-3adb47b1fb0f/go.mod h1:
SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
github.com/dustin/go-humanize
v1.0.0/go.mod h1:
HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
...
...
@@ -31,6 +37,7 @@ github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zV
github.com/golang/protobuf
v1.2.0/go.mod h1:
6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf
v1.3.0 h1:
kbxbvI4Un1LUWKxufD+BiE6AEExYYgkQLQmLFqA1LFk=
github.com/golang/protobuf
v1.3.0/go.mod h1:
Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0=
github.com/golang/protobuf
v1.3.1/go.mod h1:
6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/snappy
v0.0.0-20180518054509-2e65f85255db/go.mod h1:
/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/google/uuid
v1.1.1 h1:
Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
github.com/google/uuid
v1.1.1/go.mod h1:
TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
...
...
@@ -86,6 +93,8 @@ github.com/ipfs/go-peertaskqueue v0.0.2 h1:l5+A/SQ7ychaHlU0eeRUlhbq2m9XSBnENLwpR
github.com/ipfs/go-peertaskqueue
v0.0.2/go.mod h1:
03H8fhyeMfKNFWqzYEVyMbcPUeYrqP1MX6Kd+aN+rMQ=
github.com/ipfs/go-peertaskqueue
v0.0.3 h1:
CDzQB4J6bHmSM7rIjR3gMoCjubdWy7Be2bUw6a7T3O0=
github.com/ipfs/go-peertaskqueue
v0.0.3/go.mod h1:
03H8fhyeMfKNFWqzYEVyMbcPUeYrqP1MX6Kd+aN+rMQ=
github.com/ipfs/go-peertaskqueue
v0.0.4 h1:
i0JprfjjILYcWM1xguO/1MCS8XKVxLSl+ECEVr6i8nw=
github.com/ipfs/go-peertaskqueue
v0.0.4/go.mod h1:
03H8fhyeMfKNFWqzYEVyMbcPUeYrqP1MX6Kd+aN+rMQ=
github.com/jackpal/gateway
v1.0.4 h1:
LS5EHkLuQ6jzaHwULi0vL+JO0mU/n4yUtK8oUjHHOlM=
github.com/jackpal/gateway
v1.0.4/go.mod h1:
lTpwd4ACLXmpyiCTRtfiNyVnUmqT9RivzCDQetPfnjA=
github.com/jackpal/go-nat-pmp
v1.0.1 h1:
i0LektDkO1QlrTm/cSuP+PyBCDnYvjPLGl4LdWEMiaA=
...
...
@@ -97,10 +106,13 @@ github.com/jbenet/go-temp-err-catcher v0.0.0-20150120210811-aac704a3f4f2/go.mod
github.com/jbenet/goprocess
v0.0.0-20160826012719-b497e2f366b8 h1:
bspPhN+oKYFk5fcGNuQzp6IGzYQSenLEgH3s6jkXrWw=
github.com/jbenet/goprocess
v0.0.0-20160826012719-b497e2f366b8/go.mod h1:
Ly/wlsjFq/qrU3Rar62tu1gASgGw6chQbSh/XgIIXCY=
github.com/jessevdk/go-flags
v0.0.0-20141203071132-1679536dcc89/go.mod h1:
4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
github.com/jessevdk/go-flags
v1.4.0/go.mod h1:
4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
github.com/jrick/logrotate
v1.0.0/go.mod h1:
LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ=
github.com/kisielk/errcheck
v1.1.0/go.mod h1:
EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
github.com/kisielk/errcheck
v1.2.0/go.mod h1:
/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
github.com/kisielk/gotool
v1.0.0/go.mod h1:
XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/kkdai/bstream
v0.0.0-20161212061736-f391b8402d23/go.mod h1:
J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4=
github.com/kkdai/bstream
v0.0.0-20181106074824-b3251f7901ec/go.mod h1:
J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4=
github.com/kr/pretty
v0.1.0 h1:
L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
github.com/kr/pretty
v0.1.0/go.mod h1:
dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty
v1.1.1/go.mod h1:
pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
...
...
@@ -220,8 +232,11 @@ github.com/multiformats/go-multistream v0.0.1/go.mod h1:fJTiDfXJVmItycydCnNx4+wS
github.com/onsi/ginkgo
v1.6.0/go.mod h1:
lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo
v1.7.0 h1:
WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs=
github.com/onsi/ginkgo
v1.7.0/go.mod h1:
lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo
v1.8.0/go.mod h1:
lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/gomega
v1.4.1/go.mod h1:
C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
github.com/onsi/gomega
v1.4.3 h1:
RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU=
github.com/onsi/gomega
v1.4.3/go.mod h1:
ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega
v1.5.0/go.mod h1:
ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/opentracing/opentracing-go
v1.0.2 h1:
3jA2P6O1F9UOrWVpwrIo17pu01KWvNWg4X946/Y5Zwg=
github.com/opentracing/opentracing-go
v1.0.2/go.mod h1:
UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/pkg/errors
v0.8.1 h1:
iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
...
...
@@ -265,7 +280,10 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
golang.org/x/crypto
v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:
yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto
v0.0.0-20190506204251-e1dfcc566284 h1:
rlLehGeYg6jfoyz/eDqDU1iRXLKfR42nnNh57ytKEWo=
golang.org/x/crypto
v0.0.0-20190506204251-e1dfcc566284/go.mod h1:
yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto
v0.0.0-20190513172903-22d7a77e9e5f h1:
R423Cnkcp5JABoeemiGEPlt9tHXFfw5kvc0yqlxRPWo=
golang.org/x/crypto
v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:
yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/net
v0.0.0-20180524181706-dfa909b99c79/go.mod h1:
mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net
v0.0.0-20180719180050-a680a1efc54d/go.mod h1:
mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net
v0.0.0-20180906233101-161cd47e91fd/go.mod h1:
mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net
v0.0.0-20190227160552-c95aed5357e7 h1:
C2F/nMkR/9sfUTpvR3QrjBuTdvMUC/cFajkphs1YLQo=
golang.org/x/net
v0.0.0-20190227160552-c95aed5357e7/go.mod h1:
mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
...
...
@@ -273,6 +291,8 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn
golang.org/x/net
v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:
t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net
v0.0.0-20190503192946-f4e77d36d62c h1:
uOCk1iQW6Vc18bnC13MfzScl+wdKBmM9Y9kU7Z83/lw=
golang.org/x/net
v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:
t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net
v0.0.0-20190522135303-fa69b94a3b58 h1:
AZ8FNE2w7DVDFDK6u/iC9/Mqh73UupjaqSd/2qMoECQ=
golang.org/x/net
v0.0.0-20190522135303-fa69b94a3b58/go.mod h1:
HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/sync
v0.0.0-20180314180146-1d60e4601c6f h1:
wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA=
golang.org/x/sync
v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:
RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync
v0.0.0-20190423024810-112230192c58 h1:
8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
...
...
@@ -286,14 +306,18 @@ golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5h
golang.org/x/sys
v0.0.0-20190412213103-97732733099d/go.mod h1:
h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys
v0.0.0-20190509141414-a5b02f93d862 h1:
rM0ROo5vb9AdYJi1110yjWGMej9ITfKddS89P3Fkhug=
golang.org/x/sys
v0.0.0-20190509141414-a5b02f93d862/go.mod h1:
h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys
v0.0.0-20190522044717-8097e1b27ff5 h1:
f005F/Jl5JLP036x7QIvUVhNTqxvSYwFIiyOh2q12iU=
golang.org/x/sys
v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:
h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text
v0.3.0 h1:
g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
golang.org/x/text
v0.3.0/go.mod h1:
NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text
v0.3.2 h1:
tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
golang.org/x/text
v0.3.2/go.mod h1:
bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/tools
v0.0.0-20180221164845-07fd8470d635/go.mod h1:
n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools
v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:
n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools
v0.0.0-20181030221726-6c7e314b6563/go.mod h1:
n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools
v0.0.0-20190509153222-73554e0f7805 h1:
1ufBXAsTpUhSmmPXEEs5PrGQSfnBhsjAd2SmVhp9xrY=
golang.org/x/tools
v0.0.0-20190509153222-73554e0f7805/go.mod h1:
RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools
v0.0.0-20190521203540-521d6ed310dd/go.mod h1:
RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
google.golang.org/genproto
v0.0.0-20180831171423-11092d34479b/go.mod h1:
JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
gopkg.in/check.v1
v0.0.0-20161208181325-20d25e280405/go.mod h1:
Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1
v1.0.0-20180628173108-788fd7840127 h1:
qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
...
...
@@ -304,3 +328,4 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkep
gopkg.in/tomb.v1
v1.0.0-20141024135613-dd632973f1e7/go.mod h1:
dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/yaml.v2
v2.2.1 h1:
mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE=
gopkg.in/yaml.v2
v2.2.1/go.mod h1:
hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2
v2.2.2/go.mod h1:
hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
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