From 1ff1a8873a3b30598fe0b937b6ac3d8d19fbe668 Mon Sep 17 00:00:00 2001 From: ilh Date: Wed, 3 Sep 2014 09:41:04 +0200 Subject: [PATCH] To make Pmml tests work outside Salome environment --- src/pmml/pmml_swig/PMMLBasicsTest.py | 10 +-- src/yacsloader/CMakeLists.txt | 2 +- src/yacsloader/Test/CMakeLists.txt | 1 + src/yacsloader/pmml/CMakeLists.txt | 10 ++- src/yacsloader/pmml/PmmlExeTest.sh.in | 91 +++++++++++++++++++++ src/yacsloader/pmml/PmmlInSessionTest.sh.in | 50 +++++++++++ src/yacsloader/pmml/YACSPMMLBasicsTest1.cxx | 14 +--- src/yacsloader/pmml/config_appli.xml.in | 34 ++++++++ 8 files changed, 190 insertions(+), 22 deletions(-) create mode 100755 src/yacsloader/pmml/PmmlExeTest.sh.in create mode 100755 src/yacsloader/pmml/PmmlInSessionTest.sh.in create mode 100644 src/yacsloader/pmml/config_appli.xml.in diff --git a/src/pmml/pmml_swig/PMMLBasicsTest.py b/src/pmml/pmml_swig/PMMLBasicsTest.py index 59a4a180b..a7c17a36f 100755 --- a/src/pmml/pmml_swig/PMMLBasicsTest.py +++ b/src/pmml/pmml_swig/PMMLBasicsTest.py @@ -13,12 +13,10 @@ import shutil class PMMLBasicsTest(unittest.TestCase): def setUp(self): - pmmlRootDir = os.getenv("YACS_ROOT_DIR"); - self.resourcesDir = os.path.join(pmmlRootDir,"share","salome","resources","pmml"); - self.resourcesDir += os.sep ; - self.tmpDir = "/tmp/"; - self.tmpDir += os.environ['LOGNAME']; # ("USER"); - self.tmpDir += "/PmmlUnitTest/"; + self.resourcesDir = ".." + os.sep + "Test" + os.sep + "samples" + os.sep ; + self.tmpDir = os.sep + "tmp" + os.sep + os.environ['LOGNAME'] + os.sep ; + self.tmpDir += "PmmlUnitTest"; + self.tmpDir += os.sep ; if ( not os.path.exists(self.tmpDir) ): os.mkdir(self.tmpDir); pass diff --git a/src/yacsloader/CMakeLists.txt b/src/yacsloader/CMakeLists.txt index 10c37ba19..43c1f2f68 100644 --- a/src/yacsloader/CMakeLists.txt +++ b/src/yacsloader/CMakeLists.txt @@ -19,7 +19,7 @@ IF(SALOME_BUILD_TESTS) ADD_SUBDIRECTORY(Test) - ADD_SUBDIRECTORY(pmml) + ADD_SUBDIRECTORY(pmml) ENDIF(SALOME_BUILD_TESTS) # --- options --- diff --git a/src/yacsloader/Test/CMakeLists.txt b/src/yacsloader/Test/CMakeLists.txt index 6c4f4866c..c53c72dde 100644 --- a/src/yacsloader/Test/CMakeLists.txt +++ b/src/yacsloader/Test/CMakeLists.txt @@ -114,3 +114,4 @@ IF(NOT WIN32) SALOME_CONFIGURE_FILE(xmlrun_orig.sh xmlrun.sh) ADD_TEST(NAME YacsLoaderTest COMMAND ${SHELL} YacsLoaderTest.sh) ENDIF() + diff --git a/src/yacsloader/pmml/CMakeLists.txt b/src/yacsloader/pmml/CMakeLists.txt index f6cd5ddb7..8e355b988 100755 --- a/src/yacsloader/pmml/CMakeLists.txt +++ b/src/yacsloader/pmml/CMakeLists.txt @@ -53,6 +53,12 @@ TARGET_LINK_LIBRARIES(TestYACSPMML pmmlLib YACSBases ${CPPUNIT_LIBRARIES} ${PLATFORM_LIBS}) -ADD_TEST(TestYACSPMML TestYACSPMML) - INSTALL(TARGETS TestYACSPMML DESTINATION ${SALOME_INSTALL_BINS}) + +IF(NOT WIN32) + SET(SHELL /bin/sh) + SALOME_CONFIGURE_FILE(config_appli.xml.in config_appli.xml) + SALOME_CONFIGURE_FILE(PmmlExeTest.sh.in PmmlExeTest.sh) + SALOME_CONFIGURE_FILE(PmmlInSessionTest.sh.in PmmlInSessionTest.sh) + ADD_TEST(NAME PmmlExeTest COMMAND ${SHELL} PmmlExeTest.sh) +ENDIF() \ No newline at end of file diff --git a/src/yacsloader/pmml/PmmlExeTest.sh.in b/src/yacsloader/pmml/PmmlExeTest.sh.in new file mode 100755 index 000000000..d5f13d659 --- /dev/null +++ b/src/yacsloader/pmml/PmmlExeTest.sh.in @@ -0,0 +1,91 @@ +#!/bin/bash +# Copyright (C) 2006-2014 CEA/DEN, EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +if test -f @CMAKE_CURRENT_BINARY_DIR@/config_appli.xml; then + if test -n "${GEOM_ROOT_DIR}" && test -d ${GEOM_ROOT_DIR}; then + sed -i s%\"GEOM_ROOT_DIR\"%\"${GEOM_ROOT_DIR}\"% @CMAKE_CURRENT_BINARY_DIR@/config_appli.xml + fi + if test -n "${PYHELLO_ROOT_DIR}" && test -d ${PYHELLO_ROOT_DIR}; then + sed -i s%\"PYHELLO_ROOT_DIR\"%\"${PYHELLO_ROOT_DIR}\"% @CMAKE_CURRENT_BINARY_DIR@/config_appli.xml + fi +fi + +if test -f @KERNEL_ROOT_DIR@/bin/salome/appli_gen.py ; then + + # --- create a SALOME Application environment + + @KERNEL_ROOT_DIR@/bin/salome/appli_gen.py + sed -i s/\"yes\"/\"no\"/ SalomeApp.xml + sed -i s/\,study\,cppContainer\,registry\,moduleCatalog// SalomeApp.xml + sed -i s/pyContainer/pyContainer\,study\,cppContainer\,registry\,moduleCatalog/ SalomeApp.xml + +cat > CatalogResources.xml << EOF + + + + +EOF + + # --------------------------------------------------------------------------- + # --- first set of test in C++ + + # --- launch in background a SALOME session (servers) + + ln -fs @CMAKE_SOURCE_DIR@/src/yacsloader/samples . + ./runAppli > log1 2>&1 + + # --- wait a little to let the background process define + # the CORBA naming service port and host + + sleep 5 + + # --- execute the test script in SALOME session environment + + chmod +x @CMAKE_CURRENT_BINARY_DIR@/PmmlInSessionTest.sh + ./runSession @CMAKE_CURRENT_BINARY_DIR@/PmmlInSessionTest.sh + ret=$? + + # --------------------------------------------------------------------------- + + kill -9 `cat "/tmp/YACSTEST_PidEcho"` + ./runSession killSalome.py + + echo "exec status PmmlInSessionTest.sh " $ret + + # --- delete all the SALOME Application environment + + ./bin/salome/appli_clean.sh -f + +else + + ln -fs @CMAKE_SOURCE_DIR@/src/yacsloader/samples . + chmod +x @CMAKE_CURRENT_BINARY_DIR@/PmmlInSessionTest.sh + @CMAKE_CURRENT_BINARY_DIR@/PmmlInSessionTest.sh + ret=$? + echo "exec status PmmlInSessionTest.sh " $ret + +fi + +if [ $ret -ne 0 ] +then cat /tmp/${USER}/UnitTestsResult +else echo "Results are in /tmp/${USER}/UnitTestsResult" +fi + +exit $ret diff --git a/src/yacsloader/pmml/PmmlInSessionTest.sh.in b/src/yacsloader/pmml/PmmlInSessionTest.sh.in new file mode 100755 index 000000000..2ef1b9d3e --- /dev/null +++ b/src/yacsloader/pmml/PmmlInSessionTest.sh.in @@ -0,0 +1,50 @@ +#!/bin/bash +# Copyright (C) 2006-2014 CEA/DEN, EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +# --- script to execute in SALOME environment (use runSession) + +# --- wait until SALOME containers are ready + +python @CMAKE_CURRENT_SOURCE_DIR@/waitContainers.py + +# --- launch CORBA server echoSrv for tests + +./echoSrv & +pidecho=$! +echo $pidecho > "/tmp/YACSTEST_PidEcho" + +# Environment variables needed for the optimizer loop tests +export LD_LIBRARY_PATH=@CMAKE_CURRENT_BINARY_DIR@:$LD_LIBRARY_PATH +export PYTHONPATH=@CMAKE_BINARY_DIR@/src/engine_swig:$PYTHONPATH +export PYTHONPATH=@CMAKE_BINARY_DIR@/src/runtime_swig:$PYTHONPATH +export PYTHONPATH=@CMAKE_CURRENT_SOURCE_DIR@:$PYTHONPATH + +# --- launch unit tests + +export ROOT_SAMPLES=@CMAKE_SOURCE_DIR@/src/yacsloader/samples +export TESTCOMPONENT_ROOT_DIR=@CMAKE_BINARY_DIR@/src/runtime/Test + +./TestYACSPMML +ret=$? +echo "exec status TestYACSPMML " $ret + +# --- return unit tests status + +exit $ret diff --git a/src/yacsloader/pmml/YACSPMMLBasicsTest1.cxx b/src/yacsloader/pmml/YACSPMMLBasicsTest1.cxx index f8f70b6c0..8bcf696f0 100755 --- a/src/yacsloader/pmml/YACSPMMLBasicsTest1.cxx +++ b/src/yacsloader/pmml/YACSPMMLBasicsTest1.cxx @@ -125,19 +125,7 @@ int driverTest(Proc* &p, const char* schema) void YACSPMMLBasicsTest1::setUp() { -#ifdef WIN32 - const char* p = std::getenv("YACS_ROOT_DIR"); - std::string strP(""); - if (p) - strP = std::string(p); - else - throw std::string("unable to get YACS_ROOT_DIR"); - resourcesDir = strP; - resourcesDir += "/share/salome/yacssamples/"; -#else - resourcesDir = getenv("YACS_ROOT_DIR"); - resourcesDir += "/share/salome/yacssamples/"; -#endif + resourcesDir = "samples/"; } void YACSPMMLBasicsTest1::tearDown() diff --git a/src/yacsloader/pmml/config_appli.xml.in b/src/yacsloader/pmml/config_appli.xml.in new file mode 100644 index 000000000..2c3dafab1 --- /dev/null +++ b/src/yacsloader/pmml/config_appli.xml.in @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + -- 2.30.2