From 49a0bdfa46c9d23b9bdc2d745891463ae000a010 Mon Sep 17 00:00:00 2001 From: frrist Date: Wed, 21 Jul 2021 14:30:33 -0700 Subject: [PATCH] feat(FileStore): CreateTemp accepts pattern used for file name - closes #583 --- filestore/filestore.go | 9 +++++++-- filestore/filestore_test.go | 3 ++- filestore/types.go | 2 +- shared_testutil/test_filestore.go | 2 +- storagemarket/impl/provider.go | 2 +- storagemarket/impl/providerutils/providerutils.go | 2 +- 6 files changed, 13 insertions(+), 7 deletions(-) diff --git a/filestore/filestore.go b/filestore/filestore.go index 4438a8b1..746f9c1f 100644 --- a/filestore/filestore.go +++ b/filestore/filestore.go @@ -65,8 +65,13 @@ func (fs fileStore) Delete(p Path) error { return os.Remove(full) } -func (fs fileStore) CreateTemp() (File, error) { - f, err := ioutil.TempFile(fs.base, "fstmp") +func (fs fileStore) CreateTemp(pattern string) (File, error) { + if pattern == "" { + pattern = "fstmp" + } else { + pattern = fmt.Sprintf("fstmp_%s", pattern) + } + f, err := ioutil.TempFile(fs.base, pattern) if err != nil { return nil, err } diff --git a/filestore/filestore_test.go b/filestore/filestore_test.go index 0daaea58..f49c0c3a 100644 --- a/filestore/filestore_test.go +++ b/filestore/filestore_test.go @@ -133,8 +133,9 @@ func Test_CreateFile(t *testing.T) { func Test_CreateTempFile(t *testing.T) { store, err := NewLocalFileStore(baseDir) require.NoError(t, err) - file, err := store.CreateTemp() + file, err := store.CreateTemp("pattern") require.NoError(t, err) + require.Contains(t, file.Path(), "fstmp_pattern") defer func() { err := store.Delete(file.Path()) require.NoError(t, err) diff --git a/filestore/types.go b/filestore/types.go index 23023767..156bb81c 100644 --- a/filestore/types.go +++ b/filestore/types.go @@ -32,5 +32,5 @@ type FileStore interface { Store(p Path, f File) (Path, error) Delete(p Path) error - CreateTemp() (File, error) + CreateTemp(pattern string) (File, error) } diff --git a/shared_testutil/test_filestore.go b/shared_testutil/test_filestore.go index c0a0f851..796f132c 100644 --- a/shared_testutil/test_filestore.go +++ b/shared_testutil/test_filestore.go @@ -98,7 +98,7 @@ func (fs *TestFileStore) Delete(p filestore.Path) error { } // CreateTemp will create a temporary file from the provided set of temporary files -func (fs *TestFileStore) CreateTemp() (filestore.File, error) { +func (fs *TestFileStore) CreateTemp(pattern string) (filestore.File, error) { if len(fs.availableTempFiles) == 0 { return nil, TestErrTempFile } diff --git a/storagemarket/impl/provider.go b/storagemarket/impl/provider.go index 388b91bd..4e44a38c 100644 --- a/storagemarket/impl/provider.go +++ b/storagemarket/impl/provider.go @@ -293,7 +293,7 @@ func (p *Provider) ImportDataForDeal(ctx context.Context, propCid cid.Cid, data return xerrors.Errorf("failed getting deal %s: %w", propCid, err) } - tempfi, err := p.fs.CreateTemp() + tempfi, err := p.fs.CreateTemp(propCid.String()) if err != nil { return xerrors.Errorf("failed to create temp file for data import: %w", err) } diff --git a/storagemarket/impl/providerutils/providerutils.go b/storagemarket/impl/providerutils/providerutils.go index 902f419b..859a1564 100644 --- a/storagemarket/impl/providerutils/providerutils.go +++ b/storagemarket/impl/providerutils/providerutils.go @@ -86,7 +86,7 @@ func GeneratePieceCommitmentWithMetadata( payloadCid cid.Cid, selector ipld.Node, storeID *multistore.StoreID) (cid.Cid, abi.UnpaddedPieceSize, filestore.Path, error) { - metadataFile, err := fileStore.CreateTemp() + metadataFile, err := fileStore.CreateTemp(payloadCid.String()) if err != nil { return cid.Cid{}, 0, "", err }