check / check (push) Failing after 1s
REPO_POLICIES.md requires cmd/ to be thin: one main.go whose body is a single call into internal/ or pkg/. The image, the handler, the server and their test move unchanged into internal/loadtestorigin, whose Run does what main did; cmd/loadtest-origin/main.go only calls it. Model: opus-5-5
52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
package loadtestorigin
|
|
|
|
import (
|
|
"bytes"
|
|
"image/jpeg"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
)
|
|
|
|
// TestEveryPathServesTheSameJPEG checks that the origin answers any path with
|
|
// 200 and the same JPEG, so every new path script/loadtest asks pixad for is
|
|
// a valid source image.
|
|
func TestEveryPathServesTheSameJPEG(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
photo, err := makeJPEG()
|
|
if err != nil {
|
|
t.Fatalf("makeJPEG: %v", err)
|
|
}
|
|
|
|
size, err := jpeg.DecodeConfig(bytes.NewReader(photo))
|
|
if err != nil {
|
|
t.Fatalf("the image does not decode as a JPEG: %v", err)
|
|
}
|
|
|
|
if size.Width != imageWidth || size.Height != imageHeight {
|
|
t.Errorf("the image is %dx%d, want %dx%d",
|
|
size.Width, size.Height, imageWidth, imageHeight)
|
|
}
|
|
|
|
handler := newHandler(photo)
|
|
|
|
for _, path := range []string{"/", "/miss/1.jpg", "/herd/2.jpg"} {
|
|
rec := httptest.NewRecorder()
|
|
handler.ServeHTTP(rec, httptest.NewRequestWithContext(
|
|
t.Context(), http.MethodGet, path, nil))
|
|
|
|
if rec.Code != http.StatusOK {
|
|
t.Errorf("%s: status = %d, want %d", path, rec.Code, http.StatusOK)
|
|
}
|
|
|
|
if ct := rec.Header().Get("Content-Type"); ct != "image/jpeg" {
|
|
t.Errorf("%s: Content-Type = %q, want image/jpeg", path, ct)
|
|
}
|
|
|
|
if !bytes.Equal(rec.Body.Bytes(), photo) {
|
|
t.Errorf("%s: the body is not the image", path)
|
|
}
|
|
}
|
|
}
|