File: 1335

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 (140 lines) | stat: -rwxr-xr-x 3,016 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
138
139
140
#!/bin/sh
# PCP QA Test No. 1335
# simplest V3 archive test
# non-valgrind variant, see qa/1336 for the valgrind variant
#
# Copyright (c) 2021 Ken McDonell.  All Rights Reserved.
#

if [ $# -eq 0 ]
then
    seq=`basename $0`
    echo "QA output created by $seq"
else
    # use $seq from caller, unless not set
    [ -n "$seq" ] || seq=`basename $0`
    echo "QA output created by `basename $0` $*"
fi

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

eval `$PCP_BINADM_DIR/pmconfig -L -s v3_archives`
[ "$v3_archives" = true ] || _notrun "No V3 archive support"

do_valgrind=false
if [ "$1" = "--valgrind" ]
then
    _check_valgrind
    do_valgrind=true
elif which valgrind >/dev/null 2>&1
then
    [ $PCPQA_VALGRIND = both ] || \
	_notrun "valgrind variant qa/1336 will be run"
fi

_cleanup()
{
    cd $here
    $sudo rm -rf $tmp $tmp.*
}

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

_filter()
{
    rm -f $tmp.sed
    touch $tmp.sed
    tstamp=1
    tee -a $seq_full \
    | sed >$tmp.tmp \
	-e "s@$tmp@TMP@g" \
	-e '/commencing/s/ing .*/ing DATE/' \
	-e '/ending/s/ing .*/ing DATE/' \
	-e '/^PID for pmlogger:/s/ [0-9][0-9]*/ PID/' \
	-e '/^[0-2][0-9]:/{
s/  [0-9][0-9][0-9][0-9]/OFFSET/g
s/   [0-9][0-9][0-9]/OFFSET/g
}' \
    # end
    sed -n <$tmp.tmp \
      -e 's/.*\([0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9]*[0-9]\).*/\1/p' \
    | LC_COLLATE=POSIX sort -u \
    | while read time
    do
	case "$time"
	in
	    *000)	# nsec precision, but usec value
			time=`echo "$time" | sed -e 's/\(.*\)000/\1/'`
			;;
	esac
    	if grep $time $tmp.sed >/dev/null
	then
	    :
	else
	    # new timestamp, match optionally with trailing zeroes
	    echo "s/${time}0*/TIMESTAMP-$tstamp/g" >>$tmp.sed
	    tstamp=`expr $tstamp + 1`
	fi
    done
    cat $tmp.sed >>$seq_full

    sed -f $tmp.sed <$tmp.tmp
}

cat <<End-of-File >$tmp.config
log mandatory on 100 msec {
    sample.long
}
End-of-File

pmstore sample.long.write_me 13 >>$seq_full

# real QA test starts here
for version in 2 3
do

    if $do_valgrind
    then
	_run_valgrind pmlogger -V $version -c $tmp.config -l $tmp.log -s 1 $tmp.$version 2>&1 \
	| sed -e "s@$tmp@TMP@g"
    else
	pmlogger -V $version -c $tmp.config -l $tmp.log -s 1 $tmp.$version
    fi

    cat $tmp.log >>$seq_full
    ls -l $tmp.$version.index $tmp.$version.meta $tmp.$version.0 >>$seq_full

    if $do_valgrind
    then
	_run_valgrind pmdumplog -lt $tmp.$version sample 2>&1 \
	| _filter >$tmp.$version.dump
    else
	pmdumplog -lt $tmp.$version sample \
	| _filter >$tmp.$version.dump
    fi
    cat $tmp.$version.dump >>$seq_full

    if $do_valgrind
    then
	_run_valgrind pmloglabel -L $tmp.$version 2>&1 \
	| _filter >$tmp.$version.label
    else
	pmloglabel -L $tmp.$version \
	| _filter >$tmp.$version.label
    fi
    cat $tmp.$version.label >>$seq_full

done

echo "=== pmdumplog diffs ==="
diff $tmp.*.dump

echo "=== pmloglabel diffs ==="
diff $tmp.*.label

# success, all done
exit