@cryptotaxi247 / kubo / commits / a8a7caa08

refac(bitswap:testnet) give testnet its own package

Brian Tiger Chow committed Sep 19, 2014 at 13:15 UTC a8a7caa088d9f44736c516d4fc1e2b9791eeb114
7 files changed +31 -28
exchange/bitswap/bitswap.go
+2 -11
@@ -17,18 +17,9 @@ import (
17 u "github.com/jbenet/go-ipfs/util"
18 )
19
20 -// TODO rename -> Router?
21 -type Routing interface {
22 - // FindProvidersAsync returns a channel of providers for the given key
23 - FindProvidersAsync(context.Context, u.Key, int) <-chan *peer.Peer
24 -
25 - // Provide provides the key to the network
26 - Provide(key u.Key) error
27 -}
28 -
20 // NetMessageSession initializes a BitSwap session that communicates over the
21 // provided NetMessage service
31 -func NetMessageSession(parent context.Context, s bsnet.NetMessageService, p *peer.Peer, d ds.Datastore, directory Routing) exchange.Interface {
22 +func NetMessageSession(parent context.Context, s bsnet.NetMessageService, p *peer.Peer, d ds.Datastore, directory bsnet.Routing) exchange.Interface {
23
24 networkAdapter := bsnet.NetMessageAdapter(s, nil)
25 bs := &bitswap{
@@ -54,7 +45,7 @@ type bitswap struct {
45 blockstore blockstore.Blockstore
46
47 // routing interface for communication
57 - routing Routing
48 + routing bsnet.Routing
49
50 notifications notifications.PubSub
51
exchange/bitswap/bitswap_test.go
+8 -7
@@ -11,14 +11,15 @@ import (
11 exchange "github.com/jbenet/go-ipfs/exchange"
12 notifications "github.com/jbenet/go-ipfs/exchange/bitswap/notifications"
13 strategy "github.com/jbenet/go-ipfs/exchange/bitswap/strategy"
14 + testnet "github.com/jbenet/go-ipfs/exchange/bitswap/testnet"
15 peer "github.com/jbenet/go-ipfs/peer"
16 testutil "github.com/jbenet/go-ipfs/util/testutil"
17 )
18
19 func TestGetBlockTimeout(t *testing.T) {
20
20 - net := LocalNetwork()
21 - rs := newRoutingServer()
21 + net := testnet.VirtualNetwork()
22 + rs := testnet.VirtualRoutingServer()
23 ipfs := session(net, rs, []byte("peer id"))
24 ctx, _ := context.WithTimeout(context.Background(), time.Nanosecond)
25 block := testutil.NewBlockOrFail(t, "block")
@@ -31,8 +32,8 @@ func TestGetBlockTimeout(t *testing.T) {
32
33 func TestProviderForKeyButNetworkCannotFind(t *testing.T) {
34
34 - net := LocalNetwork()
35 - rs := newRoutingServer()
35 + net := testnet.VirtualNetwork()
36 + rs := testnet.VirtualRoutingServer()
37
38 block := testutil.NewBlockOrFail(t, "block")
39 rs.Announce(&peer.Peer{}, block.Key()) // but not on network
@@ -52,8 +53,8 @@ func TestProviderForKeyButNetworkCannotFind(t *testing.T) {
53 func TestGetBlockFromPeerAfterPeerAnnounces(t *testing.T) {
54 t.Skip("Failing. Work in progress")
55
55 - net := LocalNetwork()
56 - rs := newRoutingServer()
56 + net := testnet.VirtualNetwork()
57 + rs := testnet.VirtualRoutingServer()
58 block := testutil.NewBlockOrFail(t, "block")
59
60 hasBlock := session(net, rs, []byte("hasBlock"))
@@ -78,7 +79,7 @@ type ipfs struct {
79 blockstore bstore.Blockstore
80 }
81
81 -func session(net Network, rs RoutingServer, id peer.ID) ipfs {
82 +func session(net testnet.Network, rs testnet.RoutingServer, id peer.ID) ipfs {
83 p := &peer.Peer{}
84
85 adapter := net.Adapter(p)
exchange/bitswap/network/interface.go
+10
@@ -7,6 +7,7 @@ import (
7 bsmsg "github.com/jbenet/go-ipfs/exchange/bitswap/message"
8 netmsg "github.com/jbenet/go-ipfs/net/message"
9 peer "github.com/jbenet/go-ipfs/peer"
10 + u "github.com/jbenet/go-ipfs/util"
11 )
12
13 // Adapter provides network connectivity for BitSwap sessions
@@ -41,3 +42,12 @@ type NetMessageService interface {
42 SendMessage(ctx context.Context, m netmsg.NetMessage) error
43 SetHandler(netservice.Handler)
44 }
45 +
46 +// TODO rename -> Router?
47 +type Routing interface {
48 + // FindProvidersAsync returns a channel of providers for the given key
49 + FindProvidersAsync(context.Context, u.Key, int) <-chan *peer.Peer
50 +
51 + // Provide provides the key to the network
52 + Provide(key u.Key) error
53 +}
exchange/bitswap/testnet/network.go renamed
+1 -1
@@ -30,7 +30,7 @@ type Network interface {
30
31 // network impl
32
33 -func LocalNetwork() Network {
33 +func VirtualNetwork() Network {
34 return &network{
35 clients: make(map[util.Key]bsnet.Receiver),
36 }
exchange/bitswap/testnet/network_test.go renamed
+2 -2
@@ -12,7 +12,7 @@ import (
12 )
13
14 func TestSendRequestToCooperativePeer(t *testing.T) {
15 - net := LocalNetwork()
15 + net := VirtualNetwork()
16
17 idOfRecipient := []byte("recipient")
18
@@ -59,7 +59,7 @@ func TestSendRequestToCooperativePeer(t *testing.T) {
59 }
60
61 func TestSendMessageAsyncButWaitForResponse(t *testing.T) {
62 - net := LocalNetwork()
62 + net := VirtualNetwork()
63 idOfResponder := []byte("responder")
64 waiter := net.Adapter(&peer.Peer{ID: []byte("waiter")})
65 responder := net.Adapter(&peer.Peer{ID: idOfResponder})
exchange/bitswap/testnet/routing.go renamed
+4 -3
@@ -5,6 +5,7 @@ import (
5 "sync"
6
7 context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
8 + bsnet "github.com/jbenet/go-ipfs/exchange/bitswap/network"
9 peer "github.com/jbenet/go-ipfs/peer"
10 u "github.com/jbenet/go-ipfs/util"
11 )
@@ -18,10 +19,10 @@ type RoutingServer interface {
19
20 // TODO
21 // Returns a Routing instance configured to query this hash table
21 - Client(*peer.Peer) Routing
22 + Client(*peer.Peer) bsnet.Routing
23 }
24
24 -func newRoutingServer() RoutingServer {
25 +func VirtualRoutingServer() RoutingServer {
26 return &hashTable{
27 m: make(map[u.Key]map[*peer.Peer]bool),
28 }
@@ -61,7 +62,7 @@ func (rs *hashTable) Providers(k u.Key) []*peer.Peer {
62 }
63
64 // TODO
64 -func (rs *hashTable) Client(p *peer.Peer) Routing {
65 +func (rs *hashTable) Client(p *peer.Peer) bsnet.Routing {
66 return &routingClient{
67 peer: p,
68 hashTable: rs,
exchange/bitswap/testnet/routing_test.go renamed
+4 -4
@@ -29,7 +29,7 @@ func TestSetAndGet(t *testing.T) {
29 ID: pid,
30 }
31 k := u.Key("42")
32 - rs := newRoutingServer()
32 + rs := VirtualRoutingServer()
33 err := rs.Announce(p, k)
34 if err != nil {
35 t.Fatal(err)
@@ -50,7 +50,7 @@ func TestClientFindProviders(t *testing.T) {
50 peer := &peer.Peer{
51 ID: []byte("42"),
52 }
53 - rs := newRoutingServer()
53 + rs := VirtualRoutingServer()
54 client := rs.Client(peer)
55 k := u.Key("hello")
56 err := client.Provide(k)
@@ -83,7 +83,7 @@ func TestClientFindProviders(t *testing.T) {
83 }
84
85 func TestClientOverMax(t *testing.T) {
86 - rs := newRoutingServer()
86 + rs := VirtualRoutingServer()
87 k := u.Key("hello")
88 numProvidersForHelloKey := 100
89 for i := 0; i < numProvidersForHelloKey; i++ {
@@ -115,7 +115,7 @@ func TestClientOverMax(t *testing.T) {
115
116 // TODO does dht ensure won't receive self as a provider? probably not.
117 func TestCanceledContext(t *testing.T) {
118 - rs := newRoutingServer()
118 + rs := VirtualRoutingServer()
119 k := u.Key("hello")
120
121 t.Log("async'ly announce infinite stream of providers for key")