gitlab.com/SkynetLabs/skyd@v1.6.9/skymodules/renter/tus_test.go (about) 1 package renter 2 3 import ( 4 "bytes" 5 "context" 6 "testing" 7 "time" 8 9 "github.com/tus/tusd/pkg/handler" 10 "gitlab.com/NebulousLabs/fastrand" 11 "go.sia.tech/siad/modules" 12 ) 13 14 // TestWriteChunkSetLastWrite is a unit test that confirms lastWrite is updated 15 // correctly on uploads. 16 func TestWriteChunkSetLastWrite(t *testing.T) { 17 if testing.Short() { 18 t.SkipNow() 19 } 20 t.Parallel() 21 22 wt, err := newWorkerTester(t.Name()) 23 if err != nil { 24 t.Fatal(err) 25 } 26 defer func() { 27 if err := wt.Close(); err != nil { 28 t.Fatal(err) 29 } 30 }() 31 r := wt.rt.renter 32 tu := r.staticSkynetTUSUploader 33 34 // Small upload. 35 info := handler.FileInfo{ 36 MetaData: make(handler.MetaData), 37 Size: 1, 38 } 39 upload, err := tu.NewUpload(context.Background(), info) 40 if err != nil { 41 t.Fatal(err) 42 } 43 stu := upload.(*ongoingTUSUpload) 44 imu := stu.staticUpload.(*skynetInMemoryUpload) 45 if imu.lastWrite.IsZero() { 46 t.Fatal("lastWrite wasn't initialized") 47 } 48 start := time.Now() 49 n, err := upload.WriteChunk(context.Background(), 0, bytes.NewReader(fastrand.Bytes(int(info.Size)))) 50 if err != nil { 51 t.Fatal(err) 52 } 53 if n != info.Size { 54 t.Fatal("wrong n", n) 55 } 56 if start.After(imu.lastWrite) { 57 t.Fatal("last write wasn't updated", start, imu.lastWrite) 58 } 59 60 // Large upload. 61 info = handler.FileInfo{ 62 MetaData: make(handler.MetaData), 63 Size: int64(modules.SectorSize) + 1, 64 } 65 upload, err = tu.NewUpload(context.Background(), info) 66 if err != nil { 67 t.Fatal(err) 68 } 69 stu = upload.(*ongoingTUSUpload) 70 imu = stu.staticUpload.(*skynetInMemoryUpload) 71 if imu.lastWrite.IsZero() { 72 t.Fatal("lastWrite wasn't initialized") 73 } 74 start = time.Now() 75 n, err = upload.WriteChunk(context.Background(), 0, bytes.NewReader(fastrand.Bytes(int(info.Size)))) 76 if err != nil { 77 t.Fatal(err) 78 } 79 if n != info.Size { 80 t.Fatal("wrong n", n) 81 } 82 if start.After(imu.lastWrite) { 83 t.Fatal("last write wasn't updated", start, imu.lastWrite) 84 } 85 }