diff --git a/ThirdParty/AllMake b/ThirdParty/AllMake index c96c36091..0991e37ba 100755 --- a/ThirdParty/AllMake +++ b/ThirdParty/AllMake @@ -71,6 +71,12 @@ echo # Running stage 4 ./AllMake.stage4 +# Running stage 5 +# This stage depends on a properly compiled installation +# of OpenFOAM. On a brand new installation of OpenFOAM-1.6-ext, +# this stage should be called last in your compilation process +./AllMake.stage5 + echo ======================================== echo Done ThirdParty Allwmake echo ======================================== diff --git a/ThirdParty/AllMake.stage3 b/ThirdParty/AllMake.stage3 index f0e8ff171..643add8b5 100755 --- a/ThirdParty/AllMake.stage3 +++ b/ThirdParty/AllMake.stage3 @@ -125,6 +125,17 @@ fi # echo "" #fi +# PyFoam +if [ -z "$PYFOAM_SYSTEM" ] +then +# ( rpm_make -p PyFoam-0.5.6 -s PyFoam-0.5.6.spec -u http://openfoamwiki.net/images/b/b8/PyFoam-0.5.6.tar.gz -n PyFoam-0.5.6-1.noarch -a noarch) + ( rpm_make -p PyFoam-0.5.7 -s PyFoam-0.5.7.spec -u http://openfoamwiki.net/images/d/dc/PyFoam-0.5.7.tar.gz -n PyFoam-0.5.7-1.noarch -a noarch) +else + echo "Using system installed PyFoam" + echo "" +fi + + echo ======================================== echo Done ThirdParty AllMake: Stage3 echo ======================================== diff --git a/ThirdParty/AllMake.stage5 b/ThirdParty/AllMake.stage5 new file mode 100755 index 000000000..e20f821fb --- /dev/null +++ b/ThirdParty/AllMake.stage5 @@ -0,0 +1,113 @@ +#!/bin/bash +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright held by original author +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM. +# +# OpenFOAM is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenFOAM. If not, see . +# +# Script +# AllMake.stage5 +# +# Description +# Build script for ThirdParty packages not requiring rpm packaging +# +# +# Requirements: +# 1: Your OpenFOAM environment must be properly initialized +# 2: OpenFOAM must already been compiled because swak4Foam depends on +# OpenFOAM include files and libraries +# +# Author: +# Martin Beaudoin, Hydro-Quebec, (2012) +# +#------------------------------------------------------------------------------ +# run from Third-party directory only +cd ${0%/*} || exit 1 + +wmakeCheckPwd "$WM_THIRD_PARTY_DIR" || { + echo "Error: Current directory is not \$WM_THIRD_PARTY_DIR" + echo " The environment variables are inconsistent with the installation." + echo " Check the OpenFOAM entries in your dot-files and source them." + exit 1 +} + +#------------------------------------------------------------------------------ + +echo "========================================" +echo "Starting ThirdParty AllMake: Stage5 " +echo "========================================" +echo + +# swak4Foam - Version 0.2.0 +# In fact, we are basically tracking the head branch from the Mercurial repository +# which is also replicated under the Breeder_1.7 section of the Subversion repository +# +if [ -z "$SWAK4FOAM_SYSTEM" ] +then + # Do we need to download the source code? + # We choose to put the source code under ./rpmBuild/BUILD prior to compiling. + # We will not generate a rpm package, but all ThirdParty source code will be + # centralized under the same scratch area + if [ ! -e ./rpmBuild/BUILD/swak4Foam-0.2.0 ]; + then + echo "Checking for a Mercurial client: hg" + command -v hg >/dev/null + if [ $? -eq 0 ]; + then + echo "Using Mercurial/hg to download the source code for swak4Foam" + (cd ./rpmBuild/BUILD; hg clone http://openfoam-extend.hg.sourceforge.net:8000/hgroot/openfoam-extend/swak4Foam swak4Foam-0.2.0) + else + echo "Warning: Mercurial/hg is not installed. Switching to an alternate Subversion repository" + command -v svn >/dev/null + if [ $? -eq 0 ]; + then + echo "Using Subversion/svn to download the source code for swak4Foam" + (cd ./rpmBuild/BUILD; svn checkout https://openfoam-extend.svn.sourceforge.net/svnroot/openfoam-extend/trunk/Breeder_1.7/libraries/swak4Foam swak4Foam-0.2.0) + else + echo "Error: Please install either a Mercurial or Subversion client in order to download the source code for swak4Foam" + exit -1 + fi + fi + # We move the compilation results directly to $FOAM_SITE_APPBIN and $FOAM_SITE_LIBBIN + # If you prefer to keep the libraries and tools under $FOAM_USER_LIBBIN and $FOAM_USER_APPBIN, simply + # comment out the next two lines + (cd ./rpmBuild/BUILD/swak4Foam-0.2.0; find . -name files | xargs -n 1 sed -i.old "s/FOAM_USER/FOAM_SITE/g") + (cd ./rpmBuild/BUILD/swak4Foam-0.2.0; find . -name options | xargs -n 1 sed -i.old "s/FOAM_USER/FOAM_SITE/g") + + # We recompile everything + (cd ./rpmBuild/BUILD/swak4Foam-0.2.0; ./Allwclean; ./Allwmake) + else + echo "The source code for swak4Foam is already present under ./rpmBuild/BUILD/swak4Foam-0.2.0" + echo "Please remove this directory if you want to refresh your installation of swak4Foam" + fi + echo "" +else + echo "Using system installed swak4Foam" + echo "" +fi + +echo "========================================" +echo "Done ThirdParty AllMake: Stage5 " +echo "========================================" +echo + +# ----------------------------------------------------------------- end-of-file + + diff --git a/ThirdParty/AllMake.stage6 b/ThirdParty/AllMake.stage6 new file mode 100755 index 000000000..1b428ddf3 --- /dev/null +++ b/ThirdParty/AllMake.stage6 @@ -0,0 +1,68 @@ +#!/bin/bash +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright held by original author +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM. +# +# OpenFOAM is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenFOAM. If not, see . +# +# Script +# AllMake.stage6 +# +# Description +# Build script for ThirdParty packages located under LocalDev +# +# +# Requirements: +# 1: Your OpenFOAM environment must be properly initialized +# +# Author: +# Martin Beaudoin, Hydro-Quebec, (2012) +# +#------------------------------------------------------------------------------ +# run from Third-party directory only +cd ${0%/*} || exit 1 + +wmakeCheckPwd "$WM_THIRD_PARTY_DIR" || { + echo "Error: Current directory is not \$WM_THIRD_PARTY_DIR" + echo " The environment variables are inconsistent with the installation." + echo " Check the OpenFOAM entries in your dot-files and source them." + exit 1 +} + +#------------------------------------------------------------------------------ + +echo "========================================" +echo "Starting ThirdParty AllMake: Stage6 " +echo "========================================" +echo + +# Local developments from Hydro-Quebec (Turbomachinery) +# Temporary solution until we find a more suitable place +# for this. MB +(cd ./LocalDev/Hydro-Quebec/PyFoam; ./AllMake) + +echo "========================================" +echo "Done ThirdParty AllMake: Stage6 " +echo "========================================" +echo + +# ----------------------------------------------------------------- end-of-file + + diff --git a/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/AllMake b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/AllMake new file mode 100755 index 000000000..5fb320e41 --- /dev/null +++ b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/AllMake @@ -0,0 +1,73 @@ +#!/bin/bash +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright held by original author +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM. +# +# OpenFOAM is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenFOAM. If not, see . +# +# Script +# AllMake +# +# Description +# Installation script for local development +# +# Author: +# Martin Beaudoin, Hydro-Quebec, (2012) +# +#------------------------------------------------------------------------------ + +command -v python -V >/dev/null +if [ ! $? -eq 0 ]; +then + echo "Error: You need to install python in order to run these PyFoam scripts" + exit -1 +fi + +if [ -z "$PYFOAM_DIR" ] +then + echo "Error: Missing environment variable \$PYFOAM_DIR." + echo " Please execute the script ThirdParty/AllMake.stage5 to install PyFoam." + echo " Then, make sure to freshen your OpenFOAM environment by sourcing your main" + echo " OpenFOAM configuration file." + exit -1 +fi + +pythonVersion=$(python -V 2>&1 | awk -F ' ' {'print $2'} | awk -F \. {'print $1 "." $2'}) + +set -x + +# pyFoamChangeMixingPlaneBoundary.py +cp pyFoamChangeMixingPlaneBoundary.py $PYFOAM_DIR/bin +cp ChangeMixingPlaneBoundary.py $PYFOAM_DIR/lib/python$pythonVersion/site-packages/PyFoam/Applications + +# pyFoamChangeGGIBoundary.py +# Same as pyFoamModifyGGIBoundary.py. We just harmonize the name with rest of PyFoam +cp pyFoamChangeGGIBoundary.py $PYFOAM_DIR/bin +cp ChangeGGIBoundary.py $PYFOAM_DIR/lib/python$pythonVersion/site-packages/PyFoam/Applications + +set +x +echo ======================================== +echo Done +echo ======================================== +echo + +# ----------------------------------------------------------------- end-of-file + + diff --git a/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/ChangeGGIBoundary.py b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/ChangeGGIBoundary.py new file mode 100644 index 000000000..be875eb35 --- /dev/null +++ b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/ChangeGGIBoundary.py @@ -0,0 +1,156 @@ +""" +Application-class that implements pyFoamChangeGGIBoundary.py + +Modification of GGI and cyclicGGI interface parameters in +constant/polymesh/boundary file. + +Author: + Martin Beaudoin, Hydro-Quebec, 2009. All rights reserved + +""" + +from PyFoamApplication import PyFoamApplication +from PyFoam.RunDictionary.ParsedParameterFile import ParsedParameterFile +from os import path +import sys +import re + +class ChangeGGIBoundary(PyFoamApplication): + def __init__(self,args=None): + description="""\ +Change GGI boundary condition parameters +""" + PyFoamApplication.__init__(self, + args=args, + description=description, + usage="%prog ggiPatchName", + interspersed=True, + changeVersion=False, + nr=2) + + def addOptions(self): + self.parser.add_option("--shadowPatch", + action="store", + dest="shadowPatch", + default=None, + help='Name of the shadowPatch') + self.parser.add_option("--shadowName", + action="store", + dest="shadowName", + default=None, + help='Name of the shadowPatch. Deprecated. Use --shadowPatch instead') + self.parser.add_option("--zone", + action="store", + dest="zone", + default=None, + help='Name of the zone for the GGI patch') + self.parser.add_option("--patchZoneName", + action="store", + dest="patchZoneName", + default=None, + help='Name of the zone for the GGI patch. Deprecated. Use --zone instead') + self.parser.add_option("--bridgeOverlap", + action="store", + dest="bridgeOverlap", + default=None, + help='bridgeOverlap flag (on/off)') + self.parser.add_option("--bridgeOverlapFlag", + action="store", + dest="bridgeOverlapFlag", + default=None, + help='bridgeOverlap flag (on/off). Deprecated. Use --bridgeOverlap instead') + self.parser.add_option("--rotationAxis", + action="store", + dest="rotationAxis", + default=None, + help='rotation axis for cyclicGgi') + self.parser.add_option("--rotationAngle", + action="store", + dest="rotationAngle", + default=None, + help='rotation axis angle for cyclicGgi') + self.parser.add_option("--separationOffset", + action="store", + dest="separationOffset", + default=None, + help='separation offset for cyclicGgi') + + self.parser.add_option("--test", + action="store_true", + default=False, + dest="test", + help="Only print the new boundary file") + + def run(self): + fName=self.parser.getArgs()[0] + bName=self.parser.getArgs()[1] + + boundary=ParsedParameterFile(path.join(".",fName,"constant","polyMesh","boundary"),debug=False,boundaryDict=True) + + bnd=boundary.content + + if type(bnd)!=list: + self.error("Problem with boundary file (not a list)") + + found=False + + for val in bnd: + if val==bName: + found=True + elif found: + bcType=val["type"] + if re.match("cyclicGgi", bcType)!= None or re.match("ggi", bcType)!= None: + if self.parser.getOptions().shadowPatch!=None: + shadowPatch=self.parser.getOptions().shadowPatch + val["shadowPatch"]=shadowPatch + if shadowPatch not in bnd: + self.error("\n Option --shadowPatch for patch:",bName,": there is no patch called",shadowPatch,"\n") + + if self.parser.getOptions().zone!=None: + val["zone"]=self.parser.getOptions().zone + + if self.parser.getOptions().bridgeOverlap!=None: + val["bridgeOverlap"]=self.parser.getOptions().bridgeOverlap + + if val["type"]=="cyclicGgi": + if self.parser.getOptions().rotationAxis!=None: + val["rotationAxis"]=self.parser.getOptions().rotationAxis + + if self.parser.getOptions().rotationAngle!=None: + val["rotationAngle"]=self.parser.getOptions().rotationAngle + + if self.parser.getOptions().separationOffset!=None: + val["separationOffset"]=self.parser.getOptions().separationOffset + + + # Deprecated + if self.parser.getOptions().shadowName!=None: + self.warning("\n PatchName:",bName,": Option --shadowName is deprecated. Use --shadowPatch instead\n") + shadowName=self.parser.getOptions().shadowName + val["shadowPatch"]=shadowName + if shadowName not in bnd: + self.error("\n Option --shadowName for patch:",bName,": there is no patch called",shadowName,"\n") + + # Deprecated + if self.parser.getOptions().patchZoneName!=None: + self.warning("\n PatchName:",bName,": Option --patchZoneName is deprecated. Use --zone instead\n") + val["zone"]=self.parser.getOptions().patchZoneName + + # Deprecated + if self.parser.getOptions().bridgeOverlapFlag!=None: + self.warning("\n PatchName:",bName,": Option --bridgeOverlapFlag is deprecated. Use --bridgeOverlap instead\n") + val["bridgeOverlap"]=self.parser.getOptions().bridgeOverlapFlag + + + else: + print "Unsupported GGI type '",bcType,"' for patch",bName + break + + if not found: + self.error("Boundary",bName,"not found in",bnd[::2]) + + if self.parser.getOptions().test: + print boundary + else: + boundary.writeFile() + diff --git a/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/ChangeMixingPlaneBoundary.py b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/ChangeMixingPlaneBoundary.py new file mode 100644 index 000000000..5025920aa --- /dev/null +++ b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/ChangeMixingPlaneBoundary.py @@ -0,0 +1,139 @@ +""" +Application-class that implements pyFoamChangeMixingPlaneBoundary.py + +Change various mixingPlane interface attributes in +constant/polymesh/boundary file. + +Author: + Martin Beaudoin, Hydro-Quebec, 2012. All rights reserved + +""" + +from PyFoamApplication import PyFoamApplication +from PyFoam.RunDictionary.ParsedParameterFile import ParsedParameterFile +from os import path +import sys + +class ChangeMixingPlaneBoundary(PyFoamApplication): + def __init__(self,args=None): + description=""" +Change MixingPlane boundary condition parameters +""" + PyFoamApplication.__init__(self, + args=args, + description=description, + usage="%prog mixingPlanePatchName", + interspersed=True, + changeVersion=False, + nr=2) + + def addOptions(self): + self.parser.add_option("--shadowPatch", + action="store", + dest="shadowPatch", + default=None, + help='Name of the shadowPatch') + self.parser.add_option("--coordinateSystemName", + action="store", + dest="coordinateSystemName", + default="mixingCS", + help='coordinateSystemName (mixingCS)') + self.parser.add_option("--coordinateSystemType", + action="store", + dest="coordinateSystemType", + default=None, + help='coordinateSystemType (cyindrical/spherical)') + self.parser.add_option("--coordinateSystemOrigin", + action="store", + dest="coordinateSystemOrigin", + default=None, + help='origin for coordinate system of mixingPlane') + self.parser.add_option("--coordinateSystemE1", + action="store", + dest="coordinateSystemE1", + default=None, + help='axis E1 for coordinate system of mixingPlane') + self.parser.add_option("--coordinateSystemE3", + action="store", + dest="coordinateSystemE3", + default=None, + help='axis E3 for coordinate system of mixingPlane') + self.parser.add_option("--assembly", + action="store", + dest="assembly", + default=None, + help='Assembly (master|slave|both|userdefined') + self.parser.add_option("--orientation", + action="store", + dest="orientation", + default=None, + help='Orientation of profile (\ +dirX_spanY| \ +dirX_spanZ|dirY_spanX|dirY_spanZ|dirZ_spanX|dirZ_spanY|dirR_spanTheta|dirR_spanZ|dirTheta_spanZ|dirTheta_spanR|dirZ_spanTheta|dirZ_spanR|unknown)') + + self.parser.add_option("--test", + action="store_true", + default=False, + dest="test", + help="Only print the new boundary file") + + def run(self): + fName=self.parser.getArgs()[0] + bName=self.parser.getArgs()[1] + + boundary=ParsedParameterFile(path.join(".",fName,"constant","polyMesh","boundary"),debug=False,boundaryDict=True) + + bnd=boundary.content + + if type(bnd)!=list: + print "Problem with boundary file (not a list)" + sys.exit(-1) + + found=False + + for val in bnd: + if val==bName: + found=True + elif found: + if val["type"]=="mixingPlane": + if self.parser.getOptions().shadowPatch!=None: + val["shadowPatch"]=self.parser.getOptions().shadowPatch + + if self.parser.getOptions().orientation!=None: + val["orientation"]=self.parser.getOptions().orientation + + if val.has_key("coordinateSystem")==False: + val["coordinateSystem"]={} + + if self.parser.getOptions().coordinateSystemName!=None: + val["coordinateSystem"]["name"]=self.parser.getOptions().coordinateSystemName + + if self.parser.getOptions().coordinateSystemType!=None: + val["coordinateSystem"]["type"]=self.parser.getOptions().coordinateSystemType + + if self.parser.getOptions().coordinateSystemOrigin!=None: + val["coordinateSystem"]["origin"]=self.parser.getOptions().coordinateSystemOrigin + + if self.parser.getOptions().coordinateSystemE1!=None: + val["coordinateSystem"]["e1"]=self.parser.getOptions().coordinateSystemE1 + + if self.parser.getOptions().coordinateSystemE3!=None: + val["coordinateSystem"]["e3"]=self.parser.getOptions().coordinateSystemE3 + + if self.parser.getOptions().assembly!=None: + val["assembly"]=self.parser.getOptions().assembly + + if self.parser.getOptions().orientation!=None: + val["orientation"]=self.parser.getOptions().orientation + + break + + if not found: + print "Boundary",bName,"not found in",bnd[::2] + sys.exit(-1) + + if self.parser.getOptions().test: + print boundary + else: + boundary.writeFile() + diff --git a/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/Readme.txt b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/Readme.txt new file mode 100644 index 000000000..36776145c --- /dev/null +++ b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/Readme.txt @@ -0,0 +1,6 @@ +PyFoam scripts for handling GGI and mixingPlane cases. + +-- +Martin Beaudoin +Hydro-Quebec +April 2012 diff --git a/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/pyFoamChangeGGIBoundary.py b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/pyFoamChangeGGIBoundary.py new file mode 100755 index 000000000..947cf69f9 --- /dev/null +++ b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/pyFoamChangeGGIBoundary.py @@ -0,0 +1,5 @@ +#!/usr/bin/env python + +from PyFoam.Applications.ChangeGGIBoundary import ChangeGGIBoundary + +ChangeGGIBoundary() diff --git a/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/pyFoamChangeMixingPlaneBoundary.py b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/pyFoamChangeMixingPlaneBoundary.py new file mode 100755 index 000000000..f8ba07c1b --- /dev/null +++ b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/pyFoamChangeMixingPlaneBoundary.py @@ -0,0 +1,5 @@ +#!/usr/bin/env python + +from PyFoam.Applications.ChangeMixingPlaneBoundary import ChangeMixingPlaneBoundary + +ChangeMixingPlaneBoundary() diff --git a/ThirdParty/LocalDev/Readme.txt b/ThirdParty/LocalDev/Readme.txt new file mode 100644 index 000000000..68a07738a --- /dev/null +++ b/ThirdParty/LocalDev/Readme.txt @@ -0,0 +1,13 @@ +This directory contains ThirdParty developments specific to the mixingPlane_RC1 branch. +Those developments might eventually find a more suitable home elsewhere. + +Instead of spreading these developments around in various repositories, I find +it more convenient to regroup them under this directory. + +So expect this ThirdParty/LocalDev directory to disappear eventually, once its +content will prove it usefulness. + +-- +Martin Beaudoin +Hydro-Quebec +April 2012 diff --git a/ThirdParty/rpmBuild/BUILD/.emptyFileForGit b/ThirdParty/rpmBuild/BUILD/.emptyFileForGit deleted file mode 100644 index e69de29bb..000000000 diff --git a/ThirdParty/rpmBuild/RPMS/.emptyFileForGit b/ThirdParty/rpmBuild/RPMS/.emptyFileForGit deleted file mode 100644 index e69de29bb..000000000 diff --git a/ThirdParty/rpmBuild/SOURCES/ParaView-3.14.1.patch_0_ParaView.git_0f43430 b/ThirdParty/rpmBuild/SOURCES/ParaView-3.14.1.patch_0_ParaView.git_0f43430 new file mode 100644 index 000000000..682a2039a --- /dev/null +++ b/ThirdParty/rpmBuild/SOURCES/ParaView-3.14.1.patch_0_ParaView.git_0f43430 @@ -0,0 +1,243901 @@ +diff -x .git -ruN orig/Applications/ParaView/ParaViewFilters.xml git_0f43430/Applications/ParaView/ParaViewFilters.xml +--- orig/Applications/ParaView/ParaViewFilters.xml 2012-04-02 12:55:26.000000000 -0400 ++++ git_0f43430/Applications/ParaView/ParaViewFilters.xml 2012-04-20 23:43:06.000000000 -0400 +@@ -63,9 +63,30 @@ + + + +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -83,9 +104,6 @@ + + + +- +- +- + + + +@@ -100,10 +118,8 @@ + + + +- + + +- + + + +@@ -115,7 +131,7 @@ + + + +- ++ + + + +@@ -140,6 +156,7 @@ + + + ++ + + + +diff -x .git -ruN orig/Applications/ParaView/ParaViewReaders.xml git_0f43430/Applications/ParaView/ParaViewReaders.xml +--- orig/Applications/ParaView/ParaViewReaders.xml 2012-04-02 12:55:26.000000000 -0400 ++++ git_0f43430/Applications/ParaView/ParaViewReaders.xml 2012-04-20 23:43:06.000000000 -0400 +@@ -70,4 +70,6 @@ + + + ++ ++ + +diff -x .git -ruN orig/Applications/ParaView/ParaViewSources.xml git_0f43430/Applications/ParaView/ParaViewSources.xml +--- orig/Applications/ParaView/ParaViewSources.xml 2012-04-02 12:55:26.000000000 -0400 ++++ git_0f43430/Applications/ParaView/ParaViewSources.xml 2012-04-20 23:43:06.000000000 -0400 +@@ -24,4 +24,5 @@ + + + ++ + +diff -x .git -ruN orig/Applications/ParaView/Testing/Python/CMakeLists.txt git_0f43430/Applications/ParaView/Testing/Python/CMakeLists.txt +--- orig/Applications/ParaView/Testing/Python/CMakeLists.txt 2012-04-02 12:56:24.000000000 -0400 ++++ git_0f43430/Applications/ParaView/Testing/Python/CMakeLists.txt 2012-04-20 23:43:06.000000000 -0400 +@@ -79,4 +79,32 @@ + + # TODO: remote rendering tests and reverse connect tests. + ++# only enable TestPythonAnnotationFilter test if numpy is available ++include("TestNumPy") ++ ++IF ("1" STREQUAL ${HAS_NUMPY}) ++ # Add pvpython tests ++ add_test("pvpython.TestPythonAnnotationFilter" ++ ${PARAVIEW_PYTHON_EXECUTABLE} ++ --data=${PARAVIEW_DATA_ROOT}/Data/can.ex2 ++ ${CMAKE_CURRENT_SOURCE_DIR}/TestPythonAnnotationFilter.py) ++ENDIF ("1" STREQUAL ${HAS_NUMPY}) ++ + ENDIF (PARAVIEW_DATA_ROOT) ++ ++# Python Multi-servers test ++add_test("py-multi-servers.TestMultiServersConfig" ++ ${PARAVIEW_SMTESTDRIVER_EXECUTABLE} ++ --test-multi-servers 2 ++ --server ${PARAVIEW_SERVER_EXECUTABLE} ++ --client ${PARAVIEW_PYTHON_EXECUTABLE} ++ ${CMAKE_CURRENT_SOURCE_DIR}/TestMultiServersConfig.py ++) ++ ++add_test("py-multi-servers.TestMultiServersRemoteProxy" ++ ${PARAVIEW_SMTESTDRIVER_EXECUTABLE} ++ --test-multi-servers 3 ++ --server ${PARAVIEW_SERVER_EXECUTABLE} ++ --client ${PARAVIEW_PYTHON_EXECUTABLE} ++ ${CMAKE_CURRENT_SOURCE_DIR}/TestMultiServersRemoteProxy.py ++) +diff -x .git -ruN orig/Applications/ParaView/Testing/Python/TestMultiServersConfig.py git_0f43430/Applications/ParaView/Testing/Python/TestMultiServersConfig.py +--- orig/Applications/ParaView/Testing/Python/TestMultiServersConfig.py 1969-12-31 19:00:00.000000000 -0500 ++++ git_0f43430/Applications/ParaView/Testing/Python/TestMultiServersConfig.py 2012-04-20 23:43:06.000000000 -0400 +@@ -0,0 +1,153 @@ ++from paraview.simple import * ++from paraview import servermanager ++ ++import time ++ ++# Make sure the test driver know that process has properly started ++print "Process started" ++errors = 0 ++ ++#-------------------- Helpers methods ---------------- ++def getHost(url): ++ return url.split(':')[1][2:] ++ ++def getScheme(url): ++ return url.split(':')[0] ++ ++def getPort(url): ++ return int(url.split(':')[2]) ++#-------------------- ++import os ++ ++def findInSubdirectory(filename, subdirectory=''): ++ if subdirectory: ++ path = subdirectory ++ else: ++ path = os.getcwd() ++ for root, dirs, names in os.walk(path): ++ for name in names: ++ if (name.find(filename) > -1) and ( (name.find('.dll') > -1) or (name.find('.so') > -1) or (name.find('.dylib') > -1)): ++ return os.path.join(root, name) ++ raise 'File not found' ++#-------------------- ++ ++print "Start multi-server testing" ++enableMultiServer() ++ ++options = servermanager.vtkProcessModule.GetProcessModule().GetOptions() ++available_server_urls = options.GetServerURL().split('|') ++built_in_connection = servermanager.ActiveConnection ++ ++# Test if the built-in connection is here ++if (len(servermanager.MultiServerConnections) != 1): ++ errors += 1 ++ print "Error pvpython should be connected to a built-in session. Currently connected to ", servermanager.MultiServerConnections ++ ++url = available_server_urls[0] ++print "Connect to first server ", url ++server1_connection = Connect(getHost(url), getPort(url)) ++ ++# Test that we have one more connection ++if (len(servermanager.MultiServerConnections) != 2): ++ errors += 1 ++ print "Error pvpython should be connected to a built-in session + one remote one. Currently connected to ", servermanager.MultiServerConnections ++ ++url = available_server_urls[1] ++print "Connect to second server ", url ++server2_connection = Connect(getHost(url), getPort(url)) ++ ++# Test that we have one more connection ++if (len(servermanager.MultiServerConnections) != 3): ++ errors += 1 ++ print "Error pvpython should be connected to a built-in session + two remote one. Currently connected to ", servermanager.MultiServerConnections ++ ++print "Available connections: ", servermanager.MultiServerConnections ++ ++# Test that last created connection is the active one ++if ( servermanager.ActiveConnection != server2_connection): ++ errors += 1 ++ print "Error Invalid active connection. Expected ", server2_connection, " and got ", servermanager.ActiveConnection ++ ++# Test that switchActiveConnection is working as expected ++switchActiveConnection(server1_connection, globals()) ++if ( servermanager.ActiveConnection != server1_connection): ++ errors += 1 ++ print "Error Invalid active connection. Expected ", server1_connection, " and got ", servermanager.ActiveConnection ++ ++# Test that switchActiveConnection is working as expected ++switchActiveConnection(built_in_connection, globals()) ++if ( servermanager.ActiveConnection != built_in_connection): ++ errors += 1 ++ print "Error Invalid active connection. Expected ", built_in_connection, " and got ", servermanager.ActiveConnection ++ ++# Test that switchActiveConnection is working as expected ++switchActiveConnection(server2_connection, globals()) ++if ( servermanager.ActiveConnection != server2_connection): ++ errors += 1 ++ print "Error Invalid active connection. Expected ", server2_connection, " and got ", servermanager.ActiveConnection ++ ++ ++# Load plugin on server2 ++switchActiveConnection(server2_connection, globals()) ++LoadDistributedPlugin("PacMan", True, globals()) ++ ++# Create PacMan on server2 ++pacMan_s2 = PacMan() ++ ++# Swtich to server1 and Create PacMan ==> This should fail ++switchActiveConnection(server1_connection, globals()) ++try: ++ pacMan_s1 = PacMan() ++ errors += 1 ++ print "Error: PacMan should not be available on Server1" ++except NameError: ++ print "OK: PacMan is not available on server1" ++ ++# Swtich to server2 with globals and switch back to server1 with not updating the globals ++switchActiveConnection(server2_connection, globals()) ++switchActiveConnection(server1_connection) ++ ++# Create PacMan ==> This should fail ++try: ++ pacMan_s1 = PacMan() ++ errors += 1 ++ print "Error: PacMan should not be available on Server1" ++except RuntimeError: ++ print "OK: PacMan is not available on server1" ++ ++# Make sure built-in as not the pacMan ++switchActiveConnection(server2_connection, globals()) ++switchActiveConnection(built_in_connection, globals()) ++try: ++ pacMan_builtin = PacMan() ++ errors += 1 ++ print "Error: PacMan should not be available on built-in" ++except NameError: ++ print "OK: PacMan is not available on built-in" ++ ++# Load plugin localy for built-in ++# Create PacMan ==> This should be OK on built-in ++switchActiveConnection(built_in_connection, globals()) ++LoadDistributedPlugin("PacMan", False, globals()) ++pacMan_builtin = PacMan() ++print "After loading the plugin locally in built-in, the PacMan definition is available" ++ ++# Swtich to server1 and Create PacMan ==> This should fail ++switchActiveConnection(server1_connection, globals()) ++try: ++ pacMan_s1 = PacMan() ++ errors += 1 ++ print "Error: PacMan should not be available on Server1" ++except NameError: ++ print "OK: PacMan is still not available on server1" ++ ++# Disconnect and quit application... ++Disconnect() ++print "Available connections after disconnect: ", servermanager.MultiServerConnections ++Disconnect() ++print "Available connections after disconnect: ", servermanager.MultiServerConnections ++Disconnect() ++print "Available connections after disconnect: ", servermanager.MultiServerConnections ++ ++if errors > 0: ++ raise RuntimeError, "An error occured during the execution" +diff -x .git -ruN orig/Applications/ParaView/Testing/Python/TestMultiServersRemoteProxy.py git_0f43430/Applications/ParaView/Testing/Python/TestMultiServersRemoteProxy.py +--- orig/Applications/ParaView/Testing/Python/TestMultiServersRemoteProxy.py 1969-12-31 19:00:00.000000000 -0500 ++++ git_0f43430/Applications/ParaView/Testing/Python/TestMultiServersRemoteProxy.py 2012-04-20 23:43:06.000000000 -0400 +@@ -0,0 +1,151 @@ ++from paraview.simple import * ++from paraview import servermanager ++ ++import time ++ ++# Make sure the test driver know that process has properly started ++print "Process started" ++errors = 0 ++ ++#-------------------- Helpers methods ---------------- ++def getHost(url): ++ return url.split(':')[1][2:] ++ ++def getScheme(url): ++ return url.split(':')[0] ++ ++def getPort(url): ++ return int(url.split(':')[2]) ++#-------------------- ++ ++print "Start multi-server testing" ++enableMultiServer() ++ ++options = servermanager.vtkProcessModule.GetProcessModule().GetOptions() ++available_server_urls = options.GetServerURL().split('|') ++built_in_connection = servermanager.ActiveConnection ++ ++# Test if the built-in connection is here ++if (len(servermanager.MultiServerConnections) != 1): ++ errors += 1 ++ print "Error pvpython should be connected to a built-in session. Currently connected to ", servermanager.MultiServerConnections ++ ++url = available_server_urls[0] ++print "Connect to first server ", url ++server1_connection = Connect(getHost(url), getPort(url)) ++ ++# Test that we have one more connection ++if (len(servermanager.MultiServerConnections) != 2): ++ errors += 1 ++ print "Error pvpython should be connected to a built-in session + one remote one. Currently connected to ", servermanager.MultiServerConnections ++ ++url = available_server_urls[1] ++print "Connect to second server ", url ++server2_connection = Connect(getHost(url), getPort(url)) ++ ++# Test that we have one more connection ++if (len(servermanager.MultiServerConnections) != 3): ++ errors += 1 ++ print "Error pvpython should be connected to a built-in session + two remote one. Currently connected to ", servermanager.MultiServerConnections ++ ++url = available_server_urls[2] ++print "Connect to third server ", url ++server3_connection = Connect(getHost(url), getPort(url)) ++ ++# Test that we have one more connection ++if (len(servermanager.MultiServerConnections) != 4): ++ errors += 1 ++ print "Error pvpython should be connected to a built-in session + three remote one. Currently connected to ", servermanager.MultiServerConnections ++ ++print "Available connections: ", servermanager.MultiServerConnections ++ ++# Test that last created connection is the active one ++if ( servermanager.ActiveConnection != server3_connection): ++ errors += 1 ++ print "Error Invalid active connection. Expected ", server3_connection, " and got ", servermanager.ActiveConnection ++ ++# ------- Do the proper RemoteSourceProxy testing -------------- ++ ++# Create a set of sphere across the remote sessions ++switchActiveConnection(server1_connection, globals()) ++rSphere1 = Sphere(ThetaResolution=10, PhiResolution=10) ++rSphere1.UpdatePipeline() ++size1 = rSphere1.GetDataInformation().GetNumberOfPoints() ++ ++switchActiveConnection(server2_connection, globals()) ++rSphere2 = Sphere(ThetaResolution=11, PhiResolution=11) ++rSphere2.UpdatePipeline() ++size2 = rSphere2.GetDataInformation().GetNumberOfPoints() ++ ++switchActiveConnection(server3_connection, globals()) ++rSphere3 = Sphere(ThetaResolution=12, PhiResolution=12) ++rSphere3.UpdatePipeline() ++size3 = rSphere3.GetDataInformation().GetNumberOfPoints() ++ ++# Create remote source on the built-in session ++switchActiveConnection(built_in_connection, globals()) ++remoteProxy = RemoteSourceProxy() ++remoteProxy.SetExternalProxy(rSphere1, 0) ++remoteProxy.UpdatePipeline() ++ ++# Test that the data in built-in is the same size as the remote one ++remoteProxy.UpdatePipeline() ++size = remoteProxy.GetDataInformation().GetNumberOfPoints() ++if ( size1 != size ): ++ errors += 1 ++ print "Error Invalid data size. Expected ", size1, " and got ", size ++else: ++ print "Found size ", size, " for server 1" ++ ++# Switch to proxy on server 2 and test size ++remoteProxy.SetExternalProxy(rSphere2, 0) ++remoteProxy.UpdatePipeline() ++size = remoteProxy.GetDataInformation().GetNumberOfPoints() ++if ( size2 != size ): ++ errors += 1 ++ print "Error Invalid data size. Expected ", size2, " and got ", size ++else: ++ print "Found size ", size, " for server 2" ++ ++# Switch to proxy on server 3 and test size ++remoteProxy.SetExternalProxy(rSphere3, 0) ++remoteProxy.UpdatePipeline() ++size = remoteProxy.GetDataInformation().GetNumberOfPoints() ++if ( size3 != size ): ++ errors += 1 ++ print "Error Invalid data size. Expected ", size3, " and got ", size ++else: ++ print "Found size ", size, " for server 3" ++ ++# Change data size on server 3 and make sure the change get propagated to the built-in ++rSphere3.ThetaResolution = 13 ++rSphere3.PhiResolution = 13 ++rSphere3.UpdatePipeline() ++size3 = rSphere3.GetDataInformation().GetNumberOfPoints() ++ ++remoteProxy.UpdatePipeline() ++size = remoteProxy.GetDataInformation().GetNumberOfPoints() ++if ( size3 != size ): ++ errors += 1 ++ print "Error Invalid data size. Expected ", size3, " and got ", size ++else: ++ print "Found size ", size, " for server 3 after update" ++ ++# Make sure the size is not 0 ++if ( size == 0 or size1 == 0 or size1 == 0 or size1 == 0): ++ errors += 1 ++ print "Error Invalid data size. None of them should be 0" ++ ++# -------------------------------------------------------------- ++# Disconnect and quit application... ++Disconnect() ++print "Available connections after disconnect: ", servermanager.MultiServerConnections ++Disconnect() ++print "Available connections after disconnect: ", servermanager.MultiServerConnections ++Disconnect() ++print "Available connections after disconnect: ", servermanager.MultiServerConnections ++Disconnect() ++print "Available connections after disconnect: ", servermanager.MultiServerConnections ++ ++if errors > 0: ++ raise RuntimeError, "An error occured during the execution" +diff -x .git -ruN orig/Applications/ParaView/Testing/Python/TestPythonAnnotationFilter.py git_0f43430/Applications/ParaView/Testing/Python/TestPythonAnnotationFilter.py +--- orig/Applications/ParaView/Testing/Python/TestPythonAnnotationFilter.py 1969-12-31 19:00:00.000000000 -0500 ++++ git_0f43430/Applications/ParaView/Testing/Python/TestPythonAnnotationFilter.py 2012-04-20 23:43:06.000000000 -0400 +@@ -0,0 +1,119 @@ ++from paraview.simple import * ++from paraview import servermanager ++ ++import time ++ ++# Make sure the test driver know that process has properly started ++print "Process started" ++errors = 0 ++ ++#-------------------- Comparison helper ---------------------- ++ ++def equal(a, b): ++ if a == b: ++ return True ++ aList = a.replace(","," ").replace("["," ").replace("]", " ").split(" ") ++ bList = b.replace(","," ").replace("["," ").replace("]", " ").split(" ") ++ size = len(aList) ++ if size != len(bList): ++ return False ++ for i in xrange(size): ++ if len(aList[i]) > 0: ++ af = float(aList[i]) ++ bf = float(bList[i]) ++ if ((af-bf)*(af-bf)) > 0.000001: ++ return False ++ return True ++ ++#-------------------- Start testing -------------------------- ++ ++print "Start PythonAnnotationFilter testing" ++ ++options = servermanager.vtkProcessModule.GetProcessModule().GetOptions() ++dataToLoad = options.GetParaViewDataName() ++ ++ ++# Load data file ++reader = OpenDataFile(dataToLoad) ++reader.GlobalVariables = ['KE', 'XMOM', 'YMOM', 'ZMOM', 'NSTEPS', 'TMSTEP'] ++reader.UpdatePipeline() ++ ++# Time management ++timesteps = servermanager.ProxyManager().GetProxy('timekeeper','TimeKeeper').TimestepValues ++time = timesteps[5] ++ ++# Merge blocks ++merge = MergeBlocks() ++ ++# Annotation filter ++annotation = PythonAnnotation() ++annotation.Expression = '"%f %f %f" % (XMOM[t_index], YMOM[t_index], ZMOM[t_index])' ++ ++# Update time and trigger pipeline execution ++time = timesteps[5] ++annotation.UpdatePipeline(time) ++ ++annotation.SMProxy.UpdatePropertyInformation() ++value = annotation.SMProxy.GetProperty('AnnotationValue').GetElement(0) ++expected = "0.012132 0.001378 -1158.252808" ++ ++if not equal(value, expected): ++ errors += 1 ++ print "Error: Expected ", expected, " and got ", value ++ ++# Update time and trigger pipeline execution ++time = timesteps[7] ++annotation.UpdatePipeline(time) ++ ++annotation.SMProxy.UpdatePropertyInformation() ++value = annotation.SMProxy.GetProperty('AnnotationValue').GetElement(0) ++expected = "0.013970 0.001319 -1141.020020" ++ ++if not equal(value, expected): ++ errors += 1 ++ print "Error: Expected ", expected, " and got ", value ++ ++# Check time infos ++annotation.Expression = '"%i %f %s" % (t_index, t_value, str(t_range))' ++ ++# Update time and trigger pipeline execution ++time = timesteps[7] ++annotation.UpdatePipeline(time) ++ ++annotation.SMProxy.UpdatePropertyInformation() ++value = annotation.SMProxy.GetProperty('AnnotationValue').GetElement(0) ++expected = "7 0.000700 [0, 0.00429999]" ++ ++if not equal(value, expected): ++ errors += 1 ++ print "Error: Expected ", expected, " and got ", value ++ ++# Update time and trigger pipeline execution ++time = timesteps[27] ++annotation.UpdatePipeline(time) ++ ++annotation.SMProxy.UpdatePropertyInformation() ++value = annotation.SMProxy.GetProperty('AnnotationValue').GetElement(0) ++expected = "27 0.002700 [0, 0.00429999]" ++ ++if not equal(value, expected): ++ errors += 1 ++ print "Error: Expected ", expected, " and got ", value ++ ++# Update time and trigger pipeline execution ++time = timesteps[len(timesteps)-1] ++annotation.UpdatePipeline(time) ++ ++annotation.SMProxy.UpdatePropertyInformation() ++value = annotation.SMProxy.GetProperty('AnnotationValue').GetElement(0) ++expected = "43 0.004300 [0, 0.00429999]" ++ ++if not equal(value, expected): ++ errors += 1 ++ print "Error: Expected ", expected, " and got ", value ++ ++# Disconnect and quit application... ++Disconnect() ++ ++if errors > 0: ++ raise RuntimeError, "An error occured during the execution" +diff -x .git -ruN orig/Applications/ParaView/Testing/XML/CMakeLists.txt git_0f43430/Applications/ParaView/Testing/XML/CMakeLists.txt +--- orig/Applications/ParaView/Testing/XML/CMakeLists.txt 2012-04-02 12:56:24.000000000 -0400 ++++ git_0f43430/Applications/ParaView/Testing/XML/CMakeLists.txt 2012-04-20 23:43:06.000000000 -0400 +@@ -142,6 +142,10 @@ + SET(TESTS_WITH_BASELINES ${TESTS_WITH_BASELINES} ${CMAKE_CURRENT_SOURCE_DIR}/FindDataDialog.xml) + ENDIF ("1" STREQUAL ${HAS_NUMPY}) + ++# These tests cannot be run using ctest -j since they are affected by focus ++# changed events. ++set (AnimatePipelineTime_FORCE_SERIAL TRUE) ++ + # Set properties for CTH tests + set(CTHAMRBaseline_BREAK TRUE) + +@@ -202,6 +206,7 @@ + + SET(ExtractLevel_BREAK TRUE) + ++SET(Fractal2D_BREAK TRUE) + + # Add image threshold overrides for tests. + # Generally all tests with wireframes need higher thresholds. +@@ -350,74 +355,79 @@ + + # List of test Enable for collaboration + set (AnimatePipelineTime_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (CalcParens_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (Calculator_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (CameraLink_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (ColorEditor2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (ColorEditor4_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (CompositeSurfaceSelection_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (CalcParens_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (Calculator_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (CameraLink_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (ColorEditor2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (ColorEditor4_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (CompositeSurfaceSelection_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) + set (Contour_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (ContourRange_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (ContourRange_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) + set (CreateDelete_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (CustomSourceProbe_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (D3SmallCells_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (DualSphereAnimation_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (EnSight_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (ExodusIIPanel_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (ExodusModeShapes_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (ExodusXML_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (ExTimeseries_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (ExTimeseries2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (ExtractBlock_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (ExtractLevel_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (FindDataDialog_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (FFTOverTime_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (Flow_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (Flow2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (Fractal2D_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (GridConnectivity_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (NormalGlyphs_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (ObjectInspectorSphere_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (OpenSaveData_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (Plot3DReader_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (PlotEdges_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (PlotEdges2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (PropertyConversion_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (CustomSourceProbe_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (D3SmallCells_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (DualSphereAnimation_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (EnSight_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (ExodusIIPanel_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (ExodusModeShapes_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (ExodusXML_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (ExTimeseries_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (ExTimeseries2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (ExtractBlock_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (ExtractLevel_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (FindDataDialog_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (FFTOverTime_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (Flow_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (Flow2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (Fractal2D_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (GridConnectivity_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (NormalGlyphs_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (ObjectInspectorSphere_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (OpenSaveData_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (Plot3DReader_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (PlotEdges_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (PlotEdges2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (PropertyConversion_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) + set (PropertyConversion1_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) + set (PropertyConversion2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-# disabling since the state file doesn't have view layout and such old state +-# files are not currently supported in collaborative mode. +-#set (PropertyLink_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (ReadXMLPolyDataFileSeries_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (RepresentationSelector_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (SaveColorMap_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (SaveCSV_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (SelectReader_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (SimpleInteraction_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (Slice_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++## disabling since the state file doesn't have view layout and such old state ++## files are not currently supported in collaborative mode. ++##set (PropertyLink_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (ReadXMLPolyDataFileSeries_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (RepresentationSelector_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (SaveColorMap_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (SaveCSV_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (SelectReader_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (SimpleInteraction_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (Slice_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) + set (SpreadSheet1_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (SpreadSheet2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (SPTimeseries_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (SpyPlotHistoryReader_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (StreamTracerUpdates_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (SpreadSheet2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (SPTimeseries_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (SpyPlotHistoryReader_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (StreamTracerUpdates_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) + set (TemporalInterpolator_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) + set (TemporalShiftScale_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (Tessellate_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (Threshold_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (UnstructuredOutline_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (Tessellate_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (Threshold_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (UnstructuredOutline_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) + set (VariableSelector_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) + set (VariableSelector1_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) + set (XdmfRead_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (XdmfReadImageData_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (XdmfReadImageDataCollection_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (XdmfReadRectilinearGrid_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (XdmfReadRectilinearGridCollection_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (XdmfReadStructuredGrid_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (XdmfReadStructuredGridCollection_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (XdmfGridAttributes_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) +-set (XYChart_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (XdmfReadImageData_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (XdmfReadImageDataCollection_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (XdmfReadRectilinearGrid_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (XdmfReadRectilinearGridCollection_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (XdmfReadStructuredGrid_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (XdmfReadStructuredGridCollection_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (XdmfGridAttributes_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) ++#set (XYChart_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) + set (ZLibXDMF_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING}) + ++ ++set(TESTS_WITH_MULTI_SERVERS_3 ++ ${CMAKE_CURRENT_SOURCE_DIR}/TestMultiServer3.xml ++) ++ + IF (PARAVIEW_DATA_ROOT) + set (TESTS_WITHOUT_BASELINES + ${TESTS_WITHOUT_BASELINES} +@@ -460,4 +470,28 @@ + BASELINE_DIR ${PARAVIEW_DATA_ROOT}/Baseline + TEST_SCRIPTS ${TESTS_WITH_BASELINES}) + ++ add_multi_server_tests("pvcs-multi-servers" 3 ++ BASELINE_DIR ${PARAVIEW_DATA_ROOT}/Baseline ++ TEST_SCRIPTS ${TESTS_WITH_MULTI_SERVERS_3}) ++ ++ add_tile_display_tests("pvcs-tile-display" 2 1 ++ BASELINE_DIR ${PARAVIEW_DATA_ROOT}/Baseline ++ TEST_SCRIPTS ${CMAKE_CURRENT_SOURCE_DIR}/TileDisplayScatterPlot-2x1.xml) ++ ++ add_tile_display_tests("pvcs-tile-display" 2 2 ++ BASELINE_DIR ${PARAVIEW_DATA_ROOT}/Baseline ++ TEST_SCRIPTS ${CMAKE_CURRENT_SOURCE_DIR}/TileDisplayScatterPlot-2x2.xml) ++ ++ add_tile_display_tests("pvcs-tile-display" 1 2 ++ BASELINE_DIR ${PARAVIEW_DATA_ROOT}/Baseline ++ TEST_SCRIPTS ${CMAKE_CURRENT_SOURCE_DIR}/TileDisplay3DTesting-1x2.xml) ++ ++ add_tile_display_tests("pvcs-tile-display" 2 1 ++ BASELINE_DIR ${PARAVIEW_DATA_ROOT}/Baseline ++ TEST_SCRIPTS ${CMAKE_CURRENT_SOURCE_DIR}/TileDisplay3DTesting-2x1.xml) ++ ++ add_tile_display_tests("pvcs-tile-display" 2 2 ++ BASELINE_DIR ${PARAVIEW_DATA_ROOT}/Baseline ++ TEST_SCRIPTS ${CMAKE_CURRENT_SOURCE_DIR}/TileDisplay3DTesting-2x2.xml) ++ + ENDIF (PARAVIEW_DATA_ROOT) +diff -x .git -ruN orig/Applications/ParaView/Testing/XML/CameraLink.xml git_0f43430/Applications/ParaView/Testing/XML/CameraLink.xml +--- orig/Applications/ParaView/Testing/XML/CameraLink.xml 2012-04-02 12:56:24.000000000 -0400 ++++ git_0f43430/Applications/ParaView/Testing/XML/CameraLink.xml 2012-04-20 23:43:06.000000000 -0400 +@@ -23,5 +23,4 @@ + + + +- + +diff -x .git -ruN orig/Applications/ParaView/Testing/XML/ExtractLevel.xml git_0f43430/Applications/ParaView/Testing/XML/ExtractLevel.xml +--- orig/Applications/ParaView/Testing/XML/ExtractLevel.xml 2012-04-02 12:55:26.000000000 -0400 ++++ git_0f43430/Applications/ParaView/Testing/XML/ExtractLevel.xml 2012-04-20 23:43:06.000000000 -0400 +@@ -3,6 +3,8 @@ + + + ++ ++ + + + +@@ -23,8 +25,5 @@ + + + +- +- +- + + +diff -x .git -ruN orig/Applications/ParaView/Testing/XML/EyeDomeLighting.xml git_0f43430/Applications/ParaView/Testing/XML/EyeDomeLighting.xml +--- orig/Applications/ParaView/Testing/XML/EyeDomeLighting.xml 2012-04-02 12:56:24.000000000 -0400 ++++ git_0f43430/Applications/ParaView/Testing/XML/EyeDomeLighting.xml 2012-04-20 23:43:06.000000000 -0400 +@@ -10,6 +10,4 @@ + + + +- +- + +diff -x .git -ruN orig/Applications/ParaView/Testing/XML/Fractal2D.xml git_0f43430/Applications/ParaView/Testing/XML/Fractal2D.xml +--- orig/Applications/ParaView/Testing/XML/Fractal2D.xml 2012-04-02 12:55:26.000000000 -0400 ++++ git_0f43430/Applications/ParaView/Testing/XML/Fractal2D.xml 2012-04-20 23:43:06.000000000 -0400 +@@ -4,9 +4,9 @@ + + + +- + ++ + + + +diff -x .git -ruN orig/Applications/ParaView/Testing/XML/OpenHelp.xml git_0f43430/Applications/ParaView/Testing/XML/OpenHelp.xml +--- orig/Applications/ParaView/Testing/XML/OpenHelp.xml 2012-04-02 12:55:26.000000000 -0400 ++++ git_0f43430/Applications/ParaView/Testing/XML/OpenHelp.xml 2012-04-20 23:43:06.000000000 -0400 +@@ -1,10 +1,7 @@ + + + +- + + +- +- +- ++ + +diff -x .git -ruN orig/Applications/ParaView/Testing/XML/SpyPlotHistoryReader.xml git_0f43430/Applications/ParaView/Testing/XML/SpyPlotHistoryReader.xml +--- orig/Applications/ParaView/Testing/XML/SpyPlotHistoryReader.xml 2012-04-02 12:56:24.000000000 -0400 ++++ git_0f43430/Applications/ParaView/Testing/XML/SpyPlotHistoryReader.xml 2012-04-20 23:43:06.000000000 -0400 +@@ -3,15 +3,17 @@ + + + ++ + + + + + + +- +- +- ++ ++ ++ ++ + + + +diff -x .git -ruN orig/Applications/ParaView/Testing/XML/TestMultiServer3.xml git_0f43430/Applications/ParaView/Testing/XML/TestMultiServer3.xml +--- orig/Applications/ParaView/Testing/XML/TestMultiServer3.xml 1969-12-31 19:00:00.000000000 -0500 ++++ git_0f43430/Applications/ParaView/Testing/XML/TestMultiServer3.xml 2012-04-20 23:43:06.000000000 -0400 +@@ -0,0 +1,43 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff -x .git -ruN orig/Applications/ParaView/Testing/XML/TileDisplay3DTesting-1x2.xml git_0f43430/Applications/ParaView/Testing/XML/TileDisplay3DTesting-1x2.xml +--- orig/Applications/ParaView/Testing/XML/TileDisplay3DTesting-1x2.xml 1969-12-31 19:00:00.000000000 -0500 ++++ git_0f43430/Applications/ParaView/Testing/XML/TileDisplay3DTesting-1x2.xml 2012-04-20 23:43:06.000000000 -0400 +@@ -0,0 +1,41 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff -x .git -ruN orig/Applications/ParaView/Testing/XML/TileDisplay3DTesting-2x1.xml git_0f43430/Applications/ParaView/Testing/XML/TileDisplay3DTesting-2x1.xml +--- orig/Applications/ParaView/Testing/XML/TileDisplay3DTesting-2x1.xml 1969-12-31 19:00:00.000000000 -0500 ++++ git_0f43430/Applications/ParaView/Testing/XML/TileDisplay3DTesting-2x1.xml 2012-04-20 23:43:06.000000000 -0400 +@@ -0,0 +1,41 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff -x .git -ruN orig/Applications/ParaView/Testing/XML/TileDisplay3DTesting-2x2.xml git_0f43430/Applications/ParaView/Testing/XML/TileDisplay3DTesting-2x2.xml +--- orig/Applications/ParaView/Testing/XML/TileDisplay3DTesting-2x2.xml 1969-12-31 19:00:00.000000000 -0500 ++++ git_0f43430/Applications/ParaView/Testing/XML/TileDisplay3DTesting-2x2.xml 2012-04-20 23:43:06.000000000 -0400 +@@ -0,0 +1,44 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff -x .git -ruN orig/Applications/ParaView/Testing/XML/TileDisplayScatterPlot-2x1.xml git_0f43430/Applications/ParaView/Testing/XML/TileDisplayScatterPlot-2x1.xml +--- orig/Applications/ParaView/Testing/XML/TileDisplayScatterPlot-2x1.xml 1969-12-31 19:00:00.000000000 -0500 ++++ git_0f43430/Applications/ParaView/Testing/XML/TileDisplayScatterPlot-2x1.xml 2012-04-20 23:43:06.000000000 -0400 +@@ -0,0 +1,16 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff -x .git -ruN orig/Applications/ParaView/Testing/XML/TileDisplayScatterPlot-2x2.xml git_0f43430/Applications/ParaView/Testing/XML/TileDisplayScatterPlot-2x2.xml +--- orig/Applications/ParaView/Testing/XML/TileDisplayScatterPlot-2x2.xml 1969-12-31 19:00:00.000000000 -0500 ++++ git_0f43430/Applications/ParaView/Testing/XML/TileDisplayScatterPlot-2x2.xml 2012-04-20 23:43:06.000000000 -0400 +@@ -0,0 +1,18 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff -x .git -ruN orig/CMake/ParaViewCommon.cmake git_0f43430/CMake/ParaViewCommon.cmake +--- orig/CMake/ParaViewCommon.cmake 2012-04-02 12:56:24.000000000 -0400 ++++ git_0f43430/CMake/ParaViewCommon.cmake 2012-04-20 23:43:06.000000000 -0400 +@@ -344,9 +344,6 @@ + # Set this to get VTKs FOR LOOP "fix" to apply too all of Paraviews Source. + SET(VTK_USE_FOR_SCOPE_WORKAROUND TRUE) + +-CONFIGURE_FILE(${ParaView_SOURCE_DIR}/VTK/Utilities/TclTk/.NoDartCoverage +- ${ParaView_BINARY_DIR}/VTK/.NoDartCoverage) +- + OPTION(PARAVIEW_DISABLE_VTK_TESTING "Disable VTK Testing" OFF) + MARK_AS_ADVANCED(PARAVIEW_DISABLE_VTK_TESTING) + IF (PARAVIEW_DISABLE_VTK_TESTING) +@@ -403,7 +400,7 @@ + ) + ENDIF(PARAVIEW_ENABLE_PYTHON) + +-SET(kits Common Charts Filtering GenericFiltering IO Imaging Rendering Parallel Graphics Hybrid VolumeRendering Widgets) ++SET(kits Common AMR Charts Filtering GenericFiltering IO Imaging Rendering Parallel Graphics Hybrid VolumeRendering Widgets) + FOREACH(kit ${kits}) + SET(VTK_INCLUDE_DIR ${VTK_INCLUDE_DIR} + ${ParaView_SOURCE_DIR}/VTK/${kit} +diff -x .git -ruN orig/CMake/ParaViewTestingMacros.cmake git_0f43430/CMake/ParaViewTestingMacros.cmake +--- orig/CMake/ParaViewTestingMacros.cmake 2012-04-02 12:56:24.000000000 -0400 ++++ git_0f43430/CMake/ParaViewTestingMacros.cmake 2012-04-20 23:43:06.000000000 -0400 +@@ -27,6 +27,8 @@ + set (counter 0) + set (extra_args) + set (full_test_name) ++ set (force_serial FALSE) ++ + while (${counter} LESS ${TEST_GROUP_SIZE}) + list(LENGTH ACT_TEST_SCRIPTS num_tests) + if (num_tests) +@@ -57,6 +59,9 @@ + if (DEFINED ${test_name}_BREAK) + set (counter 100000) # stop the group. + endif (DEFINED ${test_name}_BREAK) ++ if (${test_name}_FORCE_SERIAL) ++ set (force_serial TRUE) ++ endif (${test_name}_FORCE_SERIAL) + endwhile (${counter} LESS ${TEST_GROUP_SIZE}) + + if (extra_args) +@@ -66,6 +71,10 @@ + ${extra_args} + --exit + ) ++ if (force_serial) ++ set_tests_properties("${prefix}${full_test_name}" PROPERTIES RUN_SERIAL ON) ++ message(STATUS "Running in serial \"${prefix}${full_test_name}\"") ++ endif() + endif (extra_args) + endwhile (ACT_TEST_SCRIPTS) + +@@ -133,6 +142,69 @@ + ${extra_args} + --exit + ) ++ if (${test_name}_FORCE_SERIAL) ++ set_tests_properties("${prefix}.${test_name}" PROPERTIES RUN_SERIAL ON) ++ message(STATUS "Running in serial \"${prefix}.${test_name}\"") ++ endif (${test_name}_FORCE_SERIAL) + endif() + endforeach(test_script) + ENDFUNCTION(add_multi_client_tests) ++ ++FUNCTION(add_multi_server_tests prefix nbServers) ++ PV_PARSE_ARGUMENTS(ACT "TEST_SCRIPTS;BASELINE_DIR" "" ${ARGN}) ++ ++ foreach (test_script ${ACT_TEST_SCRIPTS}) ++ get_filename_component(test_name ${test_script} NAME_WE) ++ set (extra_args) ++ process_args(extra_args) ++ add_test("${prefix}.${test_name}" ++ ${PARAVIEW_SMTESTDRIVER_EXECUTABLE} ++ --test-multi-servers ${nbServers} ++ --server ${PARAVIEW_SERVER_EXECUTABLE} ++ ++ --client ${CLIENT_EXECUTABLE} ++ -dr ++ --disable-light-kit ++ --test-directory=${PARAVIEW_TEST_DIR} ++ --test-script=${test_script} ++ ${extra_args} ++ --exit ++ ) ++ endforeach(test_script) ++ENDFUNCTION(add_multi_server_tests) ++ ++FUNCTION (add_tile_display_tests prefix tdx tdy ) ++ PV_PARSE_ARGUMENTS(ACT "TEST_SCRIPTS;BASELINE_DIR" "" ${ARGN}) ++ ++ ++ MATH(EXPR REQUIRED_CPU '${tdx}*${tdy}-1') # -1 is for LESS ++ if (${REQUIRED_CPU} LESS ${VTK_MPI_MAX_NUMPROCS}) ++ foreach (test_script ${ACT_TEST_SCRIPTS}) ++ ++ get_filename_component(test_name ${test_script} NAME_WE) ++ set (extra_args) ++ process_args(extra_args) ++ add_test("${prefix}-${tdx}x${tdy}.${test_name}" ++ ${PARAVIEW_SMTESTDRIVER_EXECUTABLE} ++ --test-tiled ${tdx} ${tdy} ++ --server ${PARAVIEW_SERVER_EXECUTABLE} ++ ++ --client ${CLIENT_EXECUTABLE} ++ -dr ++ --disable-light-kit ++ --test-directory=${PARAVIEW_TEST_DIR} ++ --test-script=${test_script} ++ --tile-image-prefix=${PARAVIEW_TEST_DIR}/${test_name} ++ ++ ${extra_args} ++ --exit ++ ) ++ set_property(TEST "${prefix}-${tdx}x${tdy}.${test_name}" ++ PROPERTY ENVIRONMENT "PV_ICET_WINDOW_BORDERS=1") ++ if (${test_name}_FORCE_SERIAL) ++ set_tests_properties("${prefix}.${test_name}" PROPERTIES RUN_SERIAL ON) ++ message(STATUS "Running in serial \"${prefix}.${test_name}\"") ++ endif (${test_name}_FORCE_SERIAL) ++ endforeach(test_script) ++ endif(${REQUIRED_CPU} LESS ${VTK_MPI_MAX_NUMPROCS}) ++ENDFUNCTION (add_tile_display_tests) +diff -x .git -ruN orig/CMakeLists.txt git_0f43430/CMakeLists.txt +--- orig/CMakeLists.txt 2012-04-02 12:56:24.000000000 -0400 ++++ git_0f43430/CMakeLists.txt 2012-04-20 23:43:06.000000000 -0400 +@@ -62,9 +62,9 @@ + SET (PARAVIEW_VERSION_MAJOR 3) + SET (PARAVIEW_VERSION_MINOR 14) + SET (PARAVIEW_VERSION_PATCH 1) +-SET (PARAVIEW_VERSION_PATCH_EXTRA) ++SET (PARAVIEW_VERSION_PATCH_EXTRA "enhanced") + SET (PARAVIEW_VERSION "3.14") +-SET (PARAVIEW_VERSION_FULL "3.14.1") ++SET (PARAVIEW_VERSION_FULL "3.14.1-enhanced") + + INCLUDE(ParaViewDetermineVersion) + determine_version( +@@ -361,7 +361,7 @@ + + ######################################################################### + # Configure the CoProcessing library +-OPTION(PARAVIEW_ENABLE_COPROCESSING "Enable/Disable the CoProcessing library." OFF) ++OPTION(PARAVIEW_ENABLE_COPROCESSING "Enable/Disable the CoProcessing library." ON) + MARK_AS_ADVANCED(PARAVIEW_ENABLE_COPROCESSING) + IF (PARAVIEW_ENABLE_COPROCESSING) + ADD_SUBDIRECTORY (CoProcessing) +@@ -395,48 +395,11 @@ + DESTINATION ${PV_INSTALL_INCLUDE_DIR} + COMPONENT Development) + +- SET(cmakeDevFiles +- ${ParaView_CMAKE_DIR}/branded_splash.png +- ${ParaView_SOURCE_DIR}/ParaViewUse.cmake +- ${ParaView_CMAKE_DIR}/ParaViewMacros.cmake +- ${ParaView_CMAKE_DIR}/ParaViewPlugins.cmake +- ${ParaView_CMAKE_DIR}/ParaViewBranding.cmake +- ${ParaView_CMAKE_DIR}/ParaViewBrandingCPack.cmake +- ${ParaView_CMAKE_DIR}/pqParaViewPlugin.cxx.in +- ${ParaView_CMAKE_DIR}/pqParaViewPlugin.h.in +- ${ParaView_CMAKE_DIR}/branded_paraview_initializer.cxx.in +- ${ParaView_CMAKE_DIR}/branded_paraview_main.cxx.in +- ${ParaView_CMAKE_DIR}/branded_paraview_initializer.h.in +- ${ParaView_CMAKE_DIR}/ParaViewCPackOptions.cmake.in +- ${ParaView_CMAKE_DIR}/pv-forward.c.in +- # originaly from Qt/Components +- ${ParaView_CMAKE_DIR}/pqObjectPanelImplementation.h.in +- ${ParaView_CMAKE_DIR}/pqObjectPanelImplementation.cxx.in +- ${ParaView_CMAKE_DIR}/pqDisplayPanelImplementation.h.in +- ${ParaView_CMAKE_DIR}/pqDisplayPanelImplementation.cxx.in +- ${ParaView_CMAKE_DIR}/pqViewOptionsImplementation.h.in +- ${ParaView_CMAKE_DIR}/pqViewOptionsImplementation.cxx.in +- ${ParaView_CMAKE_DIR}/pqActionGroupImplementation.h.in +- ${ParaView_CMAKE_DIR}/pqActionGroupImplementation.cxx.in +- ${ParaView_CMAKE_DIR}/pqViewFrameActionGroupImplementation.h.in +- ${ParaView_CMAKE_DIR}/pqViewFrameActionGroupImplementation.cxx.in +- ${ParaView_CMAKE_DIR}/pqDockWindowImplementation.h.in +- ${ParaView_CMAKE_DIR}/pqDockWindowImplementation.cxx.in +- ${ParaView_CMAKE_DIR}/pqDisplayPanelDecoratorImplementation.h.in +- ${ParaView_CMAKE_DIR}/pqDisplayPanelDecoratorImplementation.cxx.in +- ${ParaView_CMAKE_DIR}/pq3DWidgetImplementation.h.in +- ${ParaView_CMAKE_DIR}/pq3DWidgetImplementation.cxx.in +- # originaly from Qt/Core +- ${ParaView_CMAKE_DIR}/pqViewModuleImplementation.h.in +- ${ParaView_CMAKE_DIR}/pqViewModuleImplementation.cxx.in +- ${ParaView_CMAKE_DIR}/pqAutoStartImplementation.h.in +- ${ParaView_CMAKE_DIR}/pqAutoStartImplementation.cxx.in +- ${ParaView_CMAKE_DIR}/pqGraphLayoutStrategyImplementation.h.in +- ${ParaView_CMAKE_DIR}/pqGraphLayoutStrategyImplementation.cxx.in +- ${ParaView_CMAKE_DIR}/pqTreeLayoutStrategyImplementation.h.in +- ${ParaView_CMAKE_DIR}/pqTreeLayoutStrategyImplementation.cxx.in) ++ # install all cmake files. + INSTALL( +- FILES ${cmakeDevFiles} ++ # the extra "/" is essential to ensure we don't end up with an extra ++ # directory at the install location. ++ DIRECTORY "${ParaView_CMAKE_DIR}/" + DESTINATION ${PV_INSTALL_CMAKE_DIR} + COMPONENT Development) + +diff -x .git -ruN orig/CoProcessing/Adaptors/ParticleAdaptor/vtkParticlePipeline.cxx git_0f43430/CoProcessing/Adaptors/ParticleAdaptor/vtkParticlePipeline.cxx +--- orig/CoProcessing/Adaptors/ParticleAdaptor/vtkParticlePipeline.cxx 2012-04-02 12:55:26.000000000 -0400 ++++ git_0f43430/CoProcessing/Adaptors/ParticleAdaptor/vtkParticlePipeline.cxx 2012-04-20 23:43:06.000000000 -0400 +@@ -19,6 +19,7 @@ + #include "vtkMultiProcessController.h" + #include "vtkObjectFactory.h" + #include "vtkOpaquePass.h" ++#include "vtkOpenGLRenderer.h" + #include "vtkOutlineSource.h" + #include "vtkPNGWriter.h" + #include "vtkProperty.h" +@@ -175,7 +176,17 @@ + + VTK_CREATE (vtkCameraPass, cameraP); + cameraP->SetDelegatePass (iceTPass); +- renderer->SetPass (cameraP); ++ vtkOpenGLRenderer *glRenderer = ++ vtkOpenGLRenderer::SafeDownCast( this->renderer ); ++ if( glRenderer != NULL ) ++ { ++ glRenderer->SetPass(cameraP); ++ } ++ else ++ { ++ vtkErrorMacro("Cannot cast renderer to vtkOpenGLRenderer!"); ++ return; ++ } + + this->syncWin->SetRenderWindow (window); + this->syncWin->SetParallelController (ctrl); +diff -x .git -ruN orig/CoProcessing/CoProcessor/CMakeLists.txt git_0f43430/CoProcessing/CoProcessor/CMakeLists.txt +--- orig/CoProcessing/CoProcessor/CMakeLists.txt 2012-04-02 12:55:26.000000000 -0400 ++++ git_0f43430/CoProcessing/CoProcessor/CMakeLists.txt 2012-04-20 23:43:06.000000000 -0400 +@@ -67,6 +67,16 @@ + target_link_libraries(vtkCoProcessor ${CoProcessor_LIBS}) + + IF (PARAVIEW_ENABLE_PYTHON) ++ IF(NOT APPLE) ++ FIND_LIBRARY(PYTHON_UTIL_LIBRARY ++ NAMES util ++ DOC "Utility library needed for pvpython" ++ ) ++ MARK_AS_ADVANCED(PYTHON_UTIL_LIBRARY) ++ IF(PYTHON_UTIL_LIBRARY) ++ SET(PYTHON_UTIL_LIBRARY_LIB ${PYTHON_UTIL_LIBRARY}) ++ ENDIF(PYTHON_UTIL_LIBRARY) ++ ENDIF(NOT APPLE) + # Create Python bindings for the co-processing library + set(BUILD_SHARED_LIBS ON CACHE BOOL "Needed for python scripting.") + INCLUDE(FindPythonLibs) +@@ -88,7 +98,7 @@ + # want to link to the python libray to resolve its symbols + # immediately. + IF(WIN32 OR APPLE) +- TARGET_LINK_LIBRARIES (vtkCoProcessorPythonD ${PYTHON_LIBRARIES}) ++ TARGET_LINK_LIBRARIES (vtkCoProcessorPythonD ${VTK_PYTHON_LIBRARIES} ${PYTHON_UTIL_LIBRARY_LIB}) + ENDIF(WIN32 OR APPLE) + + # Create a python module that can be loaded dynamically. It links to +@@ -104,7 +114,7 @@ + ENDIF(WIN32 AND NOT CYGWIN) + + IF(WIN32 OR APPLE) +- TARGET_LINK_LIBRARIES (vtkCoProcessorPython ${PYTHON_LIBRARIES}) ++ TARGET_LINK_LIBRARIES (vtkCoProcessorPython ${VTK_PYTHON_LIBRARIES} ${PYTHON_UTIL_LIBRARY_LIB}) + ENDIF(WIN32 OR APPLE) + + SET(PYTHON_MODULE_PREFIX "") +diff -x .git -ruN orig/CoProcessing/CoProcessor/Testing/Cxx/CMakeLists.txt git_0f43430/CoProcessing/CoProcessor/Testing/Cxx/CMakeLists.txt +--- orig/CoProcessing/CoProcessor/Testing/Cxx/CMakeLists.txt 2012-04-02 12:56:24.000000000 -0400 ++++ git_0f43430/CoProcessing/CoProcessor/Testing/Cxx/CMakeLists.txt 2012-04-20 23:43:06.000000000 -0400 +@@ -10,15 +10,14 @@ + ADD_EXECUTABLE(CoProcessingPythonScriptExample PythonScriptCoProcessingExample.cxx vtkPVCustomTestDriver.cxx) + TARGET_LINK_LIBRARIES(CoProcessingPythonScriptExample vtkCoProcessor vtkCPTestDriver) + +- ADD_TEST(CoProcessingTestPythonScript ${EXECUTABLE_OUTPUT_PATH}/CoProcessingPythonScriptExample ${CoProcessing_SOURCE_DIR}/CoProcessor/Testing/Cxx/PythonScriptTest.py) +- ++ ADD_TEST(CoProcessingTestPythonScript ${EXECUTABLE_OUTPUT_PATH}/CoProcessingPythonScriptExample ${CoProcessing_SOURCE_DIR}/CoProcessor/Testing/Python/PythonScriptTest.py) + + IF (VTK_MPIRUN_EXE) +- ADD_TEST(PCoProcessingPythonScriptExample ++ ADD_TEST(PCoProcessingTestPythonScript + ${VTK_MPIRUN_EXE} ${VTK_MPI_PRENUMPROC_FLAGS} ${VTK_MPI_NUMPROC_FLAG} ${VTK_MPI_MAX_NUMPROCS} + ${VTK_MPI_PREFLAGS} + ${EXECUTABLE_OUTPUT_PATH}/CoProcessingPythonScriptExample +- ${CoProcessing_SOURCE_DIR}/CoProcessor/Testing/Cxx/PythonScriptTest2.py ++ ${CoProcessing_SOURCE_DIR}/CoProcessor/Testing/Python/PythonScriptTest2.py + ${VTK_MPI_POSTFLAGS} + ) + ENDIF (VTK_MPIRUN_EXE) +@@ -26,30 +25,126 @@ + + ENDIF (PARAVIEW_ENABLE_PYTHON) + +- # below is for doing image comparisons +- # they are not done directly in the above python script due to the fact +- # that they would make the python script rather ugly +-IF (PARAVIEW_DATA_ROOT) +- ADD_EXECUTABLE(CoProcessingCompareImagesTester CompareImages.cxx) +- TARGET_LINK_LIBRARIES(CoProcessingCompareImagesTester vtkCommon vtkIO vtkRendering) ++# below is for doing image comparisons ++# they are not done directly in the above python script due to the fact ++# that they would make the python script rather ugly ++ADD_EXECUTABLE(CoProcessingCompareImagesTester CompareImages.cxx) ++TARGET_LINK_LIBRARIES(CoProcessingCompareImagesTester vtkCommon vtkIO vtkRendering) + ++IF (PARAVIEW_DATA_ROOT) + IF (PARAVIEW_ENABLE_PYTHON) + ADD_TEST(CoProcessingPythonScriptGridPlot +- ${EXECUTABLE_OUTPUT_PATH}/CoProcessingCompareImagesTester ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/CPGrid0.png 20 -V ${PARAVIEW_DATA_ROOT}/Baseline/CPGrid0.png -T ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx) ++ ${EXECUTABLE_OUTPUT_PATH}/CoProcessingCompareImagesTester ++ ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/CPGrid0.png 20 -V ++ ${PARAVIEW_DATA_ROOT}/Baseline/CPGrid0.png ++ -T ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx ) + + ADD_TEST(CoProcessingPythonScriptPressurePlot +- ${EXECUTABLE_OUTPUT_PATH}/CoProcessingCompareImagesTester ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/CPPressure0.png 20 -V ${PARAVIEW_DATA_ROOT}/Baseline/CPPressure0.png -T ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx) ++ ${EXECUTABLE_OUTPUT_PATH}/CoProcessingCompareImagesTester ++ ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/CPPressure0.png 20 ++ -V ${PARAVIEW_DATA_ROOT}/Baseline/CPPressure0.png ++ -T ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx) + + SET_TESTS_PROPERTIES(CoProcessingTestPythonScript CoProcessingPythonScriptGridPlot + CoProcessingPythonScriptPressurePlot PROPERTIES RUN_SERIAL ON) + IF (VTK_MPIRUN_EXE) + ADD_TEST(PCoProcessingPythonScriptGridPlot +- ${EXECUTABLE_OUTPUT_PATH}/CoProcessingCompareImagesTester ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/PCPGrid0.png 20 -V ${PARAVIEW_DATA_ROOT}/Baseline/CPGrid0.png -T ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx) ++ ${EXECUTABLE_OUTPUT_PATH}/CoProcessingCompareImagesTester ++ ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/PCPGrid0.png 20 ++ -V ${PARAVIEW_DATA_ROOT}/Baseline/CPGrid0.png ++ -T ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx) + + ADD_TEST(PCoProcessingPythonScriptPressurePlot +- ${EXECUTABLE_OUTPUT_PATH}/CoProcessingCompareImagesTester ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/PCPPressure0.png 20 -V ${PARAVIEW_DATA_ROOT}/Baseline/CPPressure0.png -T ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx) ++ ${EXECUTABLE_OUTPUT_PATH}/CoProcessingCompareImagesTester ++ ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/PCPPressure0.png 20 ++ -V ${PARAVIEW_DATA_ROOT}/Baseline/CPPressure0.png ++ -T ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx) ++ SET_TESTS_PROPERTIES(PCoProcessingTestPythonScript PCoProcessingPythonScriptGridPlot ++ PCoProcessingPythonScriptPressurePlot PROPERTIES RUN_SERIAL ON) + ENDIF (VTK_MPIRUN_EXE) + ++ # here is the full workflow for coprocessing where we generate ++ # a script, run simulation driver code, and then check the output ++ IF (PARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator) ++ set(REAL_EXECUTABLE_PATH ${EXECUTABLE_OUTPUT_PATH}) ++ set(PARAVIEW_EXECUTABLE_PATH ${EXECUTABLE_OUTPUT_PATH}) ++ if(Q_WS_MAC) ++ set(REAL_EXECUTABLE_PATH ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}.app/Contents/MacOS) ++ set(PARAVIEW_EXECUTABLE_PATH ${EXECUTABLE_OUTPUT_PATH}/paraview.app/Contents/MacOS) ++ set(MAC_TEST_NAME "-Mac") ++ endif(Q_WS_MAC) ++ ++ file(WRITE ++"${CoProcessing_BINARY_DIR}/CoProcessingFullWorkflowTest.cmake" ++"set(fullexe \"${PARAVIEW_EXECUTABLE_PATH}/paraview\") ++if(NOT EXISTS \${fullexe}) ++ set(fullexe \"${PARAVIEW_EXECUTABLE_PATH}/\${cfg}/paraview.exe\") ++endif() ++FILE(REMOVE \"${CMAKE_BINARY_DIR}/Testing/Temporary/cptest.py ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/image_0.png ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/filename_0.pvtp ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/filename_0_0.vtp\" ) ++ ++set(ARGS \"-dr;--test-directory=${CMAKE_BINARY_DIR}/Testing/Temporary;--test-script=${CMAKE_SOURCE_DIR}/Plugins/CoProcessingScriptGenerator/Testing/CoProcessingGUI${MAC_TEST_NAME}.xml;--exit\") ++execute_process(COMMAND \${fullexe} \${ARGS} RESULT_VARIABLE rv) ++if(NOT rv EQUAL 0) ++ message(FATAL_ERROR \"ParaView return value was \${rv}\") ++endif() ++ ++set(fullexe \"${REAL_EXECUTABLE_PATH}/pvpython\") ++if(NOT EXISTS \${fullexe}) ++ set(fullexe \"${REAL_EXECUTABLE_PATH}/\${cfg}/pvpython.exe\") ++endif() ++if(NOT EXISTS \${fullexe}) ++ set(fullexe \"${EXECUTABLE_OUTPUT_PATH}/pvpython\") ++endif() ++if(NOT EXISTS \${fullexe}) ++ message(FATAL_ERROR \"'\${fullexe}' does not exist\") ++endif() ++ ++set(ARGS \"${CoProcessing_SOURCE_DIR}/CoProcessor/Testing/Python/waveletdriver.py;${CMAKE_BINARY_DIR}/Testing/Temporary/cptest.py;1\") ++execute_process(COMMAND \${fullexe} \${ARGS} RESULT_VARIABLE failed) ++if(failed) ++ message(FATAL_ERROR \"pvpython return value was = '\${failed}' \") ++endif() ++ ++set(fullexe \"${REAL_EXECUTABLE_PATH}/CoProcessingCompareImagesTester\") ++if(NOT EXISTS \${fullexe}) ++ set(fullexe \"${REAL_EXECUTABLE_PATH}/\${cfg}/CoProcessingCompareImagesTester.exe\") ++endif() ++if(NOT EXISTS \${fullexe}) ++ set(fullexe \"${EXECUTABLE_OUTPUT_PATH}/CoProcessingCompareImagesTester\") ++endif() ++if(NOT EXISTS \${fullexe}) ++ message(FATAL_ERROR \"'\${fullexe}' does not exist\") ++endif() ++ ++set(ARGS \"${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/image_0.png;20;-V;${PARAVIEW_DATA_ROOT}/Baseline/CPFullWorkflow.png;-T;${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx\") ++execute_process(COMMAND \${fullexe} \${ARGS} RESULT_VARIABLE failed) ++if(failed) ++ message(FATAL_ERROR \"CoProcessingCompareImageTester return value was = '\${failed}' \") ++endif() ++ ++set(fullexe \"${REAL_EXECUTABLE_PATH}/vtkpython\") ++if(NOT EXISTS \${fullexe}) ++ set(fullexe \"${REAL_EXECUTABLE_PATH}/\${cfg}/vtkpython.exe\") ++endif() ++if(NOT EXISTS \${fullexe}) ++ set(fullexe \"${EXECUTABLE_OUTPUT_PATH}/vtkpython\") ++endif() ++if(NOT EXISTS \${fullexe}) ++ message(FATAL_ERROR \"'\${fullexe}' does not exist\") ++endif() ++ ++set(ARGS \"${CoProcessing_SOURCE_DIR}/CoProcessor/Testing/Python/outputcheck.py;${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/filename_0.pvtp\") ++execute_process(COMMAND \${fullexe} \${ARGS} RESULT_VARIABLE failed) ++if(failed) ++ message(FATAL_ERROR \"vtkpython return value was = '\${failed}' \") ++endif() ++" ) ++ ++ add_test(NAME CoProcessingFullWorkflow COMMAND ${CMAKE_COMMAND} ++ -Dcfg=$ -P "${CoProcessing_BINARY_DIR}/CoProcessingFullWorkflowTest.cmake") ++ SET_TESTS_PROPERTIES(CoProcessingFullWorkflow PROPERTIES RUN_SERIAL ON) ++ ENDIF (PARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator) ++ + ENDIF (PARAVIEW_ENABLE_PYTHON) + + ENDIF (PARAVIEW_DATA_ROOT) +diff -x .git -ruN orig/CoProcessing/CoProcessor/Testing/Cxx/CompareImages.cxx git_0f43430/CoProcessing/CoProcessor/Testing/Cxx/CompareImages.cxx +--- orig/CoProcessing/CoProcessor/Testing/Cxx/CompareImages.cxx 2012-04-02 12:56:24.000000000 -0400 ++++ git_0f43430/CoProcessing/CoProcessor/Testing/Cxx/CompareImages.cxx 2012-04-20 23:43:06.000000000 -0400 +@@ -63,7 +63,7 @@ + + double threshold = atof(argv[2]); + +- if(!testing->RegressionTest(vtkImageData::SafeDownCast(reader->GetOutput()), threshold)) ++ if(!testing->RegressionTest(reader, threshold)) + { + return 1; + } +diff -x .git -ruN orig/CoProcessing/CoProcessor/Testing/Cxx/PythonScriptTest.py git_0f43430/CoProcessing/CoProcessor/Testing/Cxx/PythonScriptTest.py +--- orig/CoProcessing/CoProcessor/Testing/Cxx/PythonScriptTest.py 2012-04-02 12:56:24.000000000 -0400 ++++ git_0f43430/CoProcessing/CoProcessor/Testing/Cxx/PythonScriptTest.py 1969-12-31 19:00:00.000000000 -0500 +@@ -1,94 +0,0 @@ +-def DoCoProcessing(datadescription): +- timestep = datadescription.GetTimeStep() +- +- grid = datadescription.GetInputDescriptionByName("input").GetGrid() +- pressure = grid.GetPointData().GetArray('Pressure') +- +- grid.GetPointData().SetScalars(pressure) +- obj.SetOutput(grid) +- +- # get global range of Pressure +- di = trivialproducer.GetDataInformation(0) +- trivialproducer.UpdatePipeline() +- di.Update() +- pdi = di.GetPointDataInformation() +- ai = pdi.GetArrayInformation('Pressure') +- pressurerange = ai.GetComponentRange(0) +- +- contour.Isosurfaces = .5*(pressurerange[0]+pressurerange[1]) +- +- # now output the results to the screen as well as taking +- # a screen shot of the view +- #setup a window +- rep = Show(contour) +- ren = Render() +- +- #set the background color +- ren.Background=[1,1,1] #white +- +- #set image size +- ren.ViewSize = [200, 300] #[width, height] +- +- #set representation +- rep.Representation="Surface" +- +- #save screenshot +- gridimagefilename = 'CPGrid'+str(timestep) + '.png' +- WriteImage(gridimagefilename) +- +- rep = Show(trivialproducer) +- rep.LookupTable = MakeBlueToRedLT(pressurerange[0], pressurerange[1]) +- rep.ColorArrayName = 'Pressure' +- rep.ColorAttributeType = 'POINT_DATA' +- #set representation +- rep.Representation="Surface" +- rep = Show(contour) +- #set the background color +- ren = Render() +- ren.Background=[1,1,1] #white +- +- pressureimagefilename = 'CPPressure'+str(timestep) + '.png' +- WriteImage(pressureimagefilename) +- +- # explicitly delete the proxies -- may have to do this multiple times +- tobedeleted = GetNextProxyToDelete() +- while tobedeleted != None: +- Delete(tobedeleted) +- tobedeleted = GetNextProxyToDelete() +- +-def GetNextProxyToDelete(): +- iter = servermanager.vtkSMProxyIterator() +- iter.SetSession(servermanager.ActiveConnection.Session) +- iter.Begin() +- while not iter.IsAtEnd(): +- if iter.GetGroup().find("prototypes") != -1: +- iter.Next() +- continue +- proxy = servermanager._getPyProxy(iter.GetProxy()) +- proxygroup = iter.GetGroup() +- iter.Next() +- if proxygroup != 'timekeeper' and proxy != None and proxygroup.find("pq_helper_proxies") == -1 : +- return proxy +- +- return None +- +-def RequestDataDescription(datadescription): +- time = datadescription.GetTime() +- timestep = datadescription.GetTimeStep() +- if timestep % 20 == 0: +- # add in some fields +- #print 'added Pressure and wanting to do coprocessing' +- datadescription.GetInputDescriptionByName("input").AddPointField("Pressure") +- datadescription.GetInputDescriptionByName('input').GenerateMeshOn() +- return +- +-# the code below is needed to import objects from paraview.simple +-# plus the definition of vtkTrivialProducer into this python script. +-try: paraview.simple +-except: from paraview.simple import * +- +-trivialproducer = TrivialProducer() +-contour = Contour(Input=trivialproducer) +-obj = trivialproducer.GetClientSideObject() +- +- +diff -x .git -ruN orig/CoProcessing/CoProcessor/Testing/Cxx/PythonScriptTest2.py git_0f43430/CoProcessing/CoProcessor/Testing/Cxx/PythonScriptTest2.py +--- orig/CoProcessing/CoProcessor/Testing/Cxx/PythonScriptTest2.py 2012-04-02 12:56:24.000000000 -0400 ++++ git_0f43430/CoProcessing/CoProcessor/Testing/Cxx/PythonScriptTest2.py 1969-12-31 19:00:00.000000000 -0500 +@@ -1,92 +0,0 @@ +-def DoCoProcessing(datadescription): +- timestep = datadescription.GetTimeStep() +- +- grid = datadescription.GetInputDescriptionByName("input").GetGrid() +- pressure = grid.GetPointData().GetArray('Pressure') +- +- grid.GetPointData().SetScalars(pressure) +- obj.SetOutput(grid) +- +- # get global range of Pressure +- di = trivialproducer.GetDataInformation(0) +- trivialproducer.UpdatePipeline() +- di.Update() +- pdi = di.GetPointDataInformation() +- ai = pdi.GetArrayInformation('Pressure') +- pressurerange = ai.GetComponentRange(0) +- +- contour.Isosurfaces = .5*(pressurerange[0]+pressurerange[1]) +- +- # now output the results to the screen as well as taking +- # a screen shot of the view +- #setup a window +- rep = Show(contour) +- ren = Render() +- +- #set the background color +- ren.Background=[1,1,1] #white +- +- #set image size +- ren.ViewSize = [200, 300] #[width, height] +- +- #set representation +- rep.Representation="Surface" +- +- #save screenshot +- gridimagefilename = 'PCPGrid'+str(timestep) + '.png' +- WriteImage(gridimagefilename) +- +- rep = Show(trivialproducer) +- rep.LookupTable = MakeBlueToRedLT(pressurerange[0], pressurerange[1]) +- rep.ColorArrayName = 'Pressure' +- rep.ColorAttributeType = 'POINT_DATA' +- #set representation +- rep.Representation="Surface" +- rep = Show(contour) +- #set the background color +- ren = Render() +- ren.Background=[1,1,1] #white +- +- pressureimagefilename = 'PCPPressure'+str(timestep) + '.png' +- WriteImage(pressureimagefilename) +- +- # explicitly delete the proxies -- may have to do this multiple times +- tobedeleted = GetNextProxyToDelete() +- while tobedeleted != None: +- Delete(tobedeleted) +- tobedeleted = GetNextProxyToDelete() +- +-def GetNextProxyToDelete(): +- iter = servermanager.vtkSMProxyIterator() +- iter.SetSession(servermanager.ActiveConnection.Session) +- iter.Begin() +- while not iter.IsAtEnd(): +- if iter.GetGroup().find("prototypes") != -1: +- iter.Next() +- continue +- proxy = servermanager._getPyProxy(iter.GetProxy()) +- proxygroup = iter.GetGroup() +- iter.Next() +- if proxygroup != 'timekeeper' and proxy != None and proxygroup.find("pq_helper_proxies") == -1 : +- return proxy +- +- return None +- +-def RequestDataDescription(datadescription): +- time = datadescription.GetTime() +- timestep = datadescription.GetTimeStep() +- if timestep % 20 == 0: +- # add in some fields +- #print 'added Pressure and wanting to do coprocessing' +- datadescription.GetInputDescriptionByName("input").AddPointField("Pressure") +- datadescription.GetInputDescriptionByName('input').GenerateMeshOn() +- return +- +-# the code below is needed to import objects from paraview.simple +-# plus the definition of vtkTrivialProducer into this python script. +-try: paraview.simple +-except: from paraview.simple import * +- +-trivialproducer = TrivialProducer() +-contour = Contour(Input=trivialproducer) +-obj = trivialproducer.GetClientSideObject() +diff -x .git -ruN orig/CoProcessing/CoProcessor/Testing/Python/PythonScriptTest.py git_0f43430/CoProcessing/CoProcessor/Testing/Python/PythonScriptTest.py +--- orig/CoProcessing/CoProcessor/Testing/Python/PythonScriptTest.py 1969-12-31 19:00:00.000000000 -0500 ++++ git_0f43430/CoProcessing/CoProcessor/Testing/Python/PythonScriptTest.py 2012-04-20 23:43:06.000000000 -0400 +@@ -0,0 +1,92 @@ ++def DoCoProcessing(datadescription): ++ timestep = datadescription.GetTimeStep() ++ ++ grid = datadescription.GetInputDescriptionByName("input").GetGrid() ++ pressure = grid.GetPointData().GetArray('Pressure') ++ ++ grid.GetPointData().SetScalars(pressure) ++ obj.SetOutput(grid) ++ ++ # get global range of Pressure ++ di = trivialproducer.GetDataInformation(0) ++ trivialproducer.UpdatePipeline() ++ di.Update() ++ pdi = di.GetPointDataInformation() ++ ai = pdi.GetArrayInformation('Pressure') ++ pressurerange = ai.GetComponentRange(0) ++ ++ contour.Isosurfaces = .5*(pressurerange[0]+pressurerange[1]) ++ ++ # now output the results to the screen as well as taking ++ # a screen shot of the view ++ #setup a window ++ rep = Show(contour) ++ ren = Render() ++ ++ #set the background color ++ ren.Background=[1,1,1] #white ++ ++ #set image size ++ ren.ViewSize = [200, 300] #[width, height] ++ ++ #set representation ++ rep.Representation="Surface" ++ ++ #save screenshot ++ gridimagefilename = 'CPGrid'+str(timestep) + '.png' ++ WriteImage(gridimagefilename) ++ ++ rep = Show(trivialproducer) ++ rep.LookupTable = MakeBlueToRedLT(pressurerange[0], pressurerange[1]) ++ rep.ColorArrayName = 'Pressure' ++ rep.ColorAttributeType = 'POINT_DATA' ++ #set representation ++ rep.Representation="Surface" ++ rep = Show(contour) ++ #set the background color ++ ren = Render() ++ ren.Background=[1,1,1] #white ++ ++ pressureimagefilename = 'CPPressure'+str(timestep) + '.png' ++ WriteImage(pressureimagefilename) ++ ++ # explicitly delete the proxies -- may have to do this multiple times ++ tobedeleted = GetNextProxyToDelete() ++ while tobedeleted != None: ++ Delete(tobedeleted) ++ tobedeleted = GetNextProxyToDelete() ++ ++def GetNextProxyToDelete(): ++ iter = servermanager.vtkSMProxyIterator() ++ iter.SetSession(servermanager.ActiveConnection.Session) ++ iter.Begin() ++ while not iter.IsAtEnd(): ++ if iter.GetGroup().find("prototypes") != -1: ++ iter.Next() ++ continue ++ proxy = servermanager._getPyProxy(iter.GetProxy()) ++ proxygroup = iter.GetGroup() ++ iter.Next() ++ if proxygroup != 'timekeeper' and proxy != None and proxygroup.find("pq_helper_proxies") == -1 : ++ return proxy ++ ++ return None ++ ++def RequestDataDescription(datadescription): ++ time = datadescription.GetTime() ++ timestep = datadescription.GetTimeStep() ++ if timestep % 20 == 0: ++ # add in some fields ++ #print 'added Pressure and wanting to do coprocessing' ++ datadescription.GetInputDescriptionByName("input").AddPointField("Pressure") ++ datadescription.GetInputDescriptionByName('input').GenerateMeshOn() ++ return ++ ++# the code below is needed to import objects from paraview.simple ++# plus the definition of vtkTrivialProducer into this python script. ++try: paraview.simple ++except: from paraview.simple import * ++ ++trivialproducer = TrivialProducer() ++contour = Contour(Input=trivialproducer) ++obj = trivialproducer.GetClientSideObject() +diff -x .git -ruN orig/CoProcessing/CoProcessor/Testing/Python/PythonScriptTest2.py git_0f43430/CoProcessing/CoProcessor/Testing/Python/PythonScriptTest2.py +--- orig/CoProcessing/CoProcessor/Testing/Python/PythonScriptTest2.py 1969-12-31 19:00:00.000000000 -0500 ++++ git_0f43430/CoProcessing/CoProcessor/Testing/Python/PythonScriptTest2.py 2012-04-20 23:43:06.000000000 -0400 +@@ -0,0 +1,92 @@ ++def DoCoProcessing(datadescription): ++ timestep = datadescription.GetTimeStep() ++ ++ grid = datadescription.GetInputDescriptionByName("input").GetGrid() ++ pressure = grid.GetPointData().GetArray('Pressure') ++ ++ grid.GetPointData().SetScalars(pressure) ++ obj.SetOutput(grid) ++ ++ # get global range of Pressure ++ di = trivialproducer.GetDataInformation(0) ++ trivialproducer.UpdatePipeline() ++ di.Update() ++ pdi = di.GetPointDataInformation() ++ ai = pdi.GetArrayInformation('Pressure') ++ pressurerange = ai.GetComponentRange(0) ++ ++ contour.Isosurfaces = .5*(pressurerange[0]+pressurerange[1]) ++ ++ # now output the results to the screen as well as taking ++ # a screen shot of the view ++ #setup a window ++ rep = Show(contour) ++ ren = Render() ++ ++ #set the background color ++ ren.Background=[1,1,1] #white ++ ++ #set image size ++ ren.ViewSize = [200, 300] #[width, height] ++ ++ #set representation ++ rep.Representation="Surface" ++ ++ #save screenshot ++ gridimagefilename = 'PCPGrid'+str(timestep) + '.png' ++ WriteImage(gridimagefilename) ++ ++ rep = Show(trivialproducer) ++ rep.LookupTable = MakeBlueToRedLT(pressurerange[0], pressurerange[1]) ++ rep.ColorArrayName = 'Pressure' ++ rep.ColorAttributeType = 'POINT_DATA' ++ #set representation ++ rep.Representation="Surface" ++ rep = Show(contour) ++ #set the background color ++ ren = Render() ++ ren.Background=[1,1,1] #white ++ ++ pressureimagefilename = 'PCPPressure'+str(timestep) + '.png' ++ WriteImage(pressureimagefilename) ++ ++ # explicitly delete the proxies -- may have to do this multiple times ++ tobedeleted = GetNextProxyToDelete() ++ while tobedeleted != None: ++ Delete(tobedeleted) ++ tobedeleted = GetNextProxyToDelete() ++ ++def GetNextProxyToDelete(): ++ iter = servermanager.vtkSMProxyIterator() ++ iter.SetSession(servermanager.ActiveConnection.Session) ++ iter.Begin() ++ while not iter.IsAtEnd(): ++ if iter.GetGroup().find("prototypes") != -1: ++ iter.Next() ++ continue ++ proxy = servermanager._getPyProxy(iter.GetProxy()) ++ proxygroup = iter.GetGroup() ++ iter.Next() ++ if proxygroup != 'timekeeper' and proxy != None and proxygroup.find("pq_helper_proxies") == -1 : ++ return proxy ++ ++ return None ++ ++def RequestDataDescription(datadescription): ++ time = datadescription.GetTime() ++ timestep = datadescription.GetTimeStep() ++ if timestep % 20 == 0: ++ # add in some fields ++ #print 'added Pressure and wanting to do coprocessing' ++ datadescription.GetInputDescriptionByName("input").AddPointField("Pressure") ++ datadescription.GetInputDescriptionByName('input').GenerateMeshOn() ++ return ++ ++# the code below is needed to import objects from paraview.simple ++# plus the definition of vtkTrivialProducer into this python script. ++try: paraview.simple ++except: from paraview.simple import * ++ ++trivialproducer = TrivialProducer() ++contour = Contour(Input=trivialproducer) ++obj = trivialproducer.GetClientSideObject() +diff -x .git -ruN orig/CoProcessing/CoProcessor/Testing/Python/outputcheck.py git_0f43430/CoProcessing/CoProcessor/Testing/Python/outputcheck.py +--- orig/CoProcessing/CoProcessor/Testing/Python/outputcheck.py 1969-12-31 19:00:00.000000000 -0500 ++++ git_0f43430/CoProcessing/CoProcessor/Testing/Python/outputcheck.py 2012-04-20 23:43:06.000000000 -0400 +@@ -0,0 +1,18 @@ ++import sys ++if len(sys.argv) != 2: ++ print "command is 'python '" ++ sys.exit(1) ++ ++import vtk ++ ++r = vtk.vtkXMLPPolyDataReader() ++r.SetFileName(sys.argv[1]) ++r.Update() ++ ++g = r.GetOutput() ++ ++if g.GetNumberOfPoints() != 441 or g.GetNumberOfCells() != 800: ++ print 'Output grid is incorrect. The number of points is', g.GetNumberOfPoints(), \ ++ 'but should be 441 and the number of cells is', g.GetNumberOfCells(), \ ++ 'but should be 800.' ++ sys.exit(1) +diff -x .git -ruN orig/CoProcessing/CoProcessor/Testing/Python/waveletdriver.py git_0f43430/CoProcessing/CoProcessor/Testing/Python/waveletdriver.py +--- orig/CoProcessing/CoProcessor/Testing/Python/waveletdriver.py 1969-12-31 19:00:00.000000000 -0500 ++++ git_0f43430/CoProcessing/CoProcessor/Testing/Python/waveletdriver.py 2012-04-20 23:43:06.000000000 -0400 +@@ -0,0 +1,71 @@ ++import sys ++if len(sys.argv) != 3: ++ print "command is 'python