Skip to content

Commit d75474d

Browse files
committed
Add tests
1 parent bf59e43 commit d75474d

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed

src/test/java/com/bakdata/kserve/client/KServeClientV2Test.java

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,93 @@ public MockResponse dispatch(@NotNull final RecordedRequest recordedRequest) {
137137
.hasMessage("Inference request failed: 400: Not Found");
138138
}
139139

140+
@Test
141+
void testFallbackDetailAsArray() {
142+
final Dispatcher dispatcher = new Dispatcher() {
143+
@NotNull
144+
@Override
145+
public MockResponse dispatch(@NotNull final RecordedRequest recordedRequest) {
146+
return new MockResponse.Builder()
147+
.code(422)
148+
.body("""
149+
{
150+
"detail": [{"loc": ["body"], "msg": "field required", "type": "value_error.missing"}]
151+
}""")
152+
.build();
153+
}
154+
};
155+
this.mockServer.getMockWebServer().setDispatcher(dispatcher);
156+
157+
final KServeClientV2<String> client = KServeClientV2.<String>builder()
158+
.serviceBaseUrl(this.mockServer.getServiceBaseUrl())
159+
.modelName("test-model")
160+
.httpClient(KServeClient.getHttpClient(Duration.ofMillis(10000)))
161+
.build();
162+
163+
final InferenceRequest<String> fakeInferenceRequest = getFakeInferenceRequest("data");
164+
this.softly.assertThatThrownBy(
165+
() -> client.makeInferenceRequest(fakeInferenceRequest, FakePrediction.class, ""))
166+
.isInstanceOf(InferenceRequestException.class)
167+
.hasMessageContaining("field required");
168+
}
169+
170+
@Test
171+
void testFallbackUnknownJsonBody() {
172+
final Dispatcher dispatcher = new Dispatcher() {
173+
@NotNull
174+
@Override
175+
public MockResponse dispatch(@NotNull final RecordedRequest recordedRequest) {
176+
return new MockResponse.Builder()
177+
.code(500)
178+
.body("""
179+
{
180+
"message": "Internal server error"
181+
}""")
182+
.build();
183+
}
184+
};
185+
this.mockServer.getMockWebServer().setDispatcher(dispatcher);
186+
187+
final KServeClientV2<String> client = KServeClientV2.<String>builder()
188+
.serviceBaseUrl(this.mockServer.getServiceBaseUrl())
189+
.modelName("test-model")
190+
.httpClient(KServeClient.getHttpClient(Duration.ofMillis(10000)))
191+
.build();
192+
193+
final InferenceRequest<String> fakeInferenceRequest = getFakeInferenceRequest("data");
194+
this.softly.assertThatThrownBy(
195+
() -> client.makeInferenceRequest(fakeInferenceRequest, FakePrediction.class, ""))
196+
.isInstanceOf(InferenceRequestException.class)
197+
.hasMessageContaining("Unknown error occurred. Raw body:");
198+
}
199+
200+
@Test
201+
void testFallbackNonJsonBody() {
202+
final Dispatcher dispatcher = new Dispatcher() {
203+
@NotNull
204+
@Override
205+
public MockResponse dispatch(@NotNull final RecordedRequest recordedRequest) {
206+
return new MockResponse.Builder()
207+
.code(503)
208+
.body("Service Unavailable")
209+
.build();
210+
}
211+
};
212+
this.mockServer.getMockWebServer().setDispatcher(dispatcher);
213+
214+
final KServeClientV2<String> client = KServeClientV2.<String>builder()
215+
.serviceBaseUrl(this.mockServer.getServiceBaseUrl())
216+
.modelName("test-model")
217+
.httpClient(KServeClient.getHttpClient(Duration.ofMillis(10000)))
218+
.build();
219+
220+
final InferenceRequest<String> fakeInferenceRequest = getFakeInferenceRequest("data");
221+
this.softly.assertThatThrownBy(
222+
() -> client.makeInferenceRequest(fakeInferenceRequest, FakePrediction.class, ""))
223+
.isInstanceOf(InferenceRequestException.class)
224+
.hasMessageContaining("Service Unavailable");
225+
}
226+
140227
@Test
141228
void testRetry() throws IOException {
142229
this.mockServer.setUpForRetryTest();

0 commit comments

Comments
 (0)