All Projects → ayrat555 → hornet

ayrat555 / hornet

Licence: MIT license
Hornet is a simple library for stress testing

Programming Languages

elixir
2628 projects

Projects that are alternatives of or similar to hornet

Orion-Stress-Tester
A simple, efficient and accurate stress tester, support HTTP, WebSocket and TCP
Stars: ✭ 32 (-3.03%)
Mutual labels:  stress, stress-testing
load-testing-toolkit
Collection of open-source tools for debugging, benchmarking, load and stress testing your code or services.
Stars: ✭ 65 (+96.97%)
Mutual labels:  stress-testing, performance-testing
locust-docker
Docker image for the Locust load testing tool and sample Kubernetes configuration files for distributed deployment.
Stars: ✭ 17 (-48.48%)
Mutual labels:  stress-testing
doc
QuickPerf documentation: https://github.com/quick-perf/doc/wiki/QuickPerf
Stars: ✭ 22 (-33.33%)
Mutual labels:  performance-testing
stress
Single-purpose tools to stress resources
Stars: ✭ 24 (-27.27%)
Mutual labels:  stress
Pumba
Chaos testing, network emulation, and stress testing tool for containers
Stars: ✭ 2,136 (+6372.73%)
Mutual labels:  stress-testing
Hitchhiker-Node
Stress test node for Hitchhiker
Stars: ✭ 18 (-45.45%)
Mutual labels:  stress
cbtool
Cloud Rapid Experimentation and Analysis Toolkit
Stars: ✭ 65 (+96.97%)
Mutual labels:  stress-testing
jagtester
Express server load tester with middleware level data reporting
Stars: ✭ 57 (+72.73%)
Mutual labels:  stress-testing
Links-QA
Сборная солянка полезных ссылок для QA/тестировщика. Ссылки будут постоянно пополняться.
Stars: ✭ 42 (+27.27%)
Mutual labels:  stress-testing
workshop-sustainable-productivity
Workshop: the basics of stress, productivity, flow, focus, meditation and sustainability.
Stars: ✭ 20 (-39.39%)
Mutual labels:  stress
TFM
Tyler's Frame Machine is a simple, free, educational, and portable tool for testing, benchmarking, comparison, and demonstration. TFM supports OpenGL, DirectX 11, DirectX 12, Metal, and most importantly, Vulkan! https://tylemagne.github.io/TFM
Stars: ✭ 63 (+90.91%)
Mutual labels:  stress
percona-qa
Percona QA is a suite of scripts and utilities that assists in building, continuous integration, automated testing & bug reporting for Percona Server, Percona XtraDB Cluster, Percona XtraBackup, Percona Server for MongoDB, as well as other flavors of MySQL (Oracle, Facebook MyQSL, WebScaleSQL, MariaDB) etc.
Stars: ✭ 55 (+66.67%)
Mutual labels:  stress
Tcpcopy
An online request replication tool, also a tcp stream replay tool, fit for real testing, performance testing, stability testing, stress testing, load testing, smoke testing, etc
Stars: ✭ 4,028 (+12106.06%)
Mutual labels:  stress-testing
k6-action
k6 is now available as a GitHub Action
Stars: ✭ 64 (+93.94%)
Mutual labels:  performance-testing
lunaticlog
Fake HTTP log generator module, test if your monitor system can survive under the log spikes.
Stars: ✭ 35 (+6.06%)
Mutual labels:  stress-testing
range3
Range Software - Finite Element Analysis
Stars: ✭ 31 (-6.06%)
Mutual labels:  stress
HellPot
HellPot is a portal to endless suffering meant to punish unruly HTTP bots.
Stars: ✭ 146 (+342.42%)
Mutual labels:  stress
jtl-reporter
JtlReporter is an online application that allows users to generate beautiful, customizable and easy to understand performance reports from JMeter(Taurus), Locust, and other tools.
Stars: ✭ 85 (+157.58%)
Mutual labels:  performance-testing
DDos-Attack-OVH-
Powerful DDoS Attack
Stars: ✭ 155 (+369.7%)
Mutual labels:  stress

Hornet

Hornet is a simple library for stress testing.

It executes the given function with the given rate (calls per second), dynamically changing the number of processes to maintain the rate.

Installation

The easiest way to add Hornet to your project is by using Mix.

Add :hornet as a dependency to your project's mix.exs:

defp deps do
  [
    {:hornet, "~> 0.1.2"}
  ]
end

Usage

To start Hornet use Hornet.start/1:

params = [rate: 100, func: fn -> 1 + 1 end, id: :add]

Hornet.start(params)

It accepts a keyword list.

Required parameters:

  • rate - the required rate in operations per seconds. For example, 100 (ops/second)
  • func - the anonymous function that has to be executed. For example, fn -> 1 + 1 end
  • id - atom that will be used for Hornet's process names.

Optional parameters:

  • start_period - every process executes the given function periodically. This is a starting value for this period. The default value is 100 ms.
  • adjust_step - if the given rate can no be maintained (for example, if the function is executed too long), Hornet will start increasing the number of processes and the execution period for each process. The period will start increasing by adjust_step. The default value is 50ms.
  • adjust_period - the number of processes is adjusted periodically by adjust_period value. The default value is 5_000 ms.
  • error_rate - allowed rate for difference between the expected rate and the actual rate: |current_rate - expected_rate| < error_rate * expected_rate. The default value is 0.1.
  • process_number_limit - if the given function's execution time is too long and the required rate is high, Hornet will be spawning processes indefinitely. This value will limit the number of processes. The default value is nil.
  • rate_period - the period of measuring the current rate. The default value is 1_000 ms.
  • log_period - the interval for the log messages. Disabled by default.

To stop Hornet use Hornet.stop/1:

:ok = Hornet.stop(:hello)

It accepts the pid returned by Hornet.start/1 or the provided id.

Contributing

  1. Fork it!
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Author

Ayrat Badykov (@ayrat555)

License

Hornet is released under the MIT License. See the LICENSE file for further details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].