Set failover's options, and decide to test on Linux only while keeping macOS and Windows unbroken
Test / lint (pull_request) Successful in 19s
Test / test (24) (pull_request) Successful in 17s
Test / test (26) (pull_request) Successful in 17s
Test / test (18) (pull_request) Successful in 17s
Test / test (20) (pull_request) Successful in 17s
Test / test (22) (pull_request) Successful in 17s
Test / lint (pull_request) Successful in 19s
Test / test (24) (pull_request) Successful in 17s
Test / test (26) (pull_request) Successful in 17s
Test / test (18) (pull_request) Successful in 17s
Test / test (20) (pull_request) Successful in 17s
Test / test (22) (pull_request) Successful in 17s
This commit was merged in pull request #4.
This commit is contained in:
@@ -1023,3 +1023,10 @@ Grouped by what each one constrains.
|
|||||||
their own. The four files that are not tests are the exception the rule needs stated:
|
their own. The four files that are not tests are the exception the rule needs stated:
|
||||||
`dummy-smsc.ts`, `raw-pdus.ts`, `reference-smpp.d.ts` and `teardown.ts` answer no question and are
|
`dummy-smsc.ts`, `raw-pdus.ts`, `reference-smpp.d.ts` and `teardown.ts` answer no question and are
|
||||||
named for what they hold.
|
named for what they hold.
|
||||||
|
|
||||||
|
- **CI tests on Linux only; `src/` keeps off what is known to break on macOS or Windows.** Maintainer's
|
||||||
|
call, 2026-09-14. Nothing verifies either platform, so the code avoids what is known to differ there:
|
||||||
|
shelling out, a path joined by hand, a signal Windows does not deliver, a Unix socket or a file mode.
|
||||||
|
That binds what `dist/` runs; the container tooling, `interop-tests/` and the `package.json` scripts
|
||||||
|
run on Linux by goal 9. Rejected: macOS and Windows runners, on GitHub's mirror or as Gitea
|
||||||
|
host-mode runners on a Windows VM and a Mac.
|
||||||
|
|||||||
@@ -289,8 +289,14 @@ Each lands under AGENTS.md goal 6: an option or a hook, with the call that passe
|
|||||||
|
|
||||||
- [ ] **Failover across SMSC hosts.** Maintainer's call, 2026-09-14. `client()` takes one `host` and
|
- [ ] **Failover across SMSC hosts.** Maintainer's call, 2026-09-14. `client()` takes one `host` and
|
||||||
`port`; Kannel, Jasmin and php-smpp take several. A list the reconnect loop walks holds only
|
`port`; Kannel, Jasmin and php-smpp take several. A list the reconnect loop walks holds only
|
||||||
which host the one session is on, so it needs no store. Open: in order or round robin, and when
|
which host the one session is on, so it needs no store. Two options, both maintainer's calls:
|
||||||
to try the first host again.
|
- **Order**, `fixed` or round robin, default `fixed`. Fixed starts every reconnect at the first
|
||||||
|
host; round robin at the host after the one the link was last on.
|
||||||
|
- **Starting over**, a boolean, default on: once the last host has been tried, go back to the
|
||||||
|
first. Off ends the session once the last host fails, as a drop does under `reconnect: false`.
|
||||||
|
Open: how the list and today's `host` and `port` share one spelling; whether the backoff grows
|
||||||
|
per host or per pass; and whether round robin with starting over off still tries the hosts
|
||||||
|
before the one it started at.
|
||||||
|
|
||||||
### The server
|
### The server
|
||||||
|
|
||||||
@@ -380,22 +386,6 @@ Each lands under AGENTS.md goal 6: an option or a hook, with the call that passe
|
|||||||
of its own on 24, since the matrix runs compiled JavaScript — and add it to `main`'s required
|
of its own on 24, since the matrix runs compiled JavaScript — and add it to `main`'s required
|
||||||
checks. Raise the floor as coverage rises; never lower it.
|
checks. Raise the floor as coverage rises; never lower it.
|
||||||
|
|
||||||
- [ ] **Tests on macOS and Windows, on Gitea runners.** Gitea 1.26.4 runs the Ubuntu jobs on
|
|
||||||
`dedicated-runner`; a Windows and a macOS host each running `act_runner` in host mode, under
|
|
||||||
labels such as `windows-2025:host` and `macos-15:host`, run the same `setup-node` matrix and can
|
|
||||||
be required checks on `main`. Registered ephemeral — the runner API already carries the flag — a
|
|
||||||
runner takes one job and leaves, so its host can be reset from a snapshot and registered again;
|
|
||||||
that loop is ours to script. CI already installs Node with `setup-node` rather than through
|
|
||||||
`compose.yaml`, so goal 9 needs no new exception.
|
|
||||||
- **Windows:** a KVM VM on our metal, or `dockur/windows`, the same VM packaged as a container,
|
|
||||||
which needs `/dev/kvm`. Either needs a Windows licence; the evaluation editions expire. Node
|
|
||||||
on `PATH`, since host mode runs `actions/checkout` and `actions/setup-node` with the host's
|
|
||||||
`node`. `cmd` hands the scripts' `*.test.*` globs to Node unexpanded, which Node 21 and later
|
|
||||||
expand themselves, so Node 18 and 20 cannot run there as the scripts stand.
|
|
||||||
- **macOS:** Apple hardware. Apple's licence allows macOS guests only on Apple hardware, so not
|
|
||||||
on our metal: a Mac mini running `act_runner` itself, or Tart VMs on it, two macOS guests at a
|
|
||||||
time.
|
|
||||||
|
|
||||||
- [ ] **Mutation testing.** `@stryker-mutator/tap-runner` runs `node:test` suites and measures whether
|
- [ ] **Mutation testing.** `@stryker-mutator/tap-runner` runs `node:test` suites and measures whether
|
||||||
a test notices a change, which coverage cannot; `@semyonf/smpp` runs Stryker in CI. The session
|
a test notices a change, which coverage cannot; `@semyonf/smpp` runs Stryker in CI. The session
|
||||||
suites are timer-heavy, so start with the codec and the encodings.
|
suites are timer-heavy, so start with the codec and the encodings.
|
||||||
|
|||||||
Reference in New Issue
Block a user