Пример использования модуля xk6-tarantool для системы нагрузочного тестирования k6.
Для того, чтобы использовать данный пример, убедитесь, что у вас установлены:
- Соберите приложение Tarantool Cartridge:
cd cars
cartridge pack --use-docker rpm --version 1.0.0
-
В файле
/ansible/hosts.yml
укажите путь до полученного пакета в переменнойcartridge_package_path
. -
Поднимите виртуальное окружение и дождитесь настройки виртуальных машин:
vagrant up
- Разверните кластер Tarantool Cartridge:
ansible-playbook -i ansible/hosts.yml ansible/playbook.yml
После завершения развертки кластер настроен и готов к работе. Перейдите по адресу http://localhost:8181 и убедитесь, что Ваш кластер настроен так, как на изображении:
- Разверните средства мониторинга Grafana + InfluxDB:
docker-compose up -d
Перейдите по адресу http://localhost:3000 и убедитесь, что Ваш дашборд настроен так, как на изображении:
- Склонируйте репозиторий
xk6
для сборкиk6
с расширениями:
git clone https://github.com/k6io/xk6.git
cd xk6
- Соберите исполняемый файл:
CGO_ENABLED=1 go run ./cmd/xk6/main.go build master \
--with github.com/hackfeed/xk6-tarantool \
--with github.com/hackfeed/xk6-tarantool-example/modules/xk6-datagen=$(pwd)/../xk6-tarantool-example/modules/xk6-datagen
-
При необходимости, внесите коррективы в сценарий тестирования
/scenarios/test.js
. Подробнее о написании сценариев смотрите в документации -
Запустите тестирование:
./k6 run --out influxdb=http://localhost:8086/k6 ../xk6-tarantool-example/scenarios/test_scenarios_extended.js
/\ |‾‾| /‾‾/ /‾‾/
/\ / \ | |/ / / /
/ \/ \ | ( / ‾‾\
/ \ | |\ \ | (‾) |
/ __________ \ |__| \__\ \_____/ .io
execution: local
script: ../xk6-tarantool-example/scenarios/test_scenarios_extended.js
output: InfluxDBv1 (http://localhost:8086)
scenarios: (100.00%) 2 scenarios, 200 max VUs, 40s max duration (incl. graceful stop):
* conn1test: 10000.00 iterations/s for 10s (maxVUs: 100, exec: conn1test, gracefulStop: 30s)
* conn2test: 10000.00 iterations/s for 10s (maxVUs: 100, exec: conn2test, gracefulStop: 30s)
INFO[0000] Run data generation in the background source=console
WARN[0000] Insufficient VUs, reached 100 active VUs and cannot initialize more executor=constant-arrival-rate scenario=conn1test
WARN[0000] Insufficient VUs, reached 100 active VUs and cannot initialize more executor=constant-arrival-rate scenario=conn2test
INFO[0010] Testing complete source=console
running (10.0s), 000/200 VUs, 96483 complete and 0 interrupted iterations
conn1test ✓ [======================================] 100/100 VUs 10s 10000 iters/s
conn2test ✓ [======================================] 100/100 VUs 10s 10000 iters/s
✓ is status OK
█ setup
█ teardown
✓ checks...............: 100.00% ✓ 96483 ✗ 0
data_received........: 0 B 0 B/s
data_sent............: 0 B 0 B/s
dropped_iterations...: 103517 10318.42/s
✓ iteration_duration...: avg=19.48ms min=66.97µs med=16.02ms max=207.6ms p(90)=33ms p(95)=44.53ms
iterations...........: 96483 9617.281382/s
vus..................: 200 min=200 max=200
vus_max..............: 200 min=200 max=200