forked from byorty/mgun
-
Notifications
You must be signed in to change notification settings - Fork 0
/
example.config.yaml
94 lines (75 loc) · 4.76 KB
/
example.config.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# кол-во конкуретных сессий пользователей, необязательный параметр, по умолчанию 1
concurrency: 1000
# кол-во повторений сценария, необязательный параметр, по умолчанию 1
loopCount: 10
# время ожидания ответа от сервера, необязательный параметр, по умолчанию 2 секунды
timeout: 5
# сетевой протокол http или https, необязательный параметр, по умолчанию http
scheme: https
# доменное имя хоста или IP-адрес, обязательный параметр
host: example.com
# порт хоста для подключения, необязательный параметр, по умолчанию 80
port: 8080
# переменные могут быть использованы в заголовке, переменной запроса
params:
# обычные переменные выбираются для каждого запроса и никак не взаимосвязаны
search:
# если значением является перечисление, тогда в запрос подставится одно из значений перечесления
languages: [php, java, c++, c, go, golang, js]
structures: [for, while, class, if, else, case]
agent:
- Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.101 Safari/537.36 FirePHP/4Chrome
- Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36
- Mozilla/5.0 (compatible; MSIE 10.6; Windows NT 6.1; Trident/5.0; InfoPath.2; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727) 3gpp-gba UNTRUSTED/1.0
- Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0
say: hello world
# группа сессионных переменых(login, password, friendIds) будет использована для всех запросов конкурентной сессии
session:
- login: user1
password: password1
friendIds: [1, 2, 3, 4]
- login: user2
password: password2
friendIds: [5, 6, 7, 8]
# глобальные заголовки, которые будут вставлены в каждый запрос сценария, необязательный параметр
headers:
Content-Type: text/html; charset=utf-8
User-Agent: ${agent}
X-Key-1: Value-1
# последовательность запросов, которые необходимо выполнить, необязательный параметр, если запросы не указаны, то программа выполнит GET запрос на главную страницу
requests:
# GET|POST|PUT|DELETE: /path?query - стандартные запросы
- GET: /index
- POST: /signin
# необязательные POST параметры
params:
login: ${session.login}
password: ${session.password}
# время ожидания ответа от сервера этого запроса, необязательный параметр, по умолчанию будет использован глобальный таймаут
timeout: 10
- GET: /profile
# заголовки этого запроса, необязательный параметр
headers:
# перезапишет значение глобального заголовка на локальное
X-Key-1: New-Value-1
X-Key-2: Value-2
# RANDOM|SYNC - группы запросов
# RANDOM - в этой группе запросы выполнятся в поизвольном порядке произвольное количество раз(какой то запрос может выполнится несколько раз, а какой то не выполнится вообще)
- RANDOM:
- GET: /some/path?query=1
- GET: /some/path/2?query=12
- POST: /some/path/save
params:
friend_id: ${session.friendIds}
say: ${say}
# to send raw json body you have to specify request's raw_body in params AND set content-type headers to application/json
- POST: /json/data/receiver
params:
raw_body: |
{"token":"ololo","key_id":"trololo"}
headers:
Content-type: application/json
# SYNC - в этой группе выполнятся все запросы в том порядке, в котором заданы. SYNC может находится как внутри RANDOM, так и во вне ее
- SYNC:
- GET: /some/path?query=2
- GET: /some/path/3?query=123