diff options
Diffstat (limited to 'qa/498')
-rwxr-xr-x | qa/498 | 151 |
1 files changed, 151 insertions, 0 deletions
@@ -0,0 +1,151 @@ +#!/bin/sh +# PCP QA Test No. 498 +# exercise pmdaEventQueue interfaces +# +# Copyright (c) 2011 Nathan Scott. All Rights Reserved. +# + +seq=`basename $0` +echo "QA output created by $seq" + +# get standard filters +. ./common.product +. ./common.filter +. ./common.check + +rm -f $seq.out +if [ $PCP_VER -lt 3604 ] +then + ln $seq.out.1 $seq.out || exit 1 +elif [ $PCP_VER -lt 3605 ] +then + ln $seq.out.2 $seq.out || exit 1 +else + ln $seq.out.3 $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 + +_filter() +{ + sed \ + -e 's/^\[[A-Z].. [A-Z].. *[0-9][0-9]* ..:..:..]/[DATE]/' \ + -e 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9]/[TIME]/' \ + -e 's/event=0x0$/event=(nil)/' \ + -e 's/0x[0-9a-f][0-9a-f]*/0xADDR/' \ + -e 's/queue([0-9][0-9]*)/queue(PID)/' \ + -e "s;$PCP_VAR_DIR;\$PCP_VAR_DIR;" +} + +_queue_test() +{ + # always enable library debugging, stash raw results and output filtered + src/pmdaqueue -Dlibpmda $@ 2>&1 | tee -a $seq.full | _filter +} + +# real QA test starts here +echo +echo "events arriving with no queues setup yet (fail)" +_queue_test -E 0,1024 + +echo +echo "attempt to register duplicate queue names (fail)" +_queue_test -q queue1,1024 -q queue1,1024 + +echo +echo "attempt queue creation without memory limit (fail)" +_queue_test -q queue1,0 + +echo +echo "create one queue, events arriving with no clients yet" +_queue_test -q queue1,1024 -e queue1,128 -e queue1,42 -e queue1,18 -s queue1 + +echo +echo "multiple queues, events arriving without clients" +_queue_test \ + -q queue0,1024 -q queue1,512 \ + -e queue0,128 -e queue1,24 -e queue0,18 \ + -e queue1,228 -e queue0,142 -e queue1,28 \ + -s queue0 -s queue1 \ + -q queue2,356 \ + -e queue2,328 -e queue2,32 -e queue0,17 -e queue1,227 \ + -s queue0 -s queue1 -s queue2 + +echo +echo "single queue, single client, coming and going, no events arriving" +_queue_test -q queue0,1024 -c 1 -S 1,queue0 -s queue0 -C 1 -s queue0 + +echo +echo "single queue, single client, coming and going, with events arriving" +_queue_test \ + -q queue0,1024 \ + -c 1 -A1,queue0 \ + -s queue0 -S 1,queue0 \ + -e queue0,24 \ + -s queue0 -S 1,queue0 \ + -C 1 \ + -s queue0 + +echo +echo "single queue, single client, queue filling up" +_queue_test \ + -q queue0,42 \ + -c 1 \ + -A 1,queue0 \ + -s queue0 -S 1,queue0 \ + -e queue0,24 \ + -e queue0,2 \ + -e queue0,8 \ + -s queue0 -S 1,queue0 \ + -e queue0,28 \ + -e queue0,28 \ + -s queue0 -S 1,queue0 + +echo +echo "single queue, single filtering client" +_queue_test \ + -q queue0,42 \ + -c 1 -A1,queue0 \ + -f 1,queue0,10 \ + -s queue0 -S 1,queue0 \ + -e queue0,24 \ + -e queue0,2 \ + -e queue0,8 \ + -s queue0 -S 1,queue0 \ + -e queue0,28 \ + -e queue0,28 \ + -s queue0 -S 1,queue0 + +echo +echo "multiple queues, multiple clients coming and going, queues filling" +_queue_test \ + -q queue0,1024 -q queue1,512 -q queue2,356 \ + -c 84 -A 84,queue0 -c 42 -A 42,queue1 -c 21 -A 21,queue1 \ + -S 84,queue0 -S 42,queue1 -S 21,queue1 \ + -e queue0,128 -e queue1,24 -e queue0,18 \ + -e queue1,228 -e queue0,142 -e queue1,28 \ + -s queue0 -S 84,queue0 -s queue1 -S 42,queue1 -s queue2 -S 21,queue2 \ + -C 84 \ + -e queue2,328 -e queue2,32 -e queue0,17 -e queue1,227 \ + -c 84 -C 42 -c 21 \ + -s queue0 -S 84,queue0 -s queue1 -S 42,queue1 -s queue2 -S 21,queue2 + +echo +echo "ad-hoc queues, multiple clients coming and going, queues filling" +_queue_test \ + -q queue0,1024 -q queue1,512 \ + -c 84 -A 84,queue0 -c 42 -A 42,queue1 -c 21 -A 21,queue1 \ + -S 84,queue0 -S 42,queue1 -S 21,queue1 \ + -e queue0,128 -e queue1,24 -e queue0,18 \ + -e queue1,228 -e queue0,142 -e queue1,28 \ + -q queue2,356 \ + -s queue0 -S 84,queue0 -s queue1 -S 42,queue1 -s queue2 -S 21,queue2 \ + -C 84 \ + -e queue2,328 -e queue2,32 -e queue0,17 -e queue1,227 \ + -c 84 -C 42 -c 21 \ + -s queue0 -S 84,queue0 -s queue1 -S 42,queue1 -s queue2 -S 21,queue2 + +# success, all done +exit |