| 238 | } |
| 239 | |
| 240 | func TestBadResponse(t *testing.T) { |
| 241 | g := gomega.NewGomegaWithT(t) |
| 242 | |
| 243 | predictorRequest := []byte(`{"instances":[[0,0,0]]}`) |
| 244 | predictorResponse := "BadRequest\n" |
| 245 | |
| 246 | // Start a local HTTP server |
| 247 | predictor := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) { |
| 248 | b, err := io.ReadAll(req.Body) |
| 249 | g.Expect(err).ToNot(gomega.HaveOccurred()) |
| 250 | g.Expect(b).To(gomega.Equal(predictorRequest)) |
| 251 | http.Error(rw, "BadRequest", http.StatusBadRequest) |
| 252 | })) |
| 253 | // Close the server when test finishes |
| 254 | defer predictor.Close() |
| 255 | |
| 256 | reader := bytes.NewReader(predictorRequest) |
| 257 | r := httptest.NewRequest(http.MethodPost, "http://a", reader) |
| 258 | w := httptest.NewRecorder() |
| 259 | logger, _ := pkglogging.NewLogger("", "INFO") |
| 260 | pkgtest.SetupTestLogger() |
| 261 | logSvcUrl, err := url.Parse("http://loggersvc") |
| 262 | g.Expect(err).ToNot(gomega.HaveOccurred()) |
| 263 | sourceUri, err := url.Parse("http://localhost:9081/") |
| 264 | g.Expect(err).ToNot(gomega.HaveOccurred()) |
| 265 | targetUri, err := url.Parse(predictor.URL) |
| 266 | g.Expect(err).ToNot(gomega.HaveOccurred()) |
| 267 | |
| 268 | StartDispatcher(1, &MockStore{}, &ImmediateBatch{}, logger) |
| 269 | httpProxy := httputil.NewSingleHostReverseProxy(targetUri) |
| 270 | oh := New(logSvcUrl, sourceUri, v1beta1.LogAll, "mymodel", "default", "default", |
| 271 | "default", httpProxy, nil, "", nil, true) |
| 272 | |
| 273 | oh.ServeHTTP(w, r) |
| 274 | g.Expect(w.Code).To(gomega.Equal(400)) |
| 275 | g.Expect(w.Body.String()).To(gomega.Equal(predictorResponse)) |
| 276 | } |
| 277 | |
| 278 | func TestLoggerWithS3Store(t *testing.T) { |
| 279 | g := gomega.NewGomegaWithT(t) |