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-dms3
Commits
0a41abdd
Commit
0a41abdd
authored
10 years ago
by
Jeromy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
starting a new testing framework
parent
a4388624
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
117 additions
and
68 deletions
+117
-68
routing/dht/dht.go
routing/dht/dht.go
+3
-12
routing/dht/dht_test.go
routing/dht/dht_test.go
+18
-56
routing/dht/ext_test.go
routing/dht/ext_test.go
+77
-0
swarm/interface.go
swarm/interface.go
+19
-0
No files found.
routing/dht/dht.go
View file @
0a41abdd
...
@@ -66,18 +66,9 @@ type listenInfo struct {
...
@@ -66,18 +66,9 @@ type listenInfo struct {
}
}
// NewDHT creates a new DHT object with the given peer as the 'local' host
// NewDHT creates a new DHT object with the given peer as the 'local' host
func NewDHT(p *peer.Peer) (*IpfsDHT, error) {
func NewDHT(p *peer.Peer, net swarm.Network) *IpfsDHT {
if p == nil {
return nil, errors.New("nil peer passed to NewDHT()")
}
network := swarm.NewSwarm(p)
err := network.Listen()
if err != nil {
return nil, err
}
dht := new(IpfsDHT)
dht := new(IpfsDHT)
dht.network = net
work
dht.network = net
dht.datastore = ds.NewMapDatastore()
dht.datastore = ds.NewMapDatastore()
dht.self = p
dht.self = p
dht.listeners = make(map[uint64]*listenInfo)
dht.listeners = make(map[uint64]*listenInfo)
...
@@ -86,7 +77,7 @@ func NewDHT(p *peer.Peer) (*IpfsDHT, error) {
...
@@ -86,7 +77,7 @@ func NewDHT(p *peer.Peer) (*IpfsDHT, error) {
dht.routes = make([]*kb.RoutingTable, 1)
dht.routes = make([]*kb.RoutingTable, 1)
dht.routes[0] = kb.NewRoutingTable(20, kb.ConvertPeerID(p.ID))
dht.routes[0] = kb.NewRoutingTable(20, kb.ConvertPeerID(p.ID))
dht.birth = time.Now()
dht.birth = time.Now()
return dht
, nil
return dht
}
}
// Start up background goroutines needed by the DHT
// Start up background goroutines needed by the DHT
...
...
This diff is collapsed.
Click to expand it.
routing/dht/dht_test.go
View file @
0a41abdd
...
@@ -4,6 +4,7 @@ import (
...
@@ -4,6 +4,7 @@ import (
"testing"
"testing"
peer
"github.com/jbenet/go-ipfs/peer"
peer
"github.com/jbenet/go-ipfs/peer"
swarm
"github.com/jbenet/go-ipfs/swarm"
u
"github.com/jbenet/go-ipfs/util"
u
"github.com/jbenet/go-ipfs/util"
ma
"github.com/jbenet/go-multiaddr"
ma
"github.com/jbenet/go-multiaddr"
...
@@ -31,10 +32,12 @@ func setupDHTS(n int, t *testing.T) ([]*ma.Multiaddr, []*peer.Peer, []*IpfsDHT)
...
@@ -31,10 +32,12 @@ func setupDHTS(n int, t *testing.T) ([]*ma.Multiaddr, []*peer.Peer, []*IpfsDHT)
var
dhts
[]
*
IpfsDHT
var
dhts
[]
*
IpfsDHT
for
i
:=
0
;
i
<
4
;
i
++
{
for
i
:=
0
;
i
<
4
;
i
++
{
d
,
err
:=
NewDHT
(
peers
[
i
])
net
:=
swarm
.
NewSwarm
(
peers
[
i
])
err
:=
net
.
Listen
()
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
d
:=
NewDHT
(
peers
[
i
],
net
)
dhts
=
append
(
dhts
,
d
)
dhts
=
append
(
dhts
,
d
)
d
.
Start
()
d
.
Start
()
}
}
...
@@ -61,15 +64,19 @@ func TestPing(t *testing.T) {
...
@@ -61,15 +64,19 @@ func TestPing(t *testing.T) {
peer_b
.
AddAddress
(
addr_b
)
peer_b
.
AddAddress
(
addr_b
)
peer_b
.
ID
=
peer
.
ID
([]
byte
(
"peer_b"
))
peer_b
.
ID
=
peer
.
ID
([]
byte
(
"peer_b"
))
dht_a
,
err
:=
NewDHT
(
peer_a
)
neta
:=
swarm
.
NewSwarm
(
peer_a
)
err
=
neta
.
Listen
()
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
dht_a
:=
NewDHT
(
peer_a
,
neta
)
dht_b
,
err
:=
NewDHT
(
peer_b
)
netb
:=
swarm
.
NewSwarm
(
peer_b
)
err
=
netb
.
Listen
()
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
dht_b
:=
NewDHT
(
peer_b
,
netb
)
dht_a
.
Start
()
dht_a
.
Start
()
dht_b
.
Start
()
dht_b
.
Start
()
...
@@ -108,15 +115,19 @@ func TestValueGetSet(t *testing.T) {
...
@@ -108,15 +115,19 @@ func TestValueGetSet(t *testing.T) {
peer_b
.
AddAddress
(
addr_b
)
peer_b
.
AddAddress
(
addr_b
)
peer_b
.
ID
=
peer
.
ID
([]
byte
(
"peer_b"
))
peer_b
.
ID
=
peer
.
ID
([]
byte
(
"peer_b"
))
dht_a
,
err
:=
NewDHT
(
peer_a
)
neta
:=
swarm
.
NewSwarm
(
peer_a
)
err
=
neta
.
Listen
()
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
dht_a
:=
NewDHT
(
peer_a
,
neta
)
dht_b
,
err
:=
NewDHT
(
peer_b
)
netb
:=
swarm
.
NewSwarm
(
peer_b
)
err
=
netb
.
Listen
()
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
dht_b
:=
NewDHT
(
peer_b
,
netb
)
dht_a
.
Start
()
dht_a
.
Start
()
dht_b
.
Start
()
dht_b
.
Start
()
...
@@ -197,32 +208,7 @@ func TestProvides(t *testing.T) {
...
@@ -197,32 +208,7 @@ func TestProvides(t *testing.T) {
func
TestLayeredGet
(
t
*
testing
.
T
)
{
func
TestLayeredGet
(
t
*
testing
.
T
)
{
u
.
Debug
=
false
u
.
Debug
=
false
var
addrs
[]
*
ma
.
Multiaddr
addrs
,
_
,
dhts
:=
setupDHTS
(
4
,
t
)
for
i
:=
0
;
i
<
4
;
i
++
{
a
,
err
:=
ma
.
NewMultiaddr
(
fmt
.
Sprintf
(
"/ip4/127.0.0.1/tcp/%d"
,
5000
+
i
))
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
addrs
=
append
(
addrs
,
a
)
}
var
peers
[]
*
peer
.
Peer
for
i
:=
0
;
i
<
4
;
i
++
{
p
:=
new
(
peer
.
Peer
)
p
.
AddAddress
(
addrs
[
i
])
p
.
ID
=
peer
.
ID
([]
byte
(
fmt
.
Sprintf
(
"peer_%d"
,
i
)))
peers
=
append
(
peers
,
p
)
}
var
dhts
[]
*
IpfsDHT
for
i
:=
0
;
i
<
4
;
i
++
{
d
,
err
:=
NewDHT
(
peers
[
i
])
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
dhts
=
append
(
dhts
,
d
)
d
.
Start
()
}
_
,
err
:=
dhts
[
0
]
.
Connect
(
addrs
[
1
])
_
,
err
:=
dhts
[
0
]
.
Connect
(
addrs
[
1
])
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -267,32 +253,8 @@ func TestLayeredGet(t *testing.T) {
...
@@ -267,32 +253,8 @@ func TestLayeredGet(t *testing.T) {
func
TestFindPeer
(
t
*
testing
.
T
)
{
func
TestFindPeer
(
t
*
testing
.
T
)
{
u
.
Debug
=
false
u
.
Debug
=
false
var
addrs
[]
*
ma
.
Multiaddr
for
i
:=
0
;
i
<
4
;
i
++
{
a
,
err
:=
ma
.
NewMultiaddr
(
fmt
.
Sprintf
(
"/ip4/127.0.0.1/tcp/%d"
,
5000
+
i
))
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
addrs
=
append
(
addrs
,
a
)
}
var
peers
[]
*
peer
.
Peer
for
i
:=
0
;
i
<
4
;
i
++
{
p
:=
new
(
peer
.
Peer
)
p
.
AddAddress
(
addrs
[
i
])
p
.
ID
=
peer
.
ID
([]
byte
(
fmt
.
Sprintf
(
"peer_%d"
,
i
)))
peers
=
append
(
peers
,
p
)
}
var
dhts
[]
*
IpfsDHT
addrs
,
peers
,
dhts
:=
setupDHTS
(
4
,
t
)
for
i
:=
0
;
i
<
4
;
i
++
{
d
,
err
:=
NewDHT
(
peers
[
i
])
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
dhts
=
append
(
dhts
,
d
)
d
.
Start
()
}
_
,
err
:=
dhts
[
0
]
.
Connect
(
addrs
[
1
])
_
,
err
:=
dhts
[
0
]
.
Connect
(
addrs
[
1
])
if
err
!=
nil
{
if
err
!=
nil
{
...
...
This diff is collapsed.
Click to expand it.
routing/dht/ext_test.go
0 → 100644
View file @
0a41abdd
package
dht
import
(
"testing"
peer
"github.com/jbenet/go-ipfs/peer"
u
"github.com/jbenet/go-ipfs/util"
swarm
"github.com/jbenet/go-ipfs/swarm"
//ma "github.com/jbenet/go-multiaddr"
"fmt"
"time"
)
// fauxNet is a standin for a swarm.Network in order to more easily recreate
// different testing scenarios
type
fauxNet
struct
{
Chan
*
swarm
.
Chan
swarm
.
Network
handlers
[]
mesHandleFunc
}
type
mesHandleFunc
func
(
*
swarm
.
Message
)
*
swarm
.
Message
func
newFauxNet
()
*
fauxNet
{
fn
:=
new
(
fauxNet
)
fn
.
Chan
=
swarm
.
NewChan
(
8
)
return
fn
}
func
(
f
*
fauxNet
)
Listen
()
error
{
go
func
()
{
for
{
select
{
case
in
:=
<-
f
.
Chan
.
Outgoing
:
for
_
,
h
:=
range
f
.
handlers
{
reply
:=
h
(
in
)
if
reply
!=
nil
{
f
.
Chan
.
Incoming
<-
reply
break
}
}
}
}
}()
return
nil
}
func
(
f
*
fauxNet
)
AddHandler
(
fn
func
(
*
swarm
.
Message
)
*
swarm
.
Message
)
{
f
.
handlers
=
append
(
f
.
handlers
,
fn
)
}
func
(
f
*
fauxNet
)
Send
(
mes
*
swarm
.
Message
)
{
}
func
TestGetFailure
(
t
*
testing
.
T
)
{
fn
:=
newFauxNet
()
fn
.
Listen
()
local
:=
new
(
peer
.
Peer
)
local
.
ID
=
peer
.
ID
([]
byte
(
"test_peer"
))
d
:=
NewDHT
(
local
,
fn
)
d
.
Start
()
b
,
err
:=
d
.
GetValue
(
u
.
Key
(
"test"
),
time
.
Second
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
fmt
.
Println
(
b
)
}
This diff is collapsed.
Click to expand it.
swarm/interface.go
0 → 100644
View file @
0a41abdd
package
swarm
import
(
peer
"github.com/jbenet/go-ipfs/peer"
u
"github.com/jbenet/go-ipfs/util"
ma
"github.com/jbenet/go-multiaddr"
)
type
Network
interface
{
Send
(
*
Message
)
Error
(
error
)
Find
(
u
.
Key
)
*
peer
.
Peer
Listen
()
error
Connect
(
*
ma
.
Multiaddr
)
(
*
peer
.
Peer
,
error
)
GetChan
()
*
Chan
Close
()
Drop
(
*
peer
.
Peer
)
error
}
This diff is collapsed.
Click to expand it.
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