From 767c9de65e0224a3379fe7198a9be8b7c9ea9bf4 Mon Sep 17 00:00:00 2001 From: Ovidiu Mircescu Date: Wed, 1 Sep 2021 17:09:56 +0200 Subject: [PATCH] Some tests are modified to work in session less mode. --- src/py2yacs/Test/CTestTestfileInstall.cmake | 6 ++- src/runtime/SalomeContainer.cxx | 4 +- .../Test/CTestTestfileInstall.cmake | 7 ++- src/yacsloader/driver.cxx | 2 +- .../Test/CTestTestfileInstall.cmake | 44 +++++++++++++++++-- src/yacsloader_swig/Test/runUnitTest.sh | 3 +- src/yacsloader_swig/Test/testEdit.py | 6 ++- src/yacsloader_swig/Test/testExec.py | 9 ++-- .../Test/testExecForEachGeoMesh.py | 10 ++--- src/yacsloader_swig/Test/testLoader.py | 7 ++- src/yacsloader_swig/Test/testProgress.py | 9 ++-- src/yacsloader_swig/Test/testRefcount.py | 7 ++- src/yacsloader_swig/Test/testResume.py | 13 ++++-- src/yacsloader_swig/Test/testSave.py | 6 +-- src/yacsloader_swig/Test/testSaveLoadRun.py | 32 +++++++++++--- 15 files changed, 120 insertions(+), 45 deletions(-) diff --git a/src/py2yacs/Test/CTestTestfileInstall.cmake b/src/py2yacs/Test/CTestTestfileInstall.cmake index f6a2865d5..f7add30cf 100644 --- a/src/py2yacs/Test/CTestTestfileInstall.cmake +++ b/src/py2yacs/Test/CTestTestfileInstall.cmake @@ -20,14 +20,16 @@ IF(NOT WIN32) SET(TEST_NAME ${COMPONENT_NAME}_Py2YacsTest) # Need a salome session for this test - ADD_TEST(${TEST_NAME} ${SALOME_TEST_DRIVER} ${TIMEOUT} ./TestPy2yacs) + ADD_TEST(${TEST_NAME} ./TestPy2yacs) SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES LABELS "${COMPONENT_NAME}" + ENVIRONMENT "SALOME_EMB_SERVANT=1" ) SET(TEST_NAME ${COMPONENT_NAME}_PyDecorator) - ADD_TEST(${TEST_NAME} ${SALOME_TEST_DRIVER} ${TIMEOUT} testDeco.py) + ADD_TEST(${TEST_NAME} testDeco.py) SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES LABELS "${COMPONENT_NAME}" + ENVIRONMENT "SALOME_EMB_SERVANT=1" ) ENDIF() diff --git a/src/runtime/SalomeContainer.cxx b/src/runtime/SalomeContainer.cxx index 8014525c5..65ed0ed67 100644 --- a/src/runtime/SalomeContainer.cxx +++ b/src/runtime/SalomeContainer.cxx @@ -236,11 +236,9 @@ void SalomeContainer::start(const Task *askingNode, SalomeContainerTools tempSct = _sct; tempSct.setProperty("name", resource_name); tempSct.setProperty("container_name", container_name); - //SalomeContainerTools::Start(_componentNames,_launchModeType,tempSct,_shutdownLevel,this,askingNode); // components are not supported yet on this kind of start std::vector noComponentNames; - int shutdownLevel = 999; - SalomeContainerTools::Start(noComponentNames,_launchModeType,tempSct,shutdownLevel,this,askingNode); + SalomeContainerTools::Start(noComponentNames,_launchModeType,tempSct,_shutdownLevel,this,askingNode); } else start(askingNode); diff --git a/src/yacsloader/Test/CTestTestfileInstall.cmake b/src/yacsloader/Test/CTestTestfileInstall.cmake index e9b25113b..b97b5145a 100644 --- a/src/yacsloader/Test/CTestTestfileInstall.cmake +++ b/src/yacsloader/Test/CTestTestfileInstall.cmake @@ -25,6 +25,9 @@ IF(NOT WIN32) ENVIRONMENT "LD_LIBRARY_PATH=${YACS_TEST_LIB}:$ENV{LD_LIBRARY_PATH}") SET(TEST_NAME ${COMPONENT_NAME}_YacsPMMLExeTest) - ADD_TEST(${TEST_NAME} ${SALOME_TEST_DRIVER} ${TIMEOUT} ./TestYACSPMML) - SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES LABELS "${COMPONENT_NAME}") + ADD_TEST(${TEST_NAME} ./TestYACSPMML) + SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES + LABELS "${COMPONENT_NAME}" + ENVIRONMENT "SALOME_EMB_SERVANT=1" + ) ENDIF() diff --git a/src/yacsloader/driver.cxx b/src/yacsloader/driver.cxx index e579d9705..c03dfcd2d 100644 --- a/src/yacsloader/driver.cxx +++ b/src/yacsloader/driver.cxx @@ -317,7 +317,7 @@ int main (int argc, char* argv[]) myArgs.dump = 0; myArgs.loadState = (char *)""; myArgs.xmlSchema = (char *)""; - myArgs.shutdown = 1; + myArgs.shutdown = 10; myArgs.reset = 0; myArgs.killPort = 0; myArgs.init_ports.clear(); diff --git a/src/yacsloader_swig/Test/CTestTestfileInstall.cmake b/src/yacsloader_swig/Test/CTestTestfileInstall.cmake index 5e678c974..83c14a60e 100644 --- a/src/yacsloader_swig/Test/CTestTestfileInstall.cmake +++ b/src/yacsloader_swig/Test/CTestTestfileInstall.cmake @@ -25,21 +25,59 @@ IF(NOT WIN32) ) SET(TEST_NAME ${COMPONENT_NAME}_StdAloneYacsLoaderTest1) - ADD_TEST(${TEST_NAME} ${SALOME_TEST_DRIVER} ${TIMEOUT} StdAloneYacsLoaderTest1.py) + ADD_TEST(${TEST_NAME} StdAloneYacsLoaderTest1.py) SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES LABELS "${COMPONENT_NAME}" + ENVIRONMENT "SALOME_EMB_SERVANT=1" ) SET(TEST_NAME ${COMPONENT_NAME}_PyNodeWithCache_swig) - ADD_TEST(${TEST_NAME} ${SALOME_TEST_DRIVER} ${TIMEOUT} testPynodeWithCache.py) + ADD_TEST(${TEST_NAME} testPynodeWithCache.py) SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES LABELS "${COMPONENT_NAME}" + ENVIRONMENT "SALOME_EMB_SERVANT=1" ) SET(TEST_NAME ${COMPONENT_NAME}_WorkloadManager_swig) - ADD_TEST(${TEST_NAME} ${SALOME_TEST_DRIVER} ${TIMEOUT} testWorkloadManager.py) + ADD_TEST(${TEST_NAME} testWorkloadManager.py) SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES LABELS "${COMPONENT_NAME}" + ENVIRONMENT "SALOME_EMB_SERVANT=1" + ) + + SET(TEST_NAME ${COMPONENT_NAME}_Progress_swig) + ADD_TEST(${TEST_NAME} testProgress.py) + SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES + LABELS "${COMPONENT_NAME}" + ENVIRONMENT "SALOME_EMB_SERVANT=1" + ) + + SET(TEST_NAME ${COMPONENT_NAME}_Refcount_swig) + ADD_TEST(${TEST_NAME} testRefcount.py) + SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES + LABELS "${COMPONENT_NAME}" + ENVIRONMENT "SALOME_EMB_SERVANT=1" + ) + + SET(TEST_NAME ${COMPONENT_NAME}_Resume_swig) + ADD_TEST(${TEST_NAME} testResume.py) + SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES + LABELS "${COMPONENT_NAME}" + ENVIRONMENT "SALOME_EMB_SERVANT=1" + ) + + SET(TEST_NAME ${COMPONENT_NAME}_SaveLoadRun_swig) + ADD_TEST(${TEST_NAME} testSaveLoadRun.py) + SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES + LABELS "${COMPONENT_NAME}" + ENVIRONMENT "SALOME_EMB_SERVANT=1" + ) + + SET(TEST_NAME ${COMPONENT_NAME}_ValidationChecks_swig) + ADD_TEST(${TEST_NAME} testValidationChecks.py) + SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES + LABELS "${COMPONENT_NAME}" + ENVIRONMENT "SALOME_EMB_SERVANT=1" ) ENDIF() diff --git a/src/yacsloader_swig/Test/runUnitTest.sh b/src/yacsloader_swig/Test/runUnitTest.sh index c9b0b9d37..dc0f0035f 100755 --- a/src/yacsloader_swig/Test/runUnitTest.sh +++ b/src/yacsloader_swig/Test/runUnitTest.sh @@ -28,8 +28,7 @@ sleep 3 export TESTCOMPONENT_ROOT_DIR=`pwd`/../runtime #python3 -m unittest discover -MODULES_TO_TEST="testEdit testExec testLoader testProgress testRefcount \ -testResume testSave testSaveLoadRun testValidationChecks" +MODULES_TO_TEST="testEdit testExec testLoader testSave " python3 -m unittest $MODULES_TO_TEST ret=$? diff --git a/src/yacsloader_swig/Test/testEdit.py b/src/yacsloader_swig/Test/testEdit.py index 68c9aa1a6..3e2e412db 100755 --- a/src/yacsloader_swig/Test/testEdit.py +++ b/src/yacsloader_swig/Test/testEdit.py @@ -196,9 +196,11 @@ def f(): if __name__ == '__main__': + import tempfile import os - U = os.getenv('USER') - with open("/tmp/" + U + "/UnitTestsResult", 'a') as f: + dir_test = tempfile.mkdtemp(suffix=".yacstest") + file_test = os.path.join(dir_test,"UnitTestsResult") + with open(file_test, 'a') as f: f.write(" --- TEST src/yacsloader: testEdit.py\n") suite = unittest.makeSuite(TestEdit) result=unittest.TextTestRunner(f, descriptions=1, verbosity=1).run(suite) diff --git a/src/yacsloader_swig/Test/testExec.py b/src/yacsloader_swig/Test/testExec.py index 741cdcefe..e508b96ff 100755 --- a/src/yacsloader_swig/Test/testExec.py +++ b/src/yacsloader_swig/Test/testExec.py @@ -185,12 +185,11 @@ class TestExec(unittest.TestCase): pass if __name__ == '__main__': - import os - import sys - U = os.getenv('USER') - with open(os.path.join("/tmp", U, "UnitTestsResult"), 'a') as f: + dir_test = tempfile.mkdtemp(suffix=".yacstest") + file_test = os.path.join(dir_test,"UnitTestsResult") + with open(file_test, 'a') as f: f.write(" --- TEST src/yacsloader: testExec.py\n") suite = unittest.makeSuite(TestExec) result = unittest.TextTestRunner(f, descriptions=1, verbosity=1).run(suite) - sys.exit(not result.wasSuccessful()) + sys.exit(not result.wasSuccessful()) diff --git a/src/yacsloader_swig/Test/testExecForEachGeoMesh.py b/src/yacsloader_swig/Test/testExecForEachGeoMesh.py index c8533a718..1895025d2 100755 --- a/src/yacsloader_swig/Test/testExecForEachGeoMesh.py +++ b/src/yacsloader_swig/Test/testExecForEachGeoMesh.py @@ -27,6 +27,7 @@ import loader import pilot import os +import tempfile class TestExecForEachGeoMesh(unittest.TestCase): @@ -57,12 +58,11 @@ class TestExecForEachGeoMesh(unittest.TestCase): pass if __name__ == '__main__': - import os - import sys - U = os.getenv('USER') - with open(os.path.join("/tmp", U, "UnitTestsResult"), 'a') as f: + dir_test = tempfile.mkdtemp(suffix=".yacstest") + file_test = os.path.join(dir_test,"UnitTestsResult") + with open(file_test, 'a') as f: f.write(" --- TEST src/yacsloader: testExec.py\n") suite = unittest.makeSuite(TestExecForEachGeoMesh) result = unittest.TextTestRunner(f, descriptions=1, verbosity=1).run(suite) - sys.exit(not result.wasSuccessful()) + sys.exit(not result.wasSuccessful()) diff --git a/src/yacsloader_swig/Test/testLoader.py b/src/yacsloader_swig/Test/testLoader.py index cd0094022..8d962a8b3 100755 --- a/src/yacsloader_swig/Test/testLoader.py +++ b/src/yacsloader_swig/Test/testLoader.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 # Copyright (C) 2006-2021 CEA/DEN, EDF R&D # # This library is free software; you can redistribute it and/or @@ -83,9 +84,11 @@ class TestLoader(unittest.TestCase): pass if __name__ == '__main__': + import tempfile import os - U = os.getenv('USER') - with open("/tmp/" + U + "/UnitTestsResult", 'a') as f: + dir_test = tempfile.mkdtemp(suffix=".yacstest") + file_test = os.path.join(dir_test,"UnitTestsResult") + with open(file_test, 'a') as f: f.write(" --- TEST src/yacsloader: testLoader.py\n") suite = unittest.makeSuite(TestLoader) result=unittest.TextTestRunner(f, descriptions=1, verbosity=1).run(suite) diff --git a/src/yacsloader_swig/Test/testProgress.py b/src/yacsloader_swig/Test/testProgress.py index 5d15ba9d5..464722605 100755 --- a/src/yacsloader_swig/Test/testProgress.py +++ b/src/yacsloader_swig/Test/testProgress.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 # Copyright (C) 2006-2021 CEA/DEN, EDF R&D # # This library is free software; you can redistribute it and/or @@ -129,11 +130,13 @@ class TestEdit(unittest.TestCase): myRun.join() self.assertEqual(p.getState(),pilot.DONE) self.assertEqual(p.getGlobalProgressPercent(),100) - + if __name__ == '__main__': + import tempfile import os - U = os.getenv('USER') - with open("/tmp/" + U + "/UnitTestsResult", 'a') as f: + dir_test = tempfile.mkdtemp(suffix=".yacstest") + file_test = os.path.join(dir_test,"UnitTestsResult") + with open(file_test, 'a') as f: f.write(" --- TEST src/yacsloader: testProgress.py\n") suite = unittest.makeSuite(TestEdit) result=unittest.TextTestRunner(f, descriptions=1, verbosity=3).run(suite) diff --git a/src/yacsloader_swig/Test/testRefcount.py b/src/yacsloader_swig/Test/testRefcount.py index 2e79f1a28..ab86bc474 100755 --- a/src/yacsloader_swig/Test/testRefcount.py +++ b/src/yacsloader_swig/Test/testRefcount.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 # Copyright (C) 2006-2021 CEA/DEN, EDF R&D # # This library is free software; you can redistribute it and/or @@ -266,9 +267,11 @@ class TestTypeCodeRef(unittest.TestCase): self.assertEqual(tc.getRefCnt(), 3) if __name__ == '__main__': + import tempfile import os - U = os.getenv('USER') - with open("/tmp/" + U + "/UnitTestsResult", 'a') as f: + dir_test = tempfile.mkdtemp(suffix=".yacstest") + file_test = os.path.join(dir_test,"UnitTestsResult") + with open(file_test, 'a') as f: f.write(" --- TEST src/yacsloader: testRefcount.py\n") suite1 = unittest.makeSuite(TestContainerRef) suite2 = unittest.makeSuite(TestTypeCodeRef) diff --git a/src/yacsloader_swig/Test/testResume.py b/src/yacsloader_swig/Test/testResume.py index aca37ae5d..45d09939f 100755 --- a/src/yacsloader_swig/Test/testResume.py +++ b/src/yacsloader_swig/Test/testResume.py @@ -27,6 +27,7 @@ import os import SALOMERuntime import loader import pilot +import salome class TestResume(unittest.TestCase): @@ -39,6 +40,12 @@ class TestResume(unittest.TestCase): self.statefile = os.path.join(workdir, 'dumpPartialBloc2.xml') pass + def tearDown(self): + salome.salome_init() + cm = salome.lcc.getContainerManager() + cm.ShutdownContainers() + pass + def test1_PartialExec(self): # --- stop execution after breakpoint time.sleep(1) @@ -88,9 +95,9 @@ class TestResume(unittest.TestCase): pass if __name__ == '__main__': - import os - U = os.getenv('USER') - with open("/tmp/" + U + "/UnitTestsResult", 'a') as f: + dir_test = tempfile.mkdtemp(suffix=".yacstest") + file_test = os.path.join(dir_test,"UnitTestsResult") + with open(file_test, 'a') as f: f.write(" --- TEST src/yacsloader: testResume.py\n") suite = unittest.makeSuite(TestResume) result=unittest.TextTestRunner(f, descriptions=1, verbosity=1).run(suite) diff --git a/src/yacsloader_swig/Test/testSave.py b/src/yacsloader_swig/Test/testSave.py index 4dd5f7450..dff992344 100755 --- a/src/yacsloader_swig/Test/testSave.py +++ b/src/yacsloader_swig/Test/testSave.py @@ -99,9 +99,9 @@ class TestSave(unittest.TestCase): pass if __name__ == '__main__': - import os - U = os.getenv('USER') - with open("/tmp/" + U + "/UnitTestsResult", 'a') as f: + dir_test = tempfile.mkdtemp(suffix=".yacstest") + file_test = os.path.join(dir_test,"UnitTestsResult") + with open(file_test, 'a') as f: f.write(" --- TEST src/yacsloader: testSave.py\n") suite = unittest.makeSuite(TestSave) result=unittest.TextTestRunner(f, descriptions=1, verbosity=1).run(suite) diff --git a/src/yacsloader_swig/Test/testSaveLoadRun.py b/src/yacsloader_swig/Test/testSaveLoadRun.py index 0479c522f..1c84f7666 100755 --- a/src/yacsloader_swig/Test/testSaveLoadRun.py +++ b/src/yacsloader_swig/Test/testSaveLoadRun.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 # Copyright (C) 2006-2021 CEA/DEN, EDF R&D # # This library is free software; you can redistribute it and/or @@ -24,6 +25,7 @@ import os import pilot import SALOMERuntime import loader +import salome import datetime @@ -34,6 +36,13 @@ class TestSaveLoadRun(unittest.TestCase): self.workdir = tempfile.mkdtemp(suffix=".yacstest") pass + def tearDown(self): + salome.salome_init() + cm = salome.lcc.getContainerManager() + cm.ShutdownContainers() + salome.dsm.shutdownScopes() + pass + def test0(self): """First test of HP Container no loop here only the 3 sorts of python nodes (the Distributed is it still used and useful ?) """ fname=os.path.join(self.workdir, "TestSaveLoadRun0.xml") @@ -1248,6 +1257,11 @@ for i in i8: p=self.r.createProc("pr") ti=p.createType("int","int") cont=p.createContainer("DefaultContainer","Salome") + # enable WorkloadManager mode because containers are not registered right + # in classical mode (4 containers with the same name are launched at the + # same time). + p.setProperty("executor", "WorkloadManager") + cont.setProperty("type", "multi") cont.setProperty("container_name","FactoryServer") b=self.r.createBloc("Bloc") ; p.edAddChild(b) # @@ -1677,13 +1691,13 @@ o2=2*i1 cont1.setProperty("name","localhost") cont1.setProperty("hostname","localhost") cont1.setProperty("type","multi") - cont1.setProperty("container_name","container1@") + cont1.setProperty("container_name","container1") # cont2=p.createContainer("cont2","Salome") cont2.setProperty("name","localhost") cont2.setProperty("hostname","localhost") cont2.setProperty("type","multi") - cont2.setProperty("container_name","container2@") + cont2.setProperty("container_name","container2") # td=p.createType("double","double") ti=p.createType("int","int") @@ -1736,7 +1750,8 @@ def str2Obj(strr): return pickle.loads(strr) salome.salome_init() -dsm=salome.naming_service.Resolve("/DataServerManager") +#dsm=salome.naming_service.Resolve("/DataServerManager") +dsm = salome.dsm dss,isCreated=dsm.giveADataScopeTransactionCalled(scopeName) assert(not isCreated) @@ -1746,6 +1761,7 @@ wk2=dss.waitForKeyInVar(varName,obj2Str("ef")) wk2.waitFor() assert(str2Obj(dss.waitForMonoThrRev(wk2))==[11,12])""") n1.setContainer(cont1) + n1.setExecutionMode("remote") # n2=r.createScriptNode("","n2") n2_sn=n2.edAddInputPort("scopeName",ts) @@ -1765,7 +1781,8 @@ def str2Obj(strr): return pickle.loads(strr) salome.salome_init() -dsm=salome.naming_service.Resolve("/DataServerManager") +#dsm=salome.naming_service.Resolve("/DataServerManager") #doesn't work in ssl +dsm = salome.dsm # works in ssl dss,isCreated=dsm.giveADataScopeTransactionCalled(scopeName) assert(not isCreated) time.sleep(3.) @@ -1774,6 +1791,7 @@ t1.addKeyValueInVarErrorIfAlreadyExistingNow(obj2Str("cd"),obj2Str([7,8,9,10])) t1.addKeyValueInVarErrorIfAlreadyExistingNow(obj2Str("ef"),obj2Str([11,12])) """) n2.setContainer(cont2) + n2.setExecutionMode("remote") # p.edAddChild(n0) p.edAddChild(n1) @@ -1837,9 +1855,9 @@ t1.addKeyValueInVarErrorIfAlreadyExistingNow(obj2Str("ef"),obj2Str([11,12])) pass if __name__ == '__main__': - import os,sys - U = os.getenv('USER') - with open("/tmp/" + U + "/UnitTestsResult", 'a') as f: + dir_test = tempfile.mkdtemp(suffix=".yacstest") + file_test = os.path.join(dir_test,"UnitTestsResult") + with open(file_test, 'a') as f: f.write(" --- TEST src/yacsloader: testSaveLoadRun.py\n") suite = unittest.makeSuite(TestSaveLoadRun) result=unittest.TextTestRunner(f, descriptions=1, verbosity=1).run(suite) -- 2.39.2