From 69cd693b3384fe32f91397b582f157eafe28e602 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 | 8 ++++++-- 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, 12 insertions(+), 7 deletions(-) diff --git a/filestore/filestore.go b/filestore/filestore.go index 4438a8b1d..26042ebae 100644 --- a/filestore/filestore.go +++ b/filestore/filestore.go @@ -65,8 +65,12 @@ 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 len(pattern) == 0 { + pattern = "fstmp" + } + 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 0daaea580..98c77087b 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(), "pattern") defer func() { err := store.Delete(file.Path()) require.NoError(t, err) diff --git a/filestore/types.go b/filestore/types.go index 230237671..156bb81c0 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 c0a0f8512..796f132c3 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 bb8835d80..3a4c86550 100644 --- a/storagemarket/impl/provider.go +++ b/storagemarket/impl/provider.go @@ -291,7 +291,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 433666e38..e38420786 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, filestore.Path, error) { - metadataFile, err := fileStore.CreateTemp() + metadataFile, err := fileStore.CreateTemp(payloadCid.String()) if err != nil { return cid.Cid{}, "", err }