Skip to content

Commit 15a8aea

Browse files
authored
Merge pull request #162 from sanket1729/int_tests
2 parents ea7170e + 712ffbe commit 15a8aea

File tree

16 files changed

+664
-10
lines changed

16 files changed

+664
-10
lines changed

.github/workflows/rust.yml

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,14 @@ jobs:
4848
DO_BENCH: true
4949
run: ./contrib/test.sh
5050

51-
Tests:
51+
UnitTests:
5252
name: Tests
5353
runs-on: ubuntu-latest
5454
strategy:
5555
matrix:
5656
rust:
5757
- 1.29.0
5858
- beta
59-
- stable
6059
steps:
6160
- name: Checkout Crate
6261
uses: actions/checkout@v2
@@ -75,3 +74,24 @@ jobs:
7574
cargo update --verbose --package "serde_derive" --precise "1.0.98"
7675
- name: Running cargo
7776
run: ./contrib/test.sh
77+
78+
AllTests:
79+
name: Unit + Int tests
80+
runs-on: ubuntu-latest
81+
strategy:
82+
matrix:
83+
rust:
84+
- stable
85+
steps:
86+
- name: Checkout Crate
87+
uses: actions/checkout@v2
88+
- name: Checkout Toolchain
89+
uses: actions-rs/toolchain@v1
90+
with:
91+
profile: minimal
92+
toolchain: ${{ matrix.rust }}
93+
override: true
94+
- name: Running cargo
95+
env:
96+
BITCOINVERSION: 0.21.0
97+
run: ./contrib/test.sh

contrib/test.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,16 @@ if [ "$DO_BENCH" = true ]
4949
then
5050
cargo bench --features="unstable compiler"
5151
fi
52+
53+
# Run Integration tests if told so
54+
if [ -n "$BITCOINVERSION" ]; then
55+
set -e
56+
cd integration_test
57+
curl https://bitcoincore.org/bin/bitcoin-core-$BITCOINVERSION/bitcoin-$BITCOINVERSION-x86_64-linux-gnu.tar.gz | tar xvzf - bitcoin-$BITCOINVERSION/bin/bitcoind # will abort if the check fails.
58+
sha256sum --check bitcoin-core-$BITCOINVERSION.sha256sum
59+
export PATH=$PATH:$(pwd)/bitcoin-$BITCOINVERSION/bin
60+
./run.sh
61+
# Cleanups
62+
rm -rf bitcoin-$BITCOINVERSION
63+
exit 0
64+
fi

integration_test/Cargo.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[package]
2+
name = "integration_tests_miniscript"
3+
version = "0.1.0"
4+
authors = ["Steven Roose <steven@stevenroose.org>", "Sanket K <sanket1729@gmail.com>"]
5+
6+
[dependencies]
7+
miniscript = {path = "../"}
8+
9+
# Until 0.26 support is released on rust-bitcoincore-rpc
10+
bitcoincore-rpc = "0.14.0"
11+
bitcoin = "0.27.1"
12+
log = "0.4"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
7955542df199c6ce4ca0bb3966dcf9cc71199c592fec38508dad58301a3298d0 ./bitcoin-0.21.0/bin/bitcoind
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
4aebceb3caf83f27bd3dd9030da637bacc836912a65a896860dc0252d0ebfad9 ./bitcoin-22.0/bin/bitcoind

integration_test/random_ms.txt

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
and_b(lltvln:after(1231488000),s:pk(03d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a))
2+
uuj:and_v(v:multi(2,03d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a,025601570cb47f238d2b0286db4a990fa0f3ba28d1a319f5e7cf55c2a2444da7cc),after(1231488000))
3+
or_b(un:multi(2,03daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729,024ce119c96e2fa357200b559b2f7dd5a5f02d5290aff74b03f3e471b273211c97),al:older(16))
4+
j:and_v(vdv:after(1567547623),older(16))
5+
t:and_v(vu:hash256(H),v:sha256(H))
6+
t:andor(multi(3,02d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e,03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556,02e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13),v:older(4194305),v:sha256(H))
7+
or_d(multi(1,02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9),or_b(multi(3,022f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01,032fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f,03d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a),su:after(500000)))
8+
or_d(sha256(H),and_n(un:after(499999999),older(4194305)))
9+
and_v(or_i(v:multi(2,02c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5,03774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb),v:multi(2,03e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a,025cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc)),sha256(H))
10+
j:and_b(multi(2,0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798,024ce119c96e2fa357200b559b2f7dd5a5f02d5290aff74b03f3e471b273211c97),s:or_i(older(1),older(4252898)))
11+
and_b(older(16),s:or_d(sha256(H),n:after(1567547623)))
12+
j:and_v(v:ripemd160(H),or_d(sha256(H),older(16)))
13+
and_b(hash256(H),a:and_b(hash256(H),a:older(1)))
14+
thresh(2,multi(2,03a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7,036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a00),a:multi(1,036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a00),ac:pk_k(022f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01))
15+
and_n(sha256(H),t:or_i(v:older(4252898),v:older(16)))
16+
or_d(d:and_v(v:older(4252898),v:older(4252898)),sha256(H))
17+
c:and_v(or_c(sha256(H),v:multi(1,02c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db)),pk_k(03acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe))
18+
c:and_v(or_c(multi(2,036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a00,02352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5),v:ripemd160(H)),pk_k(03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556))
19+
and_v(andor(hash256(H),v:hash256(H),v:older(50000)),after(1231488000))
20+
andor(hash256(H),j:and_v(v:ripemd160(H),older(4194305)),ripemd160(H))
21+
or_i(c:and_v(v:after(500000),pk_k(02c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5)),sha256(H))
22+
thresh(2,c:pk_h(025cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc),s:sha256(H),a:ripemd160(H))
23+
and_n(sha256(H),uc:and_v(v:older(16),pk_k(03fe72c435413d33d48ac09c9161ba8b09683215439d62b7940502bda8b202e6ce)))
24+
and_n(c:pk_k(03daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729),and_b(l:older(15),a:older(16)))
25+
c:or_i(and_v(v:older(16),pk_h(02d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e)),pk_h(026a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4))
26+
or_d(c:pk_h(02e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13),andor(c:pk_k(024ce119c96e2fa357200b559b2f7dd5a5f02d5290aff74b03f3e471b273211c97),older(2016),after(1567547623)))
27+
c:andor(ripemd160(H),pk_h(02d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e),and_v(v:hash256(H),pk_h(03d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a)))
28+
c:andor(u:ripemd160(H),pk_h(03daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729),or_i(pk_h(022f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01),pk_h(0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798)))
29+
c:or_i(andor(c:pk_h(03d30199d74fb5a22d47b6e054e2f378cedacffcb89904a61d75d0dbd407143e65),pk_h(022f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01),pk_h(02c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5)),pk_k(02d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e))
30+
multi(2,03a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7,036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a00)
31+
multi(1,036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a00)
32+
thresh(2,multi(2,03a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7,036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a00),a:multi(1,036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a00))
33+
thresh(2,multi(2,03a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7,036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a00),a:multi(1,036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a00),ac:pk_k(022f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01))
34+
c:pk_k(022f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01)

integration_test/run.sh

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/bin/sh
2+
3+
TESTDIR=/tmp/rust_miniscript_test
4+
5+
rm -rf ${TESTDIR}
6+
mkdir -p ${TESTDIR}/1
7+
8+
# To kill any remaining open bitcoind.
9+
killall -9 bitcoind
10+
11+
echo $PATH
12+
13+
BLOCKFILTERARG=""
14+
if bitcoind -version | grep -q "v0\.\(19\|2\)"; then
15+
BLOCKFILTERARG="-blockfilterindex=1"
16+
fi
17+
18+
FALLBACKFEEARG=""
19+
if bitcoind -version | grep -q -e "v0\.2" -e "v2[2-9]"; then
20+
FALLBACKFEEARG="-fallbackfee=0.00001000"
21+
fi
22+
23+
bitcoind -regtest $FALLBACKFEEARG \
24+
-datadir=${TESTDIR}/1 \
25+
-rpcport=12348 \
26+
-server=1 \
27+
-printtoconsole=0 &
28+
PID1=$!
29+
30+
# Make sure it's listening.
31+
sleep 3
32+
33+
RPC_URL=http://localhost:12348 \
34+
RPC_COOKIE=${TESTDIR}/1/regtest/.cookie \
35+
cargo run
36+
37+
RESULT=$?
38+
39+
kill -9 $PID1
40+
rm -rf ${TESTDIR}
41+
exit $RESULT

0 commit comments

Comments
 (0)