Skip to content

Commit b7462c6

Browse files
cjc25tritone
andauthored
chore(storage): Add retry tests for appends. (#12096)
* chore(storage): Add retry tests for appends. Some append retry tests were lost. Re-add them, and increase the size of the objects in the append tests to exercise more interesting message flows. * test higher emulator timeout * revert increased timeout --------- Co-authored-by: Chris Cotter <[email protected]>
1 parent eaafb1b commit b7462c6

File tree

2 files changed

+42
-10
lines changed

2 files changed

+42
-10
lines changed

storage/internal/test/conformance/retry_tests.json

+30-2
Original file line numberDiff line numberDiff line change
@@ -288,10 +288,10 @@
288288
"description": "appendable_handle_retries_after_first_response",
289289
"cases": [
290290
{
291-
"instructions": ["return-503-after-2048K"]
291+
"instructions": ["return-503-after-4097K"]
292292
},
293293
{
294-
"instructions": ["return-503-after-2048K", "return-408"]
294+
"instructions": ["return-503-after-4097K", "return-408"]
295295
}
296296
],
297297
"methods": [
@@ -330,6 +330,34 @@
330330
],
331331
"preconditionProvided": true,
332332
"expectSuccess": false
333+
},
334+
{
335+
"id": 12,
336+
"description": "appendable_retry_with_redirect_token",
337+
"cases": [
338+
{
339+
"instructions": ["redirect-send-token-abc", "redirect-expect-token-abc"]
340+
}
341+
],
342+
"methods": [
343+
{"name": "storage.objects.insert", "group": "storage.appendable.upload", "resources": []}
344+
],
345+
"preconditionProvided": false,
346+
"expectSuccess": true
347+
},
348+
{
349+
"id": 13,
350+
"description": "appendable_retry_with_handle_and_redirect_token",
351+
"cases": [
352+
{
353+
"instructions": ["redirect-send-handle-and-token-abc", "redirect-expect-token-abc"]
354+
}
355+
],
356+
"methods": [
357+
{"name": "storage.objects.insert", "group": "storage.appendable.upload", "resources": []}
358+
],
359+
"preconditionProvided": false,
360+
"expectSuccess": true
333361
}
334362
]
335363
}

storage/retry_conformance_test.go

+12-8
Original file line numberDiff line numberDiff line change
@@ -643,11 +643,13 @@ var methods = map[string][]retryFunc{
643643
}
644644

645645
objW := obj.NewWriter(ctx)
646-
objW.ChunkSize = MiB
646+
// Force multiple messages per chunk, and multiple chunks in the object.
647+
objW.ChunkSize = 2 * maxPerMessageWriteSize
648+
toWrite := generateRandomBytes(objW.ChunkSize * 2)
647649
objW.Append = true
648650
objW.FinalizeOnClose = true
649651

650-
if _, err := objW.Write(randomBytes3MiB); err != nil {
652+
if _, err := objW.Write(toWrite); err != nil {
651653
return fmt.Errorf("Writer.Write: %v", err)
652654
}
653655
if err := objW.Close(); err != nil {
@@ -666,10 +668,10 @@ var methods = map[string][]retryFunc{
666668
}
667669

668670
gotMd5 := md5.Sum(content)
669-
expectedMd5 := md5.Sum(randomBytes3MiB)
671+
expectedMd5 := md5.Sum(toWrite)
670672
if d := cmp.Diff(gotMd5, expectedMd5); d != "" {
671673
return fmt.Errorf("content mismatch, got %v bytes (md5: %v), want %v bytes (md5: %v)",
672-
len(content), gotMd5, len(randomBytes3MiB), expectedMd5)
674+
len(content), gotMd5, len(toWrite), expectedMd5)
673675
}
674676
return nil
675677
},
@@ -688,10 +690,12 @@ var methods = map[string][]retryFunc{
688690
}
689691

690692
objW := obj.NewWriter(ctx)
693+
// Force multiple messages per chunk, and multiple chunks in the object.
694+
objW.ChunkSize = 2 * maxPerMessageWriteSize
695+
toWrite := generateRandomBytes(objW.ChunkSize * 2)
691696
objW.Append = true
692-
objW.ChunkSize = MiB
693697

694-
if _, err := objW.Write(randomBytes3MiB); err != nil {
698+
if _, err := objW.Write(toWrite); err != nil {
695699
return fmt.Errorf("Writer.Write: %w", err)
696700
}
697701
if _, err := objW.Flush(); err != nil {
@@ -715,10 +719,10 @@ var methods = map[string][]retryFunc{
715719
}
716720

717721
gotMd5 := md5.Sum(content)
718-
expectedMd5 := md5.Sum(randomBytes3MiB)
722+
expectedMd5 := md5.Sum(toWrite)
719723
if d := cmp.Diff(gotMd5, expectedMd5); d != "" {
720724
return fmt.Errorf("content mismatch, got %v bytes (md5: %v), want %v bytes (md5: %v)",
721-
len(content), gotMd5, len(randomBytes3MiB), expectedMd5)
725+
len(content), gotMd5, len(toWrite), expectedMd5)
722726
}
723727
return nil
724728
},

0 commit comments

Comments
 (0)