#!/bin/sh
# PCP QA Test No. 588
# check each thread alone for multithread12
#
# Copyright (c) 2017 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

_get_libpcp_config
$multi_threaded || _notrun "No libpcp threading support"

_cleanup()
{
    cd $here
    $sudo rm -rf $tmp $tmp.*
    $sudo rm -f /tmp/thread_?.out
}

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
export PCP_DERIVED_CONFIG=

for arch in archives/ok-foo archives/ok-mv-foo archives/multi archives/bozo-20170904
do
    case $arch
    in
	archives/multi|archives/bozo-20170904)
	    metric_B=kernel.percpu.cpu.user
	    metric_C=network.interface.out.packets
	    ;;
	*)
	    metric_B=sample.bin
	    metric_C=sample.colour
	    ;;
    esac

    echo
    echo "=== Thread A $arch ==="
    $sudo rm -f /tmp/thread_A.out
    src/multithread12 -a 5 -Dappl0 $arch
    if [ -f /tmp/thread_A.out ]
    then
	cat /tmp/thread_A.out
    else
	echo "Error: /tmp/thread_A.out not created."
    fi

    echo
    echo "=== Thread B $arch ==="
    $sudo rm -f /tmp/thread_B.out
    src/multithread12 -b 5 -Dappl1 -B $metric_B $arch
    if [ -f /tmp/thread_B.out ]
    then
	cat /tmp/thread_B.out
    else
	echo "Error: /tmp/thread_B.out not created."
    fi

    echo
    echo "=== Thread C $arch ==="
    $sudo rm -f /tmp/thread_C.out
    src/multithread12 -c 5 -Dappl0,appl1 -C $metric_C $arch
    if [ -f /tmp/thread_C.out ]
    then
	cat /tmp/thread_C.out
    else
	echo "Error: /tmp/thread_C.out not created."
    fi

    echo
    echo "=== Thread D $arch ==="
    $sudo rm -f /tmp/thread_D.out
    src/multithread12 -d 5 -Dappl2 $arch
    if [ -f /tmp/thread_D.out ]
    then
	cat /tmp/thread_D.out
    else
	echo "Error: /tmp/thread_D.out not created."
    fi

done

# success, all done
status=0
exit
