/plax

A test automation engine for messaging systems

Primary LanguageGoApache License 2.0Apache-2.0

Plax: an engine for testing messaging systems

Go Reference License Contributor Covenant

And with reference to the narrative of events, far from permitting myself to derive it from the first source that came to hand, I did not even trust my own impressions, but it rests partly on what I saw myself, partly on what others saw for me, the accuracy of the report being always tried by the most severe and detailed tests possible.

-- Thucydides, The History of the Peloponnesian War

Summary

Plax is a test automation engine for messaging systems. This engine is designed to perform integrated testing of MQTT messaging, Kinesis streams, SNS traffic, SQS trafic, Kafka I/O, HTTP APIs, subprocesses, mobile apps (via WebDriver), and more.

An author of a test specifies a sequence of input and expected outputs over a set of channels that are connected to external services. Execution of the test verifies that the expected output occurred.

Automated Build Status

Test Tag Release

Command-line tools in this repo

  1. plax: The test engine (and probably the reason you are here). Documentation is here.
  2. plaxrun: Tool to run lots of Plax tests with various configurations. Documentation is here.
  3. plaxsubst: Utility to test/use parameter substitution independently from other Plax functionality. Related documenation is here.
  4. yamlincl: YAML include processor utility. Documenation is here.

Usage

Clone this repo and install Go. Then:

(cd cmd/plax && go install)
# Run one simple test.
plax -test demos/mock.yaml -log debug
# Run several tests.
plax -dir demos -labels selftest

That last command runs all the example test specs that are labeled as selftest. basic.yaml is a good, small example of a test specification.

Plugins

  1. Octane plugin

The language

See the main documentation and the examples.

References

  1. Plax manual and the plaxrun manual
  2. Sheens pattern matching and some examples
  3. Sheens, which could be used to implement more complex tests and simulations
  4. TCL "expect"