• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

cameri / nostream / 41225906361
78%

Build:
DEFAULT BRANCH: main
Ran 31 Oct 2026 05:47PM UTC
Jobs 2
Files 319
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

31 Oct 2026 05:43PM UTC coverage: 76.759% (+0.01%) from 76.748%
41225906361

push

github

web-flow
test(redis): prove the relay keeps publishing after the cache loses its scripts (#1003)

Adds an integration scenario for #1002.

## What #1002 actually was

The relay answered `HTTP 200`, accepted websocket upgrades, and never
acknowledged another event after its Redis cache was restarted. The
cause is that the relay issues `EVALSHA`, and Lua scripts live in the
cache's memory, so every call after a restart answers `NOSCRIPT`.

**The production failure was an old image, not missing code.** The retry
landed on 2026-10-21 in #920 (`src/adapters/redis-adapter.ts`,
`isNoScriptError` + a `scriptLoad` retry). The relay that failed was
built 2026-09-03 from revision `3006eee3`, five minor releases behind
`latest` (3.8.0, built 2026-10-24).

So what was missing is proof, not a fix: the unit test stubs `evalSha`,
which cannot catch a retry that stops working through the workers — the
path that actually broke — and nothing exercised a real script cache.

## What this adds

`test/integration/features/redis-script-cache/` — one scenario that
publishes, runs `SCRIPT FLUSH` against the same Redis, and publishes
twice more. `SCRIPT FLUSH` is the whole of a restart as far as the relay
can tell, and it is deterministic: no container to restart, no reconnect
to wait for.

The `@script-cache` hook configures a message rate limit on purpose.
Both limiters return early when `rateLimits` is empty, so a scenario
without one would pass whether or not the fallback existed — the guard
that makes this test mean something.

## Verification

| run | state of the adapter | result |
|---|---|---|
|
[41221855127](https://github.com/cameri/nostream/actions/runs/41221855127)
| retry present | **Integration Tests: success** |
|
[41222446906](https://github.com/cameri/nostream/actions/runs/41222446906)
| retry removed (probe commit) | **Integration Tests: failure**, Unit
Tests: failure |
|
[41222894268](https://github.com/cameri/nostream/actions/runs/41222894268)
| retry restored | **I... (continued)

4337 of 6162 branches covered (70.38%)

Branch coverage included in aggregate %.

9419 of 11759 relevant lines covered (80.1%)

777.83 hits per line

Jobs
ID Job ID Ran Files Coverage
1 Unit - 41225906361.1 31 Oct 2026 05:48PM UTC 319
74.11
GitHub Action Run
2 Integration - 41225906361.2 31 Oct 2026 05:47PM UTC 319
33.47
GitHub Action Run
Source Files on build 41225906361
  • Tree
  • List 319
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #41225906361
  • 7d5d73c3 on github
  • Prev Build on main (#40952516347)
  • Next Build on main (#41228990797)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc