@@ -3251,36 +3251,40 @@ func TestIntegration_WriterAppendTakeover(t *testing.T) {
32513251 name string
32523252 content []byte
32533253 takeoverOffset int64
3254+ takeoverFlushOffset int64
32543255 opts * AppendableWriterOpts
32553256 checkProgressOffsets []int64
32563257 }{
32573258 {
3258- name : "first message takeover" ,
3259+ name : "first message takeover w/large flush " ,
32593260 content : randomBytes9MiB ,
32603261 takeoverOffset : MiB ,
32613262 opts : nil ,
32623263 },
32633264 {
3264- name : "first chunk takeover, progressfunc" ,
3265- content : randomBytes9MiB ,
3266- takeoverOffset : 3 * MiB ,
3265+ name : "first chunk takeover, progressfunc, larger flush" ,
3266+ content : randomBytes9MiB ,
3267+ takeoverOffset : 3 * MiB ,
3268+ takeoverFlushOffset : 8 * MiB ,
32673269 opts : & AppendableWriterOpts {
32683270 ChunkSize : 4 * MiB ,
32693271 },
3270- checkProgressOffsets : []int64 {7 * MiB },
3272+ checkProgressOffsets : []int64 {7 * MiB , 8 * MiB },
32713273 },
32723274 {
3273- name : "middle chunk takeover" ,
3274- content : randomBytes9MiB ,
3275- takeoverOffset : 6 * MiB ,
3275+ name : "middle chunk takeover, small flush" ,
3276+ content : randomBytes9MiB ,
3277+ takeoverOffset : 6 * MiB ,
3278+ takeoverFlushOffset : 6 * MiB + 100 ,
32763279 opts : & AppendableWriterOpts {
32773280 ChunkSize : 4 * MiB ,
32783281 },
32793282 },
32803283 {
3281- name : "final chunk takeover" ,
3282- content : randomBytes9MiB ,
3283- takeoverOffset : 8 * MiB + 100 ,
3284+ name : "final chunk takeover, zero byte flush" ,
3285+ content : randomBytes9MiB ,
3286+ takeoverOffset : 8 * MiB + 100 ,
3287+ takeoverFlushOffset : 8 * MiB + 100 ,
32843288 opts : & AppendableWriterOpts {
32853289 ChunkSize : 4 * MiB ,
32863290 },
@@ -3373,8 +3377,23 @@ func TestIntegration_WriterAppendTakeover(t *testing.T) {
33733377 t .Errorf ("Writer.ProgressFunc: got non-nil, want nil" )
33743378 }
33753379
3380+ remainingOffset := tc .takeoverOffset
3381+ if tc .takeoverFlushOffset != 0 {
3382+ if _ , err := w2 .Write (tc .content [remainingOffset :tc .takeoverFlushOffset ]); err != nil {
3383+ t .Fatalf ("writing after takeover: %v" , err )
3384+ }
3385+ remainingOffset = tc .takeoverFlushOffset
3386+ n , err := w2 .Flush ()
3387+ if err != nil {
3388+ t .Fatalf ("Writer.Flush: %v" , err )
3389+ }
3390+ if n != remainingOffset {
3391+ t .Errorf ("Writer.Flush: got %v bytes flushed, want %v" , n , remainingOffset )
3392+ }
3393+ }
3394+
33763395 // Write remainder of the content and close.
3377- h .mustWrite (w2 , tc .content [tc . takeoverOffset :])
3396+ h .mustWrite (w2 , tc .content [remainingOffset :])
33783397
33793398 // Download content again and validate.
33803399 // Disabled due to b/395944605; unskip after this is resolved.
0 commit comments