# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2019 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
import SALOME
import salome
import unittest
-import cPickle
+import pickle
import gc
import time
from datetime import datetime
nbOfSecWait=1.
def obj2Str(obj):
- return cPickle.dumps(obj,cPickle.HIGHEST_PROTOCOL)
+ return pickle.dumps(obj,pickle.HIGHEST_PROTOCOL)
def str2Obj(strr):
- return cPickle.loads(strr)
+ return pickle.loads(strr)
def generateKey(varName,scopeName):
dsm=salome.naming_service.Resolve("/DataServerManager")
dss,isCreated=dsm.giveADataScopeTransactionCalled(scopeName)
import TestSalomeSDSHelper0
import os,subprocess
fname=os.path.splitext(TestSalomeSDSHelper0.__file__)[0]+".py"
- proc=subprocess.Popen(["python",fname],stdout=subprocess.PIPE,stderr=subprocess.PIPE)
+ proc = subprocess.Popen(["python3", fname], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out,err=proc.communicate()
if proc.returncode!=0:
- print out
- print err
+ print("-------------- work -----------")
+ print(out)
+ print(err)
+ print("~~~~~~~~~~~~~~ work ~~~~~~~~~~~")
return proc.returncode
def func_test7(scopeName,cv,cv2,cv3,sharedNum):
#
nbProc=8
pool=mp.Pool(processes=nbProc)
- asyncResult=pool.map_async(work,[(i,varName,scopeName) for i in xrange(nbProc)])
+ asyncResult=pool.map_async(work,[(i,varName,scopeName) for i in range(nbProc)])
+ print("asyncResult=", asyncResult)
self.assertEqual(asyncResult.get(),nbProc*[0]) # <- the big test is here !
dsm.removeDataScope(scopeName)
wk.waitFor()
self.assertEqual(str2Obj(dss.waitForMonoThrRev(wk)),[7,8,9,10])
keys=[str2Obj(elt) for elt in dss.getAllKeysOfVarWithTypeDict(varName)]
- self.assertEqual(keys,['ab','cd'])
+ self.assertEqual(set(keys),set(['ab','cd']))
def testTransaction6(self):
""" Test to test RdWr global vars with transaction"""
pass
def testTransaction8(self):
- """ EDF 16833 """
+ """ EDF 16833 and EDF17719 """
+ funcContent="""def comptchev(a,b):
+ return "d" not in a
+"""
scopeName="ScopePP"
dsm=salome.naming_service.Resolve("/DataServerManager")
dsm.cleanScopesInNS()
value={"a":1,"b":2}
value2={'a':1,'c':3,'b':2}
+ value3={'a':1,'c':3,'b':2,'d':4}
varName="abc"
- t0=dss.createRdExtVarFreeStyleTransac(varName,obj2Str(value),"sha1") # sha1 is the key used to compare the initial value
+ t0=dss.createRdExtVarFreeStyleTransac(varName,obj2Str(value),funcContent) # sha1 is the key used to compare the initial value
dss.atomicApply([t0])
self.assertEqual(str2Obj(dss.fetchSerializedContent(varName)),value)
t1=dss.addMultiKeyValueSession(varName)
t1.addKeyValueInVarErrorIfAlreadyExistingNow(obj2Str("c"),obj2Str(3))
dss.atomicApply([t1])
self.assertEqual(str2Obj(dss.fetchSerializedContent(varName)),value2)
- t2=dss.createRdExtVarFreeStyleTransac(varName,obj2Str(value),"sha1") # key is the same as original one -> OK
+ t2=dss.createRdExtVarFreeStyleTransac(varName,obj2Str(value),funcContent) # func says OK this is the same (even if it is not the case) as original one -> OK
dss.atomicApply([t2])
self.assertEqual(str2Obj(dss.fetchSerializedContent(varName)),value2) # value2 remains untouched
- t3=dss.createRdExtVarFreeStyleTransac(varName,obj2Str(value),"sha2")
- self.assertRaises(SALOME.SALOME_Exception,dss.atomicApply,[t3]) # sha2 != sha1 -> rejected
+ t3=dss.addMultiKeyValueSession(varName)
+ t3.addKeyValueInVarErrorIfAlreadyExistingNow(obj2Str("d"),obj2Str(4))
+ dss.atomicApply([t3])
+ self.assertEqual(str2Obj(dss.fetchSerializedContent(varName)),value3)
+ t4=dss.createRdExtVarFreeStyleTransac(varName,obj2Str(value),funcContent)
+ self.assertRaises(SALOME.SALOME_Exception,dss.atomicApply,[t4]) # d is in dict pointed by var. Func returns false -> rejected
+ self.assertEqual(str2Obj(dss.fetchSerializedContent(varName)),value3)
pass
def testTransaction9(self):
- """ EDF 16833 : use case 2. Trying to createRdExt during add key session"""
+ """ EDF 16833 and EDF17719 : use case 2. Trying to createRdExt during add key session"""
+ funcContent="""def comptchev(a,b):
+ return a==b
+"""
scopeName="ScopePP"
dsm=salome.naming_service.Resolve("/DataServerManager")
dsm.cleanScopesInNS()
value2={'a':1,'c':3,'b':2}
varName="abc"
- t0=dss.createRdExtVarFreeStyleTransac(varName,obj2Str(value),"sha1")
+ t0=dss.createRdExtVarFreeStyleTransac(varName,obj2Str(value),funcContent)
dss.atomicApply([t0])
self.assertEqual(str2Obj(dss.fetchSerializedContent(varName)),value)
t1=dss.addMultiKeyValueSession(varName)
- t2=dss.createRdExtVarFreeStyleTransac(varName,obj2Str(value),"sha1")
+ t2=dss.createRdExtVarFreeStyleTransac(varName,obj2Str(value),funcContent)
dss.atomicApply([t2])
self.assertEqual(str2Obj(dss.fetchSerializedContent(varName)),value)
t1.addKeyValueInVarErrorIfAlreadyExistingNow(obj2Str("c"),obj2Str(3))