|
0 / 0 / 0
Регистрация: 10.06.2019
Сообщений: 3
|
|
Асинхронные Http запросы10.06.2019, 13:19. Показов 2758. Ответов 8
Привет. Стоит задача: сделать асинхронный нагрузочный тест для сервера.
Что есть сейчас. 1) Набор тестовых классов, каждый тест отправляет на сервер запрос и получает ответ. 2) Есть класс Юзер, который умеет случайно выбирать количество тестов, которые он должен провести, а также случайно выбирать проводимые тесты. 3) Класс с методом main. Теперь подробнее. В тестовых классах происходит следующее. 1) Создается JSON объект, в который помещаются данные, как общие для всех тестов (url, login и password для доступа к серверу), так и специфические для каждого из тестов, некоторые из которых генерируются на основе уже выполненных тестов. 2) Этот JSON объект отправляется серверу. 3) Принимается ответ от сервера, который также помещается в JSON объект. 4) Данные из этого ответа либо выводятся (например, что тест пройден успешно), либо, если они нужны для каких-то других тестов, помещаются в переменные. Класс Юзер. 1) Сначала запускает первый тест (условная инициализация юзера на сервере). 2) Выбирает количество тестов, которые надо провести, от 20 до 50. 3) Выбираются случайно тесты для запуска. Учитывается иерархия (например, тест на проверку подписи нельзя запускать до того, как будет выполнен тест на создание подписи, т.к. это бессмысленно). 4) Когда нужное количество тестов выполнено, запускает финальный тест - условное удаление пользователя с сервера. Наконец, main. Main должен создавать юзеров, которые делают запросы на сервер в рамках поведения своего класса, количество юзеров и потоков может быть N, и все это должно происходить асинхронно. И на этом моменте я запоролся) Я пытался разобраться в HttpClient, который был введен в JDK11 официально, и который включает в себя async функционал по умолчанию, но не смог понять, как применить его именно к моей ситуации. То есть отправка и получение JSON объектов методом POST, для разных объектов класса User, и все это асинхронно. Может, эта штука и не подходит (HttpClient), и делать следует через HttpConnection, но, как я понял, HttpClient удобнее и понятней пользователю. Но не уверен. Помогите, пожалуйста, реализовать данный функционал. Спасибо.
0
|
|
| 10.06.2019, 13:19 | |
|
Ответы с готовыми решениями:
8
Как обрабатывать HTTP запросы на сервере? Асинхронные запросы Асинхронные запросы |
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
| 10.06.2019, 13:26 | |
|
может взять нормальное готовое решение, и не городить свой велосипед? jmeter например
0
|
|
|
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
|
||
| 10.06.2019, 13:34 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 10.06.2019
Сообщений: 3
|
|
| 10.06.2019, 13:55 [ТС] | |
|
xoraxax
Я пытался в нем разобраться - тоже не понял. Да, Java такой язык, где 99% всего, что можно, уже написано. Бери и используй. Но я начинающий, у меня нет навыка разбираться в чужом коде или фреймворках. Нормального объяснения, "разжевывающего" этот jmeter, я не нашел ни на русском, ни на английском, к сожалению. korvin Добавлено через 1 минуту В идеале да. Но у меня нет доступа к коду сервера, я не могу создать на нем условия под каждый конкретный тест, поэтому приходится вот так вот извращаться) сорри, не понял, как процитировать сообщение, чтобы нормально ответить. Добавлено через 17 минут Ну и плюс у меня задание - с нуля написать) Так что мне не засчитают jmeter, если я буду его использовать
0
|
|
|
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
|
||
| 10.06.2019, 16:29 | ||
|
0
|
||
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
| 10.06.2019, 17:32 | |
|
0
|
|
|
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
|
||
| 10.06.2019, 17:41 | ||
|
Непонятно в таком случае, зачем разделять сценарий, описанный в «Класс Юзер» на несколько отдельных тестов.
0
|
||
|
0 / 0 / 0
Регистрация: 10.06.2019
Сообщений: 3
|
|||||||
| 11.06.2019, 06:29 [ТС] | |||||||
|
Да, забыл еще добавить, все тестовые классы экстендят абстрактный класс abstractRESTAPITest, который как раз вызывает http-соединение. Сейчас оно работает синхронно через httpURLConnection, а надо в асинхронный вариант переделать. Возможно, там достаточно всего лишь видоизменить то, что есть, и не городить HttpClient. Извините, что сразу написал не так - соединение не main осуществляет, а этот абстрактный класс. А main может запускать юзеров многопоточно. Вот этот abstractRESTAPITest class
0
|
|||||||
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
| 11.06.2019, 08:11 | |
|
описываешь сценарий для одного пользователя
описываешь Runnable, который выполняет этот сценарий создаёшь неуклонное количество экземпляров отдаешь в executor service
0
|
|
| 11.06.2019, 08:11 | |
|
Помогаю со студенческими работами здесь
9
Асинхронные запросы в php
асинхронные запросы (одновременное выполнение) Асинхронные запросы или сокеты? Асинхронные запросы из ASP.NET Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|