Skip to content

Add Eclair integration tests#785

Draft
tnull wants to merge 2 commits intolightningdevkit:mainfrom
tnull:2026-02-add-eclair-integration-tests
Draft

Add Eclair integration tests#785
tnull wants to merge 2 commits intolightningdevkit:mainfrom
tnull:2026-02-add-eclair-integration-tests

Conversation

@tnull
Copy link
Collaborator

@tnull tnull commented Feb 6, 2026

No description provided.

Add `integration_tests_eclair.rs` with a `TestEclairClient` wrapping
Eclair's HTTP REST API via `bitreq`, and a `test_eclair()` function
exercising channel open/close, bidirectional BOLT11 payments, and
soft-fail splice in/out tests.

Also add `eclair_test` to the `check-cfg` list in `Cargo.toml` and to
the cfg gate in `tests/common/mod.rs`.

Generated with the help of AI (Claude Code).

Co-Authored-By: HAL 9000
@ldk-reviews-bot
Copy link

ldk-reviews-bot commented Feb 6, 2026

👋 I see @valentinewallace was un-assigned.
If you'd like another reviewer assignment, please click here.

Add `docker-compose-eclair.yml` running bitcoind (with ZMQ), electrs,
and `acinq/eclair:v0.13.1`, and a GitHub Actions workflow that starts
the containers and runs the Eclair integration test suite.

Generated with the help of AI (Claude Code).

Co-Authored-By: HAL 9000
Signed-off-by: Elias Rohrer <dev@tnull.de>
@tnull tnull force-pushed the 2026-02-add-eclair-integration-tests branch from 43673da to cb73a18 Compare February 6, 2026 11:43
@tnull tnull marked this pull request as draft February 6, 2026 13:22
@tnull tnull removed the request for review from valentinewallace February 6, 2026 13:22
@jkczyz
Copy link
Contributor

jkczyz commented Mar 20, 2026

Were you able to get this to work locally with docker? I'm having trouble on macOS. I threw Claude at the problem, and it gave up but did fix some issues:

⏺ We found several bugs in the cherry-picked commits:

  1. Wrong Eclair config key names: rpc-port, rpc-user, rpc-password should be rpcport, rpcuser, rpcpassword. This caused Eclair to use default port 8332 instead of 18443.
  2. Wrong ZMQ topic: bitcoind was configured with -zmqpubrawblock but Eclair subscribes to hashblock, not rawblock. Changed to -zmqpubhashblock.
  3. Bitcoin Core version mismatch: Eclair latest (0.14.0-SNAPSHOT) requires Bitcoin Core 29+, but the compose file used blockstream/bitcoind:27.2. Changed to bitcoin/bitcoin:29.
  4. corepc-types incompatibility with BC 29: Bitcoin Core 29 changed warnings from string to array in getblockchaininfo, breaking deserialization. Replaced get_blockchain_info() with get_block_count() in tests/common/mod.rs.
  5. Missing wallet setup: BC 29 doesn't auto-create a default wallet. Added a bitcoin-init service to create the ldk_node_test wallet and mine an initial block before Eclair/electrs start. Also added -Declair.bitcoind.wallet=ldk_node_test and -Declair.allow-unsafe-startup=true.

Unresolved: Eclair's ZMQ subscription doesn't receive messages when running in Docker on macOS, despite:

  • libzmq (pyzmq) working between containers
  • Jeromq working between containers in a standalone test with the same DONTWAIT polling pattern
  • ZMQ working from host to container

The issue appears specific to Eclair's Akka actor system interacting with jeromq inside Docker on macOS. I don't have a root cause.

@tnull
Copy link
Collaborator Author

tnull commented Mar 23, 2026

Were you able to get this to work locally with docker? I'm having trouble on macOS. I threw Claude at the problem, and it gave up but did fix some issues:

No, I never got it to work fully (not only macOS, but also not in CI) and didn't get back to look at it more closely yet. @febyeji however indicated to wanted to work on it as part of #766, so we might end up closing this PR.

@febyeji
Copy link

febyeji commented Mar 23, 2026

@tnull @jkczyz I'm working on this as part of an integration test harness PR for CLN, LND, and Eclair. Here's what I've found regarding the Eclair issues.

Confirmed fixes:

  • Eclair config key names: rpcport/rpcuser/rpcpassword (not hyphenated)
  • Bitcoin Core 29: Bumped bitcoind to 29.1.
  • Wallet setup: Bitcoin Core 29 doesn't auto-create a default wallet, so I had to create one explicitly.
  • ZMQ: I had to configure two ZMQ topics: zmqpubhashblock for blocks and zmqpubrawtx for transactions.
  • txindex: Eclair needs a synchronized, segwit-ready, zeromq-enabled, wallet-enabled, non-pruning, tx-indexing Bitcoin Core node. (standard Eclair requirement)

Regarding macOS Docker, I also had a similar issue. Standalone ZMQ tests work fine between containers, but Eclair's internal ZMQ subscription fails on Docker bridge networking. I didn't find a root cause for this yet.

  • On Linux, I worked around this by using network_mode: host, which eliminates the Docker network layer entirely and makes ZMQ reliable. Our CI runs on Linux so this works for us.
  • This doesn't help on macOS though, Docker Desktop there runs containers inside a Linux VM, so network_mode: host refers to the VM's network, not the Mac's. I haven't found a solution for macOS yet.

@tnull
Copy link
Collaborator Author

tnull commented Mar 23, 2026

Thank you very much!

  • This doesn't help on macOS though, Docker Desktop there runs containers inside a Linux VM, so network_mode: host refers to the VM's network, not the Mac's. I haven't found a solution for macOS yet.

I think it's not that bad as long as the tests run properly in CI. However, it would of course be preferable for macOS-based devs to also run them locally, but we shouldn't probably block on that (i.e., when in doubt open an issue for it so we don't forget and keep things moving).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants