210 lines
10 KiB
Bash
210 lines
10 KiB
Bash
#!/usr/bin/env bash
|
|
## vim:set ft=bash ts=4 sw=4 et:
|
|
#
|
|
# Testscript to test progminer multiple pools/hosts/syntaxes
|
|
# Put this script in the bin directory of progminer and start running
|
|
#
|
|
# Run each host 30 times (having a sleep time of 5 sec) which
|
|
# means we run one host max 150sec and wait for one of the following
|
|
# statements in the output:
|
|
# * Accepted ==> Poolconnection works
|
|
# * Error ==> Poolconnection fails
|
|
# * Terminated ==> Poolconnection fails
|
|
# If we don't get any of them within the runtime connection is unconfirmed
|
|
|
|
# As Andrea Lanfranchi wrote a lot of the current startum protocol
|
|
# implementation and pool handling parts we can honor by using his
|
|
# donation wallet adresses
|
|
|
|
# export some vars as "./progminer" could be still a wrapper script
|
|
export ETH_WALLET="0x9E431042fAA3224837e9BEDEcc5F4858cf0390B9"
|
|
export WORKERNAME="pooltester"
|
|
export EMAIL="andrea.lanfranchi%40gmail.com"
|
|
export USERNAME="aminer"
|
|
export WORKERPWD="x"
|
|
export BTC_WALLET="3C4FURwL4oAaEUuCLYmNPUEKQSPR1FAJ3m"
|
|
|
|
POOLS=""
|
|
#2miners.com
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth.2miners.com:2020"
|
|
#dwarfpool.org
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET@eth-ar.dwarfpool.com:8008/WORKERNAME/EMAIL"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET@eth-asia.dwarfpool.com:8008/WORKERNAME/EMAIL"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET@eth-au.dwarfpool.com:8008/WORKERNAME/EMAIL"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET@eth-br.dwarfpool.com:8008/WORKERNAME/EMAIL"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET@eth-cn.dwarfpool.com:8008/WORKERNAME/EMAIL"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET@eth-cn2.dwarfpool.com:8008/WORKERNAME/EMAIL"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET@eth-eu.dwarfpool.com:8008/WORKERNAME/EMAIL"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET@eth-hk.dwarfpool.com:8008/WORKERNAME/EMAIL"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET@eth-sg.dwarfpool.com:8008/WORKERNAME/EMAIL"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET@eth-ru.dwarfpool.com:8008/WORKERNAME/EMAIL"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET@eth-ru2.dwarfpool.com:8008/WORKERNAME/EMAIL"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET@eth-us.dwarfpool.com:8008/WORKERNAME/EMAIL"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET@eth-us2.dwarfpool.com:8008/WORKERNAME/EMAIL"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth-ar.dwarfpool.com:8008"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth-asia.dwarfpool.com:8008"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth-au.dwarfpool.com:8008"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth-br.dwarfpool.com:8008"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth-cn.dwarfpool.com:8008"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth-cn2.dwarfpool.com:8008"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth-eu.dwarfpool.com:8008"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth-hk.dwarfpool.com:8008"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth-sg.dwarfpool.com:8008"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth-ru.dwarfpool.com:8008"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth-ru2.dwarfpool.com:8008"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth-us.dwarfpool.com:8008"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth-us2.dwarfpool.com:8008"
|
|
#ethermine.org
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@asia1.ethermine.org:4444"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eu1.ethermine.org:4444"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@us1.ethermine.org:4444"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@us2.ethermine.org:4444"
|
|
#ethermine.org-ssl
|
|
POOLS="$POOLS stratum1+ssl://ETH_WALLET.WORKERNAME@asia1.ethermine.org:5555"
|
|
POOLS="$POOLS stratum1+ssl://ETH_WALLET.WORKERNAME@eu1.ethermine.org:5555"
|
|
POOLS="$POOLS stratum1+ssl://ETH_WALLET.WORKERNAME@us1.ethermine.org:5555"
|
|
POOLS="$POOLS stratum1+ssl://ETH_WALLET.WORKERNAME@us2.ethermine.org:5555"
|
|
#ethpool.org
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@asia1.ethpool.org:3333"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eu1.ethpool.org:3333"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@us1.ethpool.org:3333"
|
|
#f2pool.com
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth.f2pool.com:8008"
|
|
#miningpoolhub.com
|
|
POOLS="$POOLS stratum2+tcp://USERNAME%2eWORKERNAME:WORKERPWD@asia.ethash-hub.miningpoolhub.com:20535"
|
|
POOLS="$POOLS stratum2+tcp://USERNAME%2eWORKERNAME:WORKERPWD@europe.ethash-hub.miningpoolhub.com:20535"
|
|
POOLS="$POOLS stratum2+tcp://USERNAME%2eWORKERNAME:WORKERPWD@us-east.ethash-hub.miningpoolhub.com:20535"
|
|
#miningpoolhub.com-ssl - see issue 1629 - seems not working
|
|
#POOLS="$POOLS stratum2+ssl://USERNAME%2eWORKERNAME:WORKERPWD@asia.ethash-hub.miningpoolhub.com:20535"
|
|
#POOLS="$POOLS stratum2+ssl://USERNAME%2eWORKERNAME:WORKERPWD@europe.ethash-hub.miningpoolhub.com:20535"
|
|
#POOLS="$POOLS stratum2+ssl://USERNAME%2eWORKERNAME:WORKERPWD@us-east.ethash-hub.miningpoolhub.com:20535"
|
|
#nanopool.org
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET@eth-asia1.nanopool.org:9999/WORKERNAME/EMAIL"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET@eth-eu1.nanopool.org:9999/WORKERNAME/EMAIL"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET@eth-eu2.nanopool.org:9999/WORKERNAME/EMAIL"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET@eth-us-east1.nanopool.org:9999/WORKERNAME/EMAIL"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET@eth-us-west1.nanopool.org:9999/WORKERNAME/EMAIL"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth-asia1.nanopool.org:9999"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth-eu1.nanopool.org:9999"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth-eu2.nanopool.org:9999"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth-us-east1.nanopool.org:9999"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eth-us-west1.nanopool.org:9999"
|
|
#nicehash.com
|
|
POOLS="$POOLS stratum2+tcp://BTC_WALLET@daggerhashimoto.br.nicehash.com:3353"
|
|
POOLS="$POOLS stratum2+tcp://BTC_WALLET@daggerhashimoto.eu.nicehash.com:3353"
|
|
POOLS="$POOLS stratum2+tcp://BTC_WALLET@daggerhashimoto.hk.nicehash.com:3353"
|
|
POOLS="$POOLS stratum2+tcp://BTC_WALLET@daggerhashimoto.in.nicehash.com:3353"
|
|
POOLS="$POOLS stratum2+tcp://BTC_WALLET@daggerhashimoto.jp.nicehash.com:3353"
|
|
POOLS="$POOLS stratum2+tcp://BTC_WALLET@daggerhashimoto.usa.nicehash.com:3353"
|
|
POOLS="$POOLS stratum2+tcp://BTC_WALLET.WORKERNAME@daggerhashimoto.br.nicehash.com:3353"
|
|
POOLS="$POOLS stratum2+tcp://BTC_WALLET.WORKERNAME@daggerhashimoto.eu.nicehash.com:3353"
|
|
POOLS="$POOLS stratum2+tcp://BTC_WALLET.WORKERNAME@daggerhashimoto.hk.nicehash.com:3353"
|
|
POOLS="$POOLS stratum2+tcp://BTC_WALLET.WORKERNAME@daggerhashimoto.in.nicehash.com:3353"
|
|
POOLS="$POOLS stratum2+tcp://BTC_WALLET.WORKERNAME@daggerhashimoto.jp.nicehash.com:3353"
|
|
POOLS="$POOLS stratum2+tcp://BTC_WALLET.WORKERNAME@daggerhashimoto.usa.nicehash.com:3353"
|
|
#sparkpool.com
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@cn.sparkpool.com:3333"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@eu.sparkpool.com:3333"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@jp.sparkpool.com:3333"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@kr.sparkpool.com:3333"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@na-east.sparkpool.com:3333"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@na-west.sparkpool.com:3333"
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@tw.sparkpool.com:3333"
|
|
# whalesburg
|
|
POOLS="$POOLS stratum1+tcp://ETH_WALLET.WORKERNAME@proxy.pool.whalesburg.com:8082"
|
|
|
|
# check if any parameter and give a hint to specify -G, -U or -X
|
|
if [[ "x" == "x$1" ]]; then
|
|
self=$(basename $0)
|
|
echo "One of -G, -U or -X must be specified"
|
|
exit 2
|
|
fi
|
|
|
|
# replace explicit stratum version with autodetect version
|
|
if [[ 1 == 0 ]]; then
|
|
p=""
|
|
for pool in $POOLS; do
|
|
v=$pool
|
|
v=$(echo "${v/stratum2+tcp/stratum}")
|
|
v=$(echo "${v/stratum1+tcp/stratum}")
|
|
v=$(echo "${v/stratum+tcp/stratum}")
|
|
v=$(echo "${v/stratum2+ssl/stratums}")
|
|
v=$(echo "${v/stratum1+ssl/stratums}")
|
|
v=$(echo "${v/stratum+ssl/stratums}")
|
|
p="$p $v"
|
|
done
|
|
POOLS=$p
|
|
fi
|
|
|
|
error_cnt=0
|
|
for pool in $POOLS; do
|
|
rm -f log.txt
|
|
current_test_pattern=$pool
|
|
|
|
# replace placeholders in the pattern with our values
|
|
pool=$(echo "${pool/ETH_WALLET/$ETH_WALLET}")
|
|
pool=$(echo "${pool/WORKERNAME/$WORKERNAME}")
|
|
pool=$(echo "${pool/EMAIL/$EMAIL}")
|
|
pool=$(echo "${pool/USERNAME/$USERNAME}")
|
|
pool=$(echo "${pool/WORKERPWD/$WORKERPWD}")
|
|
pool=$(echo "${pool/BTC_WALLET/$BTC_WALLET}")
|
|
|
|
echo "Testing=$current_test_pattern"
|
|
echo "./progminer -v 1 --exit --report-hashrate -P $pool $@"
|
|
echo "./progminer -v 1 --exit --report-hashrate -P $pool $@" > log.txt
|
|
./progminer -v 1 --exit --report-hashrate -P $pool $@ >> log.txt 2>&1 &
|
|
pid=$!
|
|
#echo "PID=$pid"
|
|
|
|
exit_due_log=0
|
|
for ((i=0; i<30; i++)) do
|
|
sleep 5 # 30 * 5sec = 150sec max total running time per host
|
|
|
|
l=$(grep "Accepted" log.txt | wc -l)
|
|
if [[ $l != 0 ]]; then
|
|
echo "OK: $current_test_pattern"
|
|
exit_due_log=1
|
|
break
|
|
fi
|
|
|
|
l=$(grep "Error" log.txt | wc -l)
|
|
if [[ $l != 0 ]]; then
|
|
cp -a log.txt error${error_cnt}.txt
|
|
error_cnt=$((error_cnt+1))
|
|
echo "ERROR (Error): $current_test_pattern"
|
|
exit_due_log=1
|
|
break
|
|
fi
|
|
|
|
l=$(grep "Terminated" log.txt | wc -l)
|
|
if [[ $l != 0 ]]; then
|
|
cp -a log.txt error${error_cnt}.txt
|
|
error_cnt=$((error_cnt+1))
|
|
echo "ERROR (Terminated): $current_test_pattern"
|
|
exit_due_log=1
|
|
break
|
|
fi
|
|
done
|
|
|
|
kill -2 $pid
|
|
wait $pid
|
|
|
|
if [[ $exit_due_log != 1 ]]; then # seems we've not submitted any share within our mining time - treat as error
|
|
cp -a log.txt error${error_cnt}.txt
|
|
error_cnt=$((error_cnt+1))
|
|
echo "WARNING - UNCONFIRMED STATUS: No share submitted while running: $current_test_pattern"
|
|
echo " Fix this by increase runtime or hashrate!"
|
|
fi
|
|
|
|
sleep 1
|
|
done
|
|
|
|
if [[ $error_cnt == 0 ]]; then
|
|
echo "SUCCESS: All tests done!"
|
|
else
|
|
echo "ERROR: $error_cnt test(s) failed!"
|
|
exit 1
|
|
fi
|
|
|
|
exit 0
|