GithubHelp home page GithubHelp logo

esl / amoc Goto Github PK

View Code? Open in Web Editor NEW
93.0 49.0 23.0 7.92 MB

A load-testing framework for running massively parallel tests

Home Page: https://hexdocs.pm/amoc/readme.html

License: Apache License 2.0

Makefile 0.61% Shell 2.59% Erlang 96.60% Dockerfile 0.09% Mustache 0.11%
erlang load-testing testing-framework parallel-testing load-orchetrator

amoc's Introduction

A Murder of Crows

Hex Hex Docs codecov


A Murder of Crows, aka amoc, is a simple framework for running massively parallel tests in a distributed environment.

It can be used as a rebar3 dependency:

{deps, [
    {amoc, "3.2.0"}
]}.

or in mix:

defp deps() do
  [
    {:amoc, "~> 3.2"}
  ]
end

MongooseIM is continuously being load tested with Amoc. All the XMPP scenarios can be found here.


In order to implement and run locally your scenarios, follow the chapters about developing and running a scenario locally. Before setting up the distributed environment, please read through the configuration overview.

To see the full documentation, see hexdocs.

You can also try with the livebook demo here:

Run in Livebook

amoc's People

Contributors

aleklisi avatar arcusfelis avatar arkgil avatar bszaf avatar chrzaszcz avatar denysgonchar avatar erszcz avatar fenek avatar galaxygorilla avatar gustawlippa avatar jacekwegr avatar joesanford avatar kamilwaz avatar kklocek avatar kzemek avatar ludwikbukowski avatar michalwski avatar mkacper avatar nelsonvides avatar nyco avatar pawlooss1 avatar ppikula avatar rslota avatar sebb7 avatar studzien avatar vkatsuba avatar zofpolkowska avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

amoc's Issues

Dependency hell will occur when escalus will be upgraded to newest version

    +------------+
    |            |
    |    AMOC    +------------+
    |            |            |
    ++-----------+            |
     |                        |
     |                        |
     |                        v
     v                 +------+--------+      +-----------+
+----+------+          |               |      |           |
|           |          |   escalus     +----->+  gun      |
|  Cowboy   |          |   master      |      |           |
|   v1.0    |          |   g7081f90    |      +---+-------+
|           |          +---------------+          |
+----+------+                                     |
     |                                            |
     |                                            |
     |                                            |
     v                                            |
+----+-------+        +-----------------+         |
|            |        |                 |         |
|  Cowlib    |        |    Cowlib       +<--------+
|   v1.0     |        |    >=v1.2       |
|            |        |                 |
+------------+        +-----------------+

Fig 1. Dependecies in Amoc after escalus upgrade

Currently we are using Cowboy 1.0 for HTTP API for amoc. It depends on legacy version of cowlib. However escalus is using gun for websocket handing, which depends on cowlib. A far as I inspected it, it should work with cowlib 1.2, however it specifies in rebar.config, that it depends on master branch of cowlib.

What we can do:

  • rewrite AMOC HTTP API to cowboy 2.0

Measure server response times

Hi. I would like to measure how quickly server responses under load.

I was thinking about to measure time between send stanza, and receive stanza (in escalus) But escalus has its own predefined timeouts (3sec for user creation, and 1sec for get_stanza) But for this, it would require to tweak escalus code, which is not best solution as for me. Any advice is really appreciated!

P.S. Sorry for kinda off-topic issue

copy scenarios to scenarios/

Every time "make rel" is called, a directory with scenarios is copied to "scenarios/" - which means that you get "_rel/scenarios/scenarios/scenarios" repeated as many times as you have ran "make rel". All this goes to slaves, and seems to result in slaves running an old versions of scenarios.

Amoc not working with Erlang 19.0

Amoc version: 4814060
Erlang version: 19.0

$ make rel
(...)
ERROR: OTP release 19 does not match required regex R?1[678]
ERROR: compile failed while processing /home/centos/load-testing/amoc/deps/goldrush: rebar_abort
make: *** [compile] Error 1

Amoc should support Erlang version 19.0 and above, what do you think?

Amoc docker container is broken

After #62 or #63 was merged, docker container became unusable. Basically amoc fails to start.

logs:

Crash dump is being written to: erl_crash.dump...done
Kernel pid terminated (application_controller) ({application_start_failure,kernel,{{shutdown,{failed_to_start_child,net_sup,{shutdown,{failed_to_start_child,net_kernel,{'EXIT',nodistribution}}}}},{k
root@280101be614f:/home/amoc/amoc#

Hex Package

Make sure the repo is rebar3-compatible and its deps are also hex.pm packages, then publish it on hex.pm.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.