| | |
| | | import ( |
| | | "archive/tar" |
| | | "bytes" |
| | | "fmt" |
| | | "net/http" |
| | | "net/http/httptest" |
| | | "os" |
| | | "path/filepath" |
| | | "strconv" |
| | | "strings" |
| | | "testing" |
| | | ) |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | func TestDownloadFileResumesExistingPartialFile(t *testing.T) { |
| | | payload := []byte("0123456789abcdefghijklmnopqrstuvwxyz") |
| | | |
| | | server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { |
| | | rangeHeader := r.Header.Get("Range") |
| | | start := 0 |
| | | if strings.HasPrefix(rangeHeader, "bytes=") && strings.HasSuffix(rangeHeader, "-") { |
| | | parsed, err := strconv.Atoi(strings.TrimSuffix(strings.TrimPrefix(rangeHeader, "bytes="), "-")) |
| | | if err == nil { |
| | | start = parsed |
| | | } |
| | | } |
| | | if start > len(payload) { |
| | | w.WriteHeader(http.StatusRequestedRangeNotSatisfiable) |
| | | return |
| | | } |
| | | if start > 0 { |
| | | w.Header().Set("Content-Range", fmt.Sprintf("bytes %d-%d/%d", start, len(payload)-1, len(payload))) |
| | | w.Header().Set("Content-Length", strconv.Itoa(len(payload)-start)) |
| | | w.WriteHeader(http.StatusPartialContent) |
| | | w.Write(payload[start:]) |
| | | return |
| | | } |
| | | |
| | | w.Header().Set("Content-Length", strconv.Itoa(len(payload))) |
| | | w.WriteHeader(http.StatusOK) |
| | | w.Write(payload) |
| | | })) |
| | | defer server.Close() |
| | | |
| | | dest := filepath.Join(t.TempDir(), "model_package") |
| | | if err := os.WriteFile(dest, payload[:10], 0644); err != nil { |
| | | t.Fatal(err) |
| | | } |
| | | if err := downloadFile(server.URL, dest, nil); err != nil { |
| | | t.Fatal(err) |
| | | } |
| | | data, err := os.ReadFile(dest) |
| | | if err != nil { |
| | | t.Fatal(err) |
| | | } |
| | | if !bytes.Equal(data, payload) { |
| | | t.Fatalf("downloaded payload = %q, want %q", string(data), string(payload)) |
| | | } |
| | | } |
| | | |
| | | func createValidSenseVoice(t *testing.T, dir string) { |
| | | t.Helper() |
| | | if err := os.MkdirAll(dir, 0755); err != nil { |