mirror of
https://github.com/ipfs/kubo.git
synced 2025-07-15 07:58:15 +08:00
78 lines
2.3 KiB
Go
78 lines
2.3 KiB
Go
package coremock
|
|
|
|
import (
|
|
"context"
|
|
"net"
|
|
|
|
commands "github.com/ipfs/go-ipfs/commands"
|
|
core "github.com/ipfs/go-ipfs/core"
|
|
"github.com/ipfs/go-ipfs/repo"
|
|
config "github.com/ipfs/go-ipfs/repo/config"
|
|
|
|
mocknet "gx/ipfs/QmNh1kGFFdsPu79KNSaL4NUKUPb4Eiz4KHdMtFY6664RDp/go-libp2p/p2p/net/mock"
|
|
host "gx/ipfs/QmNmJZL7FQySMtE2BQuLMuZg2EB2CLEunJJUSVSc9YnnbV/go-libp2p-host"
|
|
testutil "gx/ipfs/QmVvkK7s5imCiq3JVbL3pGfnhcCnf3LrFJPF4GE2sAoGZf/go-testutil"
|
|
datastore "gx/ipfs/QmXRKBQA4wXP7xWbFiZsR1GP4HV6wMDQ1aWFxZZ4uBcPX9/go-datastore"
|
|
syncds "gx/ipfs/QmXRKBQA4wXP7xWbFiZsR1GP4HV6wMDQ1aWFxZZ4uBcPX9/go-datastore/sync"
|
|
pstore "gx/ipfs/QmXauCuJzmzapetmC6W4TuDJLL1yFFrVzSHoWv8YdbmnxH/go-libp2p-peerstore"
|
|
smux "gx/ipfs/QmY9JXR3FupnYAYJWK9aMr9bCpqWKcToQ1tz8DVGTrHpHw/go-stream-muxer"
|
|
ipnet "gx/ipfs/QmZPrWxuM8GHr4cGKbyF5CCT11sFUP9hgqpeUHALvx2nUr/go-libp2p-interface-pnet"
|
|
peer "gx/ipfs/QmZoWKhxUmZ2seW4BzX6fJkNR8hh9PsGModr7q171yq2SS/go-libp2p-peer"
|
|
metrics "gx/ipfs/QmdeBtQGXjSt7cb97nx9JyLHHv5va2LyEAue7Q5tDFzpLy/go-libp2p-metrics"
|
|
)
|
|
|
|
// NewMockNode constructs an IpfsNode for use in tests.
|
|
func NewMockNode() (*core.IpfsNode, error) {
|
|
ctx := context.Background()
|
|
|
|
// effectively offline, only peer in its network
|
|
return core.NewNode(ctx, &core.BuildCfg{
|
|
Online: true,
|
|
Host: MockHostOption(mocknet.New(ctx)),
|
|
})
|
|
}
|
|
|
|
func MockHostOption(mn mocknet.Mocknet) core.HostOption {
|
|
return func(ctx context.Context, id peer.ID, ps pstore.Peerstore, bwr metrics.Reporter, fs []*net.IPNet, _ smux.Transport, _ ipnet.Protector, _ *core.ConstructPeerHostOpts) (host.Host, error) {
|
|
return mn.AddPeerWithPeerstore(id, ps)
|
|
}
|
|
}
|
|
|
|
func MockCmdsCtx() (commands.Context, error) {
|
|
// Generate Identity
|
|
ident, err := testutil.RandIdentity()
|
|
if err != nil {
|
|
return commands.Context{}, err
|
|
}
|
|
p := ident.ID()
|
|
|
|
conf := config.Config{
|
|
Identity: config.Identity{
|
|
PeerID: p.String(),
|
|
},
|
|
}
|
|
|
|
r := &repo.Mock{
|
|
D: syncds.MutexWrap(datastore.NewMapDatastore()),
|
|
C: conf,
|
|
}
|
|
|
|
node, err := core.NewNode(context.Background(), &core.BuildCfg{
|
|
Repo: r,
|
|
})
|
|
if err != nil {
|
|
return commands.Context{}, err
|
|
}
|
|
|
|
return commands.Context{
|
|
Online: true,
|
|
ConfigRoot: "/tmp/.mockipfsconfig",
|
|
LoadConfig: func(path string) (*config.Config, error) {
|
|
return &conf, nil
|
|
},
|
|
ConstructNode: func() (*core.IpfsNode, error) {
|
|
return node, nil
|
|
},
|
|
}, nil
|
|
}
|