예제 #1
0
파일: nexus.py 프로젝트: zty0510/qmcpack
def run_project(*args,**kwargs):
    if nexus_core.graph_sims:
        graph_sims()
    #end if
    pm = ProjectManager()
    pm.add_simulations(*args,**kwargs)
    pm.run_project()
    return pm
예제 #2
0
def run_project(*args,**kwargs):
    pm = ProjectManager()
    pm.add_simulations(*args,**kwargs)
    pm.run_project()
예제 #3
0
def run_project(*args, **kwargs):
    pm = ProjectManager()
    pm.add_simulations(*args, **kwargs)
    pm.run_project()
예제 #4
0
def test_run_project():
    from generic import generic_settings
    from nexus_base import nexus_core
    from simulation import Simulation, input_template
    from project_manager import ProjectManager

    from test_simulation_module import get_test_workflow, n_test_workflows

    tpath = testing.setup_unit_test_output_directory('project_manager',
                                                     'test_run_project',
                                                     divert=True)

    assert (nexus_core.mode == nexus_core.modes.stages)
    assert (len(nexus_core.stages) == 0)

    nexus_core.stages = list(nexus_core.primary_modes)
    nexus_core.stages_set = set(nexus_core.stages)

    primary_modes = ['setup', 'send_files', 'submit', 'get_output', 'analyze']
    assert (value_eq(nexus_core.stages, primary_modes))
    assert (value_eq(nexus_core.stages_set, set(primary_modes)))

    nexus_core.sleep = 0.1

    log = generic_settings.devlog

    flags = [
        'setup', 'sent_files', 'submitted', 'finished', 'got_output',
        'analyzed'
    ]

    def finished(s):
        f = True
        for flag in flags:
            f &= s[flag]
        #end for
        f &= isinstance(s.process_id, int)
        return f

    #end def finished

    def empty(s):
        e = True
        for flag in flags:
            e &= not s[flag]
        #end for
        e &= s.process_id is None
        e &= s.job.system_id is None
        return e

    #end def empty

    sims = []
    for n in range(n_test_workflows):
        #for n in range(1):
        sims.extend(get_test_workflow(n).list())
    #end for

    template = '''
name = "$name"
a    = $a
'''
    for s in sims:
        si = input_template(text=template)
        si.assign(name='input_name', a=1)
        s.input = si
    #end for

    for s in sims:
        assert (empty(s))
    #end for

    pm = ProjectManager()
    pm.machine = sims[0].job.get_machine()
    pm.add_simulations(sims)

    #pm.write_simulation_status()

    pm.run_project()

    #pm.write_simulation_status()
    #print(log.contents())

    for s in sims:
        assert (finished(s))
    #end for

    restore_nexus()

    Simulation.clear_all_sims()