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 {
|
||||
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 {
|
||||
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))
|
||||
}
|
||||
|
||||
// TODO: context cancellation respect
|
||||
_, err = ffi.SealPreCommitPhase1(
|
||||
panic("todo")
|
||||
|
||||
err = ffi.GenerateSDR(
|
||||
sector.ProofType,
|
||||
paths.Cache,
|
||||
paths.Unsealed,
|
||||
paths.Sealed,
|
||||
sector.ID.Number,
|
||||
sector.ID.Miner,
|
||||
ticket,
|
||||
pieces,
|
||||
[32]byte{},
|
||||
)
|
||||
if err != nil {
|
||||
return xerrors.Errorf("presealing sector %d (%s): %w", sector.ID.Number, paths.Unsealed, err)
|
||||
|
@ -5,6 +5,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/fs"
|
||||
"math/rand"
|
||||
"os"
|
||||
"path/filepath"
|
||||
@ -22,6 +23,7 @@ import (
|
||||
ffi "github.com/filecoin-project/filecoin-ffi"
|
||||
"github.com/filecoin-project/filecoin-ffi/cgo"
|
||||
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-state-types/abi"
|
||||
prooftypes "github.com/filecoin-project/go-state-types/proof"
|
||||
@ -1103,3 +1105,66 @@ func (c *closeAssertReader) Close() error {
|
||||
}
|
||||
|
||||
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