decred.org/dcrdex@v1.0.5/dex/testing/dcrdex/harness.sh (about) 1 #!/usr/bin/env bash 2 # Tmux script that configures and runs dcrdex. 3 4 set -e 5 6 # Setup test data dir for dcrdex. 7 TEST_ROOT=~/dextest 8 DCRDEX_DATA_DIR=${TEST_ROOT}/dcrdex 9 rm -rf "${DCRDEX_DATA_DIR}" 10 mkdir -p "${DCRDEX_DATA_DIR}" 11 12 # Rebuild dcrdex with the required simnet locktime settings. 13 HARNESS_DIR=$( 14 cd $(dirname "$0") 15 pwd 16 ) 17 18 # Build script 19 cat > "${DCRDEX_DATA_DIR}/build" <<EOF 20 #!/usr/bin/env bash 21 cd ${HARNESS_DIR}/../../../server/cmd/dcrdex/ 22 go build -o ${DCRDEX_DATA_DIR}/dcrdex -ldflags \ 23 "-X 'decred.org/dcrdex/dex.testLockTimeTaker=1m' \ 24 -X 'decred.org/dcrdex/dex.testLockTimeMaker=2m'" 25 EOF 26 chmod +x "${DCRDEX_DATA_DIR}/build" 27 28 cat > "${DCRDEX_DATA_DIR}/build-lock" <<EOF 29 #!/usr/bin/env bash 30 cd ${HARNESS_DIR}/../../../server/cmd/dcrdex/ 31 go build -o ${DCRDEX_DATA_DIR}/dcrdex -ldflags \ 32 "-X 'decred.org/dcrdex/dex.testLockTimeTaker=\${1:-3m}' \ 33 -X 'decred.org/dcrdex/dex.testLockTimeMaker=\${2:-6m}'" 34 EOF 35 chmod +x "${DCRDEX_DATA_DIR}/build-lock" 36 37 "${DCRDEX_DATA_DIR}/build" 38 39 cd "${DCRDEX_DATA_DIR}" 40 41 # Drop and re-create the test db. 42 TEST_DB=dcrdex_simnet_test 43 sudo -u postgres -H psql -c "DROP DATABASE IF EXISTS ${TEST_DB}" \ 44 -c "CREATE DATABASE ${TEST_DB} OWNER dcrdex" 45 46 # Write dcrdex.conf. The regfeexpub comes from the alpha>server_fees account. 47 cat << EOF >> ./dcrdex.conf 48 pgdbname=${TEST_DB} 49 simnet=1 50 rpclisten=127.0.0.1:17273 51 debuglevel=trace 52 loglocal=true 53 signingkeypass=keypass 54 adminsrvon=1 55 adminsrvpass=adminpass 56 adminsrvaddr=127.0.0.1:16542 57 bcasttimeout=1m 58 # freecancels=1 59 maxepochcancels=128 60 httpprof=1 61 noderelayaddr=127.0.0.1:17539 62 EOF 63 64 # Set the postgres user pass if provided. 65 if [ -n "${PG_PASS}" ]; then 66 echo pgpass="${PG_PASS}" >> ./dcrdex.conf 67 fi 68 69 # Write rpc.cert and rpc.key. 70 cat > "./rpc.cert" <<EOF 71 -----BEGIN CERTIFICATE----- 72 MIICpTCCAgagAwIBAgIQZMfxMkSi24xMr4CClCODrzAKBggqhkjOPQQDBDBJMSIw 73 IAYDVQQKExlkY3JkZXggYXV0b2dlbmVyYXRlZCBjZXJ0MSMwIQYDVQQDExp1YnVu 74 dHUtcy0xdmNwdS0yZ2ItbG9uMS0wMTAeFw0yMDA2MDgxMjM4MjNaFw0zMDA2MDcx 75 MjM4MjNaMEkxIjAgBgNVBAoTGWRjcmRleCBhdXRvZ2VuZXJhdGVkIGNlcnQxIzAh 76 BgNVBAMTGnVidW50dS1zLTF2Y3B1LTJnYi1sb24xLTAxMIGbMBAGByqGSM49AgEG 77 BSuBBAAjA4GGAAQApXJpVD7si8yxoITESq+xaXWtEpsCWU7X+8isRDj1cFfH53K6 78 /XNvn3G+Yq0L22Q8pMozGukA7KuCQAAL0xnuo10AecWBN0Zo2BLHvpwKkmAs71C+ 79 5BITJksqFxvjwyMKbo3L/5x8S/JmAWrZoepBLfQ7HcoPqLAcg0XoIgJjOyFZgc+j 80 gYwwgYkwDgYDVR0PAQH/BAQDAgKkMA8GA1UdEwEB/wQFMAMBAf8wZgYDVR0RBF8w 81 XYIadWJ1bnR1LXMtMXZjcHUtMmdiLWxvbjEtMDGCCWxvY2FsaG9zdIcEfwAAAYcQ 82 AAAAAAAAAAAAAAAAAAAAAYcEsj5QQYcEChAABYcQ/oAAAAAAAAAYPqf//vUPXDAK 83 BggqhkjOPQQDBAOBjAAwgYgCQgFMEhyTXnT8phDJAnzLbYRktg7rTAbTuQRDp1PE 84 jf6b2Df4DkSX7JPXvVi3NeBru+mnrOkHBUMqZd0m036aC4q/ZAJCASa+olu4Isx7 85 8JE3XB6kGr+s48eIFPtmq1D0gOvRr3yMHrhJe3XDNqvppcHihG0qNb0gyaiX18Cv 86 vF8Ti1x2vTkD 87 -----END CERTIFICATE----- 88 EOF 89 cat > "./rpc.key" <<EOF 90 -----BEGIN EC PRIVATE KEY----- 91 MIHcAgEBBEIADTDRCsp8om9OhJa+m46FZ5IhgLAno1Rp6B0i2lqESL5x9vV/upiV 92 TbNzCeFqEY5/Ujra9f8ZovqMlrIQmNOaZFmgBwYFK4EEACOhgYkDgYYABAClcmlU 93 PuyLzLGghMRKr7Fpda0SmwJZTtf7yKxEOPVwV8fncrr9c2+fcb5irQvbZDykyjMa 94 6QDsq4JAAAvTGe6jXQB5xYE3RmjYEse+nAqSYCzvUL7kEhMmSyoXG+PDIwpujcv/ 95 nHxL8mYBatmh6kEt9Dsdyg+osByDRegiAmM7IVmBzw== 96 -----END EC PRIVATE KEY----- 97 EOF 98 99 # DEX admin script 100 cat > "${DCRDEX_DATA_DIR}/dexadm" <<EOF 101 #!/usr/bin/env bash 102 if [[ "\$#" -eq "2" ]]; then 103 curl --cacert ${DCRDEX_DATA_DIR}/rpc.cert --basic -u u:adminpass --header "Content-Type: text/plain" --data-binary "\$2" https://127.0.0.1:16542/api/\$1 104 else 105 curl --cacert ${DCRDEX_DATA_DIR}/rpc.cert --basic -u u:adminpass https://127.0.0.1:16542/api/\$1 106 fi 107 EOF 108 chmod +x "${DCRDEX_DATA_DIR}/dexadm" 109 110 SESSION="dcrdex-harness" 111 112 export SHELL=$(which bash) 113 114 # Shutdown script 115 cat > "${DCRDEX_DATA_DIR}/quit" <<EOF 116 #!/usr/bin/env bash 117 tmux send-keys -t $SESSION:0 C-c 118 if [ -n "${NODERELAY}" ] ; then 119 tmux send-keys -t $SESSION:1 C-c 120 tmux wait-for donenoderelay 121 fi 122 tmux wait-for donedex 123 tmux kill-session -t $SESSION 124 EOF 125 chmod +x "${DCRDEX_DATA_DIR}/quit" 126 127 cat > "${DCRDEX_DATA_DIR}/run" <<EOF 128 #!/usr/bin/env bash 129 ${HARNESS_DIR}/genmarkets.sh 130 ${DCRDEX_DATA_DIR}/dcrdex --appdata=$(pwd) \$*; tmux wait-for -S donedex 131 EOF 132 chmod +x "${DCRDEX_DATA_DIR}/run" 133 134 echo "Starting dcrdex" 135 tmux new-session -d -s $SESSION $SHELL 136 tmux rename-window -t $SESSION:0 'dcrdex' 137 138 if [ -n "${NODERELAY}" ]; then 139 tmux send-keys -t $SESSION:0 "export NODERELAY=1" C-m 140 141 # These match the values in genmarkets.sh 142 BTC_NODERELAY_ID="btc_a21afba3" 143 DCR_NODERELAY_ID="dcr_a21afba3" 144 145 SOURCENODE_DIR=$(realpath "${HARNESS_DIR}/../../../server/noderelay/cmd/sourcenode/") 146 cd ${SOURCENODE_DIR} 147 go build -o ${DCRDEX_DATA_DIR}/sourcenode 148 cd "${DCRDEX_DATA_DIR}" 149 150 RPC_PORT="20556" 151 RELAYFILE="${DCRDEX_DATA_DIR}/data/simnet/noderelay/relay-files/${BTC_NODERELAY_ID}.relayfile" 152 153 tmux new-window -t $SESSION:1 -n 'sourcenode_btc' $SHELL 154 # dcrdex needs to write the relayfiles. 155 tmux send-keys -t $SESSION:1 "sleep 4" C-m 156 tmux send-keys -t $SESSION:1 "./sourcenode --port ${RPC_PORT} --relayfile ${RELAYFILE}; tmux wait-for -S donenoderelay" C-m 157 158 # Decred 159 RPC_PORT="19561" 160 RELAYFILE="${DCRDEX_DATA_DIR}/data/simnet/noderelay/relay-files/${DCR_NODERELAY_ID}.relayfile" 161 DCRD_CERT="${TEST_ROOT}/dcr/alpha/rpc.cert" 162 163 tmux new-window -t $SESSION:2 -n 'sourcenode_dcr' $SHELL 164 tmux send-keys -t $SESSION:2 "sleep 4" C-m 165 tmux send-keys -t $SESSION:2 "./sourcenode --port ${RPC_PORT} --relayfile ${RELAYFILE} --localcert ${DCRD_CERT}; tmux wait-for -S donenoderelay" C-m 166 fi 167 168 tmux send-keys -t $SESSION:0 "${DCRDEX_DATA_DIR}/run" C-m 169 tmux select-window -t $SESSION:0 170 tmux attach-session -t $SESSION