• Stars
    star
    100
  • Rank 330,744 (Top 7 %)
  • Language
    Go
  • Created almost 7 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Tester (correctness/benchmark) for mail.ru's highloadcup solutions

highloadcup_tester

Простой http клиент, который может выполнять тестирование решения для mail.ru'шного HighLoad Cup как на корректность ответов (статус и тело), так и "нагрузочно".

Для запуска теста нужно иметь локально склонированную репу github.com/sat2707/hlcupdocs, или хотя бы ее кусок /hlcupdocs/data/{TRAIN,FULL}/.

Для второго капа (2018 год) нужны архивы с патронами по ссылкам вида https://highloadcup.ru/media/condition/test_accounts_141218.zip (из раздела "Тестовые данные" тут https://highloadcup.ru/ru/round/3/).

После распаковки запускать ./highloadcup_tester -hlcupdocs path/to/unpacked/zip/, чтобы существовали пути path/to/unpacked/zip/{ammo,answers}.

Сборка

go get -u github.com/atercattus/highloadcup_tester

либо:

cd $GOPATH
git clone https://github.com/atercattus/highloadcup_tester.git
cd highloadcup_tester
go get && CGO_ENABLED=0 go build -ldflags '-s -extldflags "-static"' -installsuffix netgo

Проверка корректности:

Для примера фаза 1, каждый запрос выполняется по одному разу.

./highloadcup_tester -addr http://127.0.0.1:8081 -hlcupdocs /path/to/hlcupdocs/FULL/ -test -phase 1

Для работы тестилки должны быть доступны (по FULL/data/{locations,users,visits}_*.json строится data.zip для самого тестируемого решения):

/path/to/hlcupdocs/FULL/ammo/phase_*_*.ammo
/path/to/hlcupdocs/FULL/answers/phase_*_*.answ

Проверяются:

  • Статус ответа
  • Тело ответа с его анализом. Не тупо строковое сравнение двух json, а все типы, значения, порядок в массивах, точность float... Если в ответах коррректно получать null, то нужно запускать тестер с флажком -allow-nulls.

Полный прогон всех трех фаз:

for p in {1..3}; do
    ./highloadcup_tester -addr http://127.0.0.1:8081 -hlcupdocs /path/to/hlcupdocs/FULL/ -test -phase $p
 done

Еще можно (но не нужно) потестить решение под нагрузкой:

Для примера 2 потока в течение 30 секунд будут долбиться в сервер. Все ответы при этом так же собираются и анализируются в конце

./highloadcup_tester -addr http://127.0.0.1:8081 -hlcupdocs /path/to/hlcupdocs/FULL/ -concurrent 2 -time 30s -phase 3

P.S. Написано левой пяткой, могут быть баги и неточности, но мне сильно помогло :)

P.P.S. Если он жрет больше проца, чем тестируемое решение, то вам не показалось :)

More Repositories

1

php-decorators

The implementation of decorators in PHP
C
38
star
2

fennec-tiny

Stripped down implementation of fennec lib
Go
34
star
3

bicycle-mrhlc

Мое решение для mail.ru'шного HighLoad Cup 2017
Go
26
star
4

go-static-link-example

Example (for memory) build static golang example binary with static C++ library (*.go + (*.cpp -> *.a) -> static binary)
Go
23
star
5

luaghetti

Spaghetti html+lua code templater inside nginx
Lua
20
star
6

estrela

Lua web framework for nginx
Lua
17
star
7

js-asteroids

Asteroids game on javascript
HTML
11
star
8

golangconf19_examples

Примеры для GolangConf 2019
Go
9
star
9

heif2png

Wrapper around heif2hevc+ffmpeg for creating png/jpg images from *.heif/*.heic
Go
8
star
10

gophercon_code

Примеры кода для выступления на GopherCon Russia
Go
8
star
11

pycpuinfo

6
star
12

gonetz

Experiment. Do NOT use it in prod please :)
Go
6
star
13

mailru_highloadcup_go2018

Код для https://go2018.highloadcup.ru/contest/1/
Go
5
star
14

go_perf_meetup

Lua
4
star
15

heif2hevc

Extract bitstreams (master + all tiles) from .heic files
C++
4
star
16

my_old_projects

My old desktop projects (2004-2007) (asm , C/C++, Delphi, VB)
Visual Basic
1
star
17

adventofcode2022

https://adventofcode.com/2022
Go
1
star
18

changeloger

Generate CHANGELOG.md
Go
1
star
19

SimpleSQLT

Simple SQL query templater for PHP
PHP
1
star
20

LudumDare43

My game for Ludum Dare 43 (https://ldjam.com/events/ludum-dare/43)
Lua
1
star
21

unifiedphp

Unified by names and parameters PHP functions (C ext)
C
1
star
22

dedup

Experiments with massive file deduplications
Go
1
star