Skip to content

kyukhin/xk6-tarantool-example

Repository files navigation

xk6-tarantool-example

Пример использования модуля xk6-tarantool для системы нагрузочного тестирования k6.

Сборка

Требования

Для того, чтобы использовать данный пример, убедитесь, что у вас установлены:

Развертка окружения

  1. Соберите приложение Tarantool Cartridge:
cd cars
cartridge pack --use-docker rpm --version 1.0.0
  1. В файле /ansible/hosts.yml укажите путь до полученного пакета в переменной cartridge_package_path.

  2. Поднимите виртуальное окружение и дождитесь настройки виртуальных машин:

vagrant up
  1. Разверните кластер Tarantool Cartridge:
ansible-playbook -i ansible/hosts.yml ansible/playbook.yml

После завершения развертки кластер настроен и готов к работе. Перейдите по адресу http://localhost:8181 и убедитесь, что Ваш кластер настроен так, как на изображении:

  1. Разверните средства мониторинга Grafana + InfluxDB:
docker-compose up -d

Перейдите по адресу http://localhost:3000 и убедитесь, что Ваш дашборд настроен так, как на изображении:

  1. Склонируйте репозиторий xk6 для сборки k6 с расширениями:
git clone https://github.com/k6io/xk6.git
cd xk6
  1. Соберите исполняемый файл:
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
  1. При необходимости, внесите коррективы в сценарий тестирования /scenarios/test.js. Подробнее о написании сценариев смотрите в документации

  2. Запустите тестирование:

./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