All Projects β†’ emicklei β†’ Zazkia

emicklei / Zazkia

Licence: other
tcp proxy to simulate connection problems

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Zazkia

jdbdt
JDBDT: Java Database Delta Testing
Stars: ✭ 12 (-75.51%)
Mutual labels:  test-automation, testing-tools
Es Check
Checks the version of ES in JavaScript files with simple shell commands πŸ†
Stars: ✭ 448 (+814.29%)
Mutual labels:  testing-tools, test-automation
sbml-test-suite
The SBML Test Suite is a conformance testing system. It allows developers and users to test the degree and correctness of the SBML support provided in a software package.
Stars: ✭ 21 (-57.14%)
Mutual labels:  test-automation, testing-tools
request-baskets
HTTP requests collector to test webhooks, notifications, REST clients and more ...
Stars: ✭ 149 (+204.08%)
Mutual labels:  test-automation, testing-tools
Carina
Carina automation framework: Web, Mobile, API, DB
Stars: ✭ 549 (+1020.41%)
Mutual labels:  testing-tools, test-automation
Openrunner
Computest Openrunner: Benchmark and functional testing for frontend-heavy web applications
Stars: ✭ 16 (-67.35%)
Mutual labels:  test-automation, testing-tools
Tlsfuzzer
SSL and TLS protocol test suite and fuzzer
Stars: ✭ 335 (+583.67%)
Mutual labels:  testing-tools, test-automation
vim-testbed
Docker image for testing Vim plugins
Stars: ✭ 40 (-18.37%)
Mutual labels:  test-automation, testing-tools
Detox
High velocity native mobile development requires us to adopt continuous integration workflows, which means our reliance on manual QA has to drop significantly. Detox tests your mobile app while it’s running in a real device/simulator, interacting with it just like a real user.
Stars: ✭ 8,988 (+18242.86%)
Mutual labels:  test-automation, testing-tools
Karate
Test Automation Made Simple
Stars: ✭ 5,497 (+11118.37%)
Mutual labels:  testing-tools, test-automation
page-modeller
βš™οΈ Browser DevTools extension for modelling web pages for automation.
Stars: ✭ 66 (+34.69%)
Mutual labels:  test-automation, testing-tools
Pyats Docker
Dockerfile and scripts for pyATS
Stars: ✭ 34 (-30.61%)
Mutual labels:  testing-tools, test-automation
servirtium-java
Service Virtualized HTTP - to help service test automation stay fast and consistent
Stars: ✭ 16 (-67.35%)
Mutual labels:  test-automation, testing-tools
DeepfakeHTTP
DeepfakeHTTP is a web server that uses HTTP dumps as a source for responses.
Stars: ✭ 373 (+661.22%)
Mutual labels:  test-automation, testing-tools
page-walker
Chrome DevTools automation for desktop and mobile devices
Stars: ✭ 18 (-63.27%)
Mutual labels:  test-automation, testing-tools
Nut.js
Native UI testing / controlling with node
Stars: ✭ 309 (+530.61%)
Mutual labels:  testing-tools, test-automation
mbt-bundle
A core library for Sicope Model, a Model-Based Testing tool for web application.
Stars: ✭ 19 (-61.22%)
Mutual labels:  test-automation, testing-tools
educhain
an instructional purpose blockchain.
Stars: ✭ 21 (-57.14%)
Mutual labels:  test-automation, testing-tools
Awesome Test Automation
A curated list of awesome test automation frameworks, tools, libraries, and software for different programming languages. Sponsored by http://sdclabs.com
Stars: ✭ 4,712 (+9516.33%)
Mutual labels:  testing-tools, test-automation
Cypress
Fast, easy and reliable testing for anything that runs in a browser.
Stars: ✭ 35,145 (+71624.49%)
Mutual labels:  testing-tools, test-automation

zazkia is a tool that simulates all kinds of connection problems with a tcp connection (reset,delay,throttle,corrupt).

Build Status

How does it work ?

In order to apply misbehavior, zazkia must be used as a proxy between a client and service. It will accept tcp connections from a client and for each new one, will create a connection to the target service.

Routes

By specifying routes, you can tell zazkia on what ports to listen and what target to connect to (host and port).

Minimal zazkia-routes.json example

[
    {
        "label": "oracle",
        "service-hostname": "some.host.name",
        "service-port": 1521,
        "listen-port": 49997
    }
]

With this route definition, your application should use "localhost:49997" instead of "some.host.name:1521" in the connection specification. Your application (the client) will setup a tcp connection with zazkia which will setup another tcp connection to oracle (the service).

Initial transport behavior

The transport part of a route configuration can be used to setup the initial behavior of a new connection pair (called link). Using a REST api, the transport behavior can be changed on a per-link basis.

Full zazkia-routes.json example

[
    {
        "label": "postgresql",
        "service-hostname": "some.other.host.name",
        "service-port": 5432,
        "listen-port": 49998,
        "transport": {
			"accept-connections": true,
			"throttle-service-response": 1000,
			"delay-service-response": 100,
			"service-response-corrupt-method": "randomize",
			"sending-to-client": true,
			"receiving-from-client": true,
			"sending-to-service": true,
			"receiving-from-service": true,
			"verbose": true
        }
    }
]
transport property comment effective values
accept-connections whether connections from the client are accepted true, false
throttle-service-response bytes per second non-negative integer
delay-service-response milliseconds delay non-negative integer
service-response-corrupt-method how the bytes are mangled empty, randomize
sending-to-client whether a response from the service is sent back to the client true, false
receiving-from-client whether a request from the client is read true, false
sending-to-service whether a request from the client is sent to the service true, false
receiving-from-service whether a response from the service is read true, false
verbose log each message that is transported between client and service true, false

Default transport behavior

"transport": {
	"accept-connections": true,
	"throttle-service-response": 0,
	"delay-service-response": 0,
	"service-response-corrupt-method": "",
	"sending-to-client": true,
	"receiving-from-client": true,
	"sending-to-service": true,
	"receiving-from-service": true,
	"verbose": false
}

Build

To build the project locally and test it.

go get -u github.com/jteeuwen/go-bindata/...

Make sure $GOPATH/bin is on your $PATH.

go generate
go test
go build

Run

Defaults (-p 9191 -f zazkia-routes.json)

./zazkia

Dashboard

A simple HTML dashboard is available to change the transport behavior of individual links. See the Swagger tab for documentation of the REST API.

http://localhost:9191

Docker

A Docker image is available on Docker Hub.

Usage

docker run -d -p 9200-9300:9200-9300 -p 9191:9191 -v $(pwd):/data emicklei/zazkia

Zazkia will look for a file called zazkia-routes.json. The web UI will be running on http://localhost:9191 When using Docker, routes must use listener ports in the range 9200-9300 or 3306 (mysql) or 5432 (postgres) or 8080 (tomcat,jboss).

Examples

See the examples folder for simple usecase examples.

Build your own image

GOOS=linux go build && docker build -t emicklei/zazkia:latest .

Β© 2017, ernestmicklei.com. Apache v2 License. Contributions welcome.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].