Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions .github/workflows/autobahn.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Autobahn

on:
push:
branches: [main, dev]
pull_request:
branches: [main, dev]

permissions:
contents: read

jobs:
conformance:
name: autobahn conformance
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# GitHub-hosted Ubuntu runners ship Docker and the compose plugin, so the
# same setup used locally (autobahn/docker-compose.yml) runs unchanged.
- name: Run Autobahn fuzzing client
working-directory: autobahn
# --abort-on-container-exit stops once the client finishes; the gowest
# server never exits on its own. wstest exits 0 regardless of results,
# so the run is gated by check_report.py below, not by this step.
run: docker compose up --build --abort-on-container-exit
- name: Check conformance report
working-directory: autobahn
run: python3 check_report.py
- name: Upload Autobahn report
if: always()
uses: actions/upload-artifact@v4
with:
name: autobahn-report
path: autobahn/report/
if-no-files-found: warn
19 changes: 0 additions & 19 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,22 +47,3 @@ jobs:
run: |
go vet ./...
go test -run='^$' -bench='^$' ./...

autobahn:
name: autobahn conformance
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Autobahn fuzzing client
working-directory: autobahn
run: docker compose up --build --abort-on-container-exit
- name: Check conformance report
working-directory: autobahn
run: python3 check_report.py
- name: Upload Autobahn report
if: always()
uses: actions/upload-artifact@v4
with:
name: autobahn-report
path: autobahn/report/
if-no-files-found: warn
7 changes: 3 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,10 @@
**A context-first, concurrency-safe, fast WebSocket library for Go.**

[![CI](https://github.com/ystepanoff/gowest/actions/workflows/ci.yml/badge.svg)](https://github.com/ystepanoff/gowest/actions/workflows/ci.yml)
[![Autobahn](https://github.com/ystepanoff/gowest/actions/workflows/autobahn.yml/badge.svg)](https://github.com/ystepanoff/gowest/actions/workflows/autobahn.yml)
[![Go Reference](https://pkg.go.dev/badge/github.com/ystepanoff/gowest.svg)](https://pkg.go.dev/github.com/ystepanoff/gowest)
[![Go Report Card](https://goreportcard.com/badge/github.com/ystepanoff/gowest)](https://goreportcard.com/report/github.com/ystepanoff/gowest)

<!-- The CI badge above covers the Autobahn conformance suite, which runs as a
gating job in the same workflow (see the Conformance section). -->

![GoWest](GoWest.png)

gowest is a small WebSocket library built around a single `Conn` type with a
Expand Down Expand Up @@ -221,7 +219,8 @@ harness in [`autobahn/`](autobahn/). Because gowest is server-only it runs in
fuzzing-client mode (Autobahn connects to a gowest echo server and drives every
RFC 6455 case).

**CI runs the full suite on every push** (the `autobahn` job in the workflow)
**CI runs the full suite on every push** (the dedicated
[Autobahn workflow](.github/workflows/autobahn.yml), reflected in the badge above)
and **fails the build if any case regresses** — `autobahn/check_report.py` parses
the report and treats anything other than `OK` / `NON-STRICT` / `INFORMATIONAL` /
`UNIMPLEMENTED` as a failure (`wstest` itself always exits 0, so this gate is what
Expand Down
Loading