From e2ff8d395cbb2caa50c9f27153a7620dc0ac6dc0 Mon Sep 17 00:00:00 2001 From: Oli Date: Sun, 14 Nov 2021 18:19:24 -0300 Subject: [PATCH] simple test failing :( --- .gitignore | 2 + mpirunner.py | 11 ++++- script_install.sh | 6 +-- tests/integration/conf_test.ini | 44 ++++++++++++++++++ tests/integration/main.py | 0 tests/integration/test.py | 78 ++++++++++++++++++++++++++++++++ tools/Prealization.py | 8 ++-- tools/Prealization.pyc | Bin 2586 -> 2650 bytes tools/generation/config.py | 8 +++- tools/generation/config.pyc | Bin 1993 -> 2169 bytes tools/generation/fftma_gen.py | 4 +- 11 files changed, 151 insertions(+), 10 deletions(-) create mode 100644 tests/integration/conf_test.ini delete mode 100644 tests/integration/main.py create mode 100644 tests/integration/test.py diff --git a/.gitignore b/.gitignore index a27d7d9..b2a75a7 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ petsc/ petsc4py/ openmpi-2.1.1/ openmpi-2.1.1.tar.bz2 +tests/integration/tmp_output/ +output/ \ No newline at end of file diff --git a/mpirunner.py b/mpirunner.py index 8111d05..a609343 100755 --- a/mpirunner.py +++ b/mpirunner.py @@ -6,6 +6,13 @@ import os import sys from tools.Prealization import realization +CONFIG_FILE_PATH = os.environ['CONFIG_FILE_PATH'] + +print(CONFIG_FILE_PATH) + +dir_path = os.path.dirname(os.path.realpath(__file__)) +print(dir_path) + def main(): comm = MPI.COMM_WORLD @@ -25,7 +32,7 @@ def main(): def sequential(): comm = MPI.COMM_WORLD - conffile = './config.ini' + conffile = CONFIG_FILE_PATH parser,iterables = get_config(conffile) njobs = DotheLoop(-1,parser,iterables) start_job=0 @@ -35,7 +42,7 @@ def sequential(): def manager(): comm = MPI.COMM_WORLD - conffile = './config.ini' + conffile = CONFIG_FILE_PATH parser,iterables = get_config(conffile) njobs = DotheLoop(-1,parser,iterables) start_job=0 diff --git a/script_install.sh b/script_install.sh index c5cbcc2..6e3e7c8 100755 --- a/script_install.sh +++ b/script_install.sh @@ -18,9 +18,9 @@ cd openmpi-2.1.1 make all make install -echo "export PATH=\$PATH:\$HOME/opt/openmpi/bin" >> $HOME/.bashrc +echo "export PATH=\$PATH:\$HOME/opt/openmpi/bin" >> $HOME/.$1rc -echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$HOME/opt/openmpi/lib" >> $HOME/.bashrc +echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$HOME/opt/openmpi/lib" >> $HOME/.$1rc source ~/.$1rc @@ -52,7 +52,7 @@ conda activate py2_7 python --version -pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose +pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose mpi4py # setup petsc diff --git a/tests/integration/conf_test.ini b/tests/integration/conf_test.ini new file mode 100644 index 0000000..f34ffb4 --- /dev/null +++ b/tests/integration/conf_test.ini @@ -0,0 +1,44 @@ +[General] +simDir=tests/integration/tmp_output +startJob=0 +[Iterables] +p=[10,39,15] +seeds=[5462,2] +lc=[4] +connectivity=[1,2,3] +variances=[1] + +[Generation] +Nx = 16 +Ny = 16 +Nz = 16 +variogram_type=1 +binary = yes +kh = 100 +kl = 0.01 +compute_lc = yes +lcBin=yes +genera=yes + + +[Connectivity] +keep_aspect= yes +block_size = 4 +indicators_MinBlockSize =4 +Max_sample_size = 12 +compGconec= 1 +conec=yes + + +[Solver] +num_of_cores = 1 +ref = 2 +solve = yes +rtol = 1e-4 + +[K-Postprocess] +MinBlockSize =1 +Max_sample_size = 4 +kperm=yes +postprocess=yes +SaveVfield=yes \ No newline at end of file diff --git a/tests/integration/main.py b/tests/integration/main.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/integration/test.py b/tests/integration/test.py new file mode 100644 index 0000000..68c16fa --- /dev/null +++ b/tests/integration/test.py @@ -0,0 +1,78 @@ +import filecmp +import os.path +import numpy as np + +def are_dir_trees_equal(dir1, dir2): + """ + Compare two directories recursively. Files in each directory are + assumed to be equal if their names and contents are equal. + + @param dir1: First directory path + @param dir2: Second directory path + + @return: True if the directory trees are the same and + there were no errors while accessing the directories or files, + False otherwise. + """ + + dirs_cmp = filecmp.dircmp(dir1, dir2) + if len(dirs_cmp.left_only)>0 or len(dirs_cmp.right_only)>0 or \ + len(dirs_cmp.funny_files)>0: + print("error aca :(") + return False + (_, mismatch, errors) = filecmp.cmpfiles( + dir1, dir2, dirs_cmp.common_files, shallow=False) + if (len(mismatch)>0 or len(errors)>0) and dirs_cmp.common_files[0] != 'config.ini': + print(dir1) + print(dir2) + #print(dirs_cmp.common_files) + print(mismatch) + print(errors) + print("error aca 2 :(") + + return False + print(dirs_cmp.common_dirs) + for common_dir in dirs_cmp.common_dirs: + print(common_dir) + new_dir1 = os.path.join(dir1, common_dir) + new_dir2 = os.path.join(dir2, common_dir) + are_equal = are_dir_trees_equal(new_dir1, new_dir2) + if not are_equal: + print("error aca 3 :(") + return False + print("todo ok!") + print(dir1, dir2) + return True + +def equal_binaries(path_original, path): + binary_original = np.load(path_original) + + binary = np.load(path) + + diffs = binary_original - binary + + comparisons = np.array([abs(x) < 0.001 for x in diffs]) #NO ME DA TAMPOCO CON ESTE ERROR + + if comparisons.all(): + return True + return False + + +def test(): + os.chdir('../..') #LO COMENTE PARA EVITAR VOLVER A CORRERLO + #config_file = os.path.abspath("./tests/integration/conf_test.ini") + #os.system("CONFIG_FILE_PATH="+ config_file + " mpirun python mpirunner.py") + + #are_equal = are_dir_trees_equal("./tests/integration/tmp_output","./test_loop") + + for i in range(90): # HABRIA QUE HACER ESTO PERO PARA TODOS + path = './tests/integration/tmp_output/{}/D.npy'.format(i) + path_original = './test_loop/{}/D.npy'.format(i) + + if not equal_binaries(path_original, path): + print("Failure :( on {}".format(i)) + return + + print("Success!") + +test() \ No newline at end of file diff --git a/tools/Prealization.py b/tools/Prealization.py index 9abb286..d2860cd 100755 --- a/tools/Prealization.py +++ b/tools/Prealization.py @@ -9,13 +9,15 @@ from shutil import copyfile from solver.comp_Kperm_scale import comp_kperm_sub from solver.Ndar import PetscP +CONFIG_FILE_PATH = os.environ['CONFIG_FILE_PATH'] + def realization(job): if job==-1: return - conffile='./config.ini' + conffile=CONFIG_FILE_PATH parser, iterables = get_config(conffile) start_job=int(parser.get('General',"startJob")) @@ -27,11 +29,11 @@ def realization(job): datadir=rdir+str(job)+'/' create_dir(datadir,job) if job==0: - copyfile(conffile,rdir+conffile[2:]) + copyfile(conffile,rdir+"config.ini") genera=parser.get('Generation',"genera") if genera!='no': - os.system('python ./tools/generation/fftma_gen.py '+ datadir +' '+str(job)+' '+conffile) + os.system('CONFIG_FILE_PATH='+CONFIG_FILE_PATH+ ' python ./tools/generation/fftma_gen.py '+ datadir +' '+str(job)) nr= DotheLoop(job,parser, iterables)[3] -iterables['seeds'][0] diff --git a/tools/Prealization.pyc b/tools/Prealization.pyc index b8861cc80de3a8f7bf1205e8a5afbc1059a99113..398c9c2bd655aa694b96bdc1829eb1927fadc33b 100644 GIT binary patch delta 1136 zcmbVLOKTHR6#ni^GMPM^G-)OesI|2U3)Xc4*OsFNg zx6DEibmz*2pgY0;;8Oe#g3yf{(Q_w_ExPNFb8_dq=X~coCnv8m-!esYCmz|dw`+Cm zJ_>!$kvX5Yi?656AR1}#F!HMz@Ccp(t7G6%|BwY|xLt~Ee|b|9Ny@o$YpJq0zgAhi zd2Ma^(#k@e5tt$i%S$rnskg<_GXm%_2nLs-&u~XUk3K4d0#`vp1y{gT?-MI-2KFIA z^c5IfgV77Z4MNZ*B*6gFAPClcOaY@S9zs(=_ZZ zHC1$XAVO&9;L|aXScAu55VOG(F!riaWl1E$UQfwyhLF$o^dW5ueAK56!=(}f+6og9 z86ZXK=&OVDzfIGiGct#Gdy##^Abf0yM~4Ln%=!gl1LPt&L52^-;l_qF3yK>7&!HJW z_a_rkG-7DPArfeefak#rQjQ3CE9%rj5`BO@EGQ!7i;RL7Ax0t6aN|-JO|-A=AKy6m zA;0DbT;dz_dBgjmX6AN(N{X29Ba(2F!w6RqWB*NpgSP1~t;v%0n;!2-;LL~7-KBqz0k&4)_bpAK6{<;@&mhV zmhF~RzG~Mu+Ga;MWl?Lj%w0(v&t<(2CN~f`YwNta{KwA?-Lxy`)(qDsQ2st_&LW9tw&#Zcwm_Q5+Ic$-HJs>y%sVQb67-0saj?joP4yHs? zvFJNU>L>1aCHspu5iyVSM`|WSMsW|42$K*Nx*GhSkOnSvsLm=@TTH>8P^5||ZBkc6 zG8Mh#mBSP&8TmeJMW|6_{#0wX=7oF$CCy z1ukb|lNpFAWDYWqFsppgt`3dK?OT9Yj5VhbPLDOWxtxu@YQ=dvO=_sc4a7({V6?wa zxhzCEy_O3sx+g33R^Pkt?yb0<8?EYB60W**(Ib6HKd+J#{WmL~d`wuZmZe&%x1LWY zMAwWa+bud8LYfDSV)Wg(zP?3OeczMy8;*49jfY-90>a(v2ld^4Q#!p~+pl}=$IS!x zpxxYV$>wI?3tCRE9eqfZ)?|j}{kGF{pE%O(d&**PixzN;>6*dvtQ==^tiZC&V&&*f z@@;2{8f1!=eW%+Nt{*gNR4gmAja9W=R3*h|2~OqGuACvFn-qbmD7nUROk=Zrxfp#* mT{e`N#<^%d{d~8vu5#7>Up&rE=b#i_GV`nyZJ0JsU;P7&JK7Tf diff --git a/tools/generation/config.py b/tools/generation/config.py index 4938da2..a5168fe 100755 --- a/tools/generation/config.py +++ b/tools/generation/config.py @@ -2,12 +2,18 @@ import numpy as np import configparser import json +import os + +dir_path = os.path.dirname(os.path.realpath(__file__)) +print(dir_path) def get_config(conffile): parser = configparser.ConfigParser() - parser.read(conffile) + print(parser.read(conffile)) + + print(parser) cons=json.loads(parser.get('Iterables',"connectivity")) ps=json.loads(parser.get('Iterables',"p")) diff --git a/tools/generation/config.pyc b/tools/generation/config.pyc index 15f2ec05737b2dffc39314e288156143dc511566..7e3f3109e5443683ed6794361003b42339c61996 100644 GIT binary patch delta 491 zcmbtOJ5Iwu5S?AyaU7fkQ4*9Q2#F@L1Pu*>0x3aAAccxFX7O&4wbpiIZwjPP!2t+9 z3E}|MT!9nNQ_(SN!3naOdGns$eDQ(n5;>-@F9)xy<2@u|r!aj4h% E1+02}00000 delta 308 zcmewN_T0?+|p@o4ViiIJC8O&gv*rX(@!^pr; z!oZNl$k5EdP|L_r!^n`u#8AV)(9Fodxbe6*lZHJ|zkXg?v3^E=ZmND}a(+%~a&ksy zzP@omVnJ$=ep+T;Vvc@+`D8C0umZPj6@U@?LaFIT^