MCPcopy
hub / github.com/hashicorp/go-getter / TestHttpGetter_resume

Function TestHttpGetter_resume

get_http_test.go:267–321  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

265}
266
267func TestHttpGetter_resume(t *testing.T) {
268 load := []byte(testHttpMetaStr)
269 sha := sha256.New()
270 if n, err := sha.Write(load); n != len(load) || err != nil {
271 t.Fatalf("sha write failed: %d, %s", n, err)
272 }
273 checksum := hex.EncodeToString(sha.Sum(nil))
274 downloadFrom := len(load) / 2
275
276 ln := testHttpServer(t)
277 defer ln.Close()
278
279 dst := testing_helper.TempDir(t)
280 defer os.RemoveAll(dst)
281
282 dst = filepath.Join(dst, "..", "range")
283 f, err := os.Create(dst)
284 if err != nil {
285 t.Fatalf("create: %v", err)
286 }
287 if n, err := f.Write(load[:downloadFrom]); n != downloadFrom || err != nil {
288 t.Fatalf("partial file write failed: %d, %s", n, err)
289 }
290 if err := f.Close(); err != nil {
291 t.Fatalf("close failed: %s", err)
292 }
293
294 u := url.URL{
295 Scheme: "http",
296 Host: ln.Addr().String(),
297 Path: "/range",
298 RawQuery: "checksum=" + checksum,
299 }
300 t.Logf("url: %s", u.String())
301 ctx := context.Background()
302
303 // Finish getting it!
304 if _, err := GetFile(ctx, dst, u.String()); err != nil {
305 t.Fatalf("finishing download should not error: %v", err)
306 }
307
308 b, err := ioutil.ReadFile(dst)
309 if err != nil {
310 t.Fatalf("readfile failed: %v", err)
311 }
312
313 if string(b) != string(load) {
314 t.Fatalf("file differs: got:\n%s\n expected:\n%s\n", string(b), string(load))
315 }
316
317 // Get it again
318 if _, err := GetFile(ctx, dst, u.String()); err != nil {
319 t.Fatalf("should not error: %v", err)
320 }
321}
322
323// The server may support Byte-Range, but has no size for the requested object
324func TestHttpGetter_resumeNoRange(t *testing.T) {

Callers

nothing calls this directly

Calls 4

testHttpServerFunction · 0.85
GetFileFunction · 0.85
CloseMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected