gitlab.com/SiaPrime/SiaPrime@v1.4.1/modules/renter/siafile/metadata_test.go (about) 1 package siafile 2 3 import ( 4 "fmt" 5 "math" 6 "os" 7 "path/filepath" 8 9 "gitlab.com/NebulousLabs/errors" 10 "gitlab.com/NebulousLabs/fastrand" 11 "gitlab.com/SiaPrime/SiaPrime/modules" 12 "gitlab.com/SiaPrime/writeaheadlog" 13 ) 14 15 // createLinkedBlankSiafile creates 2 SiaFiles which use the same SiaFile to 16 // store combined chunks. They reside within 'dir'. 17 func createLinkedBlankSiafiles(dir string) (*SiaFile, *SiaFile, error) { 18 // Create a wal. 19 walFilePath := filepath.Join(dir, "writeaheadlog.wal") 20 _, wal, err := writeaheadlog.New(walFilePath) 21 if err != nil { 22 return nil, nil, err 23 } 24 // Get parameters for the files. 25 _, _, source, rc, sk, fileSize, numChunks, fileMode := newTestFileParams(1, true) 26 // Create a SiaFile for partial chunks. 27 var partialsSiaFile *SiaFile 28 partialsSiaPath := modules.CombinedSiaFilePath(rc) 29 partialsSiaFilePath := partialsSiaPath.SiaPartialsFileSysPath(dir) 30 if _, err = os.Stat(partialsSiaFilePath); os.IsNotExist(err) { 31 partialsSiaFile, err = New(partialsSiaFilePath, "", wal, rc, sk, 0, fileMode, nil, false) 32 } else { 33 partialsSiaFile, err = LoadSiaFile(partialsSiaFilePath, wal) 34 } 35 if err != nil { 36 return nil, nil, fmt.Errorf("failed to load partialsSiaFile: %v", err) 37 } 38 partialsEntry := &SiaFileSetEntry{ 39 dummyEntry(partialsSiaFile), 40 uint64(fastrand.Intn(math.MaxInt32)), 41 } 42 // Create the files. 43 sf1Path := filepath.Join(dir, "sf1"+modules.SiaFileExtension) 44 sf2Path := filepath.Join(dir, "sf2"+modules.SiaFileExtension) 45 sf1, err := New(sf1Path, source, wal, rc, sk, fileSize, fileMode, partialsEntry, false) 46 if err != nil { 47 return nil, nil, err 48 } 49 sf2, err := New(sf2Path, source, wal, rc, sk, fileSize, fileMode, partialsEntry, false) 50 if err != nil { 51 return nil, nil, err 52 } 53 // Check that the number of chunks in the files are correct. 54 if numChunks >= 0 && sf1.numChunks != numChunks { 55 return nil, nil, errors.New("createLinkedBlankSiafiles didn't create the expected number of chunks") 56 } 57 if numChunks >= 0 && sf2.numChunks != numChunks { 58 return nil, nil, errors.New("createLinkedBlankSiafiles didn't create the expected number of chunks") 59 } 60 if partialsSiaFile.numChunks != 0 { 61 return nil, nil, errors.New("createLinkedBlankSiafiles didn't create an empty partialsSiaFile") 62 } 63 return sf1, sf2, nil 64 }