summaryrefslogtreecommitdiff
path: root/qa/780
blob: e7db19f13e5c2cd5850c2bbc15115de54ae169f6 (plain)
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
#!/bin/sh
# PCP QA Test No. 780
# Exercise addition of pmwebd Access-Control-Allow-Origin HTTP header.
#
# Copyright (c) 2014 Red Hat.
#

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

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

which pmwebd >/dev/null 2>&1 || _notrun "pmwebd not installed"

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

_cleanup()
{
    [ -z "$webpid" ] || $signal $webpid
    $sudo rm -fr $tmp.dir
    $sudo rm -f $tmp.*
}

_filter()
{
    sed \
	-e 's/^\(Content-Length:\) [0-9][0-9]*/\1 SIZE/g' \
	-e 's/^\(Date:\).*/\1 DATE/g' \
	-e 's/\(\"context\":\) [0-9][0-9]*/\1 CTXID/g' \
    | LC_COLLATE=POSIX sort \
    | col -b	# remove DOS line endings
}

unset http_proxy
unset HTTP_PROXY
webport=`_find_free_port`

# real QA test starts here
pmwebd -U $username -f -l $tmp.out -p $webport 2>$tmp.err &
webpid=$!
count=0
while ! $PCP_BINADM_DIR/telnet-probe -c localhost $webport
do
    count=`expr $count + 1`
    if [ $count -ge 20 ]
    then
	echo "pmwebd failed to start on port $webport"
	cat $tmp.out
	cat $tmp.err
	exit
    fi
    pmsleep 0.1
done

echo "pmwebd pid=$webpid port=$webport" >>$seq.full
curl -s -S "http://localhost:$webport/pmapi/context?local=anything" -D- 2>&1 | _filter

echo "--- pmwebd log ---" >>$seq.full
cat $tmp.out >>$seq.full
echo "--- pmwebd stderr ---" >>$seq.full
cat $tmp.err >>$seq.full

# success, all done
status=0
exit