pmrep: update TODO, man page
[pcp.git] / qa / 761
blobcd593b10536049c42e0f383420cd548d298c1ab5
1 #!/bin/sh
2 # PCP QA Test No. 761
3 # Exercise the PMCD privileged co-process (root) PMDA
4 # Install, Remove and handling of different container
5 # engines container.* metrics.
7 # Copyright (c) 2014-2015 Red Hat.
10 seq=`basename $0`
11 echo "QA output created by $seq"
13 # get standard environment, filters and checks
14 . ./common.product
15 . ./common.filter
16 . ./common.check
18 _get_libpcp_config
19 $unix_domain_sockets || _notrun "No unix domain socket support available"
21 root=$tmp.root
22 status=1 # failure is the default!
23 $sudo rm -rf $tmp.* $seq.full
25 root_remove()
27 echo
28 echo "=== remove root agent ==="
29 cd $PCP_PMDAS_DIR/root
30 sudo ./Remove >$tmp.out 2>&1
31 _filter_pmda_remove <$tmp.out
34 root_install()
36 # start from known starting points
37 cd $PCP_PMDAS_DIR/root
38 $sudo ./Remove >/dev/null 2>&1
40 echo
41 echo "=== $iam agent installation ==="
42 $sudo ./Install </dev/null >$tmp.out 2>&1
43 # Check root metrics have appeared ... X metrics and Y values
44 _filter_pmda_install <$tmp.out \
45 | sed \
46 -e '/^Waiting for pmcd/s/\.\.\.[. ]*$/DOTS/' \
47 | $PCP_AWK_PROG '
48 /Check root metrics have appeared/ { if ($7 >= 5) $7 = "X"
49 if ($10 >= 5) $10 = "Y"
51 { print }'
54 root_cleanup()
56 cd $here
57 [ -d $root ] && sudo rm -fr $root
58 [ -f $tmp.conf.backup ] && sudo cp $tmp.conf.backup $PCP_DIR/etc/pcp.conf
59 _cleanup_pmda root
62 # do metrics one at a time, map all internal instance ids to N and sort
63 # instance lines
65 _check()
67 pminfo containers \
68 | while read metric
70 pminfo -f $metric >$tmp.tmp
71 grep -v ' inst \[' $tmp.tmp
72 sed -n -e '/inst \[/s/\[[0-9][0-9]*/[N/p' $tmp.tmp \
73 | LC_COLLATE=POSIX sort
74 done
77 _prepare_pmda root containers
78 trap "root_cleanup; exit \$status" 0 1 2 3 15
80 # backup main PCP config
81 cp $PCP_DIR/etc/pcp.conf $tmp.conf
82 cp $PCP_DIR/etc/pcp.conf $tmp.conf.backup
84 # simple testing script for LXC containers
85 cat >$tmp.test-lxc-info.sh <<EOF
86 #!/bin/bash
87 name="\$2"
88 test -d "\$PCP_LXC_DIR/\$name" || exit 0
89 echo "Name: \$name"
90 echo "State: RUNNING"
91 echo "PID: 17297"
92 echo "CPU use: 1.13 seconds"
93 EOF
94 chmod 755 $tmp.test-lxc-info.sh
95 export PCP_LXC_DIR=$root/var/lib/lxc
97 # real QA test starts here
98 echo >> $tmp.conf
99 echo "# from QA $seq ..." >> $tmp.conf
100 echo PCP_LXC_DIR=$root/var/lib/lxc >> $tmp.conf
101 echo PCP_LXC_INFO=$tmp.test-lxc-info.sh >> $tmp.conf
102 echo PCP_DOCKER_DIR=$root/var/lib/docker >> $tmp.conf
103 echo PCP_SYSTEMD_CGROUP=/tmp >> $tmp.conf
104 $sudo cp $tmp.conf $PCP_DIR/etc/pcp.conf
105 root_install
107 echo "=== Checking empty containers configuration, no values"
108 pmprobe -v containers
109 echo "== done" && echo
111 tarballs=`echo $here/linux/containers-*.tgz | LC_COLLATE=POSIX sort`
112 for tgz in $tarballs
114 $sudo rm -fr $root
115 mkdir $root || _fail "root in use when processing $tgz"
116 cd $root
117 $sudo tar xzf $tgz
118 base=`basename $tgz`
120 echo "== Checking values for active containers"
121 _check
122 echo && echo "== done" && echo
123 cd $here
124 done
126 root_remove
127 # success, all done
128 status=0
129 exit