#!/bin/bash

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to you under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

TOOLDIR="${DERBYDIR}/${BRANCH_DIR}/tools/testing/reporting/scripts"
. ${TOOLDIR}/env

# We have one catalog per platform
if [ ! -e ${TESTLOGDIR} ]
then
  echo "${TESTLOGDIR} does not exist"
  exit
fi

# Get the list of testsuite we are running:
TESTLISTFILE="${DERBYDIR}/testing/testlist"
SUITES=`gawk '{ print $1 }' ${TESTLISTFILE} | grep -v "^#"`

# Get the set of platforms
cd ${TESTLOGDIR}
PLATFORMS=`ls`
NOOFPLFS=`echo ${PLATFORMS} | wc -w`
PLFNO=1

# Get the list of revisions
# Here we use all.
REVISIONSFILE="${REVISIONLIST}"
REVISIONS=`cat ${REVISIONSFILE} | gawk '{ print $1 }' | grep -v "^#"`

mkdir -p ${DERBYDIR}/testing/Full/plot
chmod go+rx ${DERBYDIR}/testing/Full/plot

for PLATFORM in ${PLATFORMS}
do
  echo "${PLATFORM} [${PLFNO}/${NOOFPLFS}]"
  mkdir -p ${DERBYDIR}/testing/Full/plot/${PLATFORM}
  chmod go+rx ${DERBYDIR}/testing/Full/plot/${PLATFORM}
  for SUITE in ${SUITES}
  do
    echo "    ${SUITE}"
    echo -n "" > ${DERBYDIR}/testing/Full/plot/${PLATFORM}/${SUITE}.data
    for REVISION in ${REVISIONS}
    do
      # echo "        ${REVISION}"
      # x       = ${revision}
      # baseRev = platform.baseline.revision 
      BASELINE=`head -1 ${PLATFORM}/baseline.csv  | gawk '{ print $2 }'`
      # durBase = platform.baseRev(suite).duration 
      BASETIME=`grep "^${SUITE} " ${PLATFORM}/${BASELINE}.csv | gawk '{ print $6 }'`
      BASESECONDS=`grep "^${SUITE} " ${PLATFORM}/baseline.csv | gawk '{ print $3 }'`
      # Jeez.... Shouldn't read this EVERY round...
      REVDATE=`gawk '{ print $1 }' ${DERBYDIR}/UpdateLog/${REVISION}/UpdateTime`
      if [ -e ${PLATFORM}/${REVISION}.csv ]
        then
        #  2: Number, 3: OK, 4: Failed, 5: Skipped
        RES=`grep "^${SUITE} " ${PLATFORM}/${REVISION}.csv`
        # yDur    = platform.revision(suite).duration 
        TIME=`echo ${RES} | grep "^${SUITE} " | gawk '{ print $6 }'`
        SECONDS=`${TOOLDIR}/toSeconds ${TIME}`
        # yPercent= (yDur/durBase)*100 
        PERCENT=`${TOOLDIR}/calcPercent ${SECONDS} ${BASESECONDS}`
        # echo "$x $yPercent" >> tmp.dur
        # yNtests = platform.revision(suite).NumberOfTests
        NTESTS=`echo ${RES} | grep "^${SUITE} " | gawk '{ print $2 }'`
        # "$x $yNtests" >> tmp.Ntests
        # yNok    = platform.revision(suite).NumberOK
        NOK=`echo ${RES} | grep "^${SUITE} " | gawk '{ print $3 }'`
        # "$x $yNok" >> tmp.Nok
        # yNfail  = platform.revision(suite).NumberFail
        NFAIL=`echo ${RES} | grep "^${SUITE} " | gawk '{ print $4 }'`
        # "$x $yNfail" >> tmp.Nfail
        echo "${REVDATE} ${REVISION} ${PERCENT} ${NTESTS} ${NOK} ${NFAIL}" \
	    >> ${DERBYDIR}/testing/Full/plot/${PLATFORM}/${SUITE}.data
        echo -n "."
      else
        # echo "        No ${REVISION} for ${PLATFORM}"
        echo -n "-"
      fi
    done # REVISIONS
    echo ""
  done # SUITES
  let " PLFNO = ${PLFNO} + 1 "
done # PLATFORMS
