Files
EventHubBack/test/tsung/eventhub_tsung.xml

223 lines
11 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd">
<tsung loglevel="notice" version="1.0">
<clients>
<client host="localhost" use_controller_vm="true" maxusers="5000"/>
</clients>
<servers>
<server host="localhost" port="8080" type="tcp"/>
</servers>
<load>
<arrivalphase phase="1" duration="3" unit="minute">
<users interarrival="0.1" unit="second"/>
</arrivalphase>
</load>
<sessions>
<session name="eventhub_user" probability="100" type="ts_http">
<setdynvars sourcetype="random_number" start="1" end="9999999">
<var name="rand_id" />
</setdynvars>
<!-- 1. Регистрация -->
<request subst="true">
<http url="/v1/register" method="POST" content_type="application/json"
contents='{"email": "loadtest_%%_rand_id%%@example.com", "password": "testpassword123"}'/>
</request>
<thinktime min="1000" max="3000" random="true"/>
<!-- 2. Логин (извлекаем токен) -->
<request subst="true">
<dyn_variable name="token" re="(?:\{|,\s*)&quot;token&quot;\s*:\s*&quot;([^&quot;]+)"/>
<http url="/v1/login" method="POST" content_type="application/json"
contents='{"email": "loadtest_%%_rand_id%%@example.com", "password": "testpassword123"}'/>
</request>
<thinktime min="2000" max="5000" random="true"/>
<!-- 3. Создание календаря (с авто‑подтверждением бронирований) -->
<request subst="true">
<dyn_variable name="calendar_id" re="(?:\{|,\s*)&quot;id&quot;\s*:\s*&quot;([^&quot;]+)"/>
<http url="/v1/calendars" method="POST" content_type="application/json"
contents='{"title": "Tsung Calendar", "confirmation": "auto"}'>
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="1000" max="3000" random="true"/>
<!-- 4. GET /v1/calendars/:id конкретный календарь -->
<request subst="true">
<http url="/v1/calendars/%%_calendar_id%%" method="GET">
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="500" max="2000" random="true"/>
<!-- 5. GET /v1/calendars/:id/view?month=2026-06 HTML-представление -->
<request subst="true">
<http url="/v1/calendars/%%_calendar_id%%/view?month=2026-06" method="GET">
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="1000" max="2000" random="true"/>
<!-- 6. Создание события -->
<request subst="true">
<dyn_variable name="event_id" re="(?:\{|,\s*)&quot;id&quot;\s*:\s*&quot;([^&quot;]+)"/>
<http url="/v1/calendars/%%_calendar_id%%/events" method="POST" content_type="application/json"
contents='{"title":"Tsung Event","start_time":"2027-01-01T10:00:00Z","duration":60}'>
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="2000" max="4000" random="true"/>
<!-- 7. GET /v1/events/:id конкретное событие -->
<request subst="true">
<http url="/v1/events/%%_event_id%%" method="GET">
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="500" max="2000" random="true"/>
<!-- 8. Запись на событие -->
<request subst="true">
<dyn_variable name="booking_id" re="(?:\{|,\s*)&quot;id&quot;\s*:\s*&quot;([^&quot;]+)"/>
<http url="/v1/events/%%_event_id%%/bookings" method="POST" content_type="application/json"
contents='{}'>
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="1000" max="2000" random="true"/>
<!-- 9. Подтверждение бронирования -->
<request subst="true">
<http url="/v1/bookings/%%_booking_id%%" method="PUT" content_type="application/json"
contents='{"action":"confirm"}'>
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="1000" max="3000" random="true"/>
<!-- 10. GET /v1/bookings/:id конкретное бронирование -->
<request subst="true">
<http url="/v1/bookings/%%_booking_id%%" method="GET">
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="500" max="2000" random="true"/>
<!-- 11. Поиск -->
<request subst="true">
<http url="/v1/search?q=Tsung" method="GET">
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="1000" max="2000" random="true"/>
<!-- 12. Оставить отзыв (захватываем review_id) -->
<request subst="true">
<dyn_variable name="review_id" re="(?:\{|,\s*)&quot;id&quot;\s*:\s*&quot;([^&quot;]+)"/>
<http url="/v1/reviews" method="POST" content_type="application/json"
contents='{"target_type":"event","target_id":"%%_event_id%%","rating":5,"comment":"Excellent!"}'>
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="1000" max="2000" random="true"/>
<!-- 13. GET /v1/reviews/:id конкретный отзыв -->
<request subst="true">
<http url="/v1/reviews/%%_review_id%%" method="GET">
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="500" max="2000" random="true"/>
<!-- 14. Пожаловаться -->
<request subst="true">
<http url="/v1/reports" method="POST" content_type="application/json"
contents='{"target_type":"event","target_id":"%%_event_id%%","reason":"Spam"}'>
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="1000" max="2000" random="true"/>
<!-- 15. Создать тикет (захватываем ticket_id) -->
<request subst="true">
<dyn_variable name="ticket_id" re="(?:\{|,\s*)&quot;id&quot;\s*:\s*&quot;([^&quot;]+)"/>
<http url="/v1/tickets" method="POST" content_type="application/json"
contents='{"error_message":"Error during load test","stacktrace":"line 42"}'>
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="1000" max="2000" random="true"/>
<!-- 16. GET /v1/tickets/:id конкретный тикет -->
<request subst="true">
<http url="/v1/tickets/%%_ticket_id%%" method="GET">
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="500" max="2000" random="true"/>
<!-- 17. Активировать подписку -->
<request subst="true">
<http url="/v1/subscription" method="POST" content_type="application/json"
contents='{"action":"start_trial"}'>
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="2000" max="5000" random="true"/>
<!-- 18. GET /v1/subscription получить подписку -->
<request subst="true">
<http url="/v1/subscription" method="GET">
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="1000" max="3000" random="true"/>
<!-- 19. GET /v1/user/me профиль -->
<request subst="true">
<http url="/v1/user/me" method="GET">
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="1000" max="2000" random="true"/>
<!-- 20. GET /v1/user/bookings свои бронирования -->
<request subst="true">
<http url="/v1/user/bookings" method="GET">
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="1000" max="2000" random="true"/>
<!-- 21. GET /v1/user/reviews свои отзывы -->
<request subst="true">
<http url="/v1/user/reviews" method="GET">
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="1000" max="2000" random="true"/>
<!-- 22. GET /v1/calendars список календарей -->
<request subst="true">
<http url="/v1/calendars" method="GET">
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="2000" max="5000" random="true"/>
<!-- 23. Обновление токена -->
<request subst="true">
<http url="/v1/refresh" method="POST" content_type="application/json"
contents='{"refresh_token":"dummy"}'>
<http_header name="Authorization" value="Bearer %%_token%%"/>
</http>
</request>
<thinktime min="1000" max="3000" random="true"/>
</session>
</sessions>
</tsung>