gpu-compute-chain/tests/testutil.sh

156 lines
3.2 KiB
Bash

#!/bin/bash
# Configuration options that all tests must include
set -e
colineard config chain-id colinear
colineard config output json
colineard config broadcast-mode block
# Test config addresses (Alice & Bob)
accounts=$(curl -s http://localhost:1317/cosmos/auth/v1beta1/accounts | jq -M ".accounts")
declare -g ALICE=$(echo $accounts | jq -rM '.[] | select(.account_number == "0") | .address')
declare -g BOB=$(echo $accounts | jq -rM '.[] | select(.account_number == "1") | .address')
function swallow {
read -r out
log_ok
echo $1 + swallow error
}
function assert_eq {
read -r out
if [[ $out = $1 ]]; then
log_ok
echo $2 correctly equals $1
else
log_fail
echo $2 should equal $1, instead got $out.
exit 1
fi
}
function expect_change {
read -r out
expected=$1
comp=$2
desc=$3
res=$(echo "$out - $comp" | bc)
if [[ $res = $expected ]]; then
log_ok
echo $desc correctly equals $res
else
log_fail
echo $desc should equal $expected, instead got $res
exit 1
fi
}
# Get balance of an account.
function get_balance {
local addr=$1
local denom=$2
colineard q bank balances $addr \
| jq -rM ".balances[] | select(.denom == \"$denom\") | .amount"
}
# Get current block time from chain.
function get_block_time {
return \
$(
curl -s http://0.0.0.0:1317/cosmos/base/tendermint/v1beta1/blocks/latest \
| jq -M ".blocks.header.height | tonumber"
)
}
function get_code {
read -r out
return $out | grep code: | awk -F ': ' '{print $2}'
}
function get_key {
read -r out
local filter=$2
echo $out | jq -M $filter
}
function get_last_auction_index {
res=$(colineard q colinearcore show-next-auction | jq -M ".NextAuction.auctionId | tonumber")
echo "$res-1" | bc
}
function get_next_auction_index {
colineard q colinearcore show-next-auction | jq -M ".NextAuction.auctionId | tonumber"
}
function now {
local op=$1
local amount=$2
if [[ op = "" ]]; then
date +%s
else
echo "$(date +%s) $op $amount" | bc
fi
}
function expect_success {
read -r out
local msg=${1:-Expect transaction to succeed}
local res=$(echo $out | jq -M ".code")
local raw_log=$(echo $out | jq -M ".raw_log")
# globally write response key
# response=$(echo $out | jq -M ".")
if [[ $res = 0 ]]; then
log_ok
echo $msg
else
log_fail
echo $msg
echo $raw_log
exit 1
fi
}
function expect_fail {
read -r out
local msg=${1:-Expect transaction to revert}
local res=$(echo $out | jq -M ".code")
if [[ $res = 0 ]]; then
log_fail
echo $msg
exit 1
else
log_ok
echo $msg
fi
}
function log_info {
printf "[ INFO ] $1\n"
}
function log_test {
printf "$(fmt_cyan '[ TEST ]') $1\n"
}
function log_ok {
printf "$(fmt_green '[ OK ]') "
}
function log_fail {
printf "$(fmt_red '[ FAIL ]') "
}
function fmt_red {
printf "\e[31m$1\e[0m"
}
function fmt_green {
printf "\e[32m$1\e[0m"
}
function fmt_cyan {
printf "\e[96m$1\e[0m"
}