package bitswap import ( "context" bsnet "gitlab.dms3.io/dms3/go-bitswap/network" ds "gitlab.dms3.io/dms3/go-datastore" mockrouting "gitlab.dms3.io/dms3/go-dms3-routing/mock" "gitlab.dms3.io/p2p/go-p2p-core/peer" tnet "gitlab.dms3.io/p2p/go-p2p-testing/net" mockpeernet "gitlab.dms3.io/p2p/go-p2p/p2p/net/mock" ) type peernet struct { mockpeernet.Mocknet routingserver mockrouting.Server } // StreamNet is a testnet that uses p2p's MockNet func StreamNet(ctx context.Context, net mockpeernet.Mocknet, rs mockrouting.Server) (Network, error) { return &peernet{net, rs}, nil } func (pn *peernet) Adapter(p tnet.Identity, opts ...bsnet.NetOpt) bsnet.BitSwapNetwork { client, err := pn.Mocknet.AddPeer(p.PrivateKey(), p.Address()) if err != nil { panic(err.Error()) } routing := pn.routingserver.ClientWithDatastore(context.TODO(), p, ds.NewMapDatastore()) return bsnet.NewFromDms3Host(client, routing, opts...) } func (pn *peernet) HasPeer(p peer.ID) bool { for _, member := range pn.Mocknet.Peers() { if p == member { return true } } return false } var _ Network = (*peernet)(nil)