pmrep: update TODO, man page
[pcp.git] / qa / common.webapi
bloba3f809e7327d047eebcff9b99270acbaab3032dd
2 # Common shell routines for testing the REST API daemon
3 # Copyright (c) 2014 Red Hat.
6 # get standard environment, filters and checks
7 . ./common.product
8 . ./common.filter
9 . ./common.check
11 unset http_proxy
12 unset HTTP_PROXY
14 _check_pmwebd()
16     [ -f ${PCP_BINADM_DIR}/pmwebd ] || _notrun "pmwebd package not installed"
19 _check_requests_json()
21     version=`$python --version 2>&1 | sed -e 's/Python //'`
22     case "$version"
23     in
24         2.7.3|2.7.4)
25             _notrun "requests.json() broken in Python $version"
26             ;;
27     esac
30 _webapi_header_filter()
32     tee -a $here/$seq.full \
33     | col -b \
34     | sed \
35         -e 's/^\(Content-Length:\) [0-9][0-9]*/\1 SIZE/g' \
36         -e 's/^\(Date:\).*/\1 DATE/g' \
37         -e 's/\(\"context\":\) [0-9][0-9]*/\1 CTXID/g' \
38         -e '/^Connection: Keep-Alive/d' \
39     | LC_COLLATE=POSIX sort
42 _webapi_response_filter()
44     tee -a $here/$seq.full \
45     | col -b \
46     | sed -e 's,#[0-9]*,####,g' \
47         -e 's/ connected$//g' \
48         -e '/^\* Adding handle: /d' \
49         -e '/^\* Closing connection ####/d' \
50         -e '/- Conn .*_pipe.*_pipe/d' \
51         -e '/Curl_[\.a-zA-Z0-9]*:/d' \
52         -e 's/::1/LOCALADDR/g' \
53         -e 's/127\.0\.0\.1/LOCALADDR/g' \
54         -e 's/PMWEBD error, .*/PMWEBD error, XXX/g' \
55         -e 's/localhost[\.a-zA-Z0-9]*/LOCALHOST/g' \
56         -e 's/Date:.*/Date: DATE/' \
57         -e 's/\[[0-9][0-9]* bytes data]/[data not shown]/' \
58         -e '/> User-Agent: /d' \
59         -e '/Connection: Keep-Alive/d' \
60     # end
63 _webapi_json_pretty()
65     $python -c "from json.tool import main; main()" \
66     | sed -e 's/, $/,/g'
69 _webapi_img_pretty()
71     imgname=$1
73     $python -c "
74 import sys
75 from PIL import Image
76 img = Image.open('$imgname')
77 print('size=%dx%d\n' % (img.size[0], img.size[1]))
81 _wait_for_pmwebd()
83     webport=$1
85     if [ -z "$webport" ]
86     then
87         echo "Must specify a web port (system default 44323)"
88         status=1
89         exit
90     fi
92     count=0
93     while ! $PCP_BINADM_DIR/telnet-probe -c localhost $webport
94     do
95         count=`expr $count + 1`
96         if [ $count -ge 20 ]
97         then
98             echo "pmwebd failed to start on port $webport"
99             echo "likely looking processes ..."
100             $PCP_PS_PROG $PCP_PS_ALL_FLAGS | egrep '[P]ID|[p]mwebd'
101             status=1
102             exit
103         fi
104         pmsleep 0.1
105     done
108 _wait_for_pmwebd_logfile()
110     logfile="$1"
111     webport="$2"
113     if [ -z "$logfile" ]
114     then
115         echo "Must specify log (system default $PCP_LOG_DIR/pmwebd/pmwebd.log)"
116         status=1
117         exit
118     fi
120     # let it start up
121     _wait_for_pmwebd $webport
123     count=0
124     while [ ! -f "$logfile" ]
125     do
126         count=`expr $count + 1`
127         if [ $count -ge 20 ]
128         then
129             date
130             echo "pmwebd failed to start, $logfile not created"
131             echo "likely looking processes ..."
132             $PCP_PS_PROG $PCP_PS_ALL_FLAGS | egrep '[P]ID|[p]mwebd'
133             status=1
134             exit
135         fi
136         pmsleep 0.1
137     done
138     date >>$here/$seq.full
139     cat "$logfile" >>$here/$seq.full