1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
#!/bin/sh
# PCP QA Test No. 867
# Exercise libpcp_web HTTP client interfaces.
#
# Copyright (c) 2016,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_series
_check_key_server_version_offline
_cleanup()
{
[ -z "$socat_pid" ] || $sudo $signal $socat_pid
[ -f "$tmp.socat.out" ] && cat $tmp.socat.out >> $seq_full
[ -f "$tmp.socat.err" ] && cat $tmp.socat.err >> $seq_full
[ -z "$proxy_pid" ] || $sudo $signal $proxy_pid
[ -n "$options" ] && $keys_cli $options shutdown
cd $here
$sudo rm -rf \$tmp \$tmp.*
}
status=1 # failure is the default!
signal=$PCP_BINADM_DIR/pmsignal
trap "cd $here; _cleanup; exit \$status" 0 1 2 3 15
unset http_proxy
unset HTTP_PROXY
# real QA test starts here
echo "=== Start test key server ..."
key_server_port=`_find_free_port`
options="-p $key_server_port"
$key_server --port $key_server_port --save "" > $tmp.keys 2>&1 &
_check_key_server_ping $key_server_port
echo
echo "=== Start test pmproxy ..."
proxyport=`_find_free_port`
username=`id -u -n`
cat > $tmp.conf <<EOF
[pmproxy]
pcp.enabled = true
http.enabled = true
resp.enabled = true
[pmseries]
enabled = true
servers = localhost:$key_server_port
EOF
$PCP_BINADM_DIR/pmproxy -f -p $proxyport -s $tmp.socket \
-U $username -l $tmp.log -c $tmp.conf &
proxy_pid=$!
pmsleep 0.5
echo "== load test data for verification" | tee -a $seq_full
pmseries $options --load $here/archives/proc > $seq_full
echo === test data load complete === >> $seq_full
echo "== Check simple HTTP fetch" | tee -a $seq_full
$here/src/httpfetch "http://localhost:$proxyport/series/ping" >> $seq_full 2>&1
[ $? -eq 0 ] && echo OK
rm -f $tmp.socat.out $tmp.socat.err $tmp.httpcache.sock
socat -d -d -T 2 unix-listen:$tmp.httpcache.sock,fork tcp-connect:localhost:$proxyport >$tmp.socat.out 2>$tmp.socat.err &
socat_pid=$!
rm -f $tmp.socat
i=0
while [ ! -f $tmp.socat -a $i -lt 10 ]
do
pmsleep 1
if timeout 1s curl -v --unix-socket $tmp.httpcache.sock "http://localhost:$proxyport/series/ping" >> $seq_full 2>&1
then
touch $tmp.socat
else
i=`expr $i + 1`
fi
done
if [ ! -f $tmp.socat ]
then
echo "Failed to get socat started ... see $seq.full"
_exit 1
fi
echo "== Check HTTP cache" | tee -a $seq_full
$here/src/httpcache "unix:/$tmp.httpcache.sock" "$proxyport"
[ $? -eq 0 ] && echo OK
# success, all done
status=0
exit
|