diff options
Diffstat (limited to 'qa/480')
-rwxr-xr-x | qa/480 | 88 |
1 files changed, 88 insertions, 0 deletions
@@ -0,0 +1,88 @@ +#!/bin/sh +# PCP QA Test No. 480 +# fault injection for libpcp/logmeta.c +# +# Copyright (c) 2011 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 + +src/check_fault_injection >/dev/null 2>&1 || \ + _notrun "libpcp not built with fault injection enabled" + +if [ -f $PCP_DIR/usr/include/pcp/configsz.h ] +then + # PCP 3.9.0 or later + defs="$PCP_DIR/usr/include/pcp/configsz.h $PCP_DIR/usr/include/pcp/config32.h $PCP_DIR/usr/include/pcp/config64.h" +elif [ -f $PCP_DIR/usr/include/pcp/config.h ] +then + # PCP 3.8.3 or later + defs=$PCP_DIR/usr/include/pcp/config.h +elif [ -f $PCP_DIR/usr/include/pcp/platform_header.h ] +then + # PCP 3.6 or later + defs=$PCP_DIR/usr/include/pcp/platform_header.h +elif [ -f $PCP_DIR/usr/include/pcp/platform_defs.h ] +then + # older PCP versions + defs=$PCP_DIR/usr/include/pcp/platform_defs.h +else + _notrun "No $PCP_DIR/usr/include/pcp header files found" +fi + +rm -f $seq.out +if grep 'define HAVE_64BIT_PTR 1' $defs >/dev/null 2>&1 +then + ln $seq.out.1 $seq.out || exit 1 +else + ln $seq.out.2 $seq.out || exit 1 +fi + +status=0 # success is the default! +$sudo rm -rf $tmp.* $seq.full +trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 + +# from __pmNoMem() - [Sun Sep 4 21:30:34] torture_logmeta(17548) +_filter() +{ + sed \ + -e '/^\[[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9:]*]/{ +s//[DATE]/ +s/([0-9][0-9]*)/(PID)/ +}' \ + -e 's/Not enough space/Cannot allocate memory/' +} + +# real QA test starts here +export PM_FAULT_CONTROL=$tmp.control +export LD_PRELOAD=$PCP_LIB_DIR/libpcp_fault.so + +for i in 1 2 3 4 5 6 7 8 9 +do + echo "libpcp/logmeta.c:$i" >$tmp.control + echo + echo "=== `cat $tmp.control` ===" + case $i + in + 1|2|3|4) + pmdumplog -di src/ace_v2 2>&1 | _filter + ;; + 7|8|9) + src/torture_logmeta -f src/ace_v2 1 2 123 2>&1 | _filter + ;; + 5|6) + rm -f $tmp.0 $tmp.meta $tmp.index + echo "log mandatory on 100msec { sample.bin }" >$tmp.config + pmlogger -c $tmp.config -s 2 -l $tmp.log $tmp + _filter_pmlogger_log <$tmp.log | _filter + ;; + esac +done + +exit |