#!/bin/sh
# PCP QA Test No. 1695
# Valgrind pmproxy REST API test cases.

# Copyright (c) 2019 Red Hat.
#

seq=`basename $0`
echo "QA output created by $seq"

# get standard environment, filters and checks
. ./common.product
. ./common.filter
. ./common.check

_check_valgrind
_check_series

_cleanup()
{
    cd $here
    $sudo rm -rf $tmp $tmp.*
}

status=1	# failure is the default!
username=`id -u -n`
$sudo rm -rf $tmp $tmp.* $seq.full
trap "_cleanup; exit \$status" 0 1 2 3 15

# real QA test starts here
port=`_find_free_port`
export PCP_RUN_DIR=/tmp
$_valgrind_clean_assert pmproxy -f -p $port -U $username -l- --timeseries >$tmp.valout 2>$tmp.valerr &
pid=$!

# valgrind takes awhile to fire up
pmsleep 4.5

date >>$seq.full
echo "=== checking metric scrape operation ===" | tee -a $seq.full
curl --get --silent http://localhost:$port/metrics >> $seq.full
date >>$seq.full
echo "=== checking metric fetch operation ===" | tee -a $seq.full
metrics="sample.colour,sample.long.one,sample.long.one,sample.double.one"
curl --get --silent "http://localhost:$port/pmapi/fetch?names=$metrics" >> $seq.full

echo "=== check pmproxy is running ==="
pminfo -v -h localhost@localhost:$port hinv.ncpu
if [ $? -eq 0 ]; then
    echo "pmproxy check passed"
else
    echo "pmproxy check failed"
fi

# valgrind takes awhile to shutdown too
pmsignal $pid
pmsleep 3.5
echo "=== valgrind stdout ===" | tee -a $seq.full
cat $tmp.valout | _filter_valgrind

echo "=== valgrind stderr ===" | tee -a $seq.full
cat $tmp.valerr | _filter_pmproxy_log

# success, all done
status=0
exit
