Skip to content

Commit

Permalink
Adds forces support file with functions to check ensemble dir, output…
Browse files Browse the repository at this point in the history
… files. functions added to conclusion of run_libe_forces
  • Loading branch information
jlnav committed May 5, 2020
1 parent 60d4d27 commit d85c48c
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 11 deletions.
61 changes: 61 additions & 0 deletions libensemble/tests/scaling_tests/forces/forces_support.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import os

def check_log_exception():
with open('ensemble.log', 'r') as el:
out = el.readlines()
assert 'forces_simf.ForcesException\n' in out, \
"ForcesException not received by manager or logged."

def test_libe_stats(status):
with open('libE_stats.txt', 'r') as ls:
out = ls.readlines()
assert all([line.endswith(status) for line in out if 'sim' in line]), \
"Deliberate error status not logged or raised for all sim instances."


def test_ensemble_dir(libE_specs, dir, nworkers, sim_max):
if not os.path.isdir(dir):
print('Specified ensemble directory {} not found.'.format(dir))
return

if libE_specs.get('sim_dirs_make') == False:
print('Typical tests of ensemble directories dont apply without sim_dirs.')
return

if libE_specs.get('use_worker_dirs'):
assert len(os.listdir(dir)) == nworkers, \
"Number of worker directories ({}) doesn't match nworkers ({})".format(len(os.listdir(dir)), nworkers)

num_sim_dirs = 0
files_found = []

worker_dirs = [i for i in os.listdir(dir) if i.startswith('worker')]
for worker_dir in worker_dirs:
sim_dirs = [i for i in os.listdir(os.path.join(dir, worker_dir)) if i.startswith('sim')]
num_sim_dirs += len(sim_dirs)

for sim_dir in sim_dirs:
files_found.append(all([i in os.listdir(os.path.join(dir, worker_dir, sim_dir)) for i in ['err.txt', 'forces.stat', 'out.txt']]))

assert num_sim_dirs == sim_max, \
"Number of simulation specific-directories ({}) doesn't match sim_max ({})".format(num_sim_dirs, sim_max)

assert all(files_found), \
"Set of expected files ['err.txt', 'forces.stat', 'out.txt'] not found in each sim_dir."

else:
sim_dirs = os.listdir(dir)
assert all([i.startswith('sim') for i in sim_dirs]), \
"All directories within ensemble dir not labeled as (or aren't) sim_dirs."

assert len(sim_dirs) == sim_max, \
"Number of simulation specific-directories ({}) doesn't match sim_max ({})".format(len(sim_dirs), sim_max)

files_found = []
for sim_dir in sim_dirs:
files_found.append(all([i in os.listdir(os.path.join(dir, sim_dir)) for i in ['err.txt', 'forces.stat', 'out.txt']]))

assert all(files_found), \
"Set of expected files ['err.txt', 'forces.stat', 'out.txt'] not found in each sim_dir."

print('Output directory {} passed tests.'.format(dir))
14 changes: 3 additions & 11 deletions libensemble/tests/scaling_tests/forces/run_libe_forces.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from libensemble.libE_manager import ManagerException
from libensemble.tools import parse_args, save_libE_output, add_unique_random_streams
from libensemble import libE_logger
from forces_support import test_libe_stats, test_ensemble_dir, check_log_exception

USE_BALSAM = False
PERSIS_GEN = False
Expand All @@ -20,13 +21,6 @@
from libensemble.alloc_funcs.give_sim_work_first import give_sim_work_first as alloc_f


def test_libe_stats(status):
with open('libE_stats.txt', 'r') as ls:
out = ls.readlines()
assert all([line.endswith(status) for line in out if 'sim' in line]), \
"Deliberate error status not logged or raised for all sim instances."


libE_logger.set_level('INFO') # INFO is now default

nworkers, is_master, libE_specs, _ = parse_args()
Expand Down Expand Up @@ -108,13 +102,11 @@ def test_libe_stats(status):

except ManagerException:
if is_master and sim_specs['user']['fail_on_sim']:
with open('ensemble.log', 'r') as el:
out = el.readlines()
assert 'forces_simf.ForcesException\n' in out, \
"ForcesException not received by manager or logged."
check_log_exception()
test_libe_stats('Exception occurred\n')
else:
if is_master:
save_libE_output(H, persis_info, __file__, nworkers)
if sim_specs['user']['fail_on_submit']:
test_libe_stats('Task Failed\n')
test_ensemble_dir(libE_specs, './ensemble', nworkers, sim_max)

0 comments on commit d85c48c

Please sign in to comment.