forked from TrueCloudLab/distribution
Merge pull request #2920 from dmathieu/blob_writer_offset
Append the written bytes to the blob writer's size
This commit is contained in:
commit
6c329e56a2
2 changed files with 90 additions and 2 deletions
|
@ -64,8 +64,8 @@ func (hbu *httpBlobUpload) ReadFrom(r io.Reader) (n int64, err error) {
|
||||||
return 0, fmt.Errorf("bad range format: %s", rng)
|
return 0, fmt.Errorf("bad range format: %s", rng)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hbu.offset += end - start + 1
|
||||||
return (end - start + 1), nil
|
return (end - start + 1), nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (hbu *httpBlobUpload) Write(p []byte) (n int, err error) {
|
func (hbu *httpBlobUpload) Write(p []byte) (n int, err error) {
|
||||||
|
@ -99,8 +99,8 @@ func (hbu *httpBlobUpload) Write(p []byte) (n int, err error) {
|
||||||
return 0, fmt.Errorf("bad range format: %s", rng)
|
return 0, fmt.Errorf("bad range format: %s", rng)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hbu.offset += int64(end - start + 1)
|
||||||
return (end - start + 1), nil
|
return (end - start + 1), nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (hbu *httpBlobUpload) Size() int64 {
|
func (hbu *httpBlobUpload) Size() int64 {
|
||||||
|
|
|
@ -209,3 +209,91 @@ func TestUploadReadFrom(t *testing.T) {
|
||||||
t.Fatalf("Unexpected response status: %s, expected %s", uploadErr.Status, expected)
|
t.Fatalf("Unexpected response status: %s, expected %s", uploadErr.Status, expected)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUploadSize(t *testing.T) {
|
||||||
|
_, b := newRandomBlob(64)
|
||||||
|
readFromLocationPath := "/v2/test/upload/readfrom/uploads/testid"
|
||||||
|
writeLocationPath := "/v2/test/upload/readfrom/uploads/testid"
|
||||||
|
|
||||||
|
m := testutil.RequestResponseMap([]testutil.RequestResponseMapping{
|
||||||
|
{
|
||||||
|
Request: testutil.Request{
|
||||||
|
Method: "GET",
|
||||||
|
Route: "/v2/",
|
||||||
|
},
|
||||||
|
Response: testutil.Response{
|
||||||
|
StatusCode: http.StatusOK,
|
||||||
|
Headers: http.Header(map[string][]string{
|
||||||
|
"Docker-Distribution-API-Version": {"registry/2.0"},
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Request: testutil.Request{
|
||||||
|
Method: "PATCH",
|
||||||
|
Route: readFromLocationPath,
|
||||||
|
Body: b,
|
||||||
|
},
|
||||||
|
Response: testutil.Response{
|
||||||
|
StatusCode: http.StatusAccepted,
|
||||||
|
Headers: http.Header(map[string][]string{
|
||||||
|
"Docker-Upload-UUID": {"46603072-7a1b-4b41-98f9-fd8a7da89f9b"},
|
||||||
|
"Location": {readFromLocationPath},
|
||||||
|
"Range": {"0-63"},
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Request: testutil.Request{
|
||||||
|
Method: "PATCH",
|
||||||
|
Route: writeLocationPath,
|
||||||
|
Body: b,
|
||||||
|
},
|
||||||
|
Response: testutil.Response{
|
||||||
|
StatusCode: http.StatusAccepted,
|
||||||
|
Headers: http.Header(map[string][]string{
|
||||||
|
"Docker-Upload-UUID": {"46603072-7a1b-4b41-98f9-fd8a7da89f9b"},
|
||||||
|
"Location": {writeLocationPath},
|
||||||
|
"Range": {"0-63"},
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
e, c := testServer(m)
|
||||||
|
defer c()
|
||||||
|
|
||||||
|
// Writing with ReadFrom
|
||||||
|
blobUpload := &httpBlobUpload{
|
||||||
|
client: &http.Client{},
|
||||||
|
location: e + readFromLocationPath,
|
||||||
|
}
|
||||||
|
|
||||||
|
if blobUpload.Size() != 0 {
|
||||||
|
t.Fatalf("Wrong size returned from Size: %d, expected 0", blobUpload.Size())
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := blobUpload.ReadFrom(bytes.NewReader(b))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Error calling ReadFrom: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if blobUpload.Size() != 64 {
|
||||||
|
t.Fatalf("Wrong size returned from Size: %d, expected 64", blobUpload.Size())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Writing with Write
|
||||||
|
blobUpload = &httpBlobUpload{
|
||||||
|
client: &http.Client{},
|
||||||
|
location: e + writeLocationPath,
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = blobUpload.Write(b)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Error calling Write: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if blobUpload.Size() != 64 {
|
||||||
|
t.Fatalf("Wrong size returned from Size: %d, expected 64", blobUpload.Size())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue