#!/bin/bash

. buildsys/functions

ProcessArgs $*
Assert LoadConfigs
Assert SetupLogDir
Assert SetupResFile

BASE=`/bin/pwd`
cd ../../..

CURRENT_PL_LINUX=`uname | grep Linux`
CURRENT_PL_CYGWIN=`uname | grep CYGWIN`
CURRENT_PL_AIX=`uname | grep AIX`
CURRENT_PL_SUNOS=`uname | grep SunOS`

check_platform()
{


   if [ "$CURRENT_PL_LINUX" != "" -o "$CURRENT_PL_AIX" != "" -o "$CURRENT_PL_SUNOS" != "" ] ;
   then
     return 0
   elif [ "$CURRENT_PL_CYGWIN" != "" ];
   then
     return 1
   else 
    echo UNKNOWN Platform:
    echo Current platform: `uname`
    exit
   fi
}

SetState TestingExamples
ArchiveLogs
if [ "$SETUP_TYPE" = "pcx86.int509-dev" -o "$SETUP_TYPE" = "pcx86.int509-release" ]
then
    if [ "$DEP" != "none" ]
    then
       OSPL_HOME=$DEPWORKDIR
       export OSPL_HOME
    fi

    SPLICE_PLATFORM=$SETUP_TYPE
    export SPLICE_PLATFORM
    . ./configure -full

    if [ "$CONFIGURATION" != "OK" ]
    then
        echo  "ERROR: configuration - dcps_run_examples"
        exit 1
    fi

    echo "RUN/EXAMPLES=RUNNING" >> $RESFILE
    ArchiveLogs

    mkdir $LOGDIR/examples/run
    cd $LOGDIR/examples/run

    faketerm $OSPL_OUTER_HOME/testsuite/bin/run_examples_pcx86_integrity509
    $OSPL_OUTER_HOME/testsuite/bin/analyse_examples_pcx86_integrity509 > summary.txt

cat <<EOF > summary.html
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <HTML>

    <H2><a HREF=overview.log>Overview log</a></H2>
    <TABLE>
    <TBODY>
    <TABLE border=1>
EOF

    awk '$0~/^./{ if ( NR % 2 == 0 ) { bgc="white" } else { bgc="E0E0E0" } ; if ( $2 == "PASS" ) { cr="<FONT COLOR=\"green\">" } else { cr="<FONT COLOR=\"red\">" } ; print "<TR  bgcolor="bgc"><TD>"$1"</a></TD><TD>""<a HREF="$1">"cr $2"</FONT><br></TR>" }' < summary.txt >> summary.html

cat <<EOF >> summary.html
    </TBODY>
    </TABLE>
    </HTML>
EOF


    grep -v PASS summary.txt
    if [ $? = 0 ]
    then
        exit 1
    else
        exit 0
    fi
else
    echo "RUN/EXAMPLES=RUNNING" >> $RESFILE
    ArchiveLogs

    if [ "$DEP" != "none" ]
    then
        BASE=$DEPWORKDIR/build/scripts/overnight
    fi
    SHORTSETUP=`echo $SETUP_TYPE | sed 's/-release//'`

    if [ -d $WORKDIR/installed/HDE/$SHORTSETUP/ ]
    then
        cd $WORKDIR/installed/HDE/$SHORTSETUP/
    else
        cd $DEPWORKDIR/install/HDE/$SHORTSETUP/
    fi


    if check_platform
    then
       . ./release.com
    fi

    cd examples

    # Do not do CORBA C++ or standalone C++ examples with AIX for now as the build fails and don't do
    # dlrl either with AIX
    if [ "$SETUP_TYPE" = "PPC5plus.AIX5.3-dev" -o "$SETUP_TYPE" = "PPC5plus.AIX5.3-release" ]
    then
        EXAMPLES="dcps/CORBA/Java/JacORB/PingPong dcps/CORBA/Java/JacORB/Tutorial dcps/standalone/C/PingPong dcps/standalone/C/Tutorial dcps/standalone/C++OnC/PingPong dcps/standalone/Java/PingPong dcps/standalone/Java/Tutorial "
    else
        EXAMPLES="dcps/CORBA/Java/JacORB/PingPong dcps/CORBA/Java/JacORB/Tutorial dcps/CORBA/C++/OpenFusion/PingPong dcps/CORBA/C++/OpenFusion/Tutorial dcps/standalone/C/PingPong dcps/standalone/C/Tutorial dcps/standalone/C++/PingPong dcps/standalone/C++/Tutorial dcps/standalone/C++OnC/PingPong dcps/standalone/Java/PingPong dcps/standalone/Java/Tutorial "
    
        # DLRL examples are not included in an inner only build so only add them if doing an outer build
        if [ "$DEP" != "none" ]
        then
            EXAMPLES=$EXAMPLES" dlrl/standalone/Java/Tutorial dlrl/standalone/C++/Tutorial "
        fi
    fi 

    export EXAMPLES

    #These examples have special files for build: BUILD(or BUILD.bat for Windows)
    SPECIAL_BUILD_FILES="dcps/standalone/Java/PingPong dcps/standalone/Java/Tutorial dlrl/standalone/Java/Tutorial dlrl/standalone/C++/Tutorial "
    export SPECIAL_BUILD_FILES

    echo "Updating XML:"
    echo "OSPL_URI before XMLFILE update is $OSPL_URI"

    sleep 7200 &
    UNIQID=$!
    XMLFILE=`echo $OSPL_URI | sed 's@file://@@' | sed 's/ospl.xml$/ospl_no_network.xml/'`

    echo "XMLFILE is $XMLFILE"
    echo "OSPL_URI is $OSPL_URI"

    NEWXMLFILE=`echo $XMLFILE | sed 's/_no_network.xml$/_no_network_uniq.xml/'`

    echo "NEWXMLFILE is $NEWXMLFILE"
    echo "UNIQID is $UNIQID"

    sed "s@<Name>OpenSpliceV[^<]*</Name>@<Name>oex_$UNIQID</Name>@" < $XMLFILE > $NEWXMLFILE
    OSPL_URI=`echo $OSPL_URI | sed 's/ospl.xml/ospl_no_network_uniq.xml/'`

    echo "Running Examples:"
    
    if [ "$SETUP_TYPE" = "PPC5plus.AIX5.3-dev" -o "$SETUP_TYPE" = "PPC5plus.AIX5.3-release" ]
    then
       PATH="/usr/vac/bin:/usr/vacpp/bin:$PATH"
    fi

    LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$TAO_ROOT/lib"
    export LD_LIBRARY_PATH

    if check_platform
    then
        PATH="$JAVA_HOME/bin:$PATH"
        PATH="$PATH:$TAO_ROOT/bin:$JACORB_HOME/bin"

        CLASSPATH="$CLASSPATH:$JACORB_HOME/lib/endorsed/jacorb.jar:$JACORB_HOME/lib/endorsed/logkit.jar:$JACORB_HOME/lib/idl.jar"

        export PATH CLASSPATH

        sh $BASE/run_examples.sh
    else
        PATH="$PATH:/cygdrive/c/WINDOWS/system32"
        export PATH

        XPATH="$(cygpath -w $BASE)";

        echo "NOT Calling cmd.exe with $XPATH\run_examples.bat "
# Do not run the examples yet as they hang and prevent other runs taking place
#        cmd.exe /c $XPATH//run_examples.bat
    fi
    exit $?
fi
