(t *testing.T)
| 265 | } |
| 266 | |
| 267 | func 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 |
| 324 | func TestHttpGetter_resumeNoRange(t *testing.T) { |
nothing calls this directly
no test coverage detected