Test Retrieval
This commit is contained in:
parent
c7cf20843e
commit
68d1fd5958
@ -226,12 +226,14 @@ type QueryOffer struct {
|
|||||||
MinerPeerID peer.ID
|
MinerPeerID peer.ID
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *QueryOffer) Order() RetrievalOrder {
|
func (o *QueryOffer) Order(client address.Address) RetrievalOrder {
|
||||||
return RetrievalOrder{
|
return RetrievalOrder{
|
||||||
Root: o.Root,
|
Root: o.Root,
|
||||||
Size: o.Size,
|
Size: o.Size,
|
||||||
Total: o.MinPrice,
|
Total: o.MinPrice,
|
||||||
|
|
||||||
|
Client: client,
|
||||||
|
|
||||||
Miner: o.Miner,
|
Miner: o.Miner,
|
||||||
MinerPeerID: o.MinerPeerID,
|
MinerPeerID: o.MinerPeerID,
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,14 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -40,7 +43,8 @@ func TestDealFlow(t *testing.T, b APIBuilder) {
|
|||||||
}
|
}
|
||||||
time.Sleep(time.Second)
|
time.Sleep(time.Second)
|
||||||
|
|
||||||
r := io.LimitReader(rand.New(rand.NewSource(17)), 1000)
|
data, _ := ioutil.ReadAll(io.LimitReader(rand.New(rand.NewSource(5)), 1000))
|
||||||
|
r := bytes.NewReader(data)
|
||||||
fcid, err := client.ClientImportLocal(ctx, r)
|
fcid, err := client.ClientImportLocal(ctx, r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
@ -94,6 +98,42 @@ loop:
|
|||||||
time.Sleep(time.Second / 2)
|
time.Sleep(time.Second / 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Retrieval
|
||||||
|
|
||||||
|
offers, err := client.ClientFindData(ctx, fcid)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(offers) < 1 {
|
||||||
|
t.Fatal("no offers")
|
||||||
|
}
|
||||||
|
|
||||||
|
rpath, err := ioutil.TempDir("", "lotus-retrieve-test-")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
defer os.RemoveAll(rpath)
|
||||||
|
|
||||||
|
caddr, err := client.WalletDefaultAddress(ctx)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = client.ClientRetrieve(ctx, offers[0].Order(caddr), filepath.Join(rpath, "ret"))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("%+v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
rdata, err := ioutil.ReadFile(filepath.Join(rpath, "ret"))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !bytes.Equal(rdata, data) {
|
||||||
|
t.Fatal("wrong data retrieved")
|
||||||
|
}
|
||||||
|
|
||||||
mine = false
|
mine = false
|
||||||
fmt.Println("shutting down mining")
|
fmt.Println("shutting down mining")
|
||||||
<-done
|
<-done
|
||||||
|
@ -234,10 +234,8 @@ var clientRetrieveCmd = &cli.Command{
|
|||||||
fmt.Println("Failed to find file")
|
fmt.Println("Failed to find file")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
order := offers[0].Order()
|
|
||||||
order.Client = payer
|
|
||||||
|
|
||||||
if err := api.ClientRetrieve(ctx, order, cctx.Args().Get(1)); err != nil {
|
if err := api.ClientRetrieve(ctx, offers[0].Order(payer), cctx.Args().Get(1)); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -227,7 +227,7 @@ func builder(t *testing.T, nFull int, storage []int) ([]test.TestNode, []test.Te
|
|||||||
CacheDir: filepath.Join(psd, "cache"),
|
CacheDir: filepath.Join(psd, "cache"),
|
||||||
StagedDir: filepath.Join(psd, "staging"),
|
StagedDir: filepath.Join(psd, "staging"),
|
||||||
SealedDir: filepath.Join(psd, "sealed"),
|
SealedDir: filepath.Join(psd, "sealed"),
|
||||||
MetadataDir: filepath.Join(psd, "meta"),
|
UnsealedDir: filepath.Join(psd, "unsealed"),
|
||||||
}, mds)
|
}, mds)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
|
@ -5,6 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/ipfs/go-cid"
|
"github.com/ipfs/go-cid"
|
||||||
|
"golang.org/x/xerrors"
|
||||||
|
|
||||||
"github.com/filecoin-project/lotus/chain/actors"
|
"github.com/filecoin-project/lotus/chain/actors"
|
||||||
"github.com/filecoin-project/lotus/chain/address"
|
"github.com/filecoin-project/lotus/chain/address"
|
||||||
@ -37,7 +38,7 @@ func (pm *Manager) createPaych(ctx context.Context, from, to address.Address, am
|
|||||||
|
|
||||||
smsg, err := pm.mpool.MpoolPushMessage(ctx, msg)
|
smsg, err := pm.mpool.MpoolPushMessage(ctx, msg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return address.Undef, cid.Undef, err
|
return address.Undef, cid.Undef, xerrors.Errorf("initializing paych actor: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
mcid := smsg.Cid()
|
mcid := smsg.Cid()
|
||||||
@ -46,7 +47,7 @@ func (pm *Manager) createPaych(ctx context.Context, from, to address.Address, am
|
|||||||
// (tricky because we need to setup channel tracking before we know it's address)
|
// (tricky because we need to setup channel tracking before we know it's address)
|
||||||
mwait, err := pm.state.StateWaitMsg(ctx, mcid)
|
mwait, err := pm.state.StateWaitMsg(ctx, mcid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return address.Undef, cid.Undef, err
|
return address.Undef, cid.Undef, xerrors.Errorf("wait msg: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if mwait.Receipt.ExitCode != 0 {
|
if mwait.Receipt.ExitCode != 0 {
|
||||||
@ -60,11 +61,11 @@ func (pm *Manager) createPaych(ctx context.Context, from, to address.Address, am
|
|||||||
|
|
||||||
ci, err := pm.loadOutboundChannelInfo(ctx, paychaddr)
|
ci, err := pm.loadOutboundChannelInfo(ctx, paychaddr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return address.Undef, cid.Undef, err
|
return address.Undef, cid.Undef, xerrors.Errorf("loading channel info: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := pm.store.trackChannel(ci); err != nil {
|
if err := pm.store.trackChannel(ci); err != nil {
|
||||||
return address.Undef, cid.Undef, err
|
return address.Undef, cid.Undef, xerrors.Errorf("tracking channel: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return paychaddr, mcid, nil
|
return paychaddr, mcid, nil
|
||||||
@ -108,7 +109,7 @@ func (pm *Manager) GetPaych(ctx context.Context, from, to address.Address, ensur
|
|||||||
return ci.Control == from && ci.Target == to
|
return ci.Control == from && ci.Target == to
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return address.Undef, cid.Undef, err
|
return address.Undef, cid.Undef, xerrors.Errorf("findChan: %w", err)
|
||||||
}
|
}
|
||||||
if ch != address.Undef {
|
if ch != address.Undef {
|
||||||
// TODO: Track available funds
|
// TODO: Track available funds
|
||||||
|
Loading…
Reference in New Issue
Block a user