Skip to content

Commit

Permalink
Add test to cover shared contexts
Browse files Browse the repository at this point in the history
  • Loading branch information
rfbgo committed Jul 31, 2023
1 parent 1d193ba commit a002d43
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 0 deletions.
84 changes: 84 additions & 0 deletions lib/ramble/ramble/test/end_to_end/shared_context.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# Copyright 2022-2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
# https://www.apache.org/licenses/LICENSE-2.0> or the MIT license
# <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
# option. This file may not be copied, modified, or distributed
# except according to those terms.

import os
import glob

import pytest

import ramble.workspace
import ramble.config
import ramble.software_environments
from ramble.main import RambleCommand


# everything here uses the mock_workspace_path
pytestmark = pytest.mark.usefixtures('mutable_config',
'mutable_mock_workspace_path',
'mock_applications',
'mock_modifiers',
)

workspace = RambleCommand('workspace')


def test_shared_contexts(mutable_config, mutable_mock_workspace_path, mock_applications, mock_modifiers):
test_config = """
ramble:
variables:
mpi_command: 'mpirun -n {n_ranks} -ppn {processes_per_node}'
batch_submit: 'batch_submit {execute_experiment}'
partition: 'part1'
processes_per_node: '1'
n_threads: '1'
applications:
shared-context:
workloads:
test_wl:
experiments:
simple_test:
modifiers:
- name: test-mod
variables:
n_nodes: 1
spack:
concretized: true
packages: {}
environments: {}
"""
workspace_name = 'test_shared_context'
with ramble.workspace.create(workspace_name) as ws:
ws.write()

config_path = os.path.join(ws.config_dir, ramble.workspace.config_file_name)

with open(config_path, 'w+') as f:
f.write(test_config)
ws._re_read()

workspace('setup', '--dry-run', global_args=['-w', workspace_name])

# Create fake figures of merit.
exp_dir = os.path.join(ws.root, 'experiments', 'shared-context', 'test_wl', 'simple_test')
with open(os.path.join(exp_dir, 'simple_test.out'), 'w+') as f:
f.write('fom_context mod_context\n')
f.write('123.4 seconds app_fom\n')

with open(os.path.join(exp_dir, 'test_analysis.log'), 'w+') as f:
f.write("fom_contextFOM_GOES_HERE")

workspace('analyze', '-f', 'text', 'json', global_args=['-w', workspace_name])

results_files = glob.glob(os.path.join(ws.root, 'results.latest.txt'))

with open(results_files[0], 'r') as f:
data = f.read()
assert 'matched_shared_context' in data # find the merged context
assert 'test_fom = 123.4' in data # from the app
assert 'shared_context_fom' in data # from the mod

5 changes: 5 additions & 0 deletions var/ramble/repos/builtin.mock/modifiers/test-mod/modifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,13 @@ class TestMod(BasicModifier):
figure_of_merit('test_mod_fom', fom_regex=fom_regex, group_name='fom',
units='', log_file='{analysis_log}', contexts=['test_mod_context'])

figure_of_merit('shared_context_fom', fom_regex=fom_regex, group_name='fom',
units='', log_file='{analysis_log}', contexts=['test_shared_context'])

figure_of_merit_context('test_mod_context', regex=fom_regex, output_format='{context}')

figure_of_merit_context('test_shared_context', regex=fom_regex, output_format='matched_shared_context')

register_builtin('test_builtin', required=True, injection_method='append')

def test_builtin(self):
Expand Down

0 comments on commit a002d43

Please sign in to comment.