Skip to content

Commit 2e581e1

Browse files
committed
Добавил еще один тестовый скрипт для сервера.
Добавил тестовый скрипт - клиент. Обновил README.md
1 parent 8f638e6 commit 2e581e1

3 files changed

Lines changed: 41 additions & 8 deletions

File tree

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,8 @@
3535
- `index.lua` - Исполняется. Отдает html разметку с именем файла и ссылкой на второй файл `dump-headers.lua`
3636
- `dump-headers.lua` - Исполняется. Отдает разметку таблицы заголовков запроса `http`
3737
- `getfile.lua` - С аргументом `name` позволяет загрузить файл.
38+
- `payload.lua` - Файл генерирует полезную нагрузку в 1ГБ для демонстрации паралельной обработки запросов.
39+
- `test.html` - Содержит набор символов для симуляции полезной нагрузки.
40+
- `test_client.lua` - Создает определенное колличество одновременных соединений с сервером и выводит результаты быстродействия.
3841

39-
*обязательные файлы
42+
*обязательные файлы

getfile.lua

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
1-
local base = [[<!DOCTYPE html>
1+
local base_head = [[<!DOCTYPE html>
22
<html lang='ru'><!-- Noncompliant -->
33
<head>
44
<title>File not found</title>
55
<meta content="text/html; charset=utf-8" />
66
</head>
7-
<body>
8-
%s
9-
</body>
10-
</html>]]
7+
<body>]]
118

129
local file = io.open(request.args.name, "rb")
1310
if file then
11+
local data_lenghth = file:seek ("end")
1412
response.headers["Content-Type"] = "application/octet-stream"
1513
response.headers["Content-Disposition"] = "attachment; filename="..request.args.name
16-
io.html:write(file:read("*a"))
14+
response.headers["Content-Length"] = tostring (data_lenghth)
15+
send_response(response)
16+
17+
file:seek("set")
18+
for l in file:lines(1024) do
19+
coroutine.yield(l)
20+
end
1721
else
18-
io.html:write(base:format("<p>File ".. request.args.name .." not found</p>"))
22+
send_response(response)
23+
coroutine.yield(base_head)
24+
coroutine.yield("<p>File ".. request.args.name .." not found</p>")
25+
coroutine.yield("</body>\n</html>")
1926
end

payload.lua

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
response.headers["Content-Type"] = "application/octet-stream"
2+
response.headers["Content-Disposition"] = "attachment; filename=payload.bin"
3+
response.headers["Content-Length"] = tostring((1024*1024*1024))
4+
send_response(response)
5+
6+
local str = "UZPPZQKDLBODEHECQVYLWNSDLSCIIIGJVYZRMONZFTVDUGJVDOFVQUQRMZFYWQHDNC\
7+
GALMGERPTEWTQIGCKCPSSAQCHGJQJGZSMTSUKFZCOKJAQUQUUHSCQLMNLRMSUFLVMBGHUCSUMENBTHT\
8+
UIEBKLKHDLBKBAYWDRTAJJEDMJDWMDKXHGDYEOHIPTHYQYMRLIUGFAZUKBKDHPKYLDWIGHJEQJVZJQB\
9+
LVBPIDQVMSUIXORGDTLABKSOBQWMGFRQDTTBJAQXXVZXTHHNBWYSIGUKNWPLCZVUDOVLBQMAJSRXWWB\
10+
YFJYDGZACDPOKVYDBZCQMKVZPTDZIIHDNUUMZARVWGGYQUJKHEBSNXZDTSGGOAYCDCIZGOJYZWEDZVT\
11+
PNUKFANUSDTCTKQCVYKWLVAASNTIVVXNPWDKJHIINACJCSYJOYVNRBMDMHONDHNSAAMFZNXMGXVTZKO\
12+
XIDZONGSKGJLPLQBFUIRLEANFMOOMLGWMWRAPMYFREDHNNUBVRKWJDZXXOHPVLRQBJHBYJAUBPNRZHW\
13+
JLRMNYIEEZKTOBFBQIOXIYSXTFQCBJVBYSYXEFPSUICDTMWLMTHVEUFVOSZFBBSDZBMNCCNTIZTYGTL\
14+
XTBEFGMPXLVSDCRIFFIXXSLWXPTWJIPKVLEOBZETBDFZBUSUKPFNPHCGFHHVXETSDUESLIDPVDZAWCU\
15+
MOYPKSCJHFIYMTRURIMDBSLPJLSDEEEISOXUDXUZXNWOGLFWSXOMCQNOBWGWHOMMNYVWLHXYZIMLBYZ\
16+
MUTDMVSWPFUSLXRBJHPXVSDPWKIGNWTDXLBYYYOQEABLIHQZZITQOTLDGDXFFQZOZFSPQOWSAWKPXPE\
17+
EOKRNGSTGQRYFRMILZJJTLGEOSEWWGYDPBFYUFETWWHUYXTAPWVYWNWFGNDQBUFMLRMTXGQCRRRVPJZ\
18+
TNNJVWZYTXCDMWMOKWZEYNXRPDBSZCVTJFKAMZNGKMYPKVVHTPKIRZAUMOIMFZYYHQHWGXGXUUUEIPU\
19+
NQJZTWPWEH"
20+
21+
for i=1, (1024*1024) do
22+
coroutine.yield(str)
23+
end

0 commit comments

Comments
 (0)