Как протестировать Spring Boot REST API, выполнив много одновременных вызовов? - PullRequest
0 голосов
/ 22 декабря 2019

Я думал, что это было бы довольно просто, но я не могу найти решение. Я создал REST-контроллер Spring Boot, который принимает запросы POST для загрузки файлов, которые могут быть большими по размеру. Теперь мне нужно создать интеграционный тест, который проверяет множество одновременных вызовов на этой конечной точке, чтобы убедиться, что она может справиться с нагрузкой. Мой крайний случай - это 100 одновременных вызовов с каждым вызовом, содержащим файл размером 50 МБ.

Я создал это для одного файла, и он прекрасно работает:

@Test
void parallelMultipartFileUpload() throws Exception {

    int fileNumber = 100;
    int fileSizeMb = 50;

    int fileSize = fileSizeMb * 1024 * 1024;

    MockMultipartHttpServletRequestBuilder mockMvcRequestBuilders = MockMvcRequestBuilders.multipart("/api/v1/upload");
    mockMvcRequestBuilders.header("Content-Length", fileSize);
    mockMvcRequestBuilders.file("test" + System.currentTimeMillis() + ".zip", new byte[fileSize]).contentType("multipart/form-data; boundary=Boundary");
    mockMvc.perform(mockMvcRequestBuilders).andExpect(status().isCreated());
}

Но как я могусделать 100 таких вызовов одновременно в тесте?

Я также пытался поместить запрос в цикл for, который создает отдельные потоки для каждой итерации, но тогда тест не показывает правильный результат, он всегдапроходит, хотя некоторые или все потоки могут вызывать исключение.

...