-
Notifications
You must be signed in to change notification settings - Fork 130
Add interop integration test harness for LND, CLN, and Eclair #839
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
febyeji
wants to merge
4
commits into
lightningdevkit:main
Choose a base branch
from
febyeji:interop-test-harness
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
4a1113b
Add ExternalNode trait with LND, CLN, and Eclair implementations
febyeji d736136
Add shared interop test scenarios and entry points
febyeji 9506ecf
Add Docker Compose and CI workflows for integration tests
febyeji 7420893
refactor(eclair): replace reqwest/curl with bitreq and simplify test …
febyeji File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,56 @@ | ||
| name: CI Checks - Eclair Integration Tests | ||
|
|
||
| on: [push, pull_request] | ||
|
|
||
| concurrency: | ||
| group: ${{ github.workflow }}-${{ github.ref }} | ||
| cancel-in-progress: true | ||
|
|
||
| jobs: | ||
| check-eclair: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Checkout repository | ||
| uses: actions/checkout@v4 | ||
|
|
||
| - name: Start bitcoind and electrs | ||
| run: docker compose -f docker-compose-eclair.yml up -d bitcoin electrs | ||
|
|
||
| - name: Wait for bitcoind to be healthy | ||
| run: | | ||
| for i in $(seq 1 30); do | ||
| if docker compose -f docker-compose-eclair.yml exec bitcoin bitcoin-cli -regtest -rpcuser=user -rpcpassword=pass getblockchaininfo > /dev/null 2>&1; then | ||
| echo "bitcoind is ready" | ||
| exit 0 | ||
| fi | ||
| echo "Waiting for bitcoind... ($i/30)" | ||
| sleep 2 | ||
| done | ||
| echo "ERROR: bitcoind not ready" | ||
| exit 1 | ||
|
|
||
| - name: Create wallets on bitcoind | ||
| run: | | ||
| docker compose -f docker-compose-eclair.yml exec bitcoin bitcoin-cli -regtest -rpcuser=user -rpcpassword=pass createwallet eclair | ||
| docker compose -f docker-compose-eclair.yml exec bitcoin bitcoin-cli -regtest -rpcuser=user -rpcpassword=pass -rpcwallet=eclair getnewaddress | ||
| docker compose -f docker-compose-eclair.yml exec bitcoin bitcoin-cli -regtest -rpcuser=user -rpcpassword=pass createwallet ldk_node_test | ||
|
|
||
| - name: Start Eclair | ||
| run: docker compose -f docker-compose-eclair.yml up -d eclair | ||
|
|
||
| - name: Wait for Eclair to be ready | ||
| run: | | ||
| for i in $(seq 1 60); do | ||
| if curl -sf -u :eclairpassword -X POST http://127.0.0.1:8080/getinfo > /dev/null 2>&1; then | ||
| echo "Eclair is ready" | ||
| exit 0 | ||
| fi | ||
| echo "Waiting for Eclair... ($i/60)" | ||
| sleep 5 | ||
| done | ||
| echo "Eclair failed to start" | ||
| docker compose -f docker-compose-eclair.yml logs eclair | ||
| exit 1 | ||
|
|
||
| - name: Run Eclair integration tests | ||
| run: RUSTFLAGS="--cfg eclair_test" cargo test --test integration_tests_eclair -- --show-output --test-threads=1 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| # Repackage acinq/eclair:latest onto a glibc-based runtime. | ||
| # The official image uses Alpine (musl libc), which causes SIGSEGV in | ||
| # secp256k1-jni because the native library is compiled against glibc. | ||
| FROM acinq/eclair:latest AS source | ||
|
|
||
| FROM eclipse-temurin:21-jre-jammy | ||
| WORKDIR /app | ||
|
|
||
| RUN apt-get update && apt-get install -y --no-install-recommends \ | ||
| bash jq curl unzip && \ | ||
| rm -rf /var/lib/apt/lists/* | ||
|
|
||
| COPY --from=source /sbin/eclair-cli /sbin/eclair-cli | ||
| COPY --from=source /app/eclair-node /app/eclair-node | ||
|
|
||
| ENV ECLAIR_DATADIR=/data | ||
| ENV JAVA_OPTS= | ||
|
|
||
| RUN mkdir -p "$ECLAIR_DATADIR" | ||
| VOLUME [ "/data" ] | ||
|
|
||
| ENTRYPOINT JAVA_OPTS="${JAVA_OPTS}" eclair-node/bin/eclair-node.sh "-Declair.datadir=${ECLAIR_DATADIR}" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I do wonder if we should (as a follow-up ?) move all docker-related files to something like
tests/docker?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good, I'll move them to
tests/docker/in a follow-up.