Coder Social home page Coder Social logo

andrewvc / engulf Goto Github PK

View Code? Open in Web Editor NEW
266.0 14.0 14.0 1.35 MB

Distributed HTTP load tester, written in Clojure and Javascript.

Home Page: http://engulf-project.org

License: Eclipse Public License 1.0

Shell 0.80% Java 3.71% Clojure 57.98% CSS 14.45% JavaScript 23.06%

engulf's Introduction

engulf

Please see engulf-project.org for more info and full documentation!

A scalable, distributed HTTP load tester, designed to let you spin up and coordinate a cluster of workers with nothing more than a single JAR. Features include:

  • Realtime browser UI
  • Markov request pattern generation
  • Recording/annotation of all test runs
  • RESTful/Streaming API
  • Minimalism and ease of use as a pervasive goal

Screenshot

Thanks!

I'd like to thank YourKit for providing this project with their Java profiler (which works excellently with Clojure). It's great at spotting performance issues. More info below:

YourKit is kindly supporting open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications. Take a look at YourKit's leading software products: YourKit Java Profiler and YourKit .NET Profiler

License

Copyright (C) 2011 and 2012 Andrew Cholakian

Distributed under the Eclipse Public License, see LICENSE for details

engulf's People

Contributors

andrewvc avatar neotyk avatar wheresalice 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

engulf's Issues

is there any new development plan

is there any new development plan for it? I found Gatling(by scala) project is active, is it possible engulf have more feature like gatling.

Bug: Job History'd URL Lists become blank after pressing "start"

I'd like to replay some of the tests we've already conducted.

a) Job History -> select a job
b) I correctly see results in Engulf.

c) Click "Playback"
d) url list becomes empty and "Playback" turns to "Live". I figure I am doing this step incorrectly.

e) Repeat a)
f) Click "Start"
g) url list becomes empty and I get an error stating "Error processing request: java.lang.Exception: Markov corpus must contain at least 2 URLs. Got: 0"

Either c) or f) should repeat the test.

Specifying content for POST requests

I don't see any way to specify the content of a POST request. Is this possible? This is for testing a web service, where instead of loading a variety of URLs I need to repeatedly load one URL with different parameters in the POST.

All requests visible in UI represented as GET

First of, this is a really great tool! I've used the cloudformation template and it works like a charm! A lot easier to manage than tools like Jmeter and the performance per node seems to be better as well :-)

I wanted to note that I'm able to do load testing with POST requests through the REST API, including headers and body, but this is not represented in the web UI. The UI lists the requests as GET and doesn't show any of the headers or body. Is this a missing feature?

I also wasn't able to select "POST" from the select box, or at least it jumps to GET the moment i press start.

I'm on Chrome version 28.0.1500.71

The proxy is ignored during the load testing

When the proxy settings are added to the Java process, the same proxy is ignored during the load testing:

java -Dhttp.proxyHost=proxy -Dhttp.proxyPort=8080 -jar engulf.jar

The exception is UnresolvedAddressException.

450 [New I/O worker #9] INFO engulf.control - Node connected. 1 total nodes.
24605 [New I/O worker #7] INFO engulf.job-manager - Starting job
24648 [clojure-agent-send-off-pool-1] INFO engulf.relay - Starting job on relay
24674 [clojure-agent-send-off-pool-1] INFO engulf.worker-client - Starting job on worker
27002 [pool-1-thread-1] WARN engulf.formulas.http-benchmark - Error executing HTTP Request: {:keep-alive? true, :type "url", :timeout 2000, :keep-alive "true",:url "http://www.google.com", :method :get}
java.nio.channels.UnresolvedAddressException
at sun.nio.ch.Net.checkAddress(Unknown Source)
at sun.nio.ch.SocketChannelImpl.connect(Unknown Source)
at org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink.connect(NioClientSocketPipelineSink.java:148)
at org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink.eventSunk(NioClientSocketPipelineSink.java:111)
at aleph.netty.core$downstream_traffic_handler$reify__9561.handleDownstream(core.clj:214)
at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:55)
at org.jboss.netty.handler.codec.http.HttpClientCodec.handleDownstream(HttpClientCodec.java:97)
at org.jboss.netty.channel.Channels.connect(Channels.java:642)
...

OS X Lion: Getting Exception in thread "main" java.lang.UnsupportedClassVersionError: fastPercentiles/PercentileRecorder : Unsupported major.minor version 51.0

Full message below. Any thoughts on why that may be?

Thank you
Ozgun

Exception in thread "main" java.lang.UnsupportedClassVersionError: fastPercentiles/PercentileRecorder : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at engulf.formulas.http_benchmark$loading__4784__auto__.invoke(http_benchmark.clj:1)
at engulf.formulas.http_benchmark__init.load(Unknown Source)
at engulf.formulas.http_benchmark__init.(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at clojure.lang.RT.loadClassForName(RT.java:2056)
at clojure.lang.RT.load(RT.java:419)
at clojure.lang.RT.load(RT.java:400)
at clojure.core$load$fn__4890.invoke(core.clj:5415)
at clojure.core$load.doInvoke(core.clj:5414)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:5227)
at clojure.core$load_lib.doInvoke(core.clj:5264)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invoke(core.clj:603)
at clojure.core$load_libs.doInvoke(core.clj:5298)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:603)
at clojure.core$require.doInvoke(core.clj:5381)
at clojure.lang.RestFn.invoke(RestFn.java:1096)
at engulf.job_manager$loading__4784__auto__.invoke(job_manager.clj:1)
at engulf.job_manager__init.load(Unknown Source)
at engulf.job_manager__init.(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at clojure.lang.RT.loadClassForName(RT.java:2056)
at clojure.lang.RT.load(RT.java:419)
at clojure.lang.RT.load(RT.java:400)
at clojure.core$load$fn__4890.invoke(core.clj:5415)
at clojure.core$load.doInvoke(core.clj:5414)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:5227)
at clojure.core$load_lib.doInvoke(core.clj:5264)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invoke(core.clj:603)
at clojure.core$load_libs.doInvoke(core.clj:5298)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:603)
at clojure.core$require.doInvoke(core.clj:5381)
at clojure.lang.RestFn.invoke(RestFn.java:703)
at engulf.core$loading__4784__auto__.invoke(core.clj:1)
at engulf.core__init.load(Unknown Source)
at engulf.core__init.(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at clojure.lang.RT.loadClassForName(RT.java:2056)
at clojure.lang.RT.load(RT.java:419)
at clojure.lang.RT.load(RT.java:400)
at clojure.core$load$fn__4890.invoke(core.clj:5415)
at clojure.core$load.doInvoke(core.clj:5414)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.lang.Var.invoke(Var.java:415)
at engulf.core.(Unknown Source)

Cloudformation template no longer works

I've used engulf quite a few times and usually it works straight out of the box (so to speak). I've just tried it today using the cloudformation template and it fails to bring up the service on port 8080 (as far as I can see nmap sees it as closed). I haven't dug into server yet to see what's going on, but I thought I'd give you a heads up.

"KeepAlive" checkbox cannot be unchecked

Title pretty much says it all. The KeepAlive checkbox, which is checked by default, cannot be unchecked. Running Engulf 3.0.0-beta12 on Chrome 30.0.1599.101 on OS X 10.8.5.

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.