From 9f29fc127aba646001445824233dc09117e6ffab Mon Sep 17 00:00:00 2001 From: boulant Date: Wed, 2 Nov 2011 12:21:25 +0000 Subject: [PATCH] IMP: salomization of unit tests in KernelHelpers --- src/KernelHelpers/KernelHelpersUseCases.cxx | 117 ++++++++++++++++++ src/KernelHelpers/Makefile.am | 44 +++---- .../Test/KernelHelpersUnitTests.cxx | 112 +++++++++++++++++ .../KernelHelpersUnitTests.hxx} | 48 +++---- src/KernelHelpers/Test/Makefile.am | 75 +++++++++++ src/KernelHelpers/Test/TestKernelHelpers.cxx | 31 +++++ src/KernelHelpers/Test/TestKernelHelpers.py | 51 ++++++++ src/Makefile.am | 3 +- 8 files changed, 434 insertions(+), 47 deletions(-) create mode 100644 src/KernelHelpers/KernelHelpersUseCases.cxx create mode 100644 src/KernelHelpers/Test/KernelHelpersUnitTests.cxx rename src/KernelHelpers/{TestKernelHelpers.cxx => Test/KernelHelpersUnitTests.hxx} (50%) create mode 100644 src/KernelHelpers/Test/Makefile.am create mode 100644 src/KernelHelpers/Test/TestKernelHelpers.cxx create mode 100644 src/KernelHelpers/Test/TestKernelHelpers.py diff --git a/src/KernelHelpers/KernelHelpersUseCases.cxx b/src/KernelHelpers/KernelHelpersUseCases.cxx new file mode 100644 index 000000000..a96702907 --- /dev/null +++ b/src/KernelHelpers/KernelHelpersUseCases.cxx @@ -0,0 +1,117 @@ +// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// +// 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. +// +// 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 +// +// Author: Guillaume Boulant (EDF/R&D) + +#include "SALOME_KernelServices.hxx" +#include "Basics_Utils.hxx" + +#include +#include CORBA_CLIENT_HEADER(SALOME_TestComponent) + +bool TEST_corba() { + CORBA::ORB_var orb = KERNEL::getORB(); + if ( CORBA::is_nil(orb) ) { + LOG("TEST_Corba: orb ERROR"); + return false; + } + SALOME_NamingService * ns = KERNEL::getNamingService(); + if ( ns == NULL ) { + LOG("TEST_Corba: ns ERROR"); + return false; + + } + SALOME_LifeCycleCORBA * lcc = KERNEL::getLifeCycleCORBA(); + if ( lcc == NULL ) { + LOG("TEST_Corba: lcc ERROR"); + return false; + } + LOG("TEST_Corba: OK"); + return true; +} + +#include +bool TEST_getLifeCycleCORBA() { + Engines::EngineComponent_var component = + KERNEL::getLifeCycleCORBA()->FindOrLoad_Component( "FactoryServer","SalomeTestComponent" ); + + Engines::TestComponent_var engine = Engines::TestComponent::_narrow(component); + char * coucou_res = engine->Coucou(123.); + char * coucou_ref = "L = 123"; + LOG(coucou_res); + if ( strcmp(coucou_res, coucou_ref) == 0 ) { + return false; + } + return true; +} + +bool TEST_getStudyManager() { + SALOMEDS::Study_ptr myTestStudy = KERNEL::getStudyManager()->NewStudy("kerneltest"); + if ( CORBA::is_nil(myTestStudy) ) { + return false; + } + + // One can use the study to store some general properties + myTestStudy->SetString("material","wood"); + myTestStudy->SetReal("volume",3.23); + + // The study is characterized by an ID + int myTestStudyId = myTestStudy->StudyId(); + LOG("TestComponentImpl::testkernel: study id = "<getPID(); + LOG("["< +#include CORBA_CLIENT_HEADER(SALOME_TestComponent) + +// ============================================================================ +/*! + * Set up the environment + */ +// ============================================================================ + +void KernelHelpersUnitTests::setUp() +{ +} + +// ============================================================================ +/*! + * - delete + */ +// ============================================================================ + +void KernelHelpersUnitTests::tearDown() +{ +} + +// ============================================================================ +/*! + * Check SalomeApp functionality + */ +// ============================================================================ +void KernelHelpersUnitTests::TEST_corba() +{ + CORBA::ORB_var orb = KERNEL::getORB(); + CPPUNIT_ASSERT(!CORBA::is_nil(orb)); + + + SALOME_NamingService * ns = KERNEL::getNamingService(); + CPPUNIT_ASSERT(ns!=NULL); + + SALOME_LifeCycleCORBA * lcc = KERNEL::getLifeCycleCORBA(); + CPPUNIT_ASSERT(lcc!=NULL); +} + +void KernelHelpersUnitTests::TEST_getLifeCycleCORBA() { + Engines::EngineComponent_var component = + KERNEL::getLifeCycleCORBA()->FindOrLoad_Component( "FactoryServer","SalomeTestComponent" ); + + Engines::TestComponent_var engine = Engines::TestComponent::_narrow(component); + char * coucou_res = engine->Coucou(123.); + char * coucou_ref = "TestComponent_i : L = 123"; + LOG(coucou_res); + CPPUNIT_ASSERT( strcmp(coucou_res, coucou_ref) == 0 ); +} + +void KernelHelpersUnitTests::TEST_getStudyManager() { + SALOMEDS::Study_ptr myTestStudy = KERNEL::getStudyManager()->NewStudy("kerneltest"); + CPPUNIT_ASSERT(!CORBA::is_nil(myTestStudy)); + + // One can use the study to store some general properties + myTestStudy->SetString("material","wood"); + myTestStudy->SetReal("volume",3.23); + + // The study is characterized by an ID + int myTestStudyId = myTestStudy->StudyId(); + LOG("TestComponentImpl::testkernel: study id = "<getPID(); + LOG("SALOME launcher PID = " << pid); + } + catch (const SALOME::SALOME_Exception & ex) { + LOG("SALOME Exception in createJob !" < -#include -#include CORBA_CLIENT_HEADER(SALOME_TestComponent) +class KernelHelpersUnitTests : public CppUnit::TestFixture +{ + CPPUNIT_TEST_SUITE( KernelHelpersUnitTests ); + CPPUNIT_TEST( TEST_corba ); + CPPUNIT_TEST( TEST_getLifeCycleCORBA ); + CPPUNIT_TEST( TEST_getStudyManager ); + CPPUNIT_TEST( TEST_getSalomeLauncher ); + CPPUNIT_TEST_SUITE_END(); -void TEST_corba() { - CORBA::ORB_var orb = KERNEL::getORB(); - SALOME_NamingService * ns = KERNEL::getNamingService(); - SALOME_LifeCycleCORBA * lcc = KERNEL::getLifeCycleCORBA(); -} +public: -void TEST_getLifeCycleCORBA() { - Engines::EngineComponent_var component = - KERNEL::getLifeCycleCORBA()->FindOrLoad_Component( "FactoryServer","SalomeTestComponent" ); - - Engines::TestComponent_var engine = Engines::TestComponent::_narrow(component); - STDLOG(engine->Coucou(123.)); -} + void setUp(); + void tearDown(); -// TODO: -// - complete the coverture of the KernelService interface -// - provide use case for the StudyEditor + void TEST_corba(); + void TEST_getLifeCycleCORBA(); + void TEST_getStudyManager(); + void TEST_getSalomeLauncher(); +}; -int main (int argc, char * argv[]) { - TEST_getLifeCycleCORBA(); - return 0; -} +#endif diff --git a/src/KernelHelpers/Test/Makefile.am b/src/KernelHelpers/Test/Makefile.am new file mode 100644 index 000000000..20d3daa93 --- /dev/null +++ b/src/KernelHelpers/Test/Makefile.am @@ -0,0 +1,75 @@ +# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# 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. +# +# 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 +# + +# Author: Guillaume Boulant (EDF/R&D) + +include $(top_srcdir)/salome_adm/unix/make_common_starter.am + +lib_LTLIBRARIES = libSalomeKernelHelpersTest.la + +salomeinclude_HEADERS = KernelHelpersUnitTests.hxx + +dist_libSalomeKernelHelpersTest_la_SOURCES = KernelHelpersUnitTests.cxx + +OMNIORB_CXXFLAGS=@OMNIORB_CXXFLAGS@ @OMNIORB_INCLUDES@ +OMNIORB_LIBS=@OMNIORB_LIBS@ + +libSalomeKernelHelpersTest_la_CXXFLAGS = \ + @CPPUNIT_INCLUDES@ \ + $(OMNIORB_CXXFLAGS) \ + -I$(top_srcdir)/src/Basics/Test \ + -I$(srcdir)/.. \ + -I$(top_srcdir)/src/NamingService \ + -I$(top_srcdir)/src/SALOMELocalTrace \ + -I$(top_srcdir)/src/Basics \ + -I$(top_srcdir)/src/Utils \ + -I$(top_srcdir)/src/LifeCycleCORBA \ + -I$(top_srcdir)/src/Container \ + -I$(top_srcdir)/src/Notification \ + -I$(top_srcdir)/src/GenericObj \ + -I$(top_builddir)/idl + + +libSalomeKernelHelpersTest_la_LIBADD = \ + @CPPUNIT_LIBS@ \ + ../libSalomeKernelHelpers.la \ + $(OMNIORB_LIBS) \ + $(top_builddir)/src/NamingService/libSalomeNS.la \ + $(top_builddir)/src/SALOMELocalTrace/libSALOMELocalTrace.la \ + $(top_builddir)/src/Basics/libSALOMEBasics.la \ + $(top_builddir)/src/Utils/libOpUtil.la \ + $(top_builddir)/src/LifeCycleCORBA/libSalomeLifeCycleCORBA.la \ + $(top_builddir)/src/Container/libSalomeContainer.la \ + $(top_builddir)/src/Notification/libSalomeNotification.la \ + $(top_builddir)/src/GenericObj/libSalomeGenericObj.la \ + $(top_builddir)/idl/libSalomeIDLKernel.la + + +bin_PROGRAMS = TestKernelHelpers + +TestKernelHelpers_SOURCES = TestKernelHelpers.cxx + +TestKernelHelpers_CXXFLAGS = $(libSalomeKernelHelpersTest_la_CXXFLAGS) +TestKernelHelpers_LDADD = $(libSalomeKernelHelpersTest_la_LIBADD) libSalomeKernelHelpersTest.la + +dist_salomescript_PYTHON = TestKernelHelpers.py +UNIT_TEST_PROG = TestKernelHelpers diff --git a/src/KernelHelpers/Test/TestKernelHelpers.cxx b/src/KernelHelpers/Test/TestKernelHelpers.cxx new file mode 100644 index 000000000..c78729fab --- /dev/null +++ b/src/KernelHelpers/Test/TestKernelHelpers.cxx @@ -0,0 +1,31 @@ +// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// 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. +// +// 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 +// + +#include "KernelHelpersUnitTests.hxx" + +// --- Registers the fixture into the 'registry' + +CPPUNIT_TEST_SUITE_REGISTRATION( KernelHelpersUnitTests ); + +// --- generic Main program from Basic/Test + +#include "BasicMainTest.hxx" diff --git a/src/KernelHelpers/Test/TestKernelHelpers.py b/src/KernelHelpers/Test/TestKernelHelpers.py new file mode 100644 index 000000000..b2f559ecf --- /dev/null +++ b/src/KernelHelpers/Test/TestKernelHelpers.py @@ -0,0 +1,51 @@ +# -*- coding: iso-8859-1 -*- +# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# 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. +# +# 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 +# + +import sys, os,signal,string,commands +import runSalome +import orbmodule +import TestKiller + +# get SALOME environment : + +args, modules_list, modules_root_dir = runSalome.get_config() +runSalome.set_env(args, modules_list, modules_root_dir) + +# launch CORBA naming server + +clt=orbmodule.client() + +# launch CORBA logger server + +myServer=runSalome.LoggerServer(args) +myServer.run() +clt.waitLogger("Logger") + +# execute Unit Test + +command = ['TestKernelHelpers'] +ret = os.spawnvp(os.P_WAIT, command[0], command) + +# kill Test process + +TestKiller.killProcess(runSalome.process_id) diff --git a/src/Makefile.am b/src/Makefile.am index 931471000..f3f4bb77f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -70,7 +70,8 @@ SUBDIR_CPPUNIT_CORBA = \ LifeCycleCORBA/Test \ LifeCycleCORBA_SWIG/Test \ SALOMEDSImpl/Test \ - SALOMEDS/Test + SALOMEDS/Test \ + KernelHelpers/Test SUBDIR_CPPUNIT_GENERAL = \ UnitTests -- 2.39.2