def _setup_fake_check(): # A bit hacky, but we don't want to run a full test every time test = _FakeCheck() test._job = Job.create( getscheduler('local')(), getlauncher('local')(), 'fakejob') test.job._completion_time = time.time() return test
def fake_check(): class _FakeCheck(rfm.RegressionTest): pass # A bit hacky, but we don't want to run a full test every time test = _FakeCheck() test._job = Job.create( getscheduler('local')(), getlauncher('local')(), 'fakejob') test.job._completion_time = time.time() return test
def slurm_scheduler_patched(slurm_nodes): ret = getscheduler('slurm')() ret.allnodes = lambda: _create_nodes(slurm_nodes) ret._get_default_partition = lambda: 'pdef' ret._get_reservation_nodes = lambda res: { n for n in ret.allnodes() if n.name != 'nid00001' } ret._get_nodes_by_name = lambda name: { n for n in ret.allnodes() if n.name == name } return ret
def fake_check(): class _FakeCheck(rfm.RegressionTest): pass @sn.deferrable def error(): raise BaseException # A bit hacky, but we don't want to run a full test every time test = _FakeCheck() test._job = Job.create( getscheduler('local')(), getlauncher('local')(), 'fakejob') test.job._completion_time = time.time() test.job._jobid = 12345 test.job._nodelist = ['localhost'] test.custom = 'hello extras' test.custom_list = ['custom', 3.0, ['hello', 'world']] test.custom_dict = {'a': 1, 'b': 2} test.deferred = sn.defer('hello') test.deferred_error = error() return test
def fake_check(): class _FakeCheck(rfm.RegressionTest): param = parameter(range(3), loggable=True, fmt=lambda x: 10 * x) custom = variable(str, value='hello extras', loggable=True) custom_list = variable(list, value=['custom', 3.0, ['hello', 'world']], loggable=True) custom_dict = variable(dict, value={'a': 1, 'b': 2}, loggable=True) # x is a variable that is loggable, but is left undefined. We want to # make sure that logging does not crash and simply reports is as # undefined x = variable(str, loggable=True) # A bit hacky, but we don't want to run a full test every time test = _FakeCheck(variant_num=1) test._job = Job.create( getscheduler('local')(), getlauncher('local')(), 'fakejob') test.job._completion_time = time.time() test.job._jobid = 12345 test.job._nodelist = ['localhost'] return test
def create(cls, site_config): # Create the whole system hierarchy from bottom up sysname = site_config.get('systems/0/name') partitions = [] config_save = site_config.subconfig_system for p in site_config.get('systems/0/partitions'): site_config.select_subconfig(f'{sysname}:{p["name"]}') partid = f"systems/0/partitions/@{p['name']}" part_name = site_config.get(f'{partid}/name') part_sched = getscheduler(site_config.get(f'{partid}/scheduler')) part_launcher = getlauncher(site_config.get(f'{partid}/launcher')) part_container_environs = {} for i, p in enumerate( site_config.get(f'{partid}/container_platforms')): ctype = p['type'] part_container_environs[ctype] = Environment( name=f'__rfm_env_{ctype}', modules=site_config.get( f'{partid}/container_platforms/{i}/modules'), variables=site_config.get( f'{partid}/container_platforms/{i}/variables')) part_environs = [ ProgEnvironment( name=e, modules=site_config.get(f'environments/@{e}/modules'), variables=site_config.get(f'environments/@{e}/variables'), cc=site_config.get(f'environments/@{e}/cc'), cxx=site_config.get(f'environments/@{e}/cxx'), ftn=site_config.get(f'environments/@{e}/ftn'), cppflags=site_config.get(f'environments/@{e}/cppflags'), cflags=site_config.get(f'environments/@{e}/cflags'), cxxflags=site_config.get(f'environments/@{e}/cxxflags'), fflags=site_config.get(f'environments/@{e}/fflags'), ldflags=site_config.get(f'environments/@{e}/ldflags')) for e in site_config.get(f'{partid}/environs') ] partitions.append( SystemPartition( parent=site_config.get('systems/0/name'), name=part_name, scheduler=part_sched, launcher=part_launcher, descr=site_config.get(f'{partid}/descr'), access=site_config.get(f'{partid}/access'), resources=site_config.get(f'{partid}/resources'), environs=part_environs, container_environs=part_container_environs, local_env=Environment( name=f'__rfm_env_{part_name}', modules=site_config.get(f'{partid}/modules'), variables=site_config.get(f'{partid}/variables')), max_jobs=site_config.get(f'{partid}/max_jobs'))) # Restore configuration site_config.select_subconfig(config_save) return System( name=sysname, descr=site_config.get('systems/0/descr'), hostnames=site_config.get('systems/0/hostnames'), modules_system=site_config.get('systems/0/modules_system'), preload_env=Environment( name=f'__rfm_env_{sysname}', modules=site_config.get('systems/0/modules'), variables=site_config.get('systems/0/variables')), prefix=site_config.get('systems/0/prefix'), outputdir=site_config.get('systems/0/outputdir'), resourcesdir=site_config.get('systems/0/resourcesdir'), stagedir=site_config.get('systems/0/stagedir'), partitions=partitions)
def scheduler(request): return getscheduler(request.param)
def create(cls, site_config): # Create the whole system hierarchy from bottom up sysname = site_config.get('systems/0/name') partitions = [] config_save = site_config.subconfig_system for p in site_config.get('systems/0/partitions'): site_config.select_subconfig(f'{sysname}:{p["name"]}') partid = f"systems/0/partitions/@{p['name']}" part_name = site_config.get(f'{partid}/name') part_sched = getscheduler(site_config.get(f'{partid}/scheduler')) part_launcher = getlauncher(site_config.get(f'{partid}/launcher')) part_container_environs = {} for i, p in enumerate( site_config.get(f'{partid}/container_platforms')): ctype = p['type'] part_container_environs[ctype] = Environment( name=f'__rfm_env_{ctype}', modules=site_config.get( f'{partid}/container_platforms/{i}/modules'), variables=site_config.get( f'{partid}/container_platforms/{i}/variables')) part_environs = [ ProgEnvironment( name=e, modules=site_config.get(f'environments/@{e}/modules'), variables=site_config.get(f'environments/@{e}/variables'), cc=site_config.get(f'environments/@{e}/cc'), cxx=site_config.get(f'environments/@{e}/cxx'), ftn=site_config.get(f'environments/@{e}/ftn'), cppflags=site_config.get(f'environments/@{e}/cppflags'), cflags=site_config.get(f'environments/@{e}/cflags'), cxxflags=site_config.get(f'environments/@{e}/cxxflags'), fflags=site_config.get(f'environments/@{e}/fflags'), ldflags=site_config.get(f'environments/@{e}/ldflags')) for e in site_config.get(f'{partid}/environs') ] partitions.append( SystemPartition( parent=site_config.get('systems/0/name'), name=part_name, sched_type=part_sched, launcher_type=part_launcher, descr=site_config.get(f'{partid}/descr'), access=site_config.get(f'{partid}/access'), resources=site_config.get(f'{partid}/resources'), environs=part_environs, container_environs=part_container_environs, local_env=Environment( name=f'__rfm_env_{part_name}', modules=site_config.get(f'{partid}/modules'), variables=site_config.get(f'{partid}/variables')), max_jobs=site_config.get(f'{partid}/max_jobs'), prepare_cmds=site_config.get(f'{partid}/prepare_cmds'), processor=site_config.get(f'{partid}/processor'), devices=site_config.get(f'{partid}/devices'), extras=site_config.get(f'{partid}/extras'))) # Restore configuration, but ignore unresolved sections or # configuration parameters at the system level; if we came up to this # point, then all is good at the partition level, which is enough. site_config.select_subconfig(config_save, ignore_resolve_errors=True) return System( name=sysname, descr=site_config.get('systems/0/descr'), hostnames=site_config.get('systems/0/hostnames'), modules_system=site_config.get('systems/0/modules_system'), preload_env=Environment( name=f'__rfm_env_{sysname}', modules=site_config.get('systems/0/modules'), variables=site_config.get('systems/0/variables')), prefix=site_config.get('systems/0/prefix'), outputdir=site_config.get('systems/0/outputdir'), resourcesdir=site_config.get('systems/0/resourcesdir'), stagedir=site_config.get('systems/0/stagedir'), partitions=partitions)