@@ -32,6 +32,7 @@ import (
3232 "github.com/filecoin-project/specs-storage/storage"
3333
3434 ffi "github.com/filecoin-project/filecoin-ffi"
35+ "github.com/filecoin-project/filecoin-ffi/cgo"
3536
3637 "github.com/filecoin-project/lotus/chain/actors/policy"
3738 "github.com/filecoin-project/lotus/extern/sector-storage/ffiwrapper/basicfs"
@@ -868,6 +869,83 @@ func TestAddPiece512MPadded(t *testing.T) {
868869 require .Equal (t , "baga6ea4seaqonenxyku4o7hr5xkzbqsceipf6xgli3on54beqbk6k246sbooobq" , c .PieceCID .String ())
869870}
870871
872+ func setupLogger (t * testing.T ) * bytes.Buffer {
873+ _ = os .Setenv ("RUST_LOG" , "info" )
874+
875+ var bb bytes.Buffer
876+ r , w , err := os .Pipe ()
877+ if err != nil {
878+ t .Fatal (err )
879+ }
880+
881+ go func () {
882+ _ , _ = io .Copy (& bb , r )
883+ runtime .KeepAlive (w )
884+ }()
885+
886+ err = cgo .InitLogFd (int32 (w .Fd ()))
887+ require .NoError (t , err )
888+
889+ return & bb
890+ }
891+
892+ func TestMulticoreSDR (t * testing.T ) {
893+ if os .Getenv ("TEST_RUSTPROOFS_LOGS" ) != "1" {
894+ t .Skip ("skipping test without TEST_RUSTPROOFS_LOGS=1" )
895+ }
896+
897+ rustLogger := setupLogger (t )
898+
899+ getGrothParamFileAndVerifyingKeys (sectorSize )
900+
901+ dir , err := ioutil .TempDir ("" , "sbtest" )
902+ if err != nil {
903+ t .Fatal (err )
904+ }
905+
906+ miner := abi .ActorID (123 )
907+
908+ sp := & basicfs.Provider {
909+ Root : dir ,
910+ }
911+ sb , err := New (sp )
912+ if err != nil {
913+ t .Fatalf ("%+v" , err )
914+ }
915+
916+ t .Cleanup (func () {
917+ if t .Failed () {
918+ fmt .Printf ("not removing %s\n " , dir )
919+ return
920+ }
921+ if err := os .RemoveAll (dir ); err != nil {
922+ t .Error (err )
923+ }
924+ })
925+
926+ si := storage.SectorRef {
927+ ID : abi.SectorID {Miner : miner , Number : 1 },
928+ ProofType : sealProofType ,
929+ }
930+
931+ s := seal {ref : si }
932+
933+ // check multicore
934+ _ = os .Setenv ("FIL_PROOFS_USE_MULTICORE_SDR" , "1" )
935+ rustLogger .Reset ()
936+ s .precommit (t , sb , si , func () {})
937+
938+ ok := false
939+ for _ , s := range strings .Split (rustLogger .String (), "\n " ) {
940+ if strings .Contains (s , "create_label::multi" ) {
941+ ok = true
942+ break
943+ }
944+ }
945+
946+ require .True (t , ok )
947+ }
948+
871949func TestPoStChallengeAssumptions (t * testing.T ) {
872950 var r [32 ]byte
873951 rand .Read (r [:])
0 commit comments