Использую NanoHTTPD для тестов в Spring для замены внешнего сервиса. Собственно вся его работа заключается в том чтоб отдавать один и тот же файл ответа на любой запрос (json с типовым ответом реального сервера).
И вот собственно в этом месте ловлю крайне странную проблему - на каждый 4-ый (вообще может меняться, иногда третий, иногда пятый) запрос NanoHTTPD отвечает 400, при том что в его конфигурации понятие Bad Request должно отсутствовать от слова вообще. И что еще веселее - это происходит на 6 запросах, которые в момент обращения к NanoHTTPD абсолютно идентичны и идут в произвольном порядке (авторизация на контроллере проверяется разными способами, Nano тут вообще ни каким боком). Остальные 5 запросов пролетают нормально.
Видел что это добро народ часто юзает на ведроидах и тоже периодически ловил такой косяк (решения так и не нашел), потому добавляю ведроид в теги на всякий. Кто-нибудь сталкивался?
Конфигурация NanoHTTPD:
public Response serve (IHTTPSession session) {
Resource res = new ClassPathResource("MockResponse.json");
try {
return newChunkedResponse(Status.OK, "application/json", res.getInputStream());
} catch (IOException ex) {
ex.printStackTrace();
return newFixedLengthResponse(Status.INTERNAL_ERROR, "", "");
}
}
p.s. эксепшн не вываливается. все запросы кроме одного всегда проходят ок. один рандомный запрос всегда падает.
p.p.s. ну или насоветуйте что еще можно юзать. суть - во время integration теста должен подниматься на определенном порту тупой как пробка http-сервер, который будет гордо отсылать содержимое указанного файла на любой запрос (get/post, uri - пофиг). желательно что-то максимально легкое и тупое.
Эх, ладно, «долой изврат» сказал капитан и откопал стюардессу. Перешел на Jetty.