GithubHelp home page GithubHelp logo

designate-locust's Introduction

Overview

This uses Locust to do distributed load generation for Designate deployments. It includes the following:

  • Graphite support for realtime metrics
  • Authentication on Locust's web API to guard your locust cluster
  • Configurable relative weights for your Locust tasks, with separate sets of weights to simulate small-sized and large-sized users
  • Persisted reports: a summary report is automatically stored to disk when the test is stopped. Locust's web server is updated to serve these reports.
  • Support for "Digaas" a separate service that can poll the nameserver backend and give us statistics about the API-nameserver propagation time under load. These statistics are automatically fetched and integrated into the persisted report

Installation

See setup.sh for an installation sequence (on Ubuntu 12.04). This currently relies on my fork of locust that has a couple of minor changes.

Usage

Config

Copy accurate_config.py.sample -> accurate_config.py. This file can be updated with:

  • required: The Designate API endpoint
  • required: The list of tenants to use
  • optional: A username/password for the Locust's web server
  • optional: The location of your graphite server
  • optional: The location of Digaas

Test setup

Currently, this test requires a prepared Designate environment. When the test starts, it spends some time gathering data from your environment to use for the duration of the test. You will need to create a bunch of domains and records beforehand, and specify the tenant ids you're using in the config.

Web Interface

After defining your configs, for Locust's web interface run the following

locust -f accurate.py

Then visit localhost:8089 in a browser. The --host flag gives the location of your designate endpoint. Make sure your --host value has the protocal (http://) at the front, or Locust gives an error.

No-web Interface

For Locust's commandline interface:

locust -f accurate.py --no-web -c 1 -r 1 -n 10

where

`-c` specifies the number of clients
`-r` specifies the hatch rate
`-n` specifies the total number of requests to make

Distributed setup

On your master node:

locust -f example.py --master

Take note of your master's address, and on each of your slave nodes:

locust -f example.py --slave --master-host=<master_address>

designate-locust's People

Contributors

pglass avatar zaneos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

sujala rajanavee

designate-locust's Issues

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.