示例#1
0
    def test_enforcements(self):
        mock = settings.Settings()

        xml = six.StringIO(
            '<settings-definitions><okaySetting type="int" default="17"/></settings-definitions>'
        )
        reader = settingsIO.SettingsDefinitionReader(mock)

        # put 'okaySetting' into the mock settings object
        reader.readFromStream(xml, fmt=reader.SettingsInputFormat.XML)

        self.assertEqual(mock["okaySetting"], 17)

        # we'll allow ARMI to run while ignoring old settings, but will issue warnings.
        xml = six.StringIO('<settings><OOGLYBOOGLY value="18"/></settings>')
        reader = settingsIO.SettingsReader(mock)
        reader.readFromStream(xml, fmt=reader.SettingsInputFormat.XML)
        with self.assertRaises(exceptions.NonexistentSetting):
            mock["OOGLYBOOGLY"]

        settingsRules.RENAMES["OOGLYBOOGLY"] = "okaySetting"
        xml = six.StringIO('<settings><OOGLYBOOGLY value="18"/></settings>')
        reader = settingsIO.SettingsReader(mock)
        reader.readFromStream(xml, fmt=reader.SettingsInputFormat.XML)

        self.assertEqual(mock["okaySetting"], 18)
示例#2
0
    def test_noAmbiguous(self):
        """Tests that settings need essentially full definitions

        :ref:`REQ32335060-e995-4ef8-a818-aaba4e8d1f85`
        """
        mock = settings.Settings()

        xml = six.StringIO('<settings-definitions><badSetting default="17"/>'
                           "</settings-definitions>")
        with self.assertRaises(exceptions.SettingException):
            reader = settingsIO.SettingsDefinitionReader(mock)
            reader.readFromStream(xml, fmt=reader.SettingsInputFormat.XML)
示例#3
0
    def test_settingsVersioning(self):
        """Tests the version protection and run-stops in settings

        :ref:`REQb03e7fc0-754b-46b1-8400-238622e5ba0c`
        """
        mock = settings.Settings()
        xml = six.StringIO(
            '<?xml version="1.0" ?><settings version="beepboop"><okayDokay value="2" /></settings>'
        )

        with self.assertRaises(exceptions.SettingException):
            reader = settingsIO.SettingsDefinitionReader(mock)
            reader.readFromStream(xml, fmt=reader.SettingsInputFormat.XML)
示例#4
0
    def test_noSharedName(self):
        """Tests that settings can't have the same name

        :ref:`REQ78f4a816-4dff-4525-82d9-7e0620943eaa`
        """
        mock = settings.Settings()

        xml = six.StringIO(
            '<settings-definitions><okaySetting type="int" default="17"/>'
            '<OKAYSetting type="int" default="27"/></settings-definitions>')
        with self.assertRaises(exceptions.SettingNameCollision):
            reader = settingsIO.SettingsDefinitionReader(mock)
            reader.readFromStream(xml, fmt=reader.SettingsInputFormat.XML)
示例#5
0
    def loadAllDefaults(self):
        r"""Initializes all setting objects from the default files

        Crawls the res folder for all XML files, tries to load them as settings files
        and sets all default settings from there. (if there is a duplicate setting it
        will throw an error)

        Also grabs explicitly-defined Settings objects for framework settings.

        The formatting of the file name is important as it clues it in to what's valid.

        """
        for dirname, _dirnames, filenames in os.walk(armi.RES):
            for filename in filenames:
                if filename.lower().endswith("settings.xml"):
                    reader = settingsIO.SettingsDefinitionReader(self)
                    reader.readFromFile(os.path.join(dirname, filename))

        for fwSetting in fwSettings.getFrameworkSettings():
            self.settings[fwSetting.name] = fwSetting
示例#6
0
    def test_basicRules(self):
        """Tests that settings need some basic rule following behavior

        :ref:`REQd9e90f54-1add-43b4-943a-bbccaf34c7dc`
        """
        mock = settings.Settings()

        xml = six.StringIO(
            '<settings-definitions><banana type="int" default="17" min="2" max="20"/>'
            "</settings-definitions>")
        reader = settingsIO.SettingsDefinitionReader(mock)
        reader.readFromStream(xml, fmt=reader.SettingsInputFormat.XML)

        with self.assertRaises(ValueError):
            mock["banana"] = "spicy"
        with self.assertRaises(ValueError):
            mock["banana"] = 1
        with self.assertRaises(ValueError):
            mock["banana"] = 25

        mock["banana"] = 2
        mock["banana"] = 12
        mock["banana"] = 20