Load and performance benchmark tool

Overview

Yandex Tank Build Status Gitter

Yandextank has been moved to Python 3.

Latest stable release for Python 2 here.

Yandex.Tank is an extensible open source load testing tool for advanced linux users which is especially good as a part of an automated load testing suite

Quantiles chart example

Main features

  • different load generators supported:
    • Evgeniy Mamchits' phantom is a very fast (100 000+ RPS) shooter written in C++ (default)
    • JMeter is an extendable and widely known one
    • BFG is a Python-based generator that allows you to write your load scenarios in Python
    • experimental Golang generator: pandora
  • performance analytics backend service: Overload. Store and analyze your test results online
  • several ammo formats supported like plain url list or access.log
  • test autostop plugin: stop your test when the results have became obvious and save time
  • customizable and extendable monitoring that works over SSH

Documentation

Get help

Chat with authors and other performance specialists: Gitter

See also

Comments
  • Can't install on Ubuntu Server 12.04

    Can't install on Ubuntu Server 12.04

    Install clear Ubuntu Server 12.04 64-bit

    $ lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 12.04 LTS
    Release:    12.04
    Codename:   precise
    $ uname -a
    Linux stamm-ubuntu 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
    $ cat /etc/apt/sources.list.d/tank.list 
    # Ubuntu Precise
    deb http://mirror.yandex.ru/mirrors/tank common main
    deb http://mirror.yandex.ru/mirrors/tank precise main
    
    $ sudo apt-get update
    Ign http://mirror.yandex.ru common InRelease
    Ign http://mirror.yandex.ru precise InRelease                               
    Ign http://mirror.yandex.ru common Release.gpg                               
    Ign http://mirror.yandex.ru precise Release.gpg                              
    Ign http://mirror.yandex.ru common Release                                   
    Ign http://mirror.yandex.ru precise Release                                  
    Ign http://mirror.yandex.ru common/main TranslationIndex                     
    Ign http://mirror.yandex.ru precise/main TranslationIndex                    
    Err http://mirror.yandex.ru common/main amd64 Packages                       
      404  Not Found
    Err http://mirror.yandex.ru common/main i386 Packages                        
      404  Not Found
    Err http://mirror.yandex.ru precise/main amd64 Packages                      
      404  Not Found
    Err http://mirror.yandex.ru precise/main i386 Packages                       
      404  Not Found
    Ign http://mirror.yandex.ru common/main Translation-en_US                    
    Ign http://mirror.yandex.ru common/main Translation-en                       
    Ign http://mirror.yandex.ru precise/main Translation-en_US                   
    Ign http://mirror.yandex.ru precise/main Translation-en                      
    Ign http://ru.archive.ubuntu.com precise InRelease                           
    Ign http://ru.archive.ubuntu.com precise-updates InRelease                   
    Ign http://ru.archive.ubuntu.com precise-backports InRelease                 
    Hit http://ru.archive.ubuntu.com precise Release.gpg                         
    Hit http://ru.archive.ubuntu.com precise-updates Release.gpg
    Hit http://ru.archive.ubuntu.com precise-backports Release.gpg
    Hit http://ru.archive.ubuntu.com precise Release
    Hit http://ru.archive.ubuntu.com precise-updates Release                            
    Hit http://ru.archive.ubuntu.com precise-backports Release                          
    Hit http://ru.archive.ubuntu.com precise/main Sources                               
    Hit http://ru.archive.ubuntu.com precise/restricted Sources                         
    Hit http://ru.archive.ubuntu.com precise/universe Sources                           
    Hit http://ru.archive.ubuntu.com precise/multiverse Sources                         
    Hit http://ru.archive.ubuntu.com precise/main amd64 Packages                        
    Hit http://ru.archive.ubuntu.com precise/restricted amd64 Packages                  
    Hit http://ru.archive.ubuntu.com precise/universe amd64 Packages                    
    Hit http://ru.archive.ubuntu.com precise/multiverse amd64 Packages                  
    Hit http://ru.archive.ubuntu.com precise/main i386 Packages                         
    Hit http://ru.archive.ubuntu.com precise/restricted i386 Packages                   
    Hit http://ru.archive.ubuntu.com precise/universe i386 Packages                     
    Hit http://ru.archive.ubuntu.com precise/multiverse i386 Packages                   
    Hit http://ru.archive.ubuntu.com precise/main TranslationIndex                      
    Hit http://ru.archive.ubuntu.com precise/multiverse TranslationIndex                
    Hit http://ru.archive.ubuntu.com precise/restricted TranslationIndex                
    Hit http://ru.archive.ubuntu.com precise/universe TranslationIndex                  
    Hit http://ru.archive.ubuntu.com precise-updates/main Sources                       
    Hit http://ru.archive.ubuntu.com precise-updates/restricted Sources                 
    Hit http://ru.archive.ubuntu.com precise-updates/universe Sources                   
    Hit http://ru.archive.ubuntu.com precise-updates/multiverse Sources                 
    Hit http://ru.archive.ubuntu.com precise-updates/main amd64 Packages                
    Hit http://ru.archive.ubuntu.com precise-updates/restricted amd64 Packages          
    Hit http://ru.archive.ubuntu.com precise-updates/universe amd64 Packages
    Hit http://ru.archive.ubuntu.com precise-updates/multiverse amd64 Packages          
    Hit http://ru.archive.ubuntu.com precise-updates/main i386 Packages                 
    Hit http://ru.archive.ubuntu.com precise-updates/restricted i386 Packages           
    Hit http://ru.archive.ubuntu.com precise-updates/universe i386 Packages             
    Hit http://ru.archive.ubuntu.com precise-updates/multiverse i386 Packages           
    Hit http://ru.archive.ubuntu.com precise-updates/main TranslationIndex              
    Hit http://ru.archive.ubuntu.com precise-updates/multiverse TranslationIndex        
    Hit http://ru.archive.ubuntu.com precise-updates/restricted TranslationIndex        
    Hit http://ru.archive.ubuntu.com precise-updates/universe TranslationIndex          
    Hit http://ru.archive.ubuntu.com precise/main Translation-en 
    Hit http://ru.archive.ubuntu.com precise/multiverse Translation-en
    Hit http://ru.archive.ubuntu.com precise/restricted Translation-en
    Hit http://ru.archive.ubuntu.com precise/universe Translation-en
    Hit http://ru.archive.ubuntu.com precise-updates/main Translation-en
    Hit http://ru.archive.ubuntu.com precise-updates/multiverse Translation-en
    Hit http://ru.archive.ubuntu.com precise-updates/restricted Translation-en
    Hit http://ru.archive.ubuntu.com precise-backports/main Sources
    Hit http://ru.archive.ubuntu.com precise-backports/restricted Sources
    Hit http://ru.archive.ubuntu.com precise-backports/universe Sources
    Hit http://ru.archive.ubuntu.com precise-backports/multiverse Sources
    Hit http://ru.archive.ubuntu.com precise-backports/main amd64 Packages
    Hit http://ru.archive.ubuntu.com precise-backports/restricted amd64 Packages
    Hit http://ru.archive.ubuntu.com precise-backports/universe amd64 Packages
    Hit http://ru.archive.ubuntu.com precise-backports/multiverse amd64 Packages
    Hit http://ru.archive.ubuntu.com precise-backports/main i386 Packages
    Hit http://ru.archive.ubuntu.com precise-backports/restricted i386 Packages
    Hit http://ru.archive.ubuntu.com precise-backports/universe i386 Packages
    Hit http://ru.archive.ubuntu.com precise-backports/multiverse i386 Packages
    Hit http://ru.archive.ubuntu.com precise-backports/main TranslationIndex
    Hit http://ru.archive.ubuntu.com precise-backports/multiverse TranslationIndex
    Hit http://ru.archive.ubuntu.com precise-backports/restricted TranslationIndex
    Hit http://ru.archive.ubuntu.com precise-backports/universe TranslationIndex
    Hit http://ru.archive.ubuntu.com precise-updates/universe Translation-en
    Hit http://ru.archive.ubuntu.com precise-backports/main Translation-en
    Hit http://ru.archive.ubuntu.com precise-backports/multiverse Translation-en
    Hit http://ru.archive.ubuntu.com precise-backports/restricted Translation-en
    Hit http://ru.archive.ubuntu.com precise-backports/universe Translation-en
    Ign http://security.ubuntu.com precise-security InRelease    
    Get:1 http://security.ubuntu.com precise-security Release.gpg [198 B]
    Get:2 http://security.ubuntu.com precise-security Release [49.6 kB]
    Get:3 http://security.ubuntu.com precise-security/main Sources [32.4 kB]
    Get:4 http://security.ubuntu.com precise-security/restricted Sources [14 B]
    Get:5 http://security.ubuntu.com precise-security/universe Sources [7,849 B]
    Get:6 http://security.ubuntu.com precise-security/multiverse Sources [713 B]
    Get:7 http://security.ubuntu.com precise-security/main amd64 Packages [118 kB]
    Get:8 http://security.ubuntu.com precise-security/restricted amd64 Packages [14 B]
    Get:9 http://security.ubuntu.com precise-security/universe amd64 Packages [26.6 kB]
    Get:10 http://security.ubuntu.com precise-security/multiverse amd64 Packages [1,155 B]
    Get:11 http://security.ubuntu.com precise-security/main i386 Packages [121 kB]
    Get:12 http://security.ubuntu.com precise-security/restricted i386 Packages [14 B]                                                                                                                                                                                                                                                                                      
    Get:13 http://security.ubuntu.com precise-security/universe i386 Packages [26.8 kB]                                                                                                                                                                                                                                                                                     
    Get:14 http://security.ubuntu.com precise-security/multiverse i386 Packages [1,394 B]                                                                                                                                                                                                                                                                                   
    Hit http://security.ubuntu.com precise-security/main TranslationIndex                                                                                                                                                                                                                                                                                                   
    Hit http://security.ubuntu.com precise-security/multiverse TranslationIndex                                                                                                                                                                                                                                                                                             
    Hit http://security.ubuntu.com precise-security/restricted TranslationIndex                                                                                                                                                                                                                                                                                             
    Hit http://security.ubuntu.com precise-security/universe TranslationIndex                                                                                                                                                                                                                                                                                               
    Hit http://security.ubuntu.com precise-security/main Translation-en                                                                                                                                                                                                                                                                                                     
    Hit http://security.ubuntu.com precise-security/multiverse Translation-en                                                                                                                                                                                                                                                                                               
    Hit http://security.ubuntu.com precise-security/restricted Translation-en                                                                                                                                                                                                                                                                                               
    Hit http://security.ubuntu.com precise-security/universe Translation-en                                                                                                                                                                                                                                                                                                 
    Fetched 385 kB in 7s (52.8 kB/s)                                                                                                                                                                                                                                                                                                                                        
    W: Failed to fetch http://mirror.yandex.ru/mirrors/tank/dists/common/main/binary-amd64/Packages  404  Not Found
    
    W: Failed to fetch http://mirror.yandex.ru/mirrors/tank/dists/common/main/binary-i386/Packages  404  Not Found
    
    W: Failed to fetch http://mirror.yandex.ru/mirrors/tank/dists/precise/main/binary-amd64/Packages  404  Not Found
    
    W: Failed to fetch http://mirror.yandex.ru/mirrors/tank/dists/precise/main/binary-i386/Packages  404  Not Found
    
    E: Some index files failed to download. They have been ignored, or old ones used instead.
    
    $ sudo apt-get install yandex-load-tank-base
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    E: Unable to locate package yandex-load-tank-base
    
    opened by stamm 14
  • I can`t install yandex-tank on ubuntu 16.04 LTS

    I can`t install yandex-tank on ubuntu 16.04 LTS

    I read many any guids, but was i shut without tank i see these text in terminal:

    [email protected]:$ yandex-tank /home/user1/Документы/dir/load.ini 14:54:42 [WARNING] /etc/yandex-tank is not accessible to get configs list 14:54:42 [INFO] Loading configs... 14:54:42 [INFO] Loading plugins... 14:54:42 [WARNING] Deprecated plugin classname: <module 'yandextank.plugins.ResourceCheck' from '/usr/local/lib/python2.7/dist-packages/yandextank/plugins/ResourceCheck/init.pyc'>. Should be 'Plugin' 14:54:42 [WARNING] Deprecated plugin classname: <module 'yandextank.plugins.ShellExec' from '/usr/local/lib/python2.7/dist-packages/yandextank/plugins/ShellExec/init.pyc'>. Should be 'Plugin' 14:54:42 [WARNING] Deprecated plugin classname: <module 'yandextank.plugins.Phantom' from '/usr/local/lib/python2.7/dist-packages/yandextank/plugins/Phantom/init.pyc'>. Should be 'Plugin' 14:54:42 [WARNING] Deprecated plugin classname: <module 'yandextank.plugins.Aggregator' from '/usr/local/lib/python2.7/dist-packages/yandextank/plugins/Aggregator/init.pyc'>. Should be 'Plugin' 14:54:42 [WARNING] Deprecated plugin classname: <module 'yandextank.plugins.Autostop' from '/usr/local/lib/python2.7/dist-packages/yandextank/plugins/Autostop/init.pyc'>. Should be 'Plugin' 14:54:42 [WARNING] Deprecated plugin classname: <module 'yandextank.plugins.Monitoring' from '/usr/local/lib/python2.7/dist-packages/yandextank/plugins/Monitoring/init.pyc'>. Should be 'Plugin' 14:54:42 [WARNING] Deprecated plugin classname: <module 'yandextank.plugins.Console' from '/usr/local/lib/python2.7/dist-packages/yandextank/plugins/Console/init.pyc'>. Should be 'Plugin' 14:54:42 [WARNING] Deprecated plugin classname: <module 'yandextank.plugins.TipsAndTricks' from '/usr/local/lib/python2.7/dist-packages/yandextank/plugins/TipsAndTricks/init.pyc'>. Should be 'Plugin' 14:54:42 [WARNING] Deprecated plugin classname: <module 'yandextank.plugins.RCAssert' from '/usr/local/lib/python2.7/dist-packages/yandextank/plugins/RCAssert/init.pyc'>. Should be 'Plugin' 14:54:42 [INFO] Performing test 14:54:42 [INFO] Configuring plugins... 14:54:42 [WARNING] Failed TCP connection test using [127.0.0.1]:80 14:54:42 [WARNING] Failed TCP connection test using [127.0.0.1]:80 14:54:42 [WARNING] Failed TCP connection test using [127.0.0.1]:80 14:54:42 [INFO] Exception: Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/yandextank/core/consoleworker.py", line 261, in perform_test self.core.plugins_configure() File "/usr/local/lib/python2.7/dist-packages/yandextank/core/tankcore.py", line 133, in plugins_configure plugin.configure() File "/usr/local/lib/python2.7/dist-packages/yandextank/plugins/Phantom/plugin.py", line 92, in configure self.phantom.read_config() File "/usr/local/lib/python2.7/dist-packages/yandextank/plugins/Phantom/utils.py", line 96, in read_config stream.read_config() File "/usr/local/lib/python2.7/dist-packages/yandextank/plugins/Phantom/utils.py", line 265, in read_config self.address, do_test_connect, explicit_port) File "/usr/local/lib/python2.7/dist-packages/yandextank/plugins/Phantom/utils.py", line 428, in resolve raise RuntimeError(msg % address_str) RuntimeError: All connection attempts failed for 127.0.0.1, use phantom.connection_test=0 to disable it

    14:54:42 [ERROR] All connection attempts failed for 127.0.0.1, use phantom.connection_test=0 to disable it 14:54:42 [INFO] Trying to shutdown gracefully... 14:54:42 [INFO] Finishing test... 14:54:42 [ERROR] Failed finishing plugin <yandextank.plugins.Aggregator.plugin.AggregatorPlugin object at 0x7f1c83f8ddd0>: 'AggregatorPlugin' object has no attribute 'drain' 14:54:42 [INFO] Finishing monitoring 14:54:42 [INFO] Post-processing test... 14:54:42 [INFO] Artifacts dir: logs/2016-08-22_14-54-42.9UOmX_ 14:54:42 [INFO] Done graceful shutdown 14:54:42 [INFO] Close allocated resources... 14:54:42 [INFO] Done performing test with code 1

    What can I do from these? I want use yandex-tank...

    P.S. Russian version: Установил яндекс танк в соответствии со всеми гайдами, но всё равно когда я стреляю из танка в терминале сыпятся ошибки. Всё перепробовал, что можно сделать чтобы починить танк? Мне необходимо просто из него пострелять.

    opened by nigthmare17931 11
  • Нет yandex-tank-jmeter в docker hub

    Нет yandex-tank-jmeter в docker hub

    При запуске по документации http://yandextank.readthedocs.io/en/latest/install.html

    docker run \
        -v $(pwd):/var/loadtest \
        -v $SSH_AUTH_SOCK:/ssh-agent -e SSH_AUTH_SOCK=/ssh-agent \
        --net host \
        -it direvius/yandex-tank-jmeter
    

    Получаю ошибку: docker: Error response from daemon: pull access denied for direvius/yandex-tank-jmeter, repository does not exist or may require 'docker login'.

    В docker залогиненный. Поиск по докер хабу, тоже не дал результатов.

    opened by dubrovin 9
  • Лок-файл захватывается до чтения конфигурации

    Лок-файл захватывается до чтения конфигурации

    [email protected] ~ $yandex-tank -f -v
    /usr/lib64/python2.7/site-packages/pandas/core/computation/__init__.py:18: UserWarning: The installed version of numexpr 2.4.4.dev0 is not supported in pandas and will be not be used
    The minimum supported version is 2.4.6
    
      ver=ver, min_ver=_MIN_NUMEXPR_VERSION), UserWarning)
    2017-07-02 05:49:50,626 [ERROR] root cli.py:91	Exception: Lock file present, cannot continue
    2017-07-02 05:49:50,628 [DEBUG] root cli.py:92	Exception: Traceback (most recent call last):
      File "/usr/lib/python2.7/site-packages/yandextank/core/cli.py", line 87, in main
        worker.configure()
      File "/usr/lib/python2.7/site-packages/yandextank/core/consoleworker.py", line 190, in configure
        raise RuntimeError("Lock file present, cannot continue")
    RuntimeError: Lock file present, cannot continue
    
    [1]    22264 exit 1     yandex-tank -f -v
    [email protected] ~ $yandex-tank -f -v -c non-existing.ini
    /usr/lib64/python2.7/site-packages/pandas/core/computation/__init__.py:18: UserWarning: The installed version of numexpr 2.4.4.dev0 is not supported in pandas and will be not be used
    The minimum supported version is 2.4.6
    
      ver=ver, min_ver=_MIN_NUMEXPR_VERSION), UserWarning)
    2017-07-02 05:49:58,689 [ERROR] root cli.py:91	Exception: Lock file present, cannot continue
    2017-07-02 05:49:58,690 [DEBUG] root cli.py:92	Exception: Traceback (most recent call last):
      File "/usr/lib/python2.7/site-packages/yandextank/core/cli.py", line 87, in main
        worker.configure()
      File "/usr/lib/python2.7/site-packages/yandextank/core/consoleworker.py", line 190, in configure
        raise RuntimeError("Lock file present, cannot continue")
    RuntimeError: Lock file present, cannot continue
    

    Пытался запустить танк от простого пользователя - вижу что не захватывается лок-файл. Прописывание в ~/.yandex-tank или местный .ini в секцию [tank] не помогает - локальный .ini-файл даже не обязан существовать.

    opened by evgkrsk 9
  • 404/Console/Overload

    404/Console/Overload

    @iskhakovan "Добрый день. Пробую использовать яндекс танк из контейнера докера. При завершении стрельбы появляется ошибка HTTPError: 404 Client Error: NOT FOUND for url: https://overload.yandex.net/api/job/292/summary.json?api_token="

    2016-08-25 07:32:55,295 [DEBUG] yandextank.plugins.Overload.client client.py:37 Making request to: https://overload.yandex.net/api/job/292/close.json?api_token=&exitcode=23
    2016-08-25 07:32:55,359 [DEBUG] yandextank.plugins.Overload.client client.py:43 Raw response: [{"success": 1}]
    2016-08-25 07:32:55,359 [DEBUG] yandextank.plugins.Overload.client client.py:49 Response: [{u'success': 1}]
    2016-08-25 07:32:55,359 [INFO] yandextank.plugins.Overload.plugin plugin.py:259 Web link: https://overload.yandex.net/292
    2016-08-25 07:32:55,359 [DEBUG] yandextank.core.tankcore tankcore.py:316        Searching for plugin: <class 'yandextank.plugins.Autostop.plugin.AutostopPlugin'>
    2016-08-25 07:32:55,359 [DEBUG] yandextank.plugins.Overload.client client.py:37 Making request to: https://overload.yandex.net/api/job/292/summary.json?api_token=
    2016-08-25 07:32:55,392 [ERROR] yandextank.core.tankcore tankcore.py:223        Failed post-processing plugin <yandextank.plugins.Overload.plugin.Plugin object at 0x7efd8fcd0f10>: 404 Client Error: NOT FOU$
    2016-08-25 07:32:55,395 [DEBUG] yandextank.core.tankcore tankcore.py:225        Failed post-processing plugin: Traceback (most recent call last):
      File "/usr/local/lib/python2.7/dist-packages/yandextank/core/tankcore.py", line 219, in plugins_post_process
        retcode = plugin.post_process(retcode)
      File "/usr/local/lib/python2.7/dist-packages/yandextank/plugins/Overload/plugin.py", line 276, in post_process
        self.jobno, rps, autostop.cause_criterion.explain())
      File "/usr/local/lib/python2.7/dist-packages/yandextank/plugins/Overload/client.py", line 149, in set_imbalance_and_dsc
        res = self.get_job_summary(jobno)
      File "/usr/local/lib/python2.7/dist-packages/yandextank/plugins/Overload/client.py", line 112, in get_job_summary
        + self.api_token)
      File "/usr/local/lib/python2.7/dist-packages/yandextank/plugins/Overload/client.py", line 47, in get
        resp = self.get_raw(addr)
      File "/usr/local/lib/python2.7/dist-packages/yandextank/plugins/Overload/client.py", line 41, in get_raw
        resp.raise_for_status()
      File "/usr/local/lib/python2.7/dist-packages/requests/models.py", line 862, in raise_for_status
        raise HTTPError(http_error_msg, response=self)
    HTTPError: 404 Client Error: NOT FOUND for url: https://overload.yandex.net/api/job/292/summary.json?api_token=
    
    
    opened by doctornkz 9
  • Fixing log collection for monitoring plugin and StepperWrapper.

    Fixing log collection for monitoring plugin and StepperWrapper.

    Monitoring plugin stores configs files like monitoring_default_*.xml in current working directory, and so does StepperWrapper with access.log_*.stpd and access.log_*.stpd_si.json files.

    opened by vovapi 8
  • Fix Monitoring.collector

    Fix Monitoring.collector

    The xml.etree.ElementTree.find/findall method don't need the root element in path.

    // сломал мониторинг при выпиливании lxml, надо было все-таки нормально проверить // test coming soon...

    opened by ei-grad 8
  • First run

    First run

    Use this config, like in example

    load = const(1,20s)
    
    address=87.250.250.203:80
    header_host = ya.ru
    
    header_http = 1.1
    header_connection = close
    uri = /
    

    I get «400 Bad Request» of all http queries.

    I guess it's nginx block queries, maybe need to add some another headers?

    opened by stamm 8
  • Gevent-based BFG worker

    Gevent-based BFG worker

    What this patch lets you to do: New BFG option worker_type. If it's green, the new worker will be used instead of the existing purely multiprocessing one. This worker spawns bfg.instances worker processes, but this number should be kept law (eg. number of CPU cores). Every worker process will spawn bfg.green_threads_per_instance greenlets, which effectively do just the same as workers in the current implementation: wait for tasks and execute.

    I've made a simple tests runner, which uses ultimate BFG with urllib3 requests inside. Here are two test result. I also have telegraf client on my machine (which runs the Yandex.Tank), so you can look at Memory, CPU, context switches, interrupts and other stuff happening on my machine while executing tests.

    1. Original worker, 1200 instances https://overload.yandex.net/10486
    2. Green worker, 4 instances, 300 greenlets per instance https://overload.yandex.net/10484

    As you can see, green worker consumes significantly less memory (~100Mb vs. ~10Gb). Also result on the old workere are very unstable at the beginning, as it takes much time to start all the processes, it consumes CPU and affects existing workers. And I can't use more than 1500 instances with old worker, as it eats all RAM, hits swap heavily and my machine dies slowly :) With green worker I tried 10k greenlets - no problems detected.

    If somebody finds this PR useful and candidate to be merged - I'll update documentation and some other stuff in this PR.

    opened by Flid 7
  • 422 http response show as 71 Protocol error

    422 http response show as 71 Protocol error

    our rest service use for validation exception 422 code, but when we try use yandex-tank for load testing we show response in cli as 71 Protocol error. when we change status code to other (for ex 200) all ok

    And in phout_*.log we see 1445969781.301 #0 25897 79 24 25611 183 25615 97 765 71 0 1445969782.301 #1 6642 67 13 6456 106 6456 97 765 71 0 1445969783.301 #2 6812 82 24 6595 111 6596 97 765 71 0

    how we can show proper status code in our load test?

    load.ini [tank] artifacts_base_dir=../../../trash/ [phantom] address=127.0.0.1 port=80 ;target's port rps_schedule=step(1,5,1,3m) ;load scheme ammofile=ammo.txt

    ammo.txt 89 GET /api/accounts HTTP/1.1 User-agent: Tank Accept: application/json Host: ololo-pew-pew

    opened by ant-hill 7
  • Installing tank on RHEL 6.6 caused ERROR: Import by filename is not supported.

    Installing tank on RHEL 6.6 caused ERROR: Import by filename is not supported.

    Hi, I have tried to install tank on RHEL 6.6 following these instructions 1 and 2. When launching yandex-tank got following exception:

    # yandex-tank
    18:28:52 INFO: No config passed via cmdline, using ./load.ini
    18:28:52 INFO: Loading configs...
    18:28:52 INFO: Loading plugins...
    18:28:52 INFO: Exception: Traceback (most recent call last):
      File "/usr/lib/python2.6/site-packages/yandextank/core/consoleworker.py", line 224, in configure
        self.core.load_plugins()
      File "/usr/lib/python2.6/site-packages/yandextank/core/tankcore.py", line 242, in load_plugins
        plugin = il.import_module(plugin_path)
      File "/usr/lib/python2.6/site-packages/importlib/__init__.py", line 37, in import_module
        __import__(name)
    ImportError: Import by filename is not supported.
    18:28:52 ERROR: Import by filename is not supported.
    18:28:52 ERROR: Exception: Import by filename is not supported.
    

    I'm not good either in linux nor python so will be grateful for the help

    My load.ini

    [tank]
    plugin_web=Tank/Plugins/WebOnline.py
    plugin_console=Tank/Plugins/ConsoleOnline.py
    plugin_ShellExec=Tank/Plugins/ShellExec.py
    plugin_phantom=Tank/Plugins/Phantom.py
    plugin_aggreg=Tank/Plugins/Aggregator.py
    
    [phantom]
    address=google.ru
    port=80
    rps_schedule=const(2, 2m)
    headers = [Host: google.ru] [Connection: close] [Bloody: yes]
    uris=/
    
    [web]
    port = 80
    interval = 5
    manualstop = 1
    

    Without [tank] section it works with no errors.

    opened by RocketRaccoon 7
  • malloc: Cannot allocate memory

    malloc: Cannot allocate memory

    Hi folks,

    I'm trying to load test a high response time API (~15s) so need to keep a lot of connections. When phantom instances: are 30k and higher, tank starts to fail with a lot of malloc errors:

    2022-12-05 17:47:26.057 +0000 [error] [benchmark_io 32714] mprotect: Cannot allocate memory
    2022-12-05 17:47:26.058 +0000 [error] [benchmark_io 32715] mmap: Cannot allocate memory
    2022-12-05 17:47:26.058 +0000 [error] [benchmark_io 32716] mmap: Cannot allocate memory
    2022-12-05 17:47:26.058 +0000 [error] [benchmark_io 32717] mmap: Cannot allocate memory
    2022-12-05 17:47:26.058 +0000 [error] [benchmark_io 32718] mmap: Cannot allocate memory
    

    Running the latest master version with docker. The machine has a lot of available memory.

    Are there any limitations to number of instances? Can this me remedied?

    opened by IvanVas 0
  • Update Docker build to avoid OpenSSL problems

    Update Docker build to avoid OpenSSL problems

    On the latest Debian, the tank run resulted in the error below. This image addition fixes it.

    Traceback (most recent call last):
      File "/usr/local/bin/yandex-tank", line 5, in <module>
        from yandextank.core.cli import main
      File "/usr/local/lib/python3.8/dist-packages/yandextank/core/__init__.py", line 4, in <module>
        from .tankcore import TankCore  # noqa
      File "/usr/local/lib/python3.8/dist-packages/yandextank/core/tankcore.py", line 25, in <module>
        from yandextank.plugins.DataUploader.client import LPRequisites
      File "/usr/local/lib/python3.8/dist-packages/yandextank/plugins/DataUploader/__init__.py", line 1, in <module>
        from .plugin import Plugin  # noqa
      File "/usr/local/lib/python3.8/dist-packages/yandextank/plugins/DataUploader/plugin.py", line 18, in <module>
        import requests
      File "/usr/lib/python3/dist-packages/requests/__init__.py", line 95, in <module>
        from urllib3.contrib import pyopenssl
      File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 46, in <module>
        import OpenSSL.SSL
      File "/usr/local/lib/python3.8/dist-packages/OpenSSL/__init__.py", line 8, in <module>
        from OpenSSL import crypto, SSL
      File "/usr/local/lib/python3.8/dist-packages/OpenSSL/crypto.py", line 1550, in <module>
        class X509StoreFlags(object):
      File "/usr/local/lib/python3.8/dist-packages/OpenSSL/crypto.py", line 1570, in X509StoreFlags
        CB_ISSUER_CHECK = _lib.X509_V_FLAG_CB_ISSUER_CHECK
    AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'
    
    opened by IvanVas 0
  • JMeter tests cannot started

    JMeter tests cannot started

    After some interface changes in TimeChopper the JMeter tests starts failing.

    <class 'TypeError'>: object of type 'generator' has no len() self.recent_ts = [0] * len(self.sources)

    TimeChopper(self._read_stat_queue(), 3)) TypeError: __init__() takes 2 positional arguments but 3 were given

    opened by gnomeby 1
  • Jmeter does not connect when yandex-tank starts

    Jmeter does not connect when yandex-tank starts

    When I run yandex-tank -c load.yaml the terminal displays the following error:

    Traceback (most recent call last):
      File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
        self.run()
      File "/usr/local/lib/python3.8/dist-packages/yandextank/core/consoleworker.py", line 197, in run
        self.retcode = self.core.wait_for_finish()
      File "/usr/local/lib/python3.8/dist-packages/yandextank/common/util.py", line 845, in __exit__
        retcode = self.worker.core.plugins_end_test(retcode)
      File "/usr/local/lib/python3.8/dist-packages/yandextank/core/tankcore.py", line 315, in plugins_end_test
        retcode = self.job.aggregator.end_test(retcode)
      File "/usr/local/lib/python3.8/dist-packages/yandextank/aggregator/tank_aggregator.py", line 124, in end_test
        retcode = self.generator.end_test(retcode)
      File "/usr/local/lib/python3.8/dist-packages/yandextank/plugins/JMeter/plugin.py", line 168, in end_test
        self.reader.close()
    AttributeError: 'NoneType' object has no attribute 'close'
    

    I am using Jmeter + Yandex Tank. In Jmeter a simple HTTP Request to a server.

    Yandex Tank load.yaml:

    overload:
            enabled: true
            package: yandextank.plugins.DataUploader
            token_file: token.txt
            job_name: Y-Tank Stress Test
            job_dsc: Test load
    
    
    jmeter:
            enabled: true
            package: yandextank.plugins.JMeter
            jmx: test.jmx
            jmeter_path: /home/dev/programs/apache-jmeter-5.4.1/bin/jmeter
            buffered_seconds: 0
            ext_log: none
            variables:
                    protocol: https
                    host: server.com
                    path: /
                    thread_rpm: 5
                    loops: 1
    
    
    phantom:
            enabled: false
    
    console:
            enabled: true
    
    telegraf:
            enabled: false
    
    opened by DevidzeIL 0
  • Get 'No JSON object could be decoded' when running tank with overload plugin

    Get 'No JSON object could be decoded' when running tank with overload plugin

    Get next error:

    15:49:14 [INFO] Preparing test...
    15:49:14 [INFO] Checking tank resources...
    15:49:14 [INFO] Using OVERLOAD backend
    15:49:14 [INFO] Read authentication token from /var/loadtest/token.txt, token length is 32 bytes
    15:49:14 [INFO] Proxy not set
    15:49:14 [INFO] Detected target: somehost.com
    15:49:14 [WARNING] Failed to create job on lunapark
    15:49:14 [WARNING] ValueError('No JSON object could be decoded',)
    15:49:14 [ERROR] 
    15:49:14 [ERROR] Failed to connect to Lunapark, disabling DataUploader
    

    When run yandex tank inside docker with overload integration.

    Here's the config

    overload:
      enabled: true
      operator: Kirill
      package: yandextank.plugins.DataUploader
      token_file: "/var/loadtest/token.txt"
      job_name: Test
      job_dsc: Basic load scenario
    

    And a run command:

    docker run \
        -v $(pwd):/var/loadtest \
        -v $SSH_AUTH_SOCK:/ssh-agent -e SSH_AUTH_SOCK=/ssh-agent \
        --net host \
        -it direvius/yandex-tank
    
    opened by Kirill380 0
Releases(Python2)
Owner
Yandex
Yandex open source projects and technologies
Yandex
Auto-hms-action - Automation of NU Health Management System

🦾 Automation of NU Health Management System 🤖 長崎大学 健康管理システムの自動化 🏯 Usage / 使い方

k5-mot 3 Mar 04, 2022
This project demonstrates selenium's ability to extract files from a website.

This project demonstrates selenium's ability to extract files from a website. I've added the challenge of connecting over TOR. This package also includes a personal archive site built in NodeJS and A

2 Jan 16, 2022
Show surprise when tests are passing

pytest-pikachu pytest-pikachu prints ascii art of Surprised Pikachu when all tests pass. Installation $ pip install pytest-pikachu Usage Pass the --p

Charlie Hornsby 13 Apr 15, 2022
Simple frontend TypeScript testing utility

TSFTest Simple frontend TypeScript testing utility. Installation Install webpack in your project directory: npm install --save-dev webpack webpack-cli

2 Nov 09, 2021
Automatically mock your HTTP interactions to simplify and speed up testing

VCR.py 📼 This is a Python version of Ruby's VCR library. Source code https://github.com/kevin1024/vcrpy Documentation https://vcrpy.readthedocs.io/ R

Kevin McCarthy 2.3k Jan 01, 2023
A Simple Unit Test Matcher Library for Python 3

pychoir - Python Test Matchers for humans Super duper low cognitive overhead matching for Python developers reading or writing tests. Implemented in p

Antti Kajander 15 Sep 14, 2022
A pytest plugin to run an ansible collection's unit tests with pytest.

pytest-ansible-units An experimental pytest plugin to run an ansible collection's unit tests with pytest. Description pytest-ansible-units is a pytest

Community managed Ansible repositories 9 Dec 09, 2022
Automatic SQL injection and database takeover tool

sqlmap sqlmap is an open source penetration testing tool that automates the process of detecting and exploiting SQL injection flaws and taking over of

sqlmapproject 25.7k Jan 04, 2023
Python 3 wrapper of Microsoft UIAutomation. Support UIAutomation for MFC, WindowsForm, WPF, Modern UI(Metro UI), Qt, IE, Firefox, Chrome ...

Python 3 wrapper of Microsoft UIAutomation. Support UIAutomation for MFC, WindowsForm, WPF, Modern UI(Metro UI), Qt, IE, Firefox, Chrome ...

yin kaisheng 1.6k Dec 29, 2022
A suite of benchmarks for CPU and GPU performance of the most popular high-performance libraries for Python :rocket:

A suite of benchmarks for CPU and GPU performance of the most popular high-performance libraries for Python :rocket:

Dion Häfner 255 Jan 04, 2023
The Penetration Testers Framework (PTF) is a way for modular support for up-to-date tools.

The PenTesters Framework (PTF) is a Python script designed for Debian/Ubuntu/ArchLinux based distributions to create a similar and familiar distribution for Penetration Testing

trustedsec 4.5k Dec 28, 2022
A python bot using the Selenium library to auto-buy specified sneakers on the nike.com website.

Sneaker-Bot-UK A python bot using the Selenium library to auto-buy specified sneakers on the nike.com website. This bot is still in development and is

Daniel Hinds 4 Dec 14, 2022
:game_die: Pytest plugin to randomly order tests and control random.seed

pytest-randomly Pytest plugin to randomly order tests and control random.seed. Features All of these features are on by default but can be disabled wi

pytest-dev 471 Dec 30, 2022
Network automation lab using nornir, scrapli, and containerlab with Arista EOS

nornir-scrapli-eos-lab Network automation lab using nornir, scrapli, and containerlab with Arista EOS. Objectives Deploy base configs to 4xArista devi

Vireak Ouk 13 Jul 07, 2022
A Modular Penetration Testing Framework

fsociety A Modular Penetration Testing Framework Install pip install fsociety Update pip install --upgrade fsociety Usage usage: fsociety [-h] [-i] [-

fsociety-team 802 Dec 31, 2022
User-interest mock backend server implemnted using flask restful, and SQLAlchemy ORM confiugred with sqlite

Flask_Restful_SQLAlchemy_server User-interest mock backend server implemnted using flask restful, and SQLAlchemy ORM confiugred with sqlite. Backend b

Austin Weigel 1 Nov 17, 2022
Django test runner using nose

django-nose django-nose provides all the goodness of nose in your Django tests, like: Testing just your apps by default, not all the standard ones tha

Jazzband 880 Dec 15, 2022
BDD library for the py.test runner

BDD library for the py.test runner pytest-bdd implements a subset of the Gherkin language to enable automating project requirements testing and to fac

pytest-dev 1.1k Jan 09, 2023
🐍 Material for PyData Global 2021 Presentation: Effective Testing for Machine Learning Projects

Effective Testing for Machine Learning Projects Code for PyData Global 2021 Presentation by @edublancas. Slides available here. The project is develop

Eduardo Blancas 73 Nov 06, 2022