You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: replace LocalCluster with manual node spawning for e2e tests
- Replace LocalCluster with Port-based manual node spawning to fix OTP 28 compatibility
- Spawn nodes as separate OS processes using elixir --name
- Connect nodes via Node.connect and initialize Ra cluster manually
- Update all e2e tests to use new API (ports instead of cluster)
- Remove LocalCluster dependency from mix.exs
- Enable e2e tests in GitHub Actions workflow (no longer skipped)
- Update e2e README to reflect new approach
- Fix charlist warning in spawn_node function
This fixes the timeout issues with LocalCluster :peer module in OTP 28
while maintaining full multi-node testing capabilities.
Copy file name to clipboardExpand all lines: e2e_test/README.md
+3-5Lines changed: 3 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,13 +2,11 @@
2
2
3
3
This directory contains end-to-end tests for Concord that verify distributed behavior across multiple nodes in realistic scenarios.
4
4
5
-
## ⚠️ Current Status: OTP 28 Compatibility Issue
5
+
## ✅ Status: Working with Manual Node Spawning
6
6
7
-
**LocalCluster 2.x is experiencing compatibility issues with Erlang/OTP 28.**The `:peer` module (used internally by LocalCluster) times out when attempting to start child nodes, preventing automated e2e tests from running.
7
+
**E2E tests now use manual node spawning via Port instead of LocalCluster**to avoid OTP 28 compatibility issues. Tests spawn actual Erlang VM processes as separate OS processes and connect them via distributed Erlang.
8
8
9
-
**Workaround:** Use manual multi-node testing (see "Manual Testing" section below) until this is resolved.
10
-
11
-
**Tracking:** This is a known issue with the `:peer` module in OTP 28 that affects multiple distributed testing tools.
9
+
**Approach:** Tests use `Port.open` to spawn `elixir --name` nodes, connect them with `Node.connect`, and initialize Ra cluster manually. This provides the same multi-node testing capabilities without the LocalCluster timeout issues.
0 commit comments