def test_make_module_dep_hmns(self): """Test for make_module_dep under HMNS""" test_ecs_path = os.path.join( os.path.dirname(os.path.abspath(__file__)), 'easyconfigs', 'test_ecs') all_stops = [x[0] for x in EasyBlock.get_steps()] build_options = { 'check_osdeps': False, 'robot_path': [test_ecs_path], 'valid_stops': all_stops, 'validate': False, } os.environ['EASYBUILD_MODULE_NAMING_SCHEME'] = 'HierarchicalMNS' init_config(build_options=build_options) self.setup_hierarchical_modules() self.contents = '\n'.join([ 'easyblock = "ConfigureMake"', 'name = "pi"', 'version = "3.14"', 'homepage = "http://example.com"', 'description = "test easyconfig"', "toolchain = {'name': 'gompi', 'version': '1.4.10'}", 'dependencies = [', " ('FFTW', '3.3.3'),", ']', ]) self.writeEC() eb = EasyBlock(EasyConfig(self.eb_file)) eb.installdir = os.path.join(config.install_path(), 'pi', '3.14') eb.check_readiness_step() eb.make_builddir() eb.prepare_step() # GCC, OpenMPI and hwloc modules should *not* be included in loads for dependencies mod_dep_txt = eb.make_module_dep() for mod in ['GCC/4.7.2', 'OpenMPI/1.6.4']: regex = re.compile('load.*%s' % mod) self.assertFalse( regex.search(mod_dep_txt), "Pattern '%s' found in: %s" % (regex.pattern, mod_dep_txt)) regex = re.compile('load.*FFTW/3.3.3') self.assertTrue( regex.search(mod_dep_txt), "Pattern '%s' found in: %s" % (regex.pattern, mod_dep_txt))
def test_make_module_dep_hmns(self): """Test for make_module_dep under HMNS""" test_ecs_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'easyconfigs', 'test_ecs') all_stops = [x[0] for x in EasyBlock.get_steps()] build_options = { 'check_osdeps': False, 'robot_path': [test_ecs_path], 'valid_stops': all_stops, 'validate': False, } os.environ['EASYBUILD_MODULE_NAMING_SCHEME'] = 'HierarchicalMNS' init_config(build_options=build_options) self.setup_hierarchical_modules() self.contents = '\n'.join([ 'easyblock = "ConfigureMake"', 'name = "pi"', 'version = "3.14"', 'homepage = "http://example.com"', 'description = "test easyconfig"', "toolchain = {'name': 'gompi', 'version': '1.4.10'}", 'dependencies = [', " ('FFTW', '3.3.3'),", ']', ]) self.writeEC() eb = EasyBlock(EasyConfig(self.eb_file)) eb.installdir = os.path.join(config.install_path(), 'pi', '3.14') eb.check_readiness_step() eb.make_builddir() eb.prepare_step() # GCC, OpenMPI and hwloc modules should *not* be included in loads for dependencies mod_dep_txt = eb.make_module_dep() for mod in ['GCC/4.7.2', 'OpenMPI/1.6.4']: regex = re.compile('load.*%s' % mod) self.assertFalse(regex.search(mod_dep_txt), "Pattern '%s' found in: %s" % (regex.pattern, mod_dep_txt)) regex = re.compile('load.*FFTW/3.3.3') self.assertTrue(regex.search(mod_dep_txt), "Pattern '%s' found in: %s" % (regex.pattern, mod_dep_txt))
def test_make_module_dep(self): """Test for make_module_dep""" self.contents = '\n'.join([ 'easyblock = "ConfigureMake"', 'name = "pi"', 'version = "3.14"', 'homepage = "http://example.com"', 'description = "test easyconfig"', "toolchain = {'name': 'gompi', 'version': '1.1.0-no-OFED'}", 'dependencies = [', " ('FFTW', '3.3.1'),", " ('LAPACK', '3.4.0'),", ']', ]) self.writeEC() eb = EasyBlock(EasyConfig(self.eb_file)) eb.installdir = os.path.join(config.install_path(), 'pi', '3.14') eb.check_readiness_step() if get_module_syntax() == 'Tcl': tc_load = '\n'.join([ "if { ![ is-loaded gompi/1.1.0-no-OFED ] } {", " module load gompi/1.1.0-no-OFED", "}", ]) fftw_load = '\n'.join([ "if { ![ is-loaded FFTW/3.3.1-gompi-1.1.0-no-OFED ] } {", " module load FFTW/3.3.1-gompi-1.1.0-no-OFED", "}", ]) lapack_load = '\n'.join([ "if { ![ is-loaded LAPACK/3.4.0-gompi-1.1.0-no-OFED ] } {", " module load LAPACK/3.4.0-gompi-1.1.0-no-OFED", "}", ]) elif get_module_syntax() == 'Lua': tc_load = '\n'.join([ 'if not isloaded("gompi/1.1.0-no-OFED") then', ' load("gompi/1.1.0-no-OFED")', 'end', ]) fftw_load = '\n'.join([ 'if not isloaded("FFTW/3.3.1-gompi-1.1.0-no-OFED") then', ' load("FFTW/3.3.1-gompi-1.1.0-no-OFED")', 'end', ]) lapack_load = '\n'.join([ 'if not isloaded("LAPACK/3.4.0-gompi-1.1.0-no-OFED") then', ' load("LAPACK/3.4.0-gompi-1.1.0-no-OFED")', 'end', ]) else: self.assertTrue(False, "Unknown module syntax: %s" % get_module_syntax()) expected = tc_load + '\n\n' + fftw_load + '\n\n' + lapack_load self.assertEqual(eb.make_module_dep().strip(), expected) # provide swap info for FFTW to trigger an extra 'unload FFTW' unload_info = { 'FFTW/3.3.1-gompi-1.1.0-no-OFED': 'FFTW', } if get_module_syntax() == 'Tcl': fftw_load = '\n'.join([ "if { ![ is-loaded FFTW/3.3.1-gompi-1.1.0-no-OFED ] } {", " module unload FFTW", " module load FFTW/3.3.1-gompi-1.1.0-no-OFED", "}", ]) elif get_module_syntax() == 'Lua': fftw_load = '\n'.join([ 'if not isloaded("FFTW/3.3.1-gompi-1.1.0-no-OFED") then', ' unload("FFTW")', ' load("FFTW/3.3.1-gompi-1.1.0-no-OFED")', 'end', ]) else: self.assertTrue(False, "Unknown module syntax: %s" % get_module_syntax()) expected = tc_load + '\n\n' + fftw_load + '\n\n' + lapack_load self.assertEqual(eb.make_module_dep(unload_info=unload_info).strip(), expected)
def test_make_module_dep(self): """Test for make_module_dep""" self.contents = '\n'.join([ 'easyblock = "ConfigureMake"', 'name = "pi"', 'version = "3.14"', 'homepage = "http://example.com"', 'description = "test easyconfig"', "toolchain = {'name': 'gompi', 'version': '1.1.0-no-OFED'}", 'dependencies = [', " ('FFTW', '3.3.1'),", " ('LAPACK', '3.4.0'),", ']', ]) self.writeEC() eb = EasyBlock(EasyConfig(self.eb_file)) eb.installdir = os.path.join(config.install_path(), 'pi', '3.14') eb.check_readiness_step() if get_module_syntax() == 'Tcl': tc_load = '\n'.join([ "if { ![ is-loaded gompi/1.1.0-no-OFED ] } {", " module load gompi/1.1.0-no-OFED", "}", ]) fftw_load = '\n'.join([ "if { ![ is-loaded FFTW/3.3.1-gompi-1.1.0-no-OFED ] } {", " module load FFTW/3.3.1-gompi-1.1.0-no-OFED", "}", ]) lapack_load = '\n'.join([ "if { ![ is-loaded LAPACK/3.4.0-gompi-1.1.0-no-OFED ] } {", " module load LAPACK/3.4.0-gompi-1.1.0-no-OFED", "}", ]) elif get_module_syntax() == 'Lua': tc_load = '\n'.join([ 'if not isloaded("gompi/1.1.0-no-OFED") then', ' load("gompi/1.1.0-no-OFED")', 'end', ]) fftw_load = '\n'.join([ 'if not isloaded("FFTW/3.3.1-gompi-1.1.0-no-OFED") then', ' load("FFTW/3.3.1-gompi-1.1.0-no-OFED")', 'end', ]) lapack_load = '\n'.join([ 'if not isloaded("LAPACK/3.4.0-gompi-1.1.0-no-OFED") then', ' load("LAPACK/3.4.0-gompi-1.1.0-no-OFED")', 'end', ]) else: self.assertTrue(False, "Unknown module syntax: %s" % get_module_syntax()) expected = tc_load + '\n\n' + fftw_load + '\n\n' + lapack_load self.assertEqual(eb.make_module_dep().strip(), expected) # provide swap info for FFTW to trigger an extra 'unload FFTW' unload_info = { 'FFTW/3.3.1-gompi-1.1.0-no-OFED': 'FFTW', } if get_module_syntax() == 'Tcl': fftw_load = '\n'.join([ "if { ![ is-loaded FFTW/3.3.1-gompi-1.1.0-no-OFED ] } {", " module unload FFTW", " module load FFTW/3.3.1-gompi-1.1.0-no-OFED", "}", ]) elif get_module_syntax() == 'Lua': fftw_load = '\n'.join([ 'if not isloaded("FFTW/3.3.1-gompi-1.1.0-no-OFED") then', ' unload("FFTW")', ' load("FFTW/3.3.1-gompi-1.1.0-no-OFED")', 'end', ]) else: self.assertTrue(False, "Unknown module syntax: %s" % get_module_syntax()) expected = tc_load + '\n\n' + fftw_load + '\n\n' + lapack_load self.assertEqual( eb.make_module_dep(unload_info=unload_info).strip(), expected)