Пример #1
0
 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)
Пример #2
0
 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)
Пример #3
0
    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'))
Пример #5
0
 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()
Пример #6
0
 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()
Пример #7
0
 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)
Пример #8
0
 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)
Пример #9
0
    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)
Пример #11
0
 def tearDown(self):
     SetupParser._uninit()
Пример #12
0
 def tearDown(self):
     os.chdir(self.cwd)
     SetupParser._uninit()
Пример #13
0
    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()