loago

command module
v0.0.0-...-ba7165a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 30, 2020 License: Apache-2.0 Imports: 1 Imported by: 0

README

Loago

Loago is a scaleable webapp loadtest utility based on Chrome/Chomium browser fleets.

Description

Use real Chromium-based browsers to loadtest your webapp/website.

Loago enables website load tests using a fleet of Chromium browser processes to reliable recreate user behaviour.
Real users use real browsers to visit webapps. And instead of measuring the maximum amount of requests your webapp can handle, it lets you decide how many users you wan't to simulate concurrently.
This gives devops and SRE's an indicator of how many users their webapp can handle, much better than simply saying how many HTTP requests it can take without any real-world cohesion.
To accurately simulate real browser behaviour, a real browser is used: Chromium (or Chromium based browsers implementing the DevTools API).
This makes sure the applied load behaves just like a real user, including browser caching and parallel asset loading.

Loago provides two modes: instructor and worker.

In instructor-mode you configure a loadtest, instruct one or more workers to perform this loadtest and save the results.

In worker-mode Loago actually performs the requests coming from an Loago instructor instance.

This allows for horizontal, geographically spread load scaling.

Key features

  • Efficient client-server communication via protobuf+gRPC including TLS encryption
  • Authentication currently implemented as basic auth token
  • Horizontal scaling, since one instructor can handle multiple workers
  • Written in Go
  • Scales as much as your memory does, though it's not as bad as you might think
  • Random, but weighted, HTTP requests on specific URL's
  • Every response contains TTFB, HTTP status code and message and will be send to the instructor

Project status

The loago project is in it's (very) early stage and should not be used on real websites or webapps!
But since there is no instructor mode available yet, this should be pretty inconvenient anyway ;-).

Installation

Install via go get:

go get github.com/dkorittki/loago

Usage

worker mode

Call loago serve from command line with these flags, to start Loago in worker mode:

-adress: listen address, e.g. 127.0.0.1 or 0.0.0.0 (default)
-port: listen port (default 50051)
-cert: path to TLS certificate
-key: path to TLS private key
-secret: basic auth secret for authentication

Documentation

Overview

Copyright © 2020 Dominik Korittki

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Directories

Path Synopsis
internal
pkg/testing/browser
Package browser contains mocked Executor implementations for the use in unit tests.
Package browser contains mocked Executor implementations for the use in unit tests.
pkg/worker/handler
Package handler provides request handler implementations.
Package handler provides request handler implementations.
pkg/worker/server
Package server provides a server for handling worker gRPC communication.
Package server provides a server for handling worker gRPC communication.
pkg/worker/service/loadtest
Package loadtest provides services and mechanics for handling loadtests.
Package loadtest provides services and mechanics for handling loadtests.
pkg
worker/runner
Package runner provides models and methods to interact with browsers to perform HTTP requests on websites.
Package runner provides models and methods to interact with browsers to perform HTTP requests on websites.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL