def test_verify_uninit(self): self.assertFalse(SetupParser.initialized) SetupParser.init() self.assertTrue(SetupParser.initialized) SetupParser._uninit() self.assertFalse(SetupParser.initialized) self.assertEqual(SetupParser.singleton, None)
def test_fail_if_not_initialized(self): SetupParser._uninit() # just to make sure! args = [SetupParser, 'selected_block'] self.assertRaises(SetupParser.NotInitialized, getattr, *args) kwargs = {'parameter': 'selected_block'} self.assertRaises(SetupParser.NotInitialized, SetupParser.get, **kwargs)
def test_old_style_initialization(self): # verify that old style works! And as expected :) self.assertFalse(SetupParser.initialized) self.assertRaises(Exception, SetupParser) #SetupParser() #self.assertTrue(SetupParser.initialized) SetupParser('LOCAL') self.assertTrue(hasattr(SetupParser, 'selected_block')) self.assertEqual(getattr(SetupParser, 'selected_block'), 'LOCAL') from ConfigParser import ConfigParser cp = ConfigParser() cp.read(SetupParser.default_file) self.assertEqual(SetupParser.get('max_threads'), cp.get('LOCAL', 'max_threads')) SetupParser._uninit() self.assertFalse(SetupParser.initialized) SetupParser('HPC', is_testing=True) self.assertTrue(SetupParser.initialized) self.assertEqual(SetupParser.selected_block, 'HPC') # test silent override of specified block to support legacy usage SetupParser('HPC', is_testing=True) self.assertEqual(SetupParser.selected_block, 'HPC') SetupParser('LOCAL') self.assertEqual(SetupParser.selected_block, 'LOCAL')
def tearDown(self): SetupParser._uninit() # Revert path sensitive parameters in the ini file cp = ConfigParser() cp.read(self.am_simtools) cp.set('DEFAULT', 'path', '') cp.set('DEFAULT', 'example_dir', '') cp.write(open(self.am_simtools, 'w'))
def test_regression_968(self): """ Investigate a difference of behavior between UNIX systems and Windows Test for https://github.com/InstituteforDiseaseModeling/dtk-tools/issues/968 """ SetupParser.init() singleton = SetupParser.singleton SetupParser.init(singleton=singleton) SetupParser._uninit()
def test_regression_965(self): """ Allow substitutions in simtools.ini Test for https://github.com/InstituteforDiseaseModeling/dtk-tools/issues/965 """ SetupParser.init(selected_block='LOCAL', setup_file=os.path.join(self.input_path, '965', 'simtools.ini'), is_testing=True) self.assertTrue(SetupParser.get('block'), 'PATH1') SetupParser._uninit()
def test_init_with_singleton_provided(self): """ This is covering the case where we call (in a new process): SetupParser(singleton=some_object) :return: """ attr = 'johns_favorite_color' # an attribute NOT in the ini file to make sure we keep any set values value = 'purple' SetupParser('LOCAL') SetupParser.singleton.setup.set('LOCAL', attr, value) singleton = SetupParser.singleton SetupParser._uninit() SetupParser.init(singleton=singleton) self.assertEqual(SetupParser.get(attr), value)
def test_verify_override_block(self): """ 1) set the SetupParser once to get the expected value, unset it, then 2) load a different selected block & then override it to the first. Should get same answer both routes. """ SetupParser.init(selected_block='LOCAL', is_testing=True) expected_params = dict(SetupParser.items(SetupParser.selected_block)) SetupParser._uninit() SetupParser.init(selected_block='HPC', is_testing=True) SetupParser.override_block('LOCAL') override_params = dict(SetupParser.items(SetupParser.selected_block)) self.assertEqual(override_params, expected_params)
def test_regression_959(self): """ Improper 'type' inheritance in simtools.ini Test for https://github.com/InstituteforDiseaseModeling/dtk-tools/issues/959 """ SetupParser.init(selected_block='AM', setup_file=os.path.join(self.input_path, '959', 'simtools1.ini'), is_testing=True) self.assertEqual(SetupParser.get('base_collection_id_dll'), "in AM") SetupParser._uninit() SetupParser.init(selected_block='AM', setup_file=os.path.join(self.input_path, '959', 'simtools2.ini'), is_testing=True) self.assertEqual(SetupParser.get('base_collection_id_dll'), "in HPC") SetupParser._uninit() SetupParser.init(selected_block='AM', setup_file=os.path.join(self.input_path, '959', 'simtools3.ini'), is_testing=True) self.assertEqual(SetupParser.get('base_collection_id_dll'), "in HPC") SetupParser._uninit()
def setUp(self): SetupParser._uninit() current_dir = os.path.dirname(os.path.realpath(__file__)) SetupParser.init(selected_block=self.SELECTED_BLOCK, setup_file=os.path.join(current_dir, 'input', 'am_simtools.ini')) COMPS_login(SetupParser.get('server_endpoint')) self.existing_collection = AssetCollection( base_collection=get_asset_collection(self.EXISTING_COLLECTION_ID)) self.existing_collection.prepare(location='HPC') self.existing_COMPS_asset_files = self.existing_collection.asset_files_to_use # a FileList object dir = os.path.join(self.INPUT_DIR, 'files') files = [os.path.join(dir, f) for f in os.listdir(dir)] root = os.path.dirname(os.path.dirname(files[0])) files = [ os.path.join( os.path.split(os.path.dirname(f))[1], os.path.basename(f)) for f in files ] self.local_files = FileList(root=root, files_in_root=files) # take one away files = [ os.path.join(f.relative_path, f.file_name) for f in self.local_files.files if f.file_name != 'file1_REMOTE_ONLY' ] # add some more dir = os.path.join(self.INPUT_DIR, 'additional_files') additional_files = [os.path.join(dir, f) for f in os.listdir(dir)] additional_files = [ os.path.join( os.path.split(os.path.dirname(f))[1], os.path.basename(f)) for f in additional_files ] files += additional_files self.local_files_plus_minus = FileList(root=root, files_in_root=files)
def tearDown(self): SetupParser._uninit()
def tearDown(self): os.chdir(self.cwd) SetupParser._uninit()
def test_block_inheritance(self): """ Issue 1246 Verify that multi-level block inheritance works properly and that 'type' percolates from the deepest-level (root) of an inheritance chain. """ # # ck4, template for following tests/asserts # SetupParser.init(selected_block='LOCAL', # setup_file=os.path.join(self.input_path, '1246', somedir, 'simtools.ini'), is_testing=True) # something = None # self.assertTrue(something) # SetupParser._uninit() # # Using a 3 level-inheritance scheme in all of these cases # # descendant block values override parent block values # EXCEPT: 'type is inherited from the inheritance chain root # verify that block order in the ini file does not matter for arbitrary key/values OR 'type' values = {} types = {} for i in range(1, 4): testdir = 'ordering%d' % i SetupParser.init(selected_block='LOCALB', setup_file=os.path.join(self.input_path, '1246', testdir, 'simtools.ini'), is_testing=True) values[testdir] = SetupParser.get('a') types[testdir] = SetupParser.get('type') SetupParser._uninit() unique_values = sorted(set(values.values())) self.assertEqual(unique_values, ['3']) unique_types = sorted(set(types.values())) self.assertEqual(unique_types, ['LOCAL']) # verify that the proper values are inherited, regardless of the level in the inheritance chain values are # located. SetupParser.init(selected_block='LOCALB', setup_file=os.path.join(self.input_path, '1246', 'mixedLevelValues', 'simtools.ini'), is_testing=True) self.assertEqual(SetupParser.get('a'), '1') self.assertEqual(SetupParser.get('b'), '3') self.assertEqual(SetupParser.get('c'), '5') self.assertEqual(SetupParser.get('d'), '7') self.assertEqual(SetupParser.get('e'), '10') SetupParser._uninit() # Blocks used as the 'type' should fail if missing kwargs = { 'selected_block': 'LOCALB', 'setup_file': os.path.join(self.input_path, '1246', 'missingReferencedBlock', 'simtools.ini'), 'is_testing': True } self.assertRaises(SetupParser.InvalidBlock, SetupParser.init, **kwargs) SetupParser._uninit() # Blocks missing 'type' should fail kwargs = { 'selected_block': 'LOCALB', 'setup_file': os.path.join(self.input_path, '1246', 'missingType', 'simtools.ini'), 'is_testing': True } self.assertRaises(SetupParser.InvalidBlock, SetupParser.init, **kwargs) SetupParser._uninit()