Пример #1
0
    def __get_jmx_shorthands(self, configs):
        """
        Generate json file with execution, executor and scenario settings
        :type configs: list
        :return: list
        """

        jmxes = []
        for filename in configs[:]:
            if filename.lower().endswith(".jmx"):
                jmxes.append(filename)
                configs.remove(filename)

        if jmxes:
            self.log.debug("Adding JMX shorthand config for: %s", jmxes)
            fds = NamedTemporaryFile(prefix="jmx_", suffix=".json")
            fname = fds.name
            fds.close()

            config = Configuration()

            for jmx_file in jmxes:
                config.get(ScenarioExecutor.EXEC, []).append({"executor": "jmeter", "scenario": jmx_file})

            config.dump(fname, Configuration.JSON)

            return [fname]
        else:
            return []
Пример #2
0
    def __get_jtl_shorthands(self, configs):
        """
        Generate json file with execution, executor and scenario settings
        :type configs: list
        :return: list
        """
        jtls = []
        for filename in configs[:]:
            if filename.lower().endswith(".jtl"):
                jtls.append(filename)
                configs.remove(filename)

        if jtls:
            self.log.debug("Adding JTL shorthand config for: %s", jtls)
            fds = NamedTemporaryFile(prefix="jtl_", suffix=".json")
            fname = fds.name
            fds.close()

            config = Configuration()

            for jtl in jtls:
                piece = BetterDict.from_dict({"executor": "external-results-loader", "data-file": jtl})
                config.get(ScenarioExecutor.EXEC, [], force_set=True).append(piece)

            config.dump(fname, Configuration.JSON)

            return [fname]
        else:
            return []
Пример #3
0
    def __get_jmx_shorthands(self, configs):
        """
        Generate json file with execution, executor and scenario settings
        :type configs: list
        :return: list

        """

        jmxes = []
        for filename in configs[:]:
            if filename.lower().endswith(".jmx"):
                jmxes.append(filename)
                configs.remove(filename)

        if jmxes:
            self.log.debug("Adding JMX shorthand config for: %s", jmxes)
            fds, fname = tempfile.mkstemp(".json", "jmxes_", dir=self.engine.artifacts_base_dir)
            os.close(fds)

            config = Configuration()

            for jmx_file in jmxes:
                config.get("execution", []).append({"executor": "jmeter", "scenario": {"script": jmx_file}})

            config.dump(fname, Configuration.JSON)

            return [fname]
        else:
            return []
Пример #4
0
 def test_unicode(self):
     obj = Configuration()
     expected = six.u("Юникод")
     obj.merge({
         "ustr": expected,
     })
     ustr = obj.get("ustr", "nope")
     self.assertEqual(ustr, expected)
Пример #5
0
 def test_unicode(self):
     obj = Configuration()
     expected = six.u("Юникод")
     obj.merge({
         "ustr": expected,
     })
     ustr = obj.get("ustr", "nope")
     self.assertEqual(ustr, expected)
Пример #6
0
    def __get_jmx_shorthands(self, configs):
        """
        Generate json file with execution, executor and scenario settings
        :type configs: list
        :return: list

        """

        jmxes = []
        for filename in configs[:]:
            if filename.lower().endswith(".jmx"):
                jmxes.append(filename)
                configs.remove(filename)

        if jmxes:
            self.log.debug("Adding JMX shorthand config for: %s", jmxes)
            fds, fname = tempfile.mkstemp(".json",
                                          "jmxes_",
                                          dir=self.engine.artifacts_base_dir)
            os.close(fds)

            config = Configuration()

            for jmx_file in jmxes:
                config.get("execution", []).append({
                    "executor": "jmeter",
                    "scenario": {
                        "script": jmx_file
                    }
                })

            config.dump(fname, Configuration.JSON)

            return [fname]
        else:
            return []
Пример #7
0
class TestConfigOverrider(BZTestCase):
    def setUp(self):
        super(TestConfigOverrider, self).setUp()
        self.obj = ConfigOverrider(logging.getLogger())
        self.config = Configuration()

    def test_numbers(self):
        self.obj.apply_overrides(["int=11", "float=3.14"], self.config)
        self.assertEqual(self.config.get("int"), int(11))
        self.assertEqual(self.config.get("float"), float(3.14))

    def test_booleans(self):
        self.obj.apply_overrides(["yes=true", "no=false"], self.config)
        self.assertEqual(self.config.get("yes"), bool(True))
        self.assertEqual(self.config.get("no"), bool(False))

    def test_strings(self):
        self.obj.apply_overrides([
            "plain=ima plain string", """quoted='"ima quoted string"'""",
            """empty-quoted='""'""", '''escaped="a "b" 'c' d"''',
            '''escaped-quoted="a "b" 'c' d"'''
        ], self.config)
        self.assertEqual(self.config.get("plain"), str("ima plain string"))
        self.assertEqual(self.config.get("quoted"),
                         str('''"ima quoted string"'''))
        self.assertEqual(self.config.get("empty-quoted"), str('""'))
        self.assertEqual(self.config.get("escaped"), str('''"a "b" 'c' d"'''))
        self.assertEqual(self.config.get("escaped-quoted"),
                         str('''"a "b" 'c' d"'''))

    def test_strings_literals_clash(self):
        # we want to pass literal string 'true' (and not have it converted to bool(True))
        self.obj.apply_overrides(['yes="true"', 'list="[1,2,3]"'], self.config)
        self.assertEqual(self.config.get("yes"), str("true"))
        self.assertEqual(self.config.get("list"), str("[1,2,3]"))

    def test_null(self):
        self.obj.apply_overrides(['nothing=null'], self.config)
        self.assertEqual(self.config.get("nothing"), None)

    def test_objects(self):
        self.config.merge({
            "obj": {
                "key": "142857",
            },
        })
        self.obj.apply_overrides(['obj={"key": "value"}'], self.config)
        self.assertEqual(self.config.get("obj").get("key"), str("value"))

    def test_lists(self):
        self.config.merge({
            "list": ["stuff"],
        })
        self.obj.apply_overrides(['list=[1, 2.0, "str", []]'], self.config)
        self.assertEqual(self.config.get("list"), list([1, 2.0, "str", []]))

    def test_nested_quotation(self):
        # bzt -o man='{"name": "Robert \"Destroyer of Worlds\" Oppenheimer"}'
        self.obj.apply_overrides([
            '''man={"name": "Robert \\"Destroyer of Worlds\\" Oppenheimer"}'''
        ], self.config)
        self.assertEqual(
            self.config.get("man").get("name"),
            str('Robert "Destroyer of Worlds" Oppenheimer'))

    def test_no_override(self):
        self.obj.apply_overrides(['nothing='], self.config)
        self.assertEqual(self.config.get("nothing"), None)

    def test_unquoted_keys(self):
        self.obj.apply_overrides(['obj={abc: def}'], self.config)
        self.assertEqual(self.config.get("obj").get("abc"), str("def"))

    def test_override_delete_from_list(self):
        self.config["items"] = [1, 2, 3]
        self.config["dict"] = {"1": 1, "2": 2, "3": 3}
        self.obj.apply_overrides(['items.^-4=null'], self.config)
        self.obj.apply_overrides(['items.^1=null'], self.config)
        self.obj.apply_overrides(['dict.^2=null'], self.config)
        self.assertEqual(self.config.get("items"), [1, 3])
        self.assertEqual(self.config.get("dict"), {"1": 1, "3": 3})

    def test_override_multiple(self):
        self.config["items"] = [1, 2, 3]
        self.config["dict"] = {
            "listObj": [{
                "k1": "v1"
            }, {
                "k2": "v2"
            }, {
                "k3": "v3"
            }],
            "lislis": [1, 2, 3, 4],
            "k1": "v3"
        }
        self.obj.apply_overrides(['items.*1=v2'], self.config)
        self.obj.apply_overrides(['dict.*k1=v2'], self.config)
        self.assertEqual(
            self.config.get("dict"), {
                'listObj': [{
                    'k1': 'v2'
                }, {
                    'k2': 'v2'
                }, {
                    'k3': 'v3'
                }],
                'lislis': [1, 2, 3, 4],
                'k1': 'v2'
            })
        self.assertEqual(self.config.get("items"), [1, 2, 3])
Пример #8
0
class TestConfigOverrider(BZTestCase):
    def setUp(self):
        super(TestConfigOverrider, self).setUp()
        self.obj = ConfigOverrider(logging.getLogger())
        self.config = Configuration()

    def test_numbers(self):
        self.obj.apply_overrides(["int=11", "float=3.14"], self.config)
        self.assertEqual(self.config.get("int"), int(11))
        self.assertEqual(self.config.get("float"), float(3.14))

    def test_booleans(self):
        self.obj.apply_overrides(["yes=true", "no=false"], self.config)
        self.assertEqual(self.config.get("yes"), bool(True))
        self.assertEqual(self.config.get("no"), bool(False))

    def test_strings(self):
        self.obj.apply_overrides(["plain=ima plain string",
                                  """quoted='"ima quoted string"'""",
                                  """empty-quoted='""'""",
                                  '''escaped="a "b" 'c' d"''',
                                  '''escaped-quoted="a "b" 'c' d"'''], self.config)
        self.assertEqual(self.config.get("plain"), str("ima plain string"))
        self.assertEqual(self.config.get("quoted"), str('''"ima quoted string"'''))
        self.assertEqual(self.config.get("empty-quoted"), str('""'))
        self.assertEqual(self.config.get("escaped"), str('''"a "b" 'c' d"'''))
        self.assertEqual(self.config.get("escaped-quoted"), str('''"a "b" 'c' d"'''))

    def test_strings_literals_clash(self):
        # we want to pass literal string 'true' (and not have it converted to bool(True))
        self.obj.apply_overrides(['yes="true"',
                                  'list="[1,2,3]"'], self.config)
        self.assertEqual(self.config.get("yes"), str("true"))
        self.assertEqual(self.config.get("list"), str("[1,2,3]"))

    def test_null(self):
        self.obj.apply_overrides(['nothing=null'], self.config)
        self.assertEqual(self.config.get("nothing"), None)

    def test_objects(self):
        self.config.merge({
            "obj": {
                "key": "142857",
            },
        })
        self.obj.apply_overrides(['obj={"key": "value"}'], self.config)
        self.assertEqual(self.config.get("obj").get("key"), str("value"))

    def test_lists(self):
        self.config.merge({
            "list": ["stuff"],
        })
        self.obj.apply_overrides(['list=[1, 2.0, "str", []]'], self.config)
        self.assertEqual(self.config.get("list"), list([1, 2.0, "str", []]))

    def test_nested_quotation(self):
        # bzt -o man='{"name": "Robert \"Destroyer of Worlds\" Oppenheimer"}'
        self.obj.apply_overrides(['''man={"name": "Robert \\"Destroyer of Worlds\\" Oppenheimer"}'''], self.config)
        self.assertEqual(self.config.get("man").get("name"), str('Robert "Destroyer of Worlds" Oppenheimer'))

    def test_no_override(self):
        self.obj.apply_overrides(['nothing='], self.config)
        self.assertEqual(self.config.get("nothing"), None)

    def test_unquoted_keys(self):
        self.obj.apply_overrides(['obj={abc: def}'], self.config)
        self.assertEqual(self.config.get("obj").get("abc"), str("def"))

    def test_override_delete_from_list(self):
        self.config["items"] = [1, 2, 3]
        self.config["dict"] = {"1": 1, "2": 2, "3": 3}
        self.obj.apply_overrides(['items.^-4=null'], self.config)
        self.obj.apply_overrides(['items.^1=null'], self.config)
        self.obj.apply_overrides(['dict.^2=null'], self.config)
        self.assertEqual(self.config.get("items"), [1, 3])
        self.assertEqual(self.config.get("dict"), {"1": 1, "3": 3})
Пример #9
0
class TestConfigOverrider(BZTestCase):
    def setUp(self):
        self.obj = ConfigOverrider(logging.getLogger())
        self.config = Configuration()

    def test_numbers(self):
        self.obj.apply_overrides(["int=11", "float=3.14"], self.config)
        self.assertEqual(self.config.get("int"), int(11))
        self.assertEqual(self.config.get("float"), float(3.14))

    def test_booleans(self):
        self.obj.apply_overrides(["yes=true", "no=false"], self.config)
        self.assertEqual(self.config.get("yes"), bool(True))
        self.assertEqual(self.config.get("no"), bool(False))

    def test_strings(self):
        self.obj.apply_overrides([
            "plain=ima plain string", """quoted='"ima quoted string"'""",
            """empty-quoted='""'""", '''escaped="a "b" 'c' d"''',
            '''escaped-quoted="a "b" 'c' d"'''
        ], self.config)
        self.assertEqual(self.config.get("plain"), str("ima plain string"))
        self.assertEqual(self.config.get("quoted"),
                         str('''"ima quoted string"'''))
        self.assertEqual(self.config.get("empty-quoted"), str('""'))
        self.assertEqual(self.config.get("escaped"), str('''"a "b" 'c' d"'''))
        self.assertEqual(self.config.get("escaped-quoted"),
                         str('''"a "b" 'c' d"'''))

    def test_strings_literals_clash(self):
        # we want to pass literal string 'true' (and not have it converted to bool(True))
        self.obj.apply_overrides(['yes="true"', 'list="[1,2,3]"'], self.config)
        self.assertEqual(self.config.get("yes"), str("true"))
        self.assertEqual(self.config.get("list"), str("[1,2,3]"))

    def test_null(self):
        self.obj.apply_overrides(['nothing=null'], self.config)
        self.assertEqual(self.config.get("nothing"), None)

    def test_objects(self):
        self.config.merge({
            "obj": {
                "key": "142857",
            },
        })
        self.obj.apply_overrides(['obj={"key": "value"}'], self.config)
        self.assertEqual(self.config.get("obj").get("key"), str("value"))

    def test_lists(self):
        self.config.merge({
            "list": ["stuff"],
        })
        self.obj.apply_overrides(['list=[1, 2.0, "str", []]'], self.config)
        self.assertEqual(self.config.get("list"), list([1, 2.0, "str", []]))

    def test_nested_quotation(self):
        # bzt -o man='{"name": "Robert \"Destroyer of Worlds\" Oppenheimer"}'
        self.obj.apply_overrides([
            '''man={"name": "Robert \\"Destroyer of Worlds\\" Oppenheimer"}'''
        ], self.config)
        self.assertEqual(
            self.config.get("man").get("name"),
            str('Robert "Destroyer of Worlds" Oppenheimer'))

    def test_no_override(self):
        self.obj.apply_overrides(['nothing='], self.config)
        self.assertEqual(self.config.get("nothing"), None)

    def test_unquoted_keys(self):
        self.obj.apply_overrides(['obj={abc: def}'], self.config)
        self.assertEqual(self.config.get("obj").get("abc"), str("def"))