Giter Site home page Giter Site logo

kijanowski / fallout Goto Github PK

View Code? Open in Web Editor NEW

This project forked from datastax/fallout

0.0 1.0 0.0 19.25 MB

Distributed System Testing as a Service

License: Apache License 2.0

Shell 0.31% Dockerfile 0.08% HTML 18.44% Python 0.15% Java 56.47% JavaScript 12.18% CSS 0.31% Kotlin 1.81% Clojure 6.06% Less 0.28% Mustache 3.90% Roff 0.01%

fallout's Introduction

Fallout

Fallout is a tool for running local or large scale remote based distributed correctness, verification and performance tests. Fallout is run in production at DataStax facilitating mission critical testing of Apache Cassandra™, Apache Pulsar™, and many other products.

This repository contains the core framework and components of fallout: you can use it to run performance tests on Google Kubernetes Engine. At DataStax, we have an internal version that builds on this code and integrates with our internal infrastructure.

Below are some resources covering Fallout's architecture and design (best consumed in order, shortest to longest):

Getting Started

The easiest way to get started is to use the published docker image (which bundles all the support tools with Fallout), and the fallout exec command which runs a single test definition:

$ docker run datastax/fallout:latest fallout exec --help
usage: java -jar fallout-0.1.0-SNAPSHOT-all.jar
       exec [--params TEMPLATE-PARAMS-YAML-FILE]
       [--use-unique-output-dir] [--config FILE] [-h] test-yaml-file
       creds-yaml-file output-dir [template-params [template-params ...]]

Run a single testrun in a standalone fallout process and exit

positional arguments:
  test-yaml-file         Test definition YAML file
  creds-yaml-file        Credentials YAML file
  output-dir             Where to write  testrun  artifacts;  it's an error
                         if the directory isn't empty
  template-params        Template params  for  test-yaml-file  in  the form
                         param=value

named arguments:
  --params TEMPLATE-PARAMS-YAML-FILE
                         Template parameters YAML file
  --use-unique-output-dir
                         Write     testrun     artifacts     to     output-
                         dir/TEST_NAME/TESTRUN_ID instead of  directly into
                         output-dir (default: false)
  --config FILE          Application configuration file
  -h, --help             show this help message and exit

For an example, see the Pulsar tests at https://github.com/datastax/pulsar-fallout.

Running a Server

Fallout can be run as a multi-user service (that's how we deploy it at DataStax). Before describing how to do this, one important caveat: please do not run Fallout as a service on the public internet. In its current form, it is not secure.

You can use docker compose to run docker-compose.yml. When starting for the first time you'll want to create a default admin user; you can do this by setting the FALLOUT_ADMIN_CREDS environment variable to <USERNAME>:<EMAIL>:<PASSWORD> on the very first start-up:

FALLOUT_ADMIN_CREDS=admin:[email protected]:admin \
  docker compose --file fallout-oss/docker/docker-compose.yml up

...and connect to http://localhost:8080.

The docker-compose.yml defines two volumes to persist the Fallout artifacts and cassandra data, so the next time you start, the data will still be there; also you won't need the FALLOUT_ADMIN_CREDS:

docker compose --file fallout-oss/docker/docker-compose.yml up

Single-user Mode

If you set the environment variable FALLOUT_AUTH_MODE to SINGLE_USER, then fallout will automatically log you in as the user defined in FALLOUT_ADMIN_CREDS above. In this case, you have to specify both environment variables every time you start:

FALLOUT_AUTH_MODE=SINGLE_USER \
FALLOUT_ADMIN_CREDS=admin:[email protected]:admin \
  docker compose --file fallout-oss/docker/docker-compose.yml up

The Future

We intend to move more functionality into this, the core repository, as time goes on. There will be better documentation, and more examples.

Building, Contributing and Issues

See BUILDING.md for how to build and run the project.

Contributions are welcome, please see CONTRIBUTING for guidance.

If you encounter any bugs, please file a GitHub issue.

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.