autobahn/

directory
v1.4.0 Latest Latest
Warning

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

Go to latest
Published: Apr 19, 2026 License: Apache-2.0

README

Autobahn fuzzingclient harness

This harness runs the Autobahn|Testsuite fuzzingclient against the celeris WebSocket middleware on each engine, validating RFC 6455 (WebSocket protocol) and RFC 7692 (permessage-deflate) compliance end-to-end.

What it tests

fuzzingclient runs ~500 cases across:

  • 1.x — Echo cases (text and binary, fragmented and unfragmented)
  • 2.x — Pings and pongs
  • 3.x — Reserved bits and opcodes
  • 4.x — Invalid framing
  • 5.x — Fragmentation handling
  • 6.x — UTF-8 validation
  • 7.x — Close handling
  • 9.x — Performance under large messages
  • 10.x — WebSocket compression negotiation
  • 12.x / 13.x — permessage-deflate edge cases

The acceptance criterion is 0 failures across cases 1.x–13.x for each celeris engine.

Requirements

  • Docker (for the Autobahn container — the project no longer ships native macOS binaries).
  • Go 1.22+ to build the celeris server.
  • On Linux, make autobahn runs all three engines (std/epoll/io_uring) in parallel. On macOS only std is exercised.

Run

cd test/autobahn
make autobahn        # build server, start engines, run fuzzingclient
open reports/clients/index.html

To run a single engine manually:

make build
./bin/autobahn-server -engine=epoll -addr=:9002 &
docker compose run --rm fuzzingclient

Files

  • server/main.go — celeris echo server with -engine flag
  • fuzzingclient.json — Autobahn case configuration (all cases, all engines)
  • docker-compose.yml — wraps crossbario/autobahn-testsuite
  • Makefile — orchestration: build, run, stop, clean
  • reports/ — generated HTML report (gitignored)

CI integration

The recommended CI flow is:

  • Every PR (Linux runner): make autobahn ENGINE=std — fast smoke on the std engine only.
  • Nightly (Linux runner): full make autobahn against all three engines, posting the report as a build artifact.

The mage target mage testAutobahn is the project-level entry point.

Directories

Path Synopsis
Package main is a minimal celeris WebSocket echo server used by the Autobahn fuzzingclient suite to validate RFC 6455 + RFC 7692 compliance against each celeris engine (std/epoll/io_uring).
Package main is a minimal celeris WebSocket echo server used by the Autobahn fuzzingclient suite to validate RFC 6455 + RFC 7692 compliance against each celeris engine (std/epoll/io_uring).

Jump to

Keyboard shortcuts

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