ffiwrapper: Test lower-level GenerateSDR
This commit is contained in:
parent
d71d647aaf
commit
b0b39424e4
@ -688,7 +688,7 @@ func (sb *Sealer) ReadPiece(ctx context.Context, writer io.Writer, sector storif
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (sb *Sealer) RegenerateSectorKey(ctx context.Context, sector storiface.SectorRef, ticket abi.SealRandomness, pieces []abi.PieceInfo) error {
|
func (sb *Sealer) RegenerateSectorKey(ctx context.Context, sector storiface.SectorRef, ticket abi.SealRandomness, pieces []abi.PieceInfo) error {
|
||||||
paths, done, err := sb.sectors.AcquireSector(ctx, sector, storiface.FTUnsealed|storiface.FTCache, storiface.FTSealed, storiface.PathSealing)
|
paths, done, err := sb.sectors.AcquireSector(ctx, sector, storiface.FTCache, storiface.FTSealed, storiface.PathSealing)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return xerrors.Errorf("acquiring sector paths: %w", err)
|
return xerrors.Errorf("acquiring sector paths: %w", err)
|
||||||
}
|
}
|
||||||
@ -715,16 +715,12 @@ func (sb *Sealer) RegenerateSectorKey(ctx context.Context, sector storiface.Sect
|
|||||||
return xerrors.Errorf("aggregated piece sizes don't match sector size: %d != %d (%d)", sum, ussize, int64(ussize-sum))
|
return xerrors.Errorf("aggregated piece sizes don't match sector size: %d != %d (%d)", sum, ussize, int64(ussize-sum))
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: context cancellation respect
|
panic("todo")
|
||||||
_, err = ffi.SealPreCommitPhase1(
|
|
||||||
|
err = ffi.GenerateSDR(
|
||||||
sector.ProofType,
|
sector.ProofType,
|
||||||
paths.Cache,
|
paths.Cache,
|
||||||
paths.Unsealed,
|
[32]byte{},
|
||||||
paths.Sealed,
|
|
||||||
sector.ID.Number,
|
|
||||||
sector.ID.Miner,
|
|
||||||
ticket,
|
|
||||||
pieces,
|
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return xerrors.Errorf("presealing sector %d (%s): %w", sector.ID.Number, paths.Unsealed, err)
|
return xerrors.Errorf("presealing sector %d (%s): %w", sector.ID.Number, paths.Unsealed, err)
|
||||||
|
@ -5,6 +5,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"io/fs"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
@ -22,6 +23,7 @@ import (
|
|||||||
ffi "github.com/filecoin-project/filecoin-ffi"
|
ffi "github.com/filecoin-project/filecoin-ffi"
|
||||||
"github.com/filecoin-project/filecoin-ffi/cgo"
|
"github.com/filecoin-project/filecoin-ffi/cgo"
|
||||||
commpffi "github.com/filecoin-project/go-commp-utils/ffiwrapper"
|
commpffi "github.com/filecoin-project/go-commp-utils/ffiwrapper"
|
||||||
|
commcid "github.com/filecoin-project/go-fil-commcid"
|
||||||
"github.com/filecoin-project/go-paramfetch"
|
"github.com/filecoin-project/go-paramfetch"
|
||||||
"github.com/filecoin-project/go-state-types/abi"
|
"github.com/filecoin-project/go-state-types/abi"
|
||||||
prooftypes "github.com/filecoin-project/go-state-types/proof"
|
prooftypes "github.com/filecoin-project/go-state-types/proof"
|
||||||
@ -1103,3 +1105,66 @@ func (c *closeAssertReader) Close() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var _ io.Closer = &closeAssertReader{}
|
var _ io.Closer = &closeAssertReader{}
|
||||||
|
|
||||||
|
func TestGenerateSDR(t *testing.T) {
|
||||||
|
d := t.TempDir()
|
||||||
|
|
||||||
|
miner := abi.ActorID(123)
|
||||||
|
|
||||||
|
sp := &basicfs.Provider{
|
||||||
|
Root: d,
|
||||||
|
}
|
||||||
|
sb, err := New(sp)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
si := storiface.SectorRef{
|
||||||
|
ID: abi.SectorID{Miner: miner, Number: 1},
|
||||||
|
ProofType: sealProofType,
|
||||||
|
}
|
||||||
|
|
||||||
|
s := seal{ref: si}
|
||||||
|
|
||||||
|
sz := abi.PaddedPieceSize(sectorSize).Unpadded()
|
||||||
|
|
||||||
|
s.pi, err = sb.AddPiece(context.TODO(), si, []abi.UnpaddedPieceSize{}, sz, nullreader.NewNullReader(sz))
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
s.ticket = sealRand
|
||||||
|
|
||||||
|
_, err = sb.SealPreCommit1(context.TODO(), si, s.ticket, []abi.PieceInfo{s.pi})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
// sdr for comparasion
|
||||||
|
|
||||||
|
sdrCache := filepath.Join(d, "sdrcache")
|
||||||
|
|
||||||
|
commd, err := commcid.CIDToDataCommitmentV1(s.pi.PieceCID)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
replicaID, err := sealProofType.ReplicaId(si.ID.Miner, si.ID.Number, s.ticket, commd)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
err = ffi.GenerateSDR(sealProofType, sdrCache, replicaID)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
// list files in d recursively, for debug
|
||||||
|
|
||||||
|
require.NoError(t, filepath.Walk(d, func(path string, info fs.FileInfo, err error) error {
|
||||||
|
fmt.Println(path)
|
||||||
|
return nil
|
||||||
|
}))
|
||||||
|
|
||||||
|
// compare
|
||||||
|
lastLayerFile := "sc-02-data-layer-2.dat"
|
||||||
|
|
||||||
|
sdrFile := filepath.Join(sdrCache, lastLayerFile)
|
||||||
|
pc1File := filepath.Join(d, "cache/s-t0123-1/", lastLayerFile)
|
||||||
|
|
||||||
|
sdrData, err := os.ReadFile(sdrFile)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
pc1Data, err := os.ReadFile(pc1File)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.Equal(t, sdrData, pc1Data)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user