File: 1232

package info (click to toggle)
pcp 7.1.0-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 252,748 kB
  • sloc: ansic: 1,483,656; sh: 182,366; xml: 160,462; cpp: 83,813; python: 24,980; perl: 18,327; yacc: 6,877; lex: 2,864; makefile: 2,738; awk: 165; fortran: 60; java: 52
file content (137 lines) | stat: -rwxr-xr-x 3,317 bytes parent folder | download
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/bin/sh
# PCP QA Test No. 1232
# pmlogger_daily -k 0 tests
#
# Copyright (c) 2020 Ken McDonell.  All Rights Reserved.
#

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

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

if pmlogctl -c default status 2>/dev/null | grep ' default ' >/dev/null
then
    _notrun "at least one pmlogger already defined for \"default\" class"
fi

NEEDREWRITE=$PCP_LOG_DIR/pmlogger/.NeedRewrite

_cleanup()
{
    echo "_cleanup: ..." >>$seq_full
    cd $here
    $sudo pmlogctl -f -c default destroy localhost >>$seq_full 2>&1
    $sudo rm -rf $tmp $tmp.*
    $sudo rm -rf $PCP_ARCHIVE_DIR/localhost
    [ -f $NEEDREWRITE.$seq ] && $sudo mv $NEEDREWRITE.$seq $NEEDREWRITE

}

status=1	# failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15

[ -f $NEEDREWRITE ] && $sudo mv $NEEDREWRITE $NEEDREWRITE.$seq

_filter()
{
    tee -a $seq_full \
    | sed \
	-e '/^# created by pmlogctl/s/ on .*/ on DATE/' \
	-e "s;$tmp\.;TMP.;g" \
	-e "s;$PCP_BINADM_DIR/;PCP_BINADM_DIR/;g" \
	-e "s;$PCP_ARCHIVE_DIR/;PCP_ARCHIVE_DIR/;g" \
	-e "s;$PCP_TMP_DIR/;PCP_TMP_DIR/;g" \
	-e "s;$PCP_TMPFILE_DIR/pmlogctl\.[^/]*;PCP_TMPFILE_DIR/pmlogctl.XXXXX;g" \
	-e "s;$PCP_ETC_DIR/;PCP_ETC_DIR/;g" \
	-e "/migrate_pid_service/d" \
	-e '/^_parse_log_control:/d' \
    # end
}

# usual stuff, but then need to deal with different implementations
# of fmt(1) that wrap the unfiltered list of processed archives in
# different places ... the final sed stanze undoes the fmt line
# breaks
#
_filter_log()
{
    cat \
    | _filter \
    | sed \
	-e '1,/=== daily /d' \
	-e '/^Start:/d' \
	-e '/^End[: ]/d' \
	-e '/^COMPRESSAFTER=/d' \
	-e '/^\+ /d' \
	-e '/^\.\.\. try /d' \
	-e '/^\.\.\. logging for /d' \
	-e '/no pmlogger instance running /d' \
	-e '/skipping log rotation/d' \
	-e '/^Skip sending SIGUSR2 to /d' \
	-e '/[0-9][0-9]* identified/s//PID identified/' \
	-e '/current [0-9][0-9.-]* archive/s//current DATE archive/' \
	-e 's/ [0-9][0-9.-]*.index/ DATE.index/g' \
	-e 's/ [0-9][0-9.-]*.meta/ DATE.meta/g' \
	-e 's/ [0-9][0-9.-]*.0/ DATE.0/g' \
	-e '/ DATE/{
s/\.xz//g
s/\.lzma//g
s/\.bz2//g
s/\.bz//g
s/\.gz//g
s/\.Z//g
s/\.z//g
}' \
    | sed -e '/^    DATE/{
:loop
$!N
s/\n    DATE/ DATE/
t loop
}'
}

# get our pmlogger running
#
$sudo pmlogctl -V create localhost 2>&1 | _filter

# real QA test starts here
control=$PCP_ETC_DIR/pcp/pmlogger/control.d/localhost

# pmlogger_daily needs to be able to cd back to here
#
cd /tmp

echo
echo "only one current archive, expect no culling"
$sudo -u $PCP_USER -g $PCP_GROUP $PCP_BINADM_DIR/pmlogger_daily -c $control \
    -P -N -VV -k 0 -x never 2>&1 \
| _filter_log

echo
echo "one archive, cull it"
$sudo pmlogctl stop localhost
$sudo -u $PCP_USER -g $PCP_GROUP $PCP_BINADM_DIR/pmlogger_daily -c $control \
    -P -N -VV -k 0 -x never 2>&1 \
| _filter_log

echo
echo "cull old archive, skip current one"
$sudo pmlogctl start localhost
$sudo -u $PCP_USER -g $PCP_GROUP $PCP_BINADM_DIR/pmlogger_daily -c $control \
    -P -N -VV -k 0 -x never 2>&1 \
| _filter_log

echo
echo "two archives, cull 'em"
$sudo pmlogctl stop localhost
$sudo -u $PCP_USER -g $PCP_GROUP $PCP_BINADM_DIR/pmlogger_daily -c $control \
    -P -N -VV -k 0 -x never 2>&1 \
| _filter_log

# success, all done
status=0
exit