#!/bin/sh
# PCP QA Test No. 1372
# pmie segv reported by Lukas Oliva <lukas.oliva@mavenir.com>
#
# Copyright (c) 2019 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

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

_filter()
{
    # DATE is like: Thu Jan 31 08:56:58 2019
    sed \
	-e '/.*Info: evaluator exiting/d' \
	-e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z]  *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]/DATE/' \
    # end
}

status=1	# failure is the default!
$sudo rm -rf $tmp $tmp.* $seq.full
trap "_cleanup; exit \$status" 0 1 2 3 15

# real QA test starts here
echo "=== without aggregate ==="
pmie -v -t 0.1sec -T +0.15sec <<'End-of-File' >$tmp.out 2>&1
sampledso.string.bin == "500";
End-of-File
_filter <$tmp.out

echo "=== with count_inst ==="
pmie -t 0.1sec -T +0.15sec <<'End-of-File' >$tmp.out 2>&1
count_inst sampledso.string.bin == "500" > 0
-> print "OK " "%v";
End-of-File
_filter <$tmp.out

echo
echo "=== with count_inst and -v ==="
pmie -v -t 0.1sec -T +0.15sec <<'End-of-File' >$tmp.out 2>&1
count_inst sampledso.string.bin == "500" > 0
-> print "OK " "%v";
End-of-File
_filter <$tmp.out

echo
echo "=== with count_inst() ==="
pmie -t 0.1sec -T +0.15sec <<'End-of-File' >$tmp.out 2>&1
count_inst ( sampledso.string.bin == "500" ) > 0
-> print "OK " "%v";
End-of-File
_filter <$tmp.out

echo
echo "=== with count_inst() and -v ==="
pmie -v -t 0.1sec -T +0.15sec <<'End-of-File' >$tmp.out 2>&1
count_inst ( sampledso.string.bin == "500" ) > 0
-> print "OK " "%v";
End-of-File
_filter <$tmp.out

echo
echo "=== with count_inst and no rule (no output) ==="
pmie -t 0.1sec -T +0.15sec <<'End-of-File' >$tmp.out 2>&1
count_inst sampledso.string.bin == "500";
End-of-File
_filter <$tmp.out

echo
echo "=== with count_inst and no rule and -v ==="
pmie -v -t 0.1sec -T +0.15sec <<'End-of-File' >$tmp.out 2>&1
count_inst sampledso.string.bin == "500";
End-of-File
_filter <$tmp.out

echo
echo "=== with sum_inst ==="
pmie -t 0.1sec -T +0.15sec <<'End-of-File' >$tmp.out 2>&1
sum_inst sampledso.string.bin == "500";
End-of-File
_filter <$tmp.out

echo
echo "=== with sum_inst and -v ==="
pmie -v -t 0.1sec -T +0.15sec <<'End-of-File' >$tmp.out 2>&1
sum_inst sampledso.string.bin == "500";
End-of-File
_filter <$tmp.out

echo
echo "=== with sum_inst() ==="
pmie -t 0.1sec -T +0.15sec <<'End-of-File' >$tmp.out 2>&1
sum_inst ( sampledso.string.bin ) == "500";
End-of-File
_filter <$tmp.out

echo
echo "=== with sum_inst() and -v ==="
pmie -v -t 0.1sec -T +0.15sec <<'End-of-File' >$tmp.out 2>&1
sum_inst ( sampledso.string.bin ) == "500";
End-of-File
_filter <$tmp.out

echo
echo "=== with incorrect sum_inst() ==="
pmie -t 0.1sec -T +0.15sec <<'End-of-File' >$tmp.out 2>&1
sum_inst ( sampledso.string.bin == "500" );
End-of-File
_filter <$tmp.out

# success, all done
status=0
exit
