Giter Club home page Giter Club logo

performanceci-core's People

Contributors

akira avatar cdarwin avatar waffle-iron avatar

Stargazers

 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

performanceci-core's Issues

Contributing should be easy

With minimal effort, it should be easy for a developer or customer to have a environment tailored for contributions or demonstration

Move remainder of perfci related salt states into a formula

Child of: #32

We now have all supporting infrastructure configuration now driven by pillar data and external formulas. We also have all relevant bits of configuration for the main application represented (or representable) in pillar data. As such, we should be able to represent the functionality of the core application as a salt formula.

Support performance testing of external environments

As a perfci user, I should be able to use projects that deployed externally and not within perfci. I should be able to trigger a build via a webhook and see build results.

Acceptance Criteria

  • be able to configure external projects
  • test is run against an external base URL
  • webhook that supports build of project

Sub-Tasks

  • #37 | UI support to configure an external project
  • #38 | Backend to skip git checkout / docker builds and test
  • #39 | Provide webhook to trigger builds when new version is deployed

Support for authenticated endpoints

As a perfci user, I should be able to run performance tests against authenticated endpoints. This requires ability to track sessions or authentication tokens after issuing log in request

See http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Cookie_Manager for information on how JMeter handles this

Perhaps we can support something like this? Note sure what the best naming is for the save_cookies option.

  -
    name: login
    uri: '/login'
    method: post
    body: 
      username: john
      password: super_secret
    save_cookies: true

Acceptance Criteria

  • Support for cookie / session capture after login, and passing these to subsequent requests

Use case

Sub-tasks

  • Support for an option to save cookies using an initial url endpoint
  • Apply 'set-cookie' header to future requests as a 'Cookie' header
  • Supporting token based authentication - how do we extract a token from the login request?

Update External Projects

As a perfci user, I should be able to update a project configuration through the UI.

Acceptance Criteria

  • UI element for project configuration
  • project configuration page displays current config as editable text
  • save UI element updates project configuration

Docker log output regression

Builds are failing because garbage is getting into benchmark results. This is happening because of recent changes to VegetaDriver

Move all salt related configuration out of main repository

As a perfci contributor, I should be able to focus on the main application without concern for underlying infrastructure. I should still be able to vagrant up and get what I do today, without having to bother with salt states or formula management.

Acceptance Criteria

  • vagrant up continues to behave as it does today (easy to contribute)
  • no salt states or formulas in the core repository

Sub-Tasks

  • #33 | Use a salt master
  • #34 | Use GitFS for formulas
  • #35 | perfci-formula

Support for services such as database / redis

Web apps typically need additional services as a database, redis, etc.

Some options are:

  • Have users define these in their single docker container
  • Allow multiple docker containers and use support something like fig / compose
  • Provide these services and allow configuration via environment variable / swapping out database.yml file

Use a salt-master

Child of: #32

In a distributed production environment, one would most likely use a salt-master. We should be able to represent this in our local development environment.

Support use of production-like data

In order to make benchmarks more realistic, it would be great to support production-like datasets in your database. We need to think of what the best way is to support this. A possible feature could be to provide these containers which we store and allow people to use without having to recreate them every time.

Use GitFS for formulas

Child of: #32
Blocked by: #33

We currently have a number of formulas subtree'd into the main repository. These should be available on the salt-master a la gitfs remotes rather than maintaining these subtrees in the main repo.

Ensure that vegeta args are valid

Make sure vegeta args are valid, otherwise may get JSON error:

> docker run --rm -e TARGET="http://www.yahoo.com/" -e DURATION=1s -e RATE=1 perfci/vegeta
> 2015/07/15 03:07:59 json: unsupported value: +Inf

If can't be fixed, make sure error is understandable and gets propagated to front end

Build application using Heroku

Currently application can be built using Docker. Fill out HerokuBuilder class to push code to Heroku and instantiate application, and tear it down on cleanup. Would require some changes in UI as well to capture Heroku credentials.

Vegeta Worker fails

We should pull our vegeta docker files and scripts out of the core repo. We should ultimately submit a patch the main vegeta repo for these changes

Support more HTTP options for performance tests

As a perfci user, I should be able to create endpoints that are PUT / POST / DELETE with options to specify headers and request boy.

Acceptance Criteria

  • Endpoint configuration to support options above (I don't believe any work is needed for this).
  • Vegeta driver to support options above
  • Vegeta docker image to support options above

Use case

  • I would like to use it to test ElasticSearch query behavior - usually ES can have some pretty long queries which go beyond the URL limit.

Sub-tasks

  • #49 new configuration options
  • cdarwin/vegeta#1 vegeta docker image support for targets file
  • #50 VegetaDriver support for targets file

JMeter support

Currently we are using "vegeta" as the load testing tool. Add support for JMeter as well.

Improve benchmark workers

  • Average response times for each configured endpoint within kallabeez worker
  • Record information about undesirable responses from endpoints
  • The hash returned to the main worker should include the following for each endpoint:
    • Avg response time
    • Total iterations
    • Successful iterations
    • Response codes of unsuccessful hits

Stream logs in real time

As a user, I should be able to see logs of docker building components, my container starting up / running, and responding to HTTP requests

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.