Example #1
0
    def test_chrome_proxy(self):
        self.obj.responses = [
            ResponseEmul(200, '{"result" : {}}'),
            ResponseEmul(200, '{"result" : {"port": "port1", "host": "host1"}}'),
            ResponseEmul(200, ''),
            ResponseEmul(200, ''),  # startup: startRecording
            ResponseEmul(200, ''),  # shutdown: stopRecording
            ResponseEmul(200, 'regular jmx contents'),
            ResponseEmul(200, '{"result" : {"smartjmx": "unavailable"}}'),
            ResponseEmul(200, '{"result" : {"smartjmx": "available"}}'),
            ResponseEmul(200, 'only one string')]

        self.obj.engine.config.merge({
            'modules': {
                'recorder': {
                    'token': '123'}}})
        self.obj.settings = self.obj.engine.config.get('modules').get('recorder')
        self.sniff_log(self.obj.log)

        executor = SeleniumExecutor()
        executor.env = self.obj.engine.env
        self.obj.engine.provisioning.executors = [executor]

        self.obj.prepare()

        if is_linux():
            self._check_linux()
        elif is_windows():
            self._check_windows()
        else:   # MacOS
            self._check_mac()

        self.obj.shutdown()
        self.obj.post_process()
class SeleniumTestCase(BZTestCase):
    def setUp(self):
        super(SeleniumTestCase, self).setUp()
        engine_obj = EngineEmul()
        paths = [__dir__() + "/../../bzt/10-base.json", local_paths_config()]
        engine_obj.configure(
            paths
        )  # FIXME: avoid using whole engine in particular module test!
        self.obj = SeleniumExecutor()
        self.obj.settings = engine_obj.config.get("modules").get("selenium")
        self.obj.settings.merge(
            {"virtual-display": {
                "width": 1024,
                "height": 768
            }})
        engine_obj.create_artifacts_dir(paths)
        self.obj.engine = engine_obj

    def configure(self, config):
        self.obj.engine.config.merge(config)
        self.obj.execution = self.obj.engine.config.get('execution')
        if isinstance(self.obj.execution, list):
            self.obj.execution = self.obj.execution[0]

    def tearDown(self):
        self.obj.free_virtual_display()
Example #3
0
    def test_resource_files_collection_remote_nose(self):
        obj = SeleniumExecutor()
        obj.engine = EngineEmul()
        obj.execution.merge({"scenario": {"script": __dir__() + "/../selenium/python/"}})
        obj.settings.merge(obj.engine.config.get("modules").get("selenium"))

        self.assertEqual(len(obj.resource_files()), 1)
    def test_selenium_startup_shutdown_java_folder(self):
        """
        run tests from .java files
        :return:
        """
        obj = SeleniumExecutor()
        obj.engine = EngineEmul()
        obj.engine.config.merge(yaml.load(open("tests/yaml/selenium_executor_java.yml").read()))
        obj.engine.config.merge({"provisioning": "local"})
        obj.execution = obj.engine.config['execution']
        obj.settings.merge(obj.engine.config.get("modules").get("selenium"))
        obj.prepare()
        obj.startup()
        while not obj.check():
            time.sleep(1)
        obj.shutdown()

        prepared_files = os.listdir(obj.runner.working_dir)
        java_files = [file for file in prepared_files if file.endswith(".java")]
        class_files = [file for file in prepared_files if file.endswith(".class")]
        jars = [file for file in prepared_files if file.endswith(".jar")]
        self.assertEqual(2, len(java_files))
        self.assertEqual(2, len(class_files))
        self.assertEqual(1, len(jars))
        self.assertTrue(os.path.exists(os.path.join(obj.runner.working_dir, "compiled.jar")))
        self.assertTrue(os.path.exists(obj.runner.report_file))
Example #5
0
    def test_selenium_startup_shutdown_python_single(self):
        """
        run tests from .py file
        :return:
        """

        obj = SeleniumExecutor()
        obj.engine = EngineEmul()
        obj.engine.config = BetterDict()
        obj.engine.config.merge(yaml.load(open("tests/yaml/selenium_executor_python.yml").read()))
        obj.engine.config.merge({"provisioning": "local"})
        obj.execution = obj.engine.config["execution"]

        obj.execution.merge({"scenario": {"script": ABS_PATH("/../../tests/selenium/python/test_blazemeter_fail.py")}})

        obj.settings.merge(obj.engine.config.get("modules").get("selenium"))
        obj.prepare()
        obj.startup()
        while not obj.check():
            time.sleep(1)
        obj.shutdown()
        prepared_files = os.listdir(obj.runner.working_dir)
        python_files = [file for file in prepared_files if file.endswith(".py")]
        self.assertEqual(1, len(python_files))
        self.assertTrue(os.path.exists(obj.runner.settings.get("report-file")))
Example #6
0
    def test_chrome_proxy(self):
        self.obj.responses = [
            ResponseEmul(200, '{"result" : {}}'),
            ResponseEmul(200, '{"result" : {"port": "port1", "host": "host1"}}'),
            ResponseEmul(200, ''),
            ResponseEmul(200, ''),  # startup: startRecording
            ResponseEmul(200, ''),  # shutdown: stopRecording
            ResponseEmul(200, '{"result" : "http://jmx_url"}'),
            ResponseEmul(200, 'regular jmx contents'),
            ResponseEmul(200, '{"result" : "http://smartjmx_url"}'),
            ResponseEmul(200, 'smartjmx content')]

        self.obj.engine.config.merge({
            'modules': {
                'recorder': {
                    'token': '123'}}})
        self.obj.settings = self.obj.engine.config.get('modules').get('recorder')
        self.sniff_log(self.obj.log)

        executor = SeleniumExecutor()
        executor.env = self.obj.engine.env
        self.obj.engine.provisioning.executors = [executor]

        self.obj.prepare()

        if is_linux():
            self._check_linux()
        elif is_windows():
            self._check_windows()
        else:  # MacOS
            self._check_mac()

        self.obj.shutdown()
        self.obj.post_process()
Example #7
0
 def test_selenium_startup_shutdown_python_folder(self):
     """
     run tests from .py files
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     obj.engine.config.merge({
         'execution': {
             'scenario': {'script': __dir__() + '/../selenium/python/'},
             'executor': 'selenium'
         },
         'reporting': [{'module': 'junit-xml'}]
     })
     obj.engine.config.merge({"provisioning": "local"})
     obj.execution = obj.engine.config['execution']
     obj.settings.merge(obj.engine.config.get("modules").get("selenium"))
     obj.prepare()
     obj.startup()
     while not obj.check():
         time.sleep(1)
     obj.shutdown()
     prepared_files = os.listdir(obj.runner.working_dir)
     python_files = [fname for fname in prepared_files if fname.endswith(".py")]
     self.assertEqual(2, len(python_files))
     self.assertTrue(os.path.exists(obj.runner.settings.get("report-file")))
    def test_install_tools(self):
        """
        check installation of selenium-server, junit
        :return:
        """
        dummy_installation_path = os.path.abspath(__dir__() + "/../../build/tmp/selenium-taurus")
        base_link = "file://" + __dir__() + "/../data/"

        shutil.rmtree(os.path.dirname(dummy_installation_path), ignore_errors=True)

        selenium_server_link = SeleniumExecutor.SELENIUM_DOWNLOAD_LINK
        SeleniumExecutor.SELENIUM_DOWNLOAD_LINK = base_link + "selenium-server-standalone-2.46.0.jar"

        junit_link = SeleniumExecutor.JUNIT_DOWNLOAD_LINK
        SeleniumExecutor.JUNIT_DOWNLOAD_LINK = base_link + "junit-4.12.jar"

        self.assertFalse(os.path.exists(dummy_installation_path))
        obj = SeleniumExecutor()
        obj.engine = EngineEmul()
        obj.settings.merge({"selenium-tools": {
            "junit": {"selenium-server": os.path.join(dummy_installation_path, "selenium-server.jar")}}})
        obj.settings.merge({"selenium-tools": {
            "junit": {"path": os.path.join(dummy_installation_path, "tools", "junit", "junit.jar")}}})

        obj.execution = BetterDict()
        obj.execution.merge({"scenario": {"script": os.path.abspath(__dir__() + "/../../tests/selenium/jar/")}})
        obj.prepare()
        self.assertTrue(os.path.exists(os.path.join(dummy_installation_path, "selenium-server.jar")))
        self.assertTrue(os.path.exists(os.path.join(dummy_installation_path, "tools", "junit", "junit.jar")))

        SeleniumExecutor.SELENIUM_DOWNLOAD_LINK = selenium_server_link
        SeleniumExecutor.JUNIT_DOWNLOAD_LINK = junit_link
    def test_selenium_startup_shutdown_jar_single(self):
        """
        runt tests from single jar
        :return:
        """
        obj = SeleniumExecutor()
        obj.engine = EngineEmul()
        obj.engine.config.merge(yaml.load(open("tests/yaml/selenium_executor_jar.yml").read()))
        obj.engine.config.merge({"provisioning": "local"})
        obj.execution = obj.engine.config['execution']
        obj.execution.merge(
            {"scenario": {"script": os.path.abspath(__dir__() + "/../../tests/selenium/jar/dummy.jar")}})
        obj.settings.merge(obj.engine.config.get("modules").get("selenium"))
        obj.prepare()
        obj.startup()
        while not obj.check():
            time.sleep(1)
        obj.shutdown()

        prepared_files = os.listdir(obj.runner.working_dir)
        java_files = [file for file in prepared_files if file.endswith(".java")]
        class_files = [file for file in prepared_files if file.endswith(".class")]
        jars = [file for file in prepared_files if file.endswith(".jar")]
        self.assertEqual(len(java_files), 0)
        self.assertEqual(len(class_files), 0)
        self.assertEqual(len(jars), 1)
        self.assertTrue(os.path.exists(obj.runner.report_file))
 def test_remote_prov_requests(self):
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     obj.execution.merge(
         {"scenario": {
             "requests": ["http://blazedemo.com"]
         }})
     obj.resource_files()
Example #11
0
    def test_resource_files_collection_remote_nose(self):
        obj = SeleniumExecutor()
        obj.engine = EngineEmul()
        obj.execution.merge({"scenario": {"script": __dir__() + "/../selenium/python/"}})
        obj.settings.merge(obj.engine.config.get("modules").get("selenium"))

        res_files = obj.resource_files()
        res_artifacts = os.listdir(os.path.join(obj.engine.artifacts_dir, res_files[0]))
        self.assertEqual(len(res_artifacts), 2)
Example #12
0
 def setUp(self):
     super(SeleniumTestCase, self).setUp()
     engine_obj = EngineEmul()
     paths = [__dir__() + "/../../../bzt/resources/base-config.yml", local_paths_config()]
     engine_obj.configure(paths)  # FIXME: avoid using whole engine in particular module test!
     self.obj = SeleniumExecutor()
     self.obj.settings = engine_obj.config.get("modules").get("selenium")
     self.obj.settings.merge({"virtual-display": {"width": 1024, "height": 768}})
     engine_obj.create_artifacts_dir(paths)
     self.obj.engine = engine_obj
Example #13
0
 def test_empty_scenario(self):
     """
     Raise runtime error when no scenario provided
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     obj.engine.config.merge({ScenarioExecutor.EXEC: {"executor": "selenium"}})
     obj.execution = obj.engine.config['execution']
     self.assertRaises(ValueError, obj.prepare)
Example #14
0
    def test_resource_files_collection_remote_nose(self):
        obj = SeleniumExecutor()
        obj.engine = EngineEmul()
        obj.execution = BetterDict()
        obj.execution.merge({"scenario": {"script": __dir__() + "/../selenium/python/"}})
        obj.settings.merge(obj.engine.config.get("modules").get("selenium"))

        res_files = obj.resource_files()
        res_artifacts = os.listdir(os.path.join(obj.engine.artifacts_dir, res_files[0]))
        self.assertEqual(len(res_artifacts), 2)
Example #15
0
 def test_selenium_prepare_python_folder(self):
     """
     Check if scripts exist in working dir
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     obj.execution.merge({"scenario": {"script": __dir__() + "/../selenium/python/"}})
     obj.prepare()
     python_scripts = os.listdir(obj.runner.working_dir)
     self.assertEqual(len(python_scripts), 2)
Example #16
0
 def test_remote_prov_requests(self):
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     obj.execution.merge({
         "scenario": {
             "requests": [
                 "http://blazedemo.com"
             ]
         }
     })
     obj.resource_files()
Example #17
0
 def test_empty_scenario(self):
     """
     Raise runtime error when no scenario provided
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     obj.engine.config = BetterDict()
     obj.engine.config.merge({"execution": {"executor": "selenium"}})
     obj.execution = obj.engine.config["execution"]
     self.assertRaises(RuntimeError, obj.prepare)
Example #18
0
 def test_no_supported_files_to_test(self):
     """
     Test RuntimeError raised when no files of known types were found.
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     obj.engine.config = BetterDict()
     obj.engine.config.merge(
         {"execution": {"executor": "selenium", "scenario": {"script": "tests/selenium/invalid/not_found"}}})
     obj.execution = obj.engine.config['execution']
     self.assertRaises(RuntimeError, obj.prepare)
Example #19
0
 def test_selenium_prepare_python_single(self):
     """
     Check if script exists in working dir
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     obj.execution = BetterDict()
     obj.execution.merge({"scenario": {"script": ABS_PATH("/../../tests/selenium/python/test_blazemeter_fail.py")}})
     obj.prepare()
     python_scripts = os.listdir(obj.runner.working_dir)
     self.assertEqual(len(python_scripts), 1)
 def test_javac_fail(self):
     """
     Test RuntimeError when compilation fails
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     obj.engine.config = BetterDict()
     obj.engine.config.merge(
         {"execution": {"executor": "selenium", "scenario": {"script": "tests/selenium/invalid/invalid.java"}}})
     obj.execution = obj.engine.config['execution']
     self.assertRaises(RuntimeError, obj.prepare)
 def test_prepare_java_package(self):
     """
     Check if scripts exist in working dir
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     obj.execution = BetterDict()
     obj.execution.merge(
         {"scenario": {"script": os.path.abspath(__dir__() + "/../../tests/selenium/java_package/")}})
     obj.prepare()
     self.assertTrue(os.path.exists(os.path.join(obj.runner.working_dir, "compiled.jar")))
 def test_prepare_jar_folder(self):
     """
     Check if jars exist in working dir
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     obj.execution = BetterDict()
     obj.execution.merge({"scenario": {"script": os.path.abspath(__dir__() + "/../../tests/selenium/jar/")}})
     obj.prepare()
     java_scripts = os.listdir(obj.runner.working_dir)
     self.assertEqual(len(java_scripts), 2)
Example #23
0
 def test_no_supported_files_to_test(self):
     """
     Test RuntimeError raised when no files of known types were found.
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     obj.engine.config.merge({ScenarioExecutor.EXEC: {
         "executor": "selenium",
         "scenario": {"script": __dir__() + "/../selenium/invalid/not_found"}
     }})
     obj.execution = obj.engine.config['execution']
     self.assertRaises(ValueError, obj.prepare)
Example #24
0
    def test_resource_files_collection_remote_jar(self):
        obj = SeleniumExecutor()
        obj.engine = self.engine_obj
        obj.settings = self.selenium_config
        obj.engine.config.merge({'execution': {'scenario': {'script': 'tests/selenium/jar/'}, 'executor': 'selenium'},
                                 'reporting': [{'module': 'junit-xml'}]})
        obj.engine.config.merge({"provisioning": "local"})
        obj.execution = obj.engine.config['execution']
        obj.settings.merge(obj.engine.config.get("modules").get("selenium"))

        res_files = obj.resource_files()
        res_artifacts = os.listdir(os.path.join(obj.engine.artifacts_dir, res_files))
        self.assertEqual(len(res_artifacts), 2)
Example #25
0
 def test_prepare_java_single(self):
     """
     Check if script exists in working dir
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = self.engine_obj
     obj.settings = self.selenium_config
     obj.execution.merge({"scenario": {"script": ABS_PATH("/../../tests/selenium/java/TestBlazemeterFail.java")}})
     obj.prepare()
     self.assertTrue(os.path.exists(os.path.join(obj.runner.working_dir, "TestBlazemeterFail.java")))
     self.assertTrue(os.path.exists(os.path.join(obj.runner.working_dir, "TestBlazemeterFail.class")))
     self.assertTrue(os.path.exists(os.path.join(obj.runner.working_dir, "compiled.jar")))
Example #26
0
 def test_javac_fail(self):
     """
     Test RuntimeError when compilation fails
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = self.engine_obj
     obj.settings = self.selenium_config
     obj.engine.config = BetterDict()
     obj.engine.config.merge(
         {"execution": {"executor": "selenium",
                        "scenario": {"script": __dir__() + "/../selenium/invalid/invalid.java"}}})
     obj.execution = obj.engine.config['execution']
     self.assertRaises(RuntimeError, obj.prepare)
 def test_javac_fail(self):
     """
     Test RuntimeError when compilation fails
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = self.engine_obj
     obj.settings = self.selenium_config
     obj.engine.config = BetterDict()
     obj.engine.config.merge(
         {ScenarioExecutor.EXEC: {"executor": "selenium",
                                  "scenario": {"script": __dir__() + "/../selenium/invalid/invalid.java"}}})
     obj.execution = obj.engine.config['execution']
     self.assertRaises(RuntimeError, obj.prepare)
    def test_take_script_from_artifacts(self):
        "ensures that executor looks for script in artifacts-dir (for cloud/remote cases)"
        obj = SeleniumExecutor()
        obj.engine = EngineEmul()
        obj.engine.file_search_paths = [obj.engine.artifacts_dir]

        script_name = "BlazeDemo.java"
        test_script = __dir__() + "/../data/" + script_name
        artifacts_script = os.path.join(obj.engine.artifacts_dir, script_name)
        shutil.copy2(test_script, artifacts_script)

        obj.execution.merge({"scenario": {
            "script": script_name,
        }})
        obj.prepare()
class SeleniumTestCase(BZTestCase):
    def setUp(self):
        super(SeleniumTestCase, self).setUp()
        self.engine_obj = EngineEmul()
        self.paths = [__dir__() + "/../../bzt/10-base.json", local_paths_config()]
        self.engine_obj.configure(self.paths)  # FIXME: avoid using whole engine in particular module test!
        self.engine_obj.config.get("modules").get("selenium").merge({"virtual-display": {"width": 1024, "height": 768}})
        self.selenium_config = self.engine_obj.config["modules"]["selenium"]
        self.engine_obj.create_artifacts_dir(self.paths)
        self.obj = SeleniumExecutor()
        self.obj.engine = self.engine_obj
        self.obj.settings = self.selenium_config

    def tearDown(self):
        self.obj.free_virtual_display()
Example #30
0
    def test_full(self):
        self.obj.api_delay = 1
        self.obj.responses = [
            ResponseEmul(200, '{"result" : {}}'),
            ResponseEmul(
                200,
                '{"result" : {"port": "port1", "host": "host1", "username":"******", "password":"******"}}'
            ),
            ResponseEmul(200, ''),
            ResponseEmul(200, ''),  # startup: startRecording
            ResponseEmul(200, ''),  # shutdown: stopRecording
            ResponseEmul(200, '{"result" : "http://jmx_url"}'),
            ResponseEmul(200, 'regular jmx contents'),
            ResponseEmul(200, '{"result" : "http://smartjmx_url"}'),
            ResponseEmul(200, 'smartjmx content')
        ]

        self.obj.engine.config.merge(
            {'modules': {
                'recorder': {
                    'token': '123'
                }
            }})
        self.obj.settings = self.obj.engine.config.get('modules').get(
            'recorder')

        executor = SeleniumExecutor()
        executor.env = self.obj.engine.env
        self.obj.engine.provisioning.executors = [executor]

        self.obj.prepare()
        self.assertEqual(self.obj.proxy_addr, 'user1:123@host1:port1')

        self.obj.startup()
        self.obj.shutdown()
        self.obj.post_process()

        with open(self.obj.engine.artifacts_dir +
                  '/generated.smart.jmx') as fd:
            lines = fd.readlines()
            self.assertEqual(len(lines), 1)
            self.assertEqual(lines[0].strip(), 'smartjmx content')

        with open(self.obj.engine.artifacts_dir +
                  '/generated.simple.jmx') as fd:
            lines = fd.readlines()
            self.assertEqual(len(lines), 1)
            self.assertEqual(lines[0].strip(), 'regular jmx contents')
Example #31
0
class SeleniumTestCase(BZTestCase):
    def setUp(self):
        super(SeleniumTestCase, self).setUp()
        engine_obj = EngineEmul()
        paths = [
            __dir__() + "/../../bzt/resources/base-config.yml",
            local_paths_config()
        ]
        engine_obj.configure(
            paths
        )  # FIXME: avoid using whole engine in particular module test!
        self.obj = SeleniumExecutor()
        self.obj.settings = engine_obj.config.get("modules").get("selenium")
        self.obj.settings.merge(
            {"virtual-display": {
                "width": 1024,
                "height": 768
            }})
        engine_obj.create_artifacts_dir(paths)
        self.obj.engine = engine_obj

    def configure(self, config):
        self.obj.engine.config.merge(config)
        self.obj.execution = self.obj.engine.config.get('execution')
        if isinstance(self.obj.execution, list):
            self.obj.execution = self.obj.execution[0]

    def tearDown(self):
        exc, _, _ = sys.exc_info()
        if exc:
            try:
                stdout_path = os.path.join(self.obj.engine.artifacts_dir,
                                           "selenium.out")
                if os.path.exists(stdout_path):
                    stdout = open(stdout_path).read()
                    logging.info('Selenium stdout: """\n%s\n"""', stdout)
            except BaseException:
                pass
            try:
                stdout_path = os.path.join(self.obj.engine.artifacts_dir,
                                           "selenium.err")
                if os.path.exists(stdout_path):
                    stderr = open(stdout_path).read()
                    logging.info('Selenium stderr: """\n%s\n"""', stderr)
            except BaseException:
                pass
        if isinstance(self.obj, SeleniumExecutor):
            self.obj.free_virtual_display()
Example #32
0
 def test_dont_copy_local_script_to_artifacts(self):
     "ensures that .java file is not copied into artifacts-dir"
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     filename = "BlazeDemo.java"
     script_path = __dir__() + "/../data/" + filename
     obj.execution.merge({
         "scenario": {
             "script": script_path,
         }
     })
     obj.prepare()
     files = obj.resource_files()
     self.assertIn(script_path, files)
     artifacts_script = os.path.join(obj.engine.artifacts_dir, filename)
     self.assertFalse(os.path.exists(artifacts_script))
Example #33
0
 def test_junit_mirrors(self):
     dummy_installation_path = __dir__() + "/../../../build/tmp/selenium-taurus"
     shutil.rmtree(os.path.dirname(dummy_installation_path), ignore_errors=True)
     obj = SeleniumExecutor()
     objjm = JUnitJar(os.path.join(dummy_installation_path, "tools", "junit", "junit.jar"), obj.log,
                      SeleniumExecutor.JUNIT_VERSION)
     objjm.install()
Example #34
0
    def setUp(self):
        super(TestJUnitTester, self).setUp()
        engine_obj = EngineEmul()
        paths = [local_paths_config()]
        engine_obj.configure(paths)

        # just download geckodriver & chromedriver with selenium
        selenium = SeleniumExecutor()
        selenium.engine = engine_obj
        selenium.execution.merge({"scenario": {"requests": ["req"]}})
        selenium.prepare()

        self.obj = JUnitTester()
        self.obj.env = selenium.env
        self.obj.settings = engine_obj.config.get("modules").get("junit")
        self.obj.engine = engine_obj
Example #35
0
    def test_full(self):
        self.obj.api_delay = 1
        self.obj.responses = [
            ResponseEmul(200, '{"result" : {}}'),
            ResponseEmul(200,
                         '{"result" : {"port": "port1", "host": "host1"}}'),
            ResponseEmul(200, ''),
            ResponseEmul(200, ''),  # startup: startRecording
            ResponseEmul(200, ''),  # shutdown: stopRecording
            ResponseEmul(200, '{"result" : {"smartjmx": "unavailable"}}'),
            ResponseEmul(200, '{"result" : {"smartjmx": "available"}}'),
            ResponseEmul(200, 'only one string')
        ]

        self.obj.engine.config.merge(
            {'modules': {
                'recorder': {
                    'token': '123'
                }
            }})
        self.obj.settings = self.obj.engine.config.get('modules').get(
            'recorder')

        self.obj.prepare()
        self.assertEqual(self.obj.proxy_addr, 'http://host1:port1')
        self.obj.engine.provisioning.executors = [SeleniumExecutor()]
        self.obj.startup()
        self.obj.shutdown()
        self.obj.post_process()
        res_file = self.obj.engine.artifacts_dir + '/generated.jmx'
        with open(res_file) as fd:
            lines = fd.readlines()
        self.assertEqual(len(lines), 1)
        self.assertEqual(lines[0].strip(), 'only one string')
 def test_prepare_java_folder(self):
     """
     Check if scripts exist in working dir
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     obj.execution = BetterDict()
     obj.execution.merge({"scenario": {"script": os.path.abspath(__dir__() + "/../../tests/selenium/java/")}})
     obj.prepare()
     prepared_files = os.listdir(obj.runner.working_dir)
     java_files = [file for file in prepared_files if file.endswith(".java")]
     class_files = [file for file in prepared_files if file.endswith(".class")]
     jars = [file for file in prepared_files if file.endswith(".jar")]
     self.assertEqual(len(java_files), 2)
     self.assertEqual(len(class_files), 2)
     self.assertEqual(len(jars), 1)
Example #37
0
    def test_take_script_from_artifacts(self):
        "ensures that executor looks for script in artifacts-dir (for cloud/remote cases)"
        obj = SeleniumExecutor()
        obj.engine = EngineEmul()
        obj.engine.file_search_paths = [obj.engine.artifacts_dir]

        script_name = "BlazeDemo.java"
        test_script = __dir__() + "/../data/" + script_name
        artifacts_script = os.path.join(obj.engine.artifacts_dir, script_name)
        shutil.copy2(test_script, artifacts_script)

        obj.execution.merge({
            "scenario": {
                "script": script_name,
            }
        })
        obj.prepare()
Example #38
0
    def setUp(self):
        super(TestJUnitTester, self).setUp()
        engine_obj = EngineEmul()
        paths = [local_paths_config()]
        engine_obj.configure(paths)

        # just download geckodriver & chromedriver with selenium
        selenium = SeleniumExecutor()
        selenium.engine = engine_obj
        selenium.install_required_tools()
        for driver in selenium.webdrivers:
            selenium.env.add_path({"PATH": driver.get_driver_dir()})

        self.obj = JUnitTester()
        self.obj.env = selenium.env
        self.obj.settings = engine_obj.config.get("modules").get("junit")
        self.obj.engine = engine_obj
Example #39
0
    def setUp(self):
        super(TestJUnitTester, self).setUp()
        engine_obj = EngineEmul()
        paths = [local_paths_config()]
        engine_obj.configure(paths)

        # just download geckodriver & chromedriver with selenium
        selenium = SeleniumExecutor()
        selenium.engine = engine_obj
        selenium.install_required_tools()
        for driver in selenium.webdrivers:
            selenium.env.add_path({"PATH": driver.get_driver_dir()})

        self.obj = JUnitTester()
        self.obj.env = selenium.env
        self.obj.settings = engine_obj.config.get("modules").get("junit")
        self.obj.engine = engine_obj
Example #40
0
    def setUp(self):
        super(TestJUnitTester, self).setUp()
        engine_obj = EngineEmul()
        paths = [local_paths_config()]
        engine_obj.configure(paths)

        # just download geckodriver & chromedriver with selenium
        selenium = SeleniumExecutor()
        selenium.engine = engine_obj
        selenium.env = selenium.engine.env
        selenium.execution.merge({"scenario": {"requests": ["req"]}})
        selenium.prepare()

        self.obj = JUnitTester()
        self.obj.settings = engine_obj.config.get("modules").get("junit")
        self.obj.engine = engine_obj
        self.obj.env = self.obj.engine.env
 def test_prepare_java_folder(self):
     """
     Check if scripts exist in working dir
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = self.engine_obj
     obj.settings = self.selenium_config
     obj.execution = BetterDict()
     obj.execution.merge(
         {"scenario": {
             "script": ABS_PATH("/../../tests/selenium/java/")
         }})
     obj.prepare()
     prepared_files = os.listdir(obj.runner.working_dir)
     java_files = [
         file for file in prepared_files if file.endswith(".java")
     ]
     class_files = [
         file for file in prepared_files if file.endswith(".class")
     ]
     jars = [file for file in prepared_files if file.endswith(".jar")]
     self.assertEqual(len(java_files), 2)
     self.assertEqual(len(class_files), 2)
     self.assertEqual(len(jars), 1)
    def test_selenium_startup_shutdown_java_package(self):
        """
        Run tests from package
        :return:
        """
        obj = SeleniumExecutor()
        obj.engine = EngineEmul()
        obj.engine.config.merge(yaml.load(open("tests/yaml/selenium_executor_java_package.yml").read()))
        obj.engine.config.merge({"provisioning": "local"})
        obj.execution = obj.engine.config['execution']

        obj.settings.merge(obj.engine.config.get("modules").get("selenium"))
        obj.prepare()
        obj.startup()
        while not obj.check():
            time.sleep(1)
        obj.shutdown()
        self.assertTrue(os.path.exists(os.path.join(obj.runner.working_dir, "compiled.jar")))
 def runner_fail_no_test_found(self):
     """
     Check that Python Nose runner fails if no tests were found
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     obj.engine.config = BetterDict()
     obj.engine.config.merge(
         {"execution": {"executor": "selenium", "scenario": {"script": "tests/selenium/invalid/dummy.py"}}})
     obj.execution = obj.engine.config['execution']
     obj.prepare()
     obj.startup()
     try:
         while not obj.check():
             time.sleep(1)
     except BaseException as exc:
         self.assertEqual(exc.args[0], "Test runner NoseTester has failed: Nothing to test.")
     obj.shutdown()
 def test_samples_count_testcase(self):
     """
     Test exact number of tests when test class extends JUnit TestCase
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     obj.engine.config = BetterDict()
     obj.engine.config.merge(
         {"execution": {"executor": "selenium", "scenario": {"script": "tests/selenium/invalid/SimpleTest.java"}}})
     obj.execution = obj.engine.config['execution']
     obj.prepare()
     obj.startup()
     while not obj.check():
         time.sleep(1)
     obj.shutdown()
     with open(obj.kpi_file) as kpi_fds:
         contents = kpi_fds.read()
     self.assertEqual(contents.count("--TIME:"), 2)
 def test_no_test_in_name(self):
     """
     Test exact number of tests when annotations used and no "test" in class name
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     obj.engine.config = BetterDict()
     obj.engine.config.merge(
         {"execution": {"executor": "selenium", "scenario": {"script": "tests/selenium/invalid/selenium1.java"}}})
     obj.execution = obj.engine.config['execution']
     obj.prepare()
     obj.startup()
     while not obj.check():
         time.sleep(1)
     obj.shutdown()
     with open(obj.kpi_file) as kpi_fds:
         contents = kpi_fds.read()
     self.assertEqual(contents.count("--TIME:"), 2)
Example #46
0
 def setUp(self):
     super(SeleniumTestCase, self).setUp()
     self.engine_obj = EngineEmul()
     self.paths = [
         __dir__() + "/../../bzt/10-base.json",
         local_paths_config()
     ]
     self.engine_obj.configure(
         self.paths
     )  # FIXME: avoid using whole engine in particular module test!
     self.engine_obj.config.get("modules").get("selenium").merge(
         {"virtual-display": {
             "width": 1024,
             "height": 768
         }})
     self.selenium_config = self.engine_obj.config["modules"]["selenium"]
     self.engine_obj.create_artifacts_dir(self.paths)
     self.obj = SeleniumExecutor()
     self.obj.engine = self.engine_obj
     self.obj.settings = self.selenium_config
Example #47
0
    def test_fail_on_zero_results(self):
        obj = SeleniumExecutor()
        obj.engine = self.engine_obj
        obj.settings = self.selenium_config
        obj.engine.config.merge(yaml.load(open(__dir__() + "/../yaml/selenium_executor_requests.yml").read()))
        obj.engine.config.merge({"provisioning": "local"})
        obj.execution = obj.engine.config['execution']

        obj.prepare()
        self.assertRaises(RuntimeWarning, obj.post_process)
 def test_prepare_java_single(self):
     """
     Check if script exists in working dir
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = self.engine_obj
     obj.settings = self.selenium_config
     obj.execution.merge({
         "scenario": {
             "script":
             ABS_PATH("/../../tests/selenium/java/TestBlazemeterFail.java")
         }
     })
     obj.prepare()
     self.assertTrue(
         os.path.exists(
             os.path.join(obj.runner.working_dir,
                          "TestBlazemeterFail.java")))
     self.assertTrue(
         os.path.exists(
             os.path.join(obj.runner.working_dir,
                          "TestBlazemeterFail.class")))
     self.assertTrue(
         os.path.exists(os.path.join(obj.runner.working_dir,
                                     "compiled.jar")))
Example #49
0
 def test_prepare_java_single(self):
     """
     Check if script exists in working dir
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     obj.execution = BetterDict()
     obj.execution.merge({
         "scenario": {
             "script":
             os.path.abspath(
                 __dir__() +
                 "/../../tests/selenium/java/TestBlazemeterFail.java")
         }
     })
     obj.prepare()
     self.assertTrue(
         os.path.exists(
             os.path.join(obj.runner.working_dir,
                          "TestBlazemeterFail.java")))
     self.assertTrue(
         os.path.exists(
             os.path.join(obj.runner.working_dir,
                          "TestBlazemeterFail.class")))
     self.assertTrue(
         os.path.exists(os.path.join(obj.runner.working_dir,
                                     "compiled.jar")))
Example #50
0
    def setUp(self):
        super(SeleniumTestCase, self).setUp()
        self.engine = EngineEmul()
        paths = [local_paths_config()]
        self.engine.configure(paths)  # FIXME: avoid using whole engine in particular module test!

        self.virtual_display = VirtualDisplay()
        self.virtual_display.engine = self.engine
        self.virtual_display.startup()

        self.obj = SeleniumExecutor()
        self.obj.engine = self.engine
        self.obj.settings = self.engine.config.get("modules").get("selenium")
Example #51
0
    def test_install_tools(self):
        """
        check installation of selenium-server, junit
        :return:
        """
        dummy_installation_path = os.path.abspath(
            __dir__() + "/../../build/tmp/selenium-taurus")
        base_link = "file://" + __dir__() + "/../data/"

        shutil.rmtree(os.path.dirname(dummy_installation_path),
                      ignore_errors=True)

        selenium_server_link = SeleniumExecutor.SELENIUM_DOWNLOAD_LINK
        SeleniumExecutor.SELENIUM_DOWNLOAD_LINK = base_link + "selenium-server-standalone-2.46.0.jar"

        junit_link = SeleniumExecutor.JUNIT_DOWNLOAD_LINK
        SeleniumExecutor.JUNIT_DOWNLOAD_LINK = base_link + "junit-4.12.jar"

        self.assertFalse(os.path.exists(dummy_installation_path))
        obj = SeleniumExecutor()
        obj.engine = EngineEmul()
        obj.settings.merge({
            "selenium-tools": {
                "junit": {
                    "selenium-server":
                    os.path.join(dummy_installation_path,
                                 "selenium-server.jar")
                }
            }
        })
        obj.settings.merge({
            "selenium-tools": {
                "junit": {
                    "path":
                    os.path.join(dummy_installation_path, "tools", "junit",
                                 "junit.jar")
                }
            }
        })

        obj.execution = BetterDict()
        obj.execution.merge({
            "scenario": {
                "script":
                os.path.abspath(__dir__() + "/../../tests/selenium/jar/")
            }
        })
        obj.prepare()
        self.assertTrue(
            os.path.exists(
                os.path.join(dummy_installation_path, "selenium-server.jar")))
        self.assertTrue(
            os.path.exists(
                os.path.join(dummy_installation_path, "tools", "junit",
                             "junit.jar")))

        SeleniumExecutor.SELENIUM_DOWNLOAD_LINK = selenium_server_link
        SeleniumExecutor.JUNIT_DOWNLOAD_LINK = junit_link
Example #52
0
 def test_prepare_java_package(self):
     """
     Check if scripts exist in working dir
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = self.engine_obj
     obj.settings = self.selenium_config
     obj.execution = BetterDict()
     obj.execution.merge(
         {"scenario": {"script": __dir__() + "/../selenium/java_package/"}})
     obj.prepare()
     self.assertTrue(os.path.exists(os.path.join(obj.runner.working_dir, "compiled.jar")))
Example #53
0
 def test_prepare_jar_folder(self):
     """
     Check if jars exist in working dir
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = self.engine_obj
     obj.settings = self.selenium_config
     obj.execution = BetterDict()
     obj.execution.merge({"scenario": {"script": __dir__() + "/../selenium/jar/"}})
     obj.prepare()
     java_scripts = os.listdir(obj.runner.working_dir)
     self.assertEqual(len(java_scripts), 2)
Example #54
0
 def test_selenium_prepare_python_single(self):
     """
     Check if script exists in working dir
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     obj.execution = BetterDict()
     obj.execution.merge({"scenario": {
         "script": __dir__() + "/../selenium/python/test_blazemeter_fail.py"}})
     obj.prepare()
     python_scripts = os.listdir(obj.runner.working_dir)
     self.assertEqual(len(python_scripts), 1)
 def test_prepare_jar_single(self):
     """
     Check if jar exists in working dir
     :return:
     """
     obj = SeleniumExecutor()
     obj.engine = self.engine_obj
     obj.settings = self.selenium_config
     obj.execution = BetterDict()
     obj.execution.merge({
         "scenario": {
             "script": ABS_PATH("/../../tests/selenium/jar/dummy.jar")
         }
     })
     obj.prepare()
     self.assertTrue(
         os.path.exists(os.path.join(obj.runner.working_dir, "dummy.jar")))
Example #56
0
    def test_resource_files_collection_remote_jar(self):
        obj = SeleniumExecutor()
        obj.engine = self.engine_obj
        obj.settings = self.selenium_config
        obj.engine.config.merge(
            {'execution': {'scenario': {'script': __dir__() + '/../selenium/jar/'}, 'executor': 'selenium'},
             'reporting': [{'module': 'junit-xml'}]})
        obj.engine.config.merge({"provisioning": "local"})
        obj.execution = obj.engine.config['execution']
        obj.settings.merge(obj.engine.config.get("modules").get("selenium"))

        res_files = obj.resource_files()
        res_artifacts = os.listdir(os.path.join(obj.engine.artifacts_dir, res_files[0]))
        self.assertEqual(len(res_artifacts), 2)
 def test_dont_copy_local_script_to_artifacts(self):
     "ensures that .java file is not copied into artifacts-dir"
     obj = SeleniumExecutor()
     obj.engine = EngineEmul()
     filename = "BlazeDemo.java"
     script_path = __dir__() + "/../data/" + filename
     obj.execution.merge({"scenario": {
         "script": script_path,
     }})
     obj.prepare()
     files = obj.resource_files()
     self.assertIn(script_path, files)
     artifacts_script = os.path.join(obj.engine.artifacts_dir, filename)
     self.assertFalse(os.path.exists(artifacts_script))