Code Monkey home page Code Monkey logo

diago's Introduction

Diago

Test Coverage

Diago is a Performance Testing Framework, designed to run on Kubernetes. It integrates with various Kubernetes features to be easy to deploy, scalable and keep cost of operations low. Some of its features are:

  • Runs on Kubernetes: Diago directly runs on Kubernetes, which make it easy to deploy and manage. Diago interacts with the Kubernetes API to spin up Workers, which are responsible for generating load. It can also use the Kubernetes API to simulate disasters for Pods under load.
  • Distributed: Diago's architecture is based on a Leader - Worker relationship, where the leader is responsible for spinning up Workers to perform the load test. This lets it be more scalable and allows it to scale to massive amounts of load based on the size of the Kubernetes cluster it runs on.
  • Integrated UI: Diago comes with a UI which is designed to be minimal and easy to use. Not only does the UI show detailed reports generated after the test results, but it also integrates with Kubernetes based tools like Grafana to display useful metrics that were captured during the load test.
  • Integration with Prometheus: Diago can exposes aggregated Prometheus style metrics for monitoring systems to scrape. Users extract these metrics and use them with a monitoring system of their choice.
  • Automation Friendly: Diago exposes REST APIs for automating creation, running, deletion of tests, disaster simulations etc.
  • Expandable: Diago's worker use gRPC for communication and are designed to be completely decoupled from the Leader. This allows users to write their own workers for custom load tests, which use the gRPC protobufs in diago-idl.

Install

Refer to the wiki for Installing Diago.

Docker images are available on Docker Hub and can be pulled by running:

docker pull tbfame/diago:latest

Documentation

Refer to the wiki for Documentation.

Building from source

Submodules

Diago contains submodules for the following:

  • ui: The Diago UI React App
  • idl: The Diago Protobuf files

For any contributions to the submodules, please refer to the repository's documentation itself.

Generated files

Diago contains files generated using the following programs. These have to be installed before building diago from source:

  • controller-gen: Used to create diago CRDs in api/
  • protoc: Used to generate the protobuf files in proto-gen/
  • packr2: Used to bundle UI assets and files in static with the binary

The Makefile provides some handy commands to compile diago:

  • crd-gen: Generates the CRD files
  • proto: Generates the protobuf files
  • ui: Generates the ui files
  • packr: Generates .go files from static assets

Compiling the binary

  • To compile the diago binary, run the following command: RUN CGO_ENABLED=0 GOOS=linux go build cmd/main.go
  • You can also create a docker image by running the following command. This will use multi staged builds in docker to compile the UI and packr assets.
docker build -t diago .

More Information

  • Diago uses github workflows for CI, check the actions tab.
  • Pushes to docker hub are made by the organization members with new releases.

License

Apache License 2.0

diago's People

Contributors

brity avatar exue026 avatar fliu98 avatar mc-d-cai avatar mikecai011 avatar rmn7 avatar

Watchers

 avatar

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.