Skip to content

Commit 9d9c513

Browse files
committed
Fix: S3 GW list multipart uploads ordering
1 parent 7e54aae commit 9d9c513

12 files changed

Lines changed: 929 additions & 292 deletions

File tree

esti/commit_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ type Upload struct {
5353
Repo, Branch, Path string
5454
}
5555

56-
// upload uploads random file data for uploads.
57-
func upload(ctx context.Context, uploads chan Upload) error {
56+
// uploadRandomData uploads random file data for uploads.
57+
func uploadRandomData(ctx context.Context, uploads chan Upload) error {
5858
for u := range uploads {
5959
_, _, err := UploadFileRandomDataAndReport(ctx, u.Repo, u.Branch, u.Path, false, nil)
6060
if err != nil {
@@ -78,7 +78,7 @@ func TestCommitInMixedOrder(t *testing.T) {
7878
for i := 0; i < parallelism; i++ {
7979
wg.Add(1)
8080
go func() {
81-
if err := upload(ctx, uploads); err != nil {
81+
if err := uploadRandomData(ctx, uploads); err != nil {
8282
t.Error(err)
8383
}
8484
wg.Done()
@@ -107,7 +107,7 @@ func TestCommitInMixedOrder(t *testing.T) {
107107
for i := 0; i < parallelism; i++ {
108108
wg.Add(1)
109109
go func() {
110-
if err := upload(ctx, uploads); err != nil {
110+
if err := uploadRandomData(ctx, uploads); err != nil {
111111
t.Error(err)
112112
}
113113
wg.Done()

esti/multipart_test.go

Lines changed: 7 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,8 @@ func TestMultipartUpload(t *testing.T) {
3636
defer tearDownTest(repo)
3737
file := "multipart_file"
3838
path := mainBranch + "/" + file
39-
input := &s3.CreateMultipartUploadInput{
40-
Bucket: aws.String(repo),
41-
Key: aws.String(path),
42-
}
4339

44-
resp, err := svc.CreateMultipartUpload(ctx, input)
45-
require.NoError(t, err, "failed to create multipart upload")
40+
resp := createMultipartHelper(ctx, t, svc, repo, path)
4641
logger.Info("Created multipart upload request")
4742

4843
parts := make([][]byte, multipartNumberOfParts)
@@ -101,30 +96,20 @@ func TestMultipartUploadAbort(t *testing.T) {
10196

10297
t.Run("exists", func(t *testing.T) {
10398
const objPath = mainBranch + "/multipart_file1"
104-
createInput := &s3.CreateMultipartUploadInput{
105-
Bucket: aws.String(repo),
106-
Key: aws.String(objPath),
107-
}
108-
createResp, err := svc.CreateMultipartUpload(ctx, createInput)
109-
require.NoError(t, err, "CreateMultipartUpload")
99+
createResp := createMultipartHelper(ctx, t, svc, repo, objPath)
110100

111101
abortInput := &s3.AbortMultipartUploadInput{
112102
Bucket: aws.String(repo),
113103
Key: aws.String(objPath),
114104
UploadId: createResp.UploadId,
115105
}
116-
_, err = svc.AbortMultipartUpload(ctx, abortInput)
106+
_, err := svc.AbortMultipartUpload(ctx, abortInput)
117107
require.NoError(t, err, "AbortMultipartUpload")
118108
})
119109

120110
t.Run("unknown_upload_id", func(t *testing.T) {
121111
const objPath = mainBranch + "/multipart_file2"
122-
createInput := &s3.CreateMultipartUploadInput{
123-
Bucket: aws.String(repo),
124-
Key: aws.String(objPath),
125-
}
126-
createResp, err := svc.CreateMultipartUpload(ctx, createInput)
127-
require.NoError(t, err, "CreateMultipartUpload")
112+
createResp := createMultipartHelper(ctx, t, svc, repo, objPath)
128113

129114
uploadID := aws.ToString(createResp.UploadId)
130115
// reverse the upload id to get valid unknown upload id
@@ -135,25 +120,20 @@ func TestMultipartUploadAbort(t *testing.T) {
135120
Key: aws.String(objPath),
136121
UploadId: aws.String(unknownUploadID),
137122
}
138-
_, err = svc.AbortMultipartUpload(ctx, abortInput)
123+
_, err := svc.AbortMultipartUpload(ctx, abortInput)
139124
require.Error(t, err, "AbortMultipartUpload should fail with unknown upload id")
140125
})
141126

142127
t.Run("unknown_key", func(t *testing.T) {
143128
const objPath = mainBranch + "/multipart_file3"
144-
createInput := &s3.CreateMultipartUploadInput{
145-
Bucket: aws.String(repo),
146-
Key: aws.String(objPath),
147-
}
148-
createResp, err := svc.CreateMultipartUpload(ctx, createInput)
149-
require.NoError(t, err, "CreateMultipartUpload")
129+
createResp := createMultipartHelper(ctx, t, svc, repo, objPath)
150130

151131
abortInput := &s3.AbortMultipartUploadInput{
152132
Bucket: aws.String(repo),
153133
Key: aws.String(mainBranch + "/unknown_file"),
154134
UploadId: createResp.UploadId,
155135
}
156-
_, err = svc.AbortMultipartUpload(ctx, abortInput)
136+
_, err := svc.AbortMultipartUpload(ctx, abortInput)
157137
require.Error(t, err, "AbortMultipartUpload should fail with unknown key")
158138
})
159139
}

0 commit comments

Comments
 (0)