SET(${PROJECT_NAME_UC}_PATCH_VERSION 0)
SET(${PROJECT_NAME_UC}_VERSION
${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION})
-SET(${PROJECT_NAME_UC}_VERSION_DEV 0)
+SET(${PROJECT_NAME_UC}_VERSION_DEV 1)
# Common CMake macros
# ===================
-# Copyright (C) 2015-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2015-2017 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
@staticmethod
def start(shutdown_servers=False, with_gui=False, args=[]):
import tempfile
- log = tempfile.NamedTemporaryFile(suffix='_nsport.log', delete=False)
+ log = tempfile.NamedTemporaryFile(suffix='_nsport', delete=True)
+ port_log = log.name
log.close()
-
+ port_log = port_log + "-%s.log"%(os.getpid())
instance_args = [
- "--ns-port-log=%s"%log.name,
+ "--ns-port-log=%s"%port_log,
"--shutdown-servers=%d"%shutdown_servers
] + args
salome_instance = SalomeInstance()
salome_instance.__run(args=instance_args, with_gui=with_gui)
- with open(log.name) as f:
+ with open(port_log) as f:
salome_instance.port = int(f.readline())
- os.remove(log.name)
+ os.remove(port_log)
return salome_instance
#
#!/usr/bin/env python
-# Copyright (C) 2013-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2013-2017 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
p.join()
# Try to get specific port number
- p = multiprocessing.Process(target=port_reservation, args=(obtained_ports, 2812, self,))
+ p = multiprocessing.Process(target=port_reservation, args=(obtained_ports, 2899, self, 2899,))
p.start()
p.join()
# Release port
- print "release port 2812"
- p = multiprocessing.Process(target=releasePort, args=(2812,))
+ print "release port 2899"
+ p = multiprocessing.Process(target=releasePort, args=(2899,))
p.start()
p.join()
# Try to get specific port number
- p = multiprocessing.Process(target=port_reservation, args=(obtained_ports, 2812, self, 2812,))
+ p = multiprocessing.Process(target=port_reservation, args=(obtained_ports, 2899, self, 2899,))
p.start()
p.join()
import os, sys, re, socket
#import commands
from server import Server
-from Utils_Identity import getShortHostName
+from salome_utils import getHostName
from launchConfigureParser import verbose
# -----------------------------------------------------------------------------
except:
pass
- if verbose(): print "Name Service... ",
- #hname=os.environ["HOST"] #commands.getoutput("hostname")
- if sys.platform == "win32":
- hname = getShortHostName();
- else:
- hname = socket.gethostname();
- #print "hname=",hname
+ if verbose(): print "Name Service... "
+ hname = getHostName()
with open(os.environ["OMNIORB_CONFIG"]) as f:
ss = re.findall("NameService=corbaname::" + hname + ":\d+", f.read())
import subprocess
import re
from salomeContextUtils import getScriptsAndArgs, formatScriptsAndArgs, getShortAndExtraArgs
-from salome_utils import getUserName
+from salome_utils import getUserName, getShortHostName
# Use to display newlines (\n) in epilog
class MyParser(OptionParser):
else:
if not host:
# only PORT is given
- host = socket.gethostname()
+ host = getShortHostName()
# both MACHINE and PORT are given
_writeConfigFile(port, host)
#
os.environ['NSHOST'] = host
# determine running mode, taht is either 'local' or 'remote'
- here = socket.gethostname()
+ here = getShortHostName()
mode = "local"
if host != here and host != "localhost" and host != "no_host":
mode="remote"
if len(configFileNames) == 0:
raise SalomeContextException("No configuration files given")
- reserved=['PATH', 'DYLD_FALLBACK_LIBRARY_PATH', 'DYLD_LIBRARY_PATH', 'LD_LIBRARY_PATH', 'PYTHONPATH', 'MANPATH', 'PV_PLUGIN_PATH', 'INCLUDE', 'LIBPATH', 'SALOME_PLUGINS_PATH', 'LIBRARY_PATH']
+ reserved=['PATH', 'DYLD_FALLBACK_LIBRARY_PATH', 'DYLD_LIBRARY_PATH', 'LD_LIBRARY_PATH', 'PYTHONPATH', 'MANPATH', 'PV_PLUGIN_PATH', 'INCLUDE', 'LIBPATH', 'SALOME_PLUGINS_PATH', 'LIBRARY_PATH', 'QT_PLUGIN_PATH']
for filename in configFileNames:
basename, extension = os.path.splitext(filename)
if extension == ".cfg":
3. if fails, try HOST environment variable
4. if fails, return 'unknown' as default host name
"""
- import os
try:
import socket
host = socket.gethostname()
if not host: host = os.getenv("HOSTNAME")
if not host: host = os.getenv("HOST")
if not host: host = "unknown" # 'unknown' is default host name
+ try:
+ socket.gethostbyname(host)
+ except:
+ host = "localhost"
+ pass
return host
# ---
-// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2017 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
{
//build more complex file name to support multiple salome session
std::string aFileName = Kernel_Utils::GetTmpFileName();
+ std::ostringstream str_pid;
+ str_pid << ::getpid();
+ aFileName = aFileName + "-" + str_pid.str();
#ifndef WIN32
aFileName += ".sh";
#else
std::string command;
std::string tmpFile = BuildTemporaryFileName();
const ParserResourcesType resInfo(_resManager->GetResourceDefinition(machine));
-
+
if(resInfo.Protocol == sh)
{
return resInfo.HostName;
return false;
}
#endif
-
-// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2017 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
#include "BatchTest.hxx"
#include "Launcher.hxx"
+#include "Basics_Utils.hxx"
+#include "Basics_DirUtils.hxx"
#ifdef WITH_LIBBATCH
#include <libbatch/MpiImpl.hxx>
strftime(date, BUFSIZE, "%Y_%m_%d__%H_%M_%S", localtime(&curtime));
// Creating test temporary file
- _test_filename = "/tmp/";
- _test_filename += std::string(date) + "_test_cluster_file_";
- _test_filename += _batch_descr.hostname.in();
_base_filename = std::string(date) + "_test_cluster_file_" + _batch_descr.hostname.in();
+ _test_filename = Kernel_Utils::GetTmpDir() + _base_filename;
#endif
}
-// Copyright (C) 2009-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2009-2017 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
#include <libbatch/Constants.hxx>
#endif
-using namespace std;
+#include <sstream>
Launcher::Job::Job()
{
strftime(date, BUFSIZE, "%Y_%m_%d__%H_%M_%S", localtime(&curtime));
if(!_resource_definition.working_directory.empty())
{
- std::string job_dir = std::string("/job_") + date;
+ std::string date_dir = std::string("/job_") + date;
+ std::ostringstream str_pid;
+ str_pid << ::getpid();
+ std::string job_dir = date_dir + "-" + str_pid.str();
+
_work_directory = _resource_definition.working_directory + job_dir;
}
else
-// Copyright (C) 2009-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2009-2017 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
#define _chmod chmod
#endif
+#include <sstream>
+
Launcher::Job_Command::Job_Command() {_job_type = "command";}
Launcher::Job_Command::~Job_Command() {}
}
#ifdef WITH_LIBBATCH
-std::string
+std::string
Launcher::Job_Command::buildCommandScript(Batch::Parametre params, std::string launch_date)
{
// parameters
// File name
std::string launch_date_port_file = launch_date;
- std::string launch_script = Kernel_Utils::GetTmpDir() + "runCommand_" + _job_file_name + "_" + launch_date + ".sh";
+ std::ostringstream str_pid;
+ str_pid << ::getpid();
+ std::string launch_script = Kernel_Utils::GetTmpDir() + "runCommand_" + _job_file_name + "_" + launch_date + "-" + str_pid.str() + ".sh";
std::ofstream launch_script_stream;
launch_script_stream.open(launch_script.c_str(), std::ofstream::out);
-
+
// Script
launch_script_stream << "#!/bin/sh -f" << std::endl;
launch_script_stream << "cd " << work_directory << std::endl;
#define _chmod chmod
#endif
+#include <sstream>
+
Launcher::Job_SALOME::Job_SALOME() {}
Launcher::Job_SALOME::~Job_SALOME() {}
{
// parameters
std::string work_directory = params[Batch::WORKDIR].str();
-
- std::string launch_script = Kernel_Utils::GetTmpDir() + "runSalome_" + _job_file_name + "_" + _launch_date + ".sh";
+ std::ostringstream str_pid;
+ str_pid << ::getpid();
+ std::string launch_script = Kernel_Utils::GetTmpDir() + "runSalome_" + _job_file_name + "_" + _launch_date + "-" + str_pid.str() + ".sh";
std::ofstream launch_script_stream;
launch_script_stream.open(launch_script.c_str(),
std::ofstream::out
import os
import sys
import time
+import tempfile
+import errno
+
+def mkdir_p(path):
+ try:
+ os.makedirs(path)
+ except OSError as exc: # Python >2.5
+ if exc.errno == errno.EEXIST and os.path.isdir(path):
+ pass
+ else:
+ raise
# Test of SalomeLauncher.
# This test should be run in the salome environment, using "salome shell"
@classmethod
def setUpClass(cls):
# Prepare the test directory
- import shutil
- cls.test_dir = os.path.join(os.getcwd(), "test_dir")
- cls.suffix = time.strftime("-%Y-%m-%d-%H-%M-%S")
- shutil.rmtree(cls.test_dir, ignore_errors=True)
- os.mkdir(cls.test_dir)
-
+ temp = tempfile.NamedTemporaryFile()
+ cls.test_dir = os.path.join(temp.name, "test_dir")
+ name = os.path.basename(temp.name)
+ temp.close()
+ cls.suffix = time.strftime("-%Y-%m-%d-%H-%M-%S")+"-%s"%(os.getpid())
+ mkdir_p(cls.test_dir)
+
# load catalogs
# mc = salome.naming_service.Resolve('/Kernel/ModulCatalog')
# ior = salome.orb.object_to_string(mc)
##############################
def test_salome_py_job(self):
case_test_dir = os.path.join(TestCompo.test_dir, "salome_py")
- os.mkdir(case_test_dir)
-
+ mkdir_p(case_test_dir)
+
old_dir = os.getcwd()
os.chdir(case_test_dir)
-
+
# job script
script_file = "myScript.py"
job_script_file = os.path.join(case_test_dir, script_file)
f = open(job_script_file, "w")
f.write(script_text)
f.close()
-
- local_result_dir = os.path.join(case_test_dir, "result_py_job")
+
+ local_result_dir = os.path.join(case_test_dir, "result_py_job-")
job_params = salome.JobParameters()
job_params.job_type = "python_salome"
job_params.job_file = job_script_file
job_params.out_files = ["result.txt", "subdir"]
job_params.resource_required = salome.ResourceParameters()
job_params.resource_required.nb_proc = 1
-
+
launcher = salome.naming_service.Resolve('/SalomeLauncher')
-
+
for resource in self.ressources:
print "Testing python_salome job on ", resource
job_params.result_directory = local_result_dir + resource
pass #for
os.chdir(old_dir)
-
+
##############################
# test of command job type
##############################
def test_command(self):
case_test_dir = os.path.join(TestCompo.test_dir, "command")
- os.mkdir(case_test_dir)
-
+ mkdir_p(case_test_dir)
+
# job script
data_file = "in.txt"
script_file = "myEnvScript.py"
f.write(script_text)
f.close()
os.chmod(abs_script_file, 0o755)
-
+
#environement script
env_file = "myEnv.sh"
env_text = """export ENV_TEST_VAR="expected"
f = open(os.path.join(case_test_dir, env_file), "w")
f.write(env_text)
f.close()
-
+
# write data file
f = open(os.path.join(case_test_dir, data_file), "w")
f.write("to be copied")
f.close()
-
+
# job params
- local_result_dir = os.path.join(case_test_dir, "result_com_job")
+ local_result_dir = os.path.join(case_test_dir, "result_com_job-")
job_params = salome.JobParameters()
job_params.job_type = "command"
job_params.job_file = script_file
job_params.local_directory = case_test_dir
job_params.resource_required = salome.ResourceParameters()
job_params.resource_required.nb_proc = 1
-
+
# create and launch the job
launcher = salome.naming_service.Resolve('/SalomeLauncher')
resManager= salome.lcc.getResourcesManager()
# use the working directory of the resource
resParams = resManager.GetResourceDefinition(resource)
wd = os.path.join(resParams.working_directory,
- "CommandJob_" + self.suffix)
+ "CommandJob" + self.suffix)
job_params.work_directory = wd
job_id = launcher.createJob(job_params)
yacs_path = os.getenv("YACS_ROOT_DIR", "")
if not os.path.isdir(yacs_path):
self.skipTest("Needs YACS module to run. Please define YACS_ROOT_DIR.")
-
+
case_test_dir = os.path.join(TestCompo.test_dir, "yacs")
- os.mkdir(case_test_dir)
-
+ mkdir_p(case_test_dir)
+
#environement script
env_file = "myEnv.sh"
env_text = """export ENV_TEST_VAR="expected"
f = open(os.path.join(case_test_dir, env_file), "w")
f.write(env_text)
f.close()
-
+
# job script
script_text = """<?xml version='1.0' encoding='iso-8859-1' ?>
<proc name="newSchema_1">
f = open(job_script_file, "w")
f.write(script_text)
f.close()
-
- local_result_dir = os.path.join(case_test_dir, "result_yacs_job")
+
+ local_result_dir = os.path.join(case_test_dir, "result_yacs_job-")
job_params = salome.JobParameters()
job_params.job_type = "yacs_file"
job_params.job_file = job_script_file
job_params.env_file = os.path.join(case_test_dir,env_file)
job_params.out_files = ["result.txt"]
-
+
# define the interval between two YACS schema dumps (3 seconds)
import Engines
job_params.specific_parameters = [Engines.Parameter("EnableDumpYACS", "3")]
launcher = salome.naming_service.Resolve('/SalomeLauncher')
resManager= salome.lcc.getResourcesManager()
-
+
for resource in self.ressources:
print "Testing yacs job on ", resource
job_params.result_directory = local_result_dir + resource
# use the working directory of the resource
resParams = resManager.GetResourceDefinition(resource)
wd = os.path.join(resParams.working_directory,
- "YacsJob_" + self.suffix)
+ "YacsJob" + self.suffix)
job_params.work_directory = wd
job_id = launcher.createJob(job_params)
launcher.getJobResults(job_id, "")
self.verifyFile(os.path.join(job_params.result_directory, "result.txt"),
"expected")
-
+
##############################
# test of yacs job type using "--init_port" driver option
##############################
yacs_path = os.getenv("YACS_ROOT_DIR", "")
if not os.path.isdir(yacs_path):
self.skipTest("Needs YACS module to run. Please define YACS_ROOT_DIR.")
-
+
case_test_dir = os.path.join(TestCompo.test_dir, "yacs_opt")
- os.mkdir(case_test_dir)
-
+ mkdir_p(case_test_dir)
+
# job script
script_text = """<?xml version='1.0' encoding='iso-8859-1' ?>
<proc name="myschema">
f = open(job_script_file, "w")
f.write(script_text)
f.close()
-
- local_result_dir = os.path.join(case_test_dir, "result_yacsopt_job")
+
+ local_result_dir = os.path.join(case_test_dir, "result_yacsopt_job-")
job_params = salome.JobParameters()
job_params.job_type = "yacs_file"
job_params.job_file = job_script_file
#job_params.env_file = os.path.join(case_test_dir,env_file)
job_params.out_files = ["result.txt"]
-
+
# define the interval between two YACS schema dumps (3 seconds)
import Engines
job_params.specific_parameters = [Engines.Parameter("YACSDriverOptions",
launcher = salome.naming_service.Resolve('/SalomeLauncher')
resManager= salome.lcc.getResourcesManager()
-
+
for resource in self.ressources:
print "Testing yacs job with options on ", resource
job_params.result_directory = local_result_dir + resource
# use the working directory of the resource
resParams = resManager.GetResourceDefinition(resource)
wd = os.path.join(resParams.working_directory,
- "YacsJobOpt_" + self.suffix)
+ "YacsJobOpt" + self.suffix)
job_params.work_directory = wd
job_id = launcher.createJob(job_params)
# creat study
import salome
salome.salome_init()
- unittest.main()
\ No newline at end of file
+ unittest.main()
# -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2017 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
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+import os
import unittest
import salome
import Engines
</resources>
"""
def setUp(self):
+ self.container_name = "MyContainer-%s"%(os.getpid())
pass
def test0(self):
""""""
rp=LifeCycleCORBA.ResourceParameters(policy="best",componentList=["PYHELLO"])
- p=LifeCycleCORBA.ContainerParameters(container_name="MyContainer",mode="start",resource_params=rp)
+ p=LifeCycleCORBA.ContainerParameters(container_name=self.container_name,mode="start",resource_params=rp)
co=cm.GiveContainer( p )
host1=co.getHostName()
- name1="/Containers/%s/MyContainer" % host1
+ name1="/Containers/%s/%s" % (host1,self.container_name)
self.assertEqual(co._get_name(), name1)
co=cm.GiveContainer( p )
host2=co.getHostName()
- name2="/Containers/%s/MyContainer" % host2
+ name2="/Containers/%s/%s" % (host2,self.container_name)
self.assertEqual(co._get_name(), name2)
def test1(self):
""""""
rp=LifeCycleCORBA.ResourceParameters(policy="best",componentList=["PYHELLO"])
- p=LifeCycleCORBA.ContainerParameters(container_name="MyContainer",mode="get",resource_params=rp)
+ p=LifeCycleCORBA.ContainerParameters(container_name=self.container_name,mode="get",resource_params=rp)
co=cm.GiveContainer( p )
host1=co.getHostName()
- name1="/Containers/%s/MyContainer" % host1
+ name1="/Containers/%s/%s" % (host1,self.container_name)
self.assertEqual(co._get_name(), name1)
co=cm.GiveContainer( p )
host2=co.getHostName()
- name2="/Containers/%s/MyContainer" % host2
+ name2="/Containers/%s/%s" % (host2,self.container_name)
self.assertEqual(co._get_name(), name2)
def test2(self):
""""""
rp=LifeCycleCORBA.ResourceParameters(policy="best",componentList=["PYHELLO"])
- p=LifeCycleCORBA.ContainerParameters(container_name="MyContainer",mode="getorstart",resource_params=rp)
+ p=LifeCycleCORBA.ContainerParameters(container_name=self.container_name,mode="getorstart",resource_params=rp)
co=cm.GiveContainer( p )
host1=co.getHostName()
- name1="/Containers/%s/MyContainer" % host1
+ name1="/Containers/%s/%s" % (host1,self.container_name)
self.assertEqual(co._get_name(), name1)
co=cm.GiveContainer( p )
host2=co.getHostName()
- name2="/Containers/%s/MyContainer" % host2
+ name2="/Containers/%s/%s" % (host2,self.container_name)
self.assertEqual(co._get_name(), name2)
_dsct->checkVarExistingAndDict(_var_name);
TransactionAddKeyValueErrorIfAlreadyExisting ret(_dsct,_var_name,key,value);
{
- bool mustRollback(true);
+ ret.perform();
+ /*bool mustRollback(true);
TrustTransaction t;
t.setTransaction(&ret,&mustRollback);
t.operate();
- mustRollback=false;//important let this line to notify t that everything was OK
+ mustRollback=false;//important let this line to notify t that everything was OK*/
}
ret.notify();
}
#endif
const hostent* pour_adip=gethostbyname(hostid.nodename);
+ if(pour_adip == NULL)
+ pour_adip=gethostbyname("localhost");
ASSERT(pour_adip!=NULL);
const in_addr ip_addr=*(struct in_addr*)(pour_adip->h_addr) ;
return duplicate(inet_ntoa(ip_addr));