├── .codecov.yml ├── .dockerignore ├── .gitignore ├── .travis.yml ├── Dockerfile ├── Jenkinsfile ├── LICENSE ├── MANIFEST.in ├── NOTICE ├── README.md ├── appveyor.yml ├── build-artifacts.sh ├── build-info.sh ├── bzt ├── TestNGExample.java ├── TestNGExample.yml ├── __init__.py ├── __main__.py ├── bza.py ├── bzt-configs.json ├── cli.py ├── engine │ ├── __init__.py │ ├── dicts.py │ ├── engine.py │ ├── modules.py │ ├── names.py │ └── templates.py ├── environment_helpers.py ├── jmx │ ├── __init__.py │ ├── base.py │ ├── grpc.py │ ├── http.py │ ├── mqtt.py │ ├── rte.py │ ├── threadgroups.py │ └── tools.py ├── jmx2yaml.py ├── linter.py ├── modules │ ├── __init__.py │ ├── _apiritif │ │ ├── __init__.py │ │ ├── ast_helpers.py │ │ ├── executor.py │ │ ├── generator.py │ │ └── jmeter_functions.py │ ├── _locustio.py │ ├── _molotov.py │ ├── _pytest.py │ ├── _selenium.py │ ├── ab.py │ ├── aggregator.py │ ├── blazemeter │ │ ├── __init__.py │ │ ├── blazemeter_reporter.py │ │ ├── cloud_provisioning.py │ │ ├── cloud_test.py │ │ ├── const.py │ │ ├── engine_metrics.py │ │ ├── net_utils.py │ │ └── project_finder.py │ ├── console.py │ ├── csharp.py │ ├── external.py │ ├── functional.py │ ├── gatling.py │ ├── influxdb_reporter.py │ ├── java │ │ ├── __init__.py │ │ ├── executors.py │ │ └── tools.py │ ├── javascript.py │ ├── jmeter.py │ ├── k6.py │ ├── monitoring.py │ ├── passfail.py │ ├── provisioning.py │ ├── proxy2jmx.py │ ├── pyscripts │ │ ├── __init__.py │ │ └── jmxrampup.py │ ├── reporting.py │ ├── robot.py │ ├── ruby.py │ ├── screen.py │ ├── services.py │ ├── shellexec.py │ ├── siege.py │ ├── soapui.py │ └── tsung.py ├── requests_model.py ├── resources │ ├── 10-base-config.yml │ ├── NUnitRunner │ │ └── .gitkeep │ ├── __init__.py │ ├── base-bzt-rc.yml │ ├── bzm_extras.py │ ├── chrome-loader.c │ ├── chrome_launcher.sh │ ├── dotnet │ │ ├── .gitignore │ │ ├── DotnetTestRunner.sln │ │ ├── DotnetTestRunner │ │ │ ├── DotnetTestRunner.csproj │ │ │ ├── Models │ │ │ │ ├── ReportItem.cs │ │ │ │ └── RunnerOptions.cs │ │ │ ├── Program.cs │ │ │ └── Services │ │ │ │ ├── NUnit │ │ │ │ ├── NUnitTestEventListener.cs │ │ │ │ └── NUnitTestRunner.cs │ │ │ │ ├── ReportWriter.cs │ │ │ │ └── xUnit │ │ │ │ ├── XUnitTestEventListener.cs │ │ │ │ └── XUnitTestRunner.cs │ │ ├── NUnitTests │ │ │ ├── NUnitTestExample.cs │ │ │ └── NUnitTests.csproj │ │ └── XUnitTests │ │ │ ├── XUnitTestExample.cs │ │ │ └── XUnitTests.csproj │ ├── gatling │ │ └── v3_script.tpl │ ├── locustio-taurus-wrapper.py │ ├── mocha-taurus-plugin.js │ ├── molotov_ext.py │ ├── newman-reporter-taurus.js │ ├── pytest_runner.py │ ├── robot_runner.py │ ├── rspec_taurus_plugin.rb │ ├── selenium_extras.py │ ├── shadow_element.py │ ├── taurus_logo.gif │ ├── version │ │ └── __init__.py │ └── wdio-taurus-plugin │ │ ├── package.json │ │ ├── wdio-custom-reporter.mjs │ │ └── wdio-taurus-plugin.mjs ├── soapui2yaml.py ├── swagger2yaml.py ├── test.jar └── utils.py ├── cli-bza.png ├── develop ├── Dockerfile-base ├── Dockerfile-taurus └── run_integration.sh ├── examples ├── BOOTH1 │ ├── Blazedemo.java │ ├── cloud.yml │ ├── convert.yml │ ├── display.yml │ ├── jenkins.yml │ ├── run-jmeter.yml │ └── selenium.yml ├── BOOTH2 │ ├── Blazedemo.java │ ├── Blazedemo.java.jmx │ ├── display.yml │ ├── jenkins.yml │ ├── run-jmeter.yml │ └── selenium.yml ├── Jenkinsfile ├── all-executors.yml ├── apiritif │ ├── apiritif_basic.yml │ └── apiritif_load.yml ├── blazemeter-demo │ ├── JUnitTaurusDemo.java │ ├── dsl-blazedemo.yml │ ├── dsl-quick_test.yml │ ├── dsl-quick_test_cloud.yml │ ├── existing-BlazeDemo.jmx │ ├── existing-jmx.yml │ ├── gatling-dsl.yml │ ├── junit-demo.yml │ ├── module-cloud.yml │ ├── module-dedicated_ips.yml │ ├── module-passfail.yml │ ├── module-v4.yml │ ├── multi-location-multi-script.yml │ ├── pytest-blazedemo.py │ ├── pytest-local.yml │ ├── selenium-dsl.yml │ └── service-shellexec.yml ├── bztdocker.sh ├── cloud │ └── multi-location-multi-script.yml ├── custom │ ├── custom_cmd.sh │ ├── custom_exec.py │ └── run_it.yml ├── docker │ ├── Dockerfile │ ├── test.sh │ └── test.yml ├── executor-benchmark │ ├── all-executors.sh │ ├── exec-hits.yml │ ├── exec-vu.yml │ ├── scenario.yml │ ├── server.conf │ └── service.yml ├── functional │ ├── JUnitTest.java │ ├── TestNGTest.java │ ├── backup_wdio.conf.js │ ├── mocha_example.js │ ├── postman-sample-collection.json │ ├── robot-simple │ │ ├── lib │ │ │ └── LoginLibrary.py │ │ ├── sut │ │ │ └── login.py │ │ └── test.robot │ ├── rspec_example.rb │ ├── test_nose.py │ ├── wdio.conf.js │ └── wdio_test.js ├── gatling │ ├── BasicSimulation.scala │ ├── blazedemo.scala │ ├── gatling-existing.yml │ ├── gatling-req.yml │ ├── gradle │ │ ├── build.gradle │ │ ├── gradle-gatling.yml │ │ └── src │ │ │ └── gatling │ │ │ └── simulations │ │ │ └── blazedemoSimulation.scala │ ├── test.jar │ └── test11.jar ├── jmeter │ ├── body-file-payload.json │ ├── body-file.yml │ ├── csv-usage.yml │ ├── csv1.csv │ ├── csv2.csv │ ├── csv3.csv │ ├── default-address-trick.yml │ ├── existing.jmx │ ├── existing.yml │ ├── external.jmx │ ├── external.yml │ ├── jmxvals.jmx │ ├── jmxvals.yml │ ├── logins.csv │ ├── pages.csv │ ├── prmctl.yml │ ├── simple-assert.yml │ ├── stepping.yml │ └── three.yml ├── k6 │ └── k6_example.js ├── molotov │ └── blazedemo.py ├── proxy.yml └── selenium │ ├── Blazedemoju.java │ ├── Blazedemoju.yml │ ├── TestNGExample.java │ ├── TestNGExample.yml │ ├── WDJavaExample │ ├── WDJavaExample.java │ └── WDJavaExample.yml │ ├── convert_to_jmx.yml │ ├── dir │ ├── Base.java │ ├── Blazedemoju.java │ └── selenium1.java │ ├── dotnet │ ├── NUnitTests.dll │ └── XUnitTests.dll │ ├── har-screenshots.yml │ ├── maven-project │ ├── TaurusScriptV2.yml │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── framework │ │ │ └── BaseTestClassForBaseJunitTest.java │ │ └── test │ │ └── java │ │ └── selenium │ │ └── JunitBaseTest.java │ ├── mocha │ ├── lib │ │ └── blazedemo.js │ ├── package.json │ ├── test.yml │ ├── test │ │ └── bd_scenarios.js │ └── utility │ │ └── utility.js │ ├── mocha_example.js │ ├── mocha_example.yml │ ├── nunit │ ├── AssemblyDemo │ │ ├── Newtonsoft.Json.dll │ │ ├── SeleniumSuite.deps.json │ │ ├── SeleniumSuite.dll │ │ ├── SeleniumSuite.pdb │ │ ├── WebDriver.Support.dll │ │ ├── WebDriver.dll │ │ └── nunit.framework.dll │ ├── SeleniumSuite │ │ ├── .gitignore │ │ ├── README.md │ │ ├── SeleniumSuite.sln │ │ ├── SeleniumSuite │ │ │ ├── SeleniumSuite.csproj │ │ │ └── Test.cs │ │ └── test.yml │ └── nunit-assembly-suite.yml │ ├── phantomjs-demo │ ├── pom.xml │ ├── src │ │ └── test │ │ │ └── java │ │ │ └── Blazedemoju.java │ └── taurus-phantomjs.yml │ ├── pytest │ ├── pytest_selenium.py │ └── pytest_selenium.yml │ ├── pytest_example.py │ ├── pytest_example.yml │ ├── robot │ ├── .gitignore │ ├── README.md │ ├── demoapp │ │ ├── html │ │ │ ├── demo.css │ │ │ ├── error.html │ │ │ ├── index.html │ │ │ └── welcome.html │ │ └── server.py │ ├── login_tests │ │ ├── gherkin_login.robot │ │ ├── invalid_login.robot │ │ ├── resource.robot │ │ └── valid_login.robot │ └── robot.yml │ ├── rspec-capybara │ ├── .gitignore │ ├── .rspec │ ├── Gemfile │ ├── README.md │ ├── Rakefile │ ├── app │ │ ├── assets │ │ │ ├── images │ │ │ │ └── .keep │ │ │ ├── javascripts │ │ │ │ ├── application.js │ │ │ │ └── vendors.coffee │ │ │ └── stylesheets │ │ │ │ ├── application.css.sass │ │ │ │ └── vendors.scss │ │ ├── controllers │ │ │ ├── application_controller.rb │ │ │ ├── concerns │ │ │ │ └── .keep │ │ │ └── vendors_controller.rb │ │ ├── helpers │ │ │ ├── application_helper.rb │ │ │ └── vendors_helper.rb │ │ ├── mailers │ │ │ └── .keep │ │ ├── models │ │ │ ├── .keep │ │ │ ├── concerns │ │ │ │ └── .keep │ │ │ ├── suya.rb │ │ │ └── vendor.rb │ │ └── views │ │ │ ├── layouts │ │ │ └── application.html.erb │ │ │ └── vendors │ │ │ └── index.html.erb │ ├── bin │ │ ├── bundle │ │ ├── rails │ │ ├── rake │ │ ├── setup │ │ └── spring │ ├── config.ru │ ├── config │ │ ├── application.rb │ │ ├── boot.rb │ │ ├── database.yml │ │ ├── environment.rb │ │ ├── environments │ │ │ ├── development.rb │ │ │ ├── production.rb │ │ │ └── test.rb │ │ ├── initializers │ │ │ ├── assets.rb │ │ │ ├── backtrace_silencers.rb │ │ │ ├── cookies_serializer.rb │ │ │ ├── filter_parameter_logging.rb │ │ │ ├── inflections.rb │ │ │ ├── mime_types.rb │ │ │ ├── session_store.rb │ │ │ └── wrap_parameters.rb │ │ ├── locales │ │ │ └── en.yml │ │ ├── routes.rb │ │ └── secrets.yml │ ├── db │ │ ├── migrate │ │ │ ├── 20150720161409_create_vendors.rb │ │ │ ├── 20150720214640_create_suyas.rb │ │ │ ├── 20150720215129_add_meat_to_suyas.rb │ │ │ ├── 20150721092106_add_spicy_to_suyas.rb │ │ │ ├── 20150721092248_add_price_to_suyas.rb │ │ │ └── 20150721104018_add_vendor_id_to_suyas.rb │ │ ├── schema.rb │ │ └── seeds.rb │ ├── lib │ │ ├── assets │ │ │ └── .keep │ │ └── tasks │ │ │ └── .keep │ ├── log │ │ └── .keep │ ├── public │ │ ├── 404.html │ │ ├── 422.html │ │ ├── 500.html │ │ ├── favicon.ico │ │ └── robots.txt │ ├── spec │ │ ├── controllers │ │ │ └── vendors_controller_spec.rb │ │ ├── features │ │ │ └── vendors_spec.rb │ │ ├── helpers │ │ │ └── vendors_helper_spec.rb │ │ ├── models │ │ │ ├── suya_spec.rb │ │ │ └── vendor_spec.rb │ │ ├── rails_helper.rb │ │ ├── spec_helper.rb │ │ └── views │ │ │ └── vendors │ │ │ └── index.html.erb_spec.rb │ ├── test.yml │ └── vendor │ │ └── assets │ │ ├── javascripts │ │ └── .keep │ │ └── stylesheets │ │ └── .keep │ ├── rspec_example.rb │ ├── rspec_example.yml │ ├── sel-grid.yml │ ├── sel-requests.yml │ ├── selenium-dir.yml │ ├── selenium1.java │ ├── selenium1.yml │ ├── testng │ ├── pom.xml │ ├── selenium-testng.jar │ └── src │ │ └── main │ │ └── java │ │ └── example │ │ └── TestNG.java │ └── wdio │ ├── .gitignore │ ├── package.json │ ├── specs │ └── blazedemo │ │ └── homepage.js │ ├── wdio.conf.js │ └── wdio.yml ├── profiled-test.sh ├── pull_request_template.md ├── requirements.txt ├── setup.cfg ├── setup.py ├── site ├── .dockerignore ├── Dockerfile ├── Taurus │ ├── DoubleCode.php │ ├── TaurusWikiSyntax.php │ └── kwindexer.py ├── aggregate_func.sql ├── bzt-usage-stats │ ├── bzt_usage_stats.js │ ├── day.php │ ├── index.html │ ├── month.php │ └── week.php ├── cfg.php ├── composer.json ├── dat │ ├── counter.tpl │ ├── docs │ │ ├── ApacheBenchmark.md │ │ ├── Apiritif.md │ │ ├── ArtifactsDir.md │ │ ├── BlazemeterReporter.md │ │ ├── Changelog.md │ │ ├── Changelog2015.md │ │ ├── Changelog2016.md │ │ ├── Changelog2017.md │ │ ├── Changelog2018.md │ │ ├── Changelog2019.md │ │ ├── Changelog2020.md │ │ ├── Changelog2021.md │ │ ├── Changelog2022.md │ │ ├── Cloud.md │ │ ├── CommandLine.md │ │ ├── ConfigSyntax.md │ │ ├── ConsoleReporter.md │ │ ├── DataSources.md │ │ ├── DeveloperGuide.md │ │ ├── ExecutionSettings.md │ │ ├── Gatling.md │ │ ├── Index.md │ │ ├── Installation.md │ │ ├── JMX2YAML.md │ │ ├── JMeter.md │ │ ├── JUnit.md │ │ ├── K6.md │ │ ├── KeywordIndex.md │ │ ├── Lifecycle.md │ │ ├── Linter.md │ │ ├── Locust.md │ │ ├── Mocha.md │ │ ├── Molotov.md │ │ ├── Monitoring.md │ │ ├── NUnit.md │ │ ├── NewExecutorChecklist.md │ │ ├── PassFail.md │ │ ├── Postman.md │ │ ├── Proxy2JMX.md │ │ ├── PyTest.md │ │ ├── RSpec.md │ │ ├── Reporting.md │ │ ├── ResultsLoader.md │ │ ├── Robot.md │ │ ├── Selenium.md │ │ ├── Services.md │ │ ├── ShellExec.md │ │ ├── Sidebar.md │ │ ├── Siege.md │ │ ├── SoapUI.md │ │ ├── Swagger.md │ │ ├── TestNG.md │ │ ├── Tsung.md │ │ ├── WebdriverIO.md │ │ ├── XUnit.md │ │ ├── YAMLTutorial.md │ │ ├── changes │ │ │ ├── .gitkeep │ │ │ ├── doc-fixed-broken-links.change │ │ │ ├── doc-locust-hold-for.change │ │ │ ├── enhance-gatling-extractor-include-scenario.change │ │ │ ├── feat-add-bzm-jmeter-mirror-link.change │ │ │ ├── feat-change-find_element-methods.change │ │ │ ├── feat-cloud-provisioning-validates-always.change │ │ │ ├── feat-influxdb-reporter-support.change │ │ │ ├── feat-jmeter-grpc-request.change │ │ │ ├── feat-typesecret.change │ │ │ ├── fix-add-net-tools-to-docker │ │ │ ├── fix-assert-eval-escape-js.change │ │ │ ├── fix-data-sources-logic-docs.change │ │ │ ├── fix-jmeter-postprocess-file-error.change │ │ │ ├── fix-js-escape.change │ │ │ ├── fix-k6-no-error-message-when-404.change │ │ │ ├── fix-locust-typo.change │ │ │ ├── fix-locust-wrapper-bug.change │ │ │ ├── fix-new-lines-issue.change │ │ │ ├── fix-refactor-convert-body-to-string.change │ │ │ ├── fix-review-testng-xml-search.change │ │ │ ├── fix-script-eval-escape.change │ │ │ ├── fix-shadow-waitfor.change │ │ │ ├── fix-update-all-execs-labels.change │ │ │ ├── fix-update-broken-embedded-video-link.change │ │ │ ├── fix-update-cli.change │ │ │ ├── fix-update-executor-widget.change │ │ │ ├── fix-update-molotov-executor-reader.change │ │ │ ├── fix-update-pinned-executor-versions.change │ │ │ └── pass-fail-doc-colons.change │ │ └── img │ │ │ ├── blazemeter-rsz.png │ │ │ ├── blazemeter.png │ │ │ ├── console-rsz.png │ │ │ ├── console.png │ │ │ ├── monitoring-widget.png │ │ │ └── win-tools-install.png │ ├── empty.tpl │ ├── html │ │ └── index.html │ ├── json.tpl │ ├── kb │ │ ├── AddingExecutor.md │ │ ├── Bamboo.md │ │ ├── Basic1.md │ │ ├── Index.md │ │ ├── JMeter1.md │ │ ├── Jenkins.md │ │ ├── Reporting.md │ │ ├── Scripting.md │ │ ├── SeleniumActions.md │ │ ├── ShellexecHooks.md │ │ ├── TeamCity.md │ │ ├── Videos.md │ │ └── img │ │ │ ├── Getting Started with Taurus.png │ │ │ ├── bamboo1.png │ │ │ ├── bamboo10.png │ │ │ ├── bamboo2.png │ │ │ ├── bamboo3.png │ │ │ ├── bamboo4.png │ │ │ ├── bamboo5.png │ │ │ ├── bamboo6.png │ │ │ ├── bamboo7.png │ │ │ ├── bamboo8.png │ │ │ ├── bamboo9.png │ │ │ ├── blazemeter1.png │ │ │ ├── blazemeter2.png │ │ │ ├── blazemeter3.png │ │ │ ├── console.png │ │ │ ├── console2.png │ │ │ ├── console3.png │ │ │ ├── console4.png │ │ │ ├── console5.png │ │ │ ├── console6.png │ │ │ ├── console7.png │ │ │ ├── console8.png │ │ │ ├── java-project-idea.png │ │ │ ├── jenkins1.png │ │ │ ├── jenkins2.png │ │ │ ├── jenkins3.png │ │ │ ├── jenkins4.png │ │ │ ├── jmeter-files.png │ │ │ ├── sel-act1.png │ │ │ ├── sel-act2.png │ │ │ ├── sel-act3.png │ │ │ ├── sel-act4.png │ │ │ ├── sel-act5.png │ │ │ ├── sel-act6.png │ │ │ ├── sel-act7.png │ │ │ ├── sel-act8.png │ │ │ ├── selenium-ldjson.png │ │ │ ├── shellexec1.png │ │ │ ├── shellexec2.png │ │ │ ├── teamcity1.png │ │ │ ├── teamcity10.png │ │ │ ├── teamcity11.png │ │ │ ├── teamcity12.png │ │ │ ├── teamcity13.png │ │ │ ├── teamcity14.png │ │ │ ├── teamcity15.png │ │ │ ├── teamcity16.png │ │ │ ├── teamcity2.png │ │ │ ├── teamcity3.png │ │ │ ├── teamcity4.png │ │ │ ├── teamcity5.png │ │ │ ├── teamcity6.png │ │ │ ├── teamcity7.png │ │ │ ├── teamcity8.png │ │ │ └── teamcity9.png │ ├── out.xml │ ├── sample-scripts │ │ ├── complex_yaml_script.yml.md │ │ ├── existing_jmeter_script.yml.md │ │ └── quick_test.yml.md │ └── taurus.tpl ├── deploy-site.sh ├── img │ ├── .htaccess │ ├── Taurus.svg │ ├── blazemeter-mini.png │ ├── codename-taurus.png │ ├── favicon.png │ ├── taurus.css │ ├── taurus.ico │ └── taurus.png ├── index.php ├── php.ini ├── updates.php └── vendor │ └── .htaccess └── tests ├── ci ├── Dockerfile ├── Jenkinsfile-image-builder ├── JobDsl.groovy ├── JobDsl_master.groovy ├── JobDsl_stable.groovy ├── build-brew.sh ├── nose2.cfg └── requirements.txt ├── resources ├── BlazeDemo.java ├── ab │ ├── ab.bat │ ├── ab.sh │ └── ab.tsv ├── android-emulator │ ├── emulator.bat │ ├── emulator.py │ └── emulator.sh ├── apiritif │ ├── dummy-output.out │ ├── test_codegen.py │ ├── test_codegen.yml │ ├── test_codegen_requests.py │ ├── test_data_sources.py │ ├── test_nfc.py │ ├── test_nfc.yml │ ├── test_transactions.py │ ├── test_vars.py │ └── transactions.ldjson ├── appium │ ├── appium.bat │ ├── appium.py │ └── appium.sh ├── artifacts-1.zip ├── functional │ ├── apiritif.ldjson │ ├── postman.json │ ├── test_all.py │ └── xunit-report.xml ├── gatling │ ├── LocalBasicSimulation.scala │ ├── SimpleSimulation.scala │ ├── bs │ │ └── BasicSimulation.scala │ ├── deps.jar │ ├── embedded_res.scala │ ├── gatling-1-000 │ │ └── simulation.log │ ├── gatling-2-000 │ │ └── simulation.log │ ├── gatling-3-000 │ │ └── simulation.log │ ├── gatling-331-000 │ │ └── simulation.log │ ├── gatling-351-000 │ │ └── simulation.log │ ├── gatling-4-000 │ │ └── simulation.log │ ├── gatling-5-000 │ │ └── simulation.log │ ├── gatling-dist-3.5.1.zip │ ├── gatling-fake.py │ ├── gatling3.bat │ ├── gatling3.scala │ ├── gatling3.sh │ ├── generated-include-scenario.scala │ ├── generated1.scala │ ├── generated3.scala │ ├── generated4.scala │ ├── generated6.scala │ ├── generated7.scala │ ├── generated_data_sources.scala │ └── simulations.jar ├── httpserver │ ├── BlazeDemo.html │ └── start.py ├── jmeter │ ├── body-file.dat │ ├── jmeter-fake.py │ ├── jmeter-loader.bat │ ├── jmeter-loader.sh │ ├── jmeter-plugins-manager.jar │ ├── jmx │ │ ├── SteppingThreadGroup.jmx │ │ ├── TP.jmx │ │ ├── UTG_dummy.jmx │ │ ├── all_controllers.jmx │ │ ├── broken.jmx │ │ ├── cookiemanagers.jmx │ │ ├── csvs.jmx │ │ ├── delimiters.jmx │ │ ├── dummy.jmx │ │ ├── dummy_plan.jmx │ │ ├── empty_concurrency.jmx │ │ ├── files.jmx │ │ ├── files_paths.jmx │ │ ├── http.jmx │ │ ├── int_threads.jmx │ │ ├── issue_no_iterations.jmx │ │ ├── iterations-TG.jmx │ │ ├── iterations-property.jmx │ │ ├── json_extractors.jmx │ │ ├── jsr223.jmx │ │ ├── nested │ │ │ └── directory │ │ │ │ ├── a.csv │ │ │ │ └── csv.jmx │ │ ├── not-jmx.xml │ │ ├── null-iterations.jmx │ │ ├── props_tg.jmx │ │ ├── stepping_ramp_up.jmx │ │ ├── threadgroups.jmx │ │ ├── transactions.jmx │ │ ├── two_tg.jmx │ │ ├── variable_csv.jmx │ │ ├── variable_file_upload.jmx │ │ └── zero-concurrency.jmx │ ├── jtl │ │ ├── 500-success │ │ │ ├── error.jtl │ │ │ └── kpi.jtl │ │ ├── apiritif-results │ │ │ ├── apiritif--10.csv │ │ │ ├── apiritif--11.csv │ │ │ ├── apiritif-0.csv │ │ │ └── apiritif-1.csv │ │ ├── cookies.jtl │ │ ├── crash_trace.jtl │ │ ├── doublequoting.jtl │ │ ├── embedded_resources │ │ │ ├── error_ed.jtl │ │ │ └── kpi_ed.jtl │ │ ├── error-302.jtl │ │ ├── error-assertions.jtl │ │ ├── error-bug1.jtl │ │ ├── error-mix.jtl │ │ ├── error-pair1.jtl │ │ ├── error-parsing.jtl │ │ ├── error-puzzle.jtl │ │ ├── error1.jtl │ │ ├── huge.error.response.jtl │ │ ├── kpi-pair1.jtl │ │ ├── kpi1.jtl │ │ ├── many-errors-duplicated-responses.jtl │ │ ├── many-errors-empty-responses.jtl │ │ ├── many-errors-unique-responses.jtl │ │ ├── non-http │ │ │ ├── error.jtl │ │ │ └── kpi.jtl │ │ ├── nonstandard-unicode.jtl │ │ ├── quote-guessing-crash.jtl │ │ ├── resource-error-embedded.jtl │ │ ├── resource-errors-child-assert.jtl │ │ ├── resource-errors-child-no-assert.jtl │ │ ├── resource-errors-main-assert.jtl │ │ ├── resource-errors-no-fail.jtl │ │ ├── resource_tc.jtl │ │ ├── simple.error.jtl │ │ ├── simple.kpi.jtl │ │ ├── slow-stdev.jtl │ │ ├── smart-aggregation │ │ │ ├── error.jtl │ │ │ └── kpi.jtl │ │ ├── standard-errors.jtl │ │ ├── tabs.jtl │ │ ├── trace-no-response-body.jtl │ │ ├── trace.jtl │ │ ├── tranctl.jtl │ │ ├── unicode-reqs.jtl │ │ └── unicode.jtl │ ├── torero │ │ └── duration-with-env.jmx │ └── unicode_file ├── json │ ├── blazemeter-api-accounts.json │ ├── blazemeter-api-user.json │ ├── concurrency.json │ ├── gatling.json │ ├── get-post.json │ ├── jmx.json │ ├── json-but-not-yaml.json │ ├── merge1.json │ ├── merge2.json │ ├── mock_end_err.json │ ├── mock_normal.json │ ├── mock_postproc_err.json │ ├── mock_prepare_err.json │ ├── mock_start_err.json │ ├── mock_wait_err.json │ ├── passfail.json │ └── reporting.json ├── k6 │ ├── k6_kpi.csv │ ├── k6_mock.bat │ ├── k6_mock.sh │ └── k6_script.js ├── locust │ ├── generated_from_requests.py │ ├── locust-kpi.jtl │ ├── locust-mock.bat │ ├── locust-mock.sh │ ├── locust-workers.ldjson │ ├── locust-workers2.ldjson │ ├── locust.py │ └── simple.py ├── molotov │ ├── loadtest.py │ ├── molotov-mock.bat │ ├── molotov-mock.sh │ └── molotov-report.csv ├── monitoring │ ├── cgroups1 │ │ ├── invalid_total_inactive_file │ │ │ └── memory │ │ │ │ ├── memory.limit_in_bytes │ │ │ │ ├── memory.stat │ │ │ │ └── memory.usage_in_bytes │ │ ├── no_cpu_limit1 │ │ │ └── cpu │ │ │ │ ├── cpu.cfs_period_us │ │ │ │ ├── cpu.cfs_quota_us │ │ │ │ └── cpuacct.usage │ │ ├── no_cpu_limit2 │ │ │ └── cpu │ │ │ │ ├── cpu.cfs_period_us │ │ │ │ ├── cpu.cfs_quota_us │ │ │ │ └── cpuacct.usage │ │ ├── no_mem_limit │ │ │ └── memory │ │ │ │ ├── memory.limit_in_bytes │ │ │ │ ├── memory.stat │ │ │ │ └── memory.usage_in_bytes │ │ ├── no_total_inactive_file │ │ │ └── memory │ │ │ │ ├── memory.limit_in_bytes │ │ │ │ ├── memory.stat │ │ │ │ └── memory.usage_in_bytes │ │ ├── with_absent_cpu_usage1 │ │ │ └── cpu │ │ │ │ ├── cpu.cfs_period_us │ │ │ │ ├── cpu.cfs_quota_us │ │ │ │ └── cpuacct.usage │ │ ├── with_cpu_limit1 │ │ │ └── cpu │ │ │ │ ├── cpu.cfs_period_us │ │ │ │ ├── cpu.cfs_quota_us │ │ │ │ └── cpuacct.usage │ │ ├── with_cpu_limit2 │ │ │ └── cpu │ │ │ │ ├── cpu.cfs_period_us │ │ │ │ ├── cpu.cfs_quota_us │ │ │ │ └── cpuacct.usage │ │ ├── with_invalid_cpu_usage1 │ │ │ └── cpu │ │ │ │ ├── cpu.cfs_period_us │ │ │ │ └── cpu.cfs_quota_us │ │ ├── with_mem_limit │ │ │ └── memory │ │ │ │ ├── memory.limit_in_bytes │ │ │ │ ├── memory.stat │ │ │ │ └── memory.usage_in_bytes │ │ ├── with_small_cpu_period1 │ │ │ └── cpu │ │ │ │ ├── cpu.cfs_period_us │ │ │ │ ├── cpu.cfs_quota_us │ │ │ │ └── cpuacct.usage │ │ ├── with_small_cpu_period2 │ │ │ └── cpu │ │ │ │ ├── cpu.cfs_period_us │ │ │ │ ├── cpu.cfs_quota_us │ │ │ │ └── cpuacct.usage │ │ └── zero_total_inactive_file │ │ │ └── memory │ │ │ ├── memory.limit_in_bytes │ │ │ ├── memory.stat │ │ │ └── memory.usage_in_bytes │ ├── cgroups2 │ │ ├── invalid_cpu_quota1 │ │ │ ├── cpu.max │ │ │ └── cpu.stat │ │ ├── invalid_cpu_quota2 │ │ │ ├── cpu.max │ │ │ └── cpu.stat │ │ ├── invalid_inactive_file │ │ │ ├── memory.current │ │ │ ├── memory.max │ │ │ └── memory.stat │ │ ├── no_cpu_limit1 │ │ │ ├── cpu.max │ │ │ └── cpu.stat │ │ ├── no_cpu_limit2 │ │ │ ├── cpu.max │ │ │ └── cpu.stat │ │ ├── no_inactive_file │ │ │ ├── memory.current │ │ │ ├── memory.max │ │ │ └── memory.stat │ │ ├── no_mem_limit │ │ │ ├── memory.current │ │ │ ├── memory.max │ │ │ └── memory.stat │ │ ├── with_absent_cpu_usage1 │ │ │ ├── cpu.max │ │ │ └── cpu.stat │ │ ├── with_cpu_limit1 │ │ │ ├── cpu.max │ │ │ └── cpu.stat │ │ ├── with_cpu_limit2 │ │ │ ├── cpu.max │ │ │ └── cpu.stat │ │ ├── with_invalid_cpu_usage1 │ │ │ ├── cpu.max │ │ │ └── cpu.stat │ │ ├── with_mem_limit │ │ │ ├── memory.current │ │ │ ├── memory.max │ │ │ └── memory.stat │ │ ├── with_small_cpu_period1 │ │ │ ├── cpu.max │ │ │ └── cpu.stat │ │ ├── with_small_cpu_period2 │ │ │ ├── cpu.max │ │ │ └── cpu.stat │ │ └── zero_inactive_file │ │ │ ├── memory.current │ │ │ ├── memory.max │ │ │ └── memory.stat │ └── mtab │ │ ├── mtab-cgroups1 │ │ ├── mtab-cgroups2 │ │ └── mtab-empty ├── newman │ ├── newman.bat │ └── newman.sh ├── plugins │ ├── bzt_plugin_dummy │ │ ├── 50-dummy.yml │ │ ├── __init__.py │ │ ├── bzt-configs.json │ │ ├── demo.yml │ │ └── dummy.py │ └── bzt_plugin_invalid │ │ ├── __init__.py │ │ └── bzt-configs.json ├── python-pip │ ├── python-pip.bat │ └── python-pip.sh ├── selenium │ ├── capabilities_options_for_remote_chrome.py │ ├── capabilities_options_for_remote_chrome_s3.py │ ├── capabilities_options_for_remote_edge.py │ ├── capabilities_options_for_remote_firefox.py │ ├── capabilities_options_for_remote_firefox_s3.py │ ├── capabilities_options_for_remote_other.py │ ├── capabilities_options_for_remote_other_s3.py │ ├── capabilities_options_for_remote_safari.py │ ├── capabilities_options_for_remote_safari_s3.py │ ├── data-sources │ │ └── data.csv │ ├── dotnet │ │ ├── assemblies │ │ │ └── Empty.dll │ │ └── bin │ │ │ ├── nunit-runner-mock.bat │ │ │ ├── nunit-runner-mock.sh │ │ │ ├── xunit-runner-mock.bat │ │ │ └── xunit-runner-mock.sh │ ├── external_logging.py │ ├── external_logging_4_10.py │ ├── f1.py │ ├── f2.py │ ├── generated_from_requests.py │ ├── generated_from_requests_4_10.py │ ├── generated_from_requests_appium_browser.py │ ├── generated_from_requests_appium_browser_4_10.py │ ├── generated_from_requests_flow_markers.py │ ├── generated_from_requests_flow_markers_4_10.py │ ├── generated_from_requests_foreach.py │ ├── generated_from_requests_foreach_4_10.py │ ├── generated_from_requests_if_then_else.py │ ├── generated_from_requests_if_then_else_4_10.py │ ├── generated_from_requests_loop_variables.py │ ├── generated_from_requests_loop_variables_4_10.py │ ├── generated_from_requests_remote.py │ ├── generated_from_requests_remote_4_10.py │ ├── generated_from_requests_report_inside_actions.py │ ├── generated_from_requests_shadow.py │ ├── generated_from_requests_shadow_4_10.py │ ├── generated_from_requests_td_publish.py │ ├── generated_from_requests_v2.py │ ├── generated_from_requests_v2_4_10.py │ ├── invalid │ │ ├── NotJUnittest.java │ │ ├── __init__.py │ │ ├── dummy.py │ │ └── invalid.java │ ├── js-mocha │ │ ├── bd_scenarios.js │ │ ├── mocha.bat │ │ └── mocha.sh │ ├── js-wdio │ │ ├── .gitignore │ │ ├── package.json │ │ ├── specs │ │ │ └── twitter │ │ │ │ └── homepage.js │ │ ├── wdio.bat │ │ ├── wdio.conf.js │ │ └── wdio.sh │ ├── junit │ │ ├── jar │ │ │ ├── another_dummy.jar │ │ │ └── dummy.jar │ │ ├── java │ │ │ └── TestBlazemeterFail.java │ │ ├── java_package │ │ │ └── src │ │ │ │ └── selenium_package │ │ │ │ ├── Dummy.java │ │ │ │ └── tests │ │ │ │ ├── TestStaff.java │ │ │ │ ├── main_page │ │ │ │ └── TestMainPage.java │ │ │ │ └── second_page │ │ │ │ └── TestSecondPage.java │ │ └── runner.properties │ ├── loop_over_data_all.py │ ├── loop_over_data_no_indexes.py │ ├── loop_over_data_only_from_ix.py │ ├── loop_over_data_only_to_ix.py │ ├── mocha-7.0.0.tgz │ ├── mockdriver │ ├── pytest │ │ ├── bin │ │ │ └── runner.py │ │ ├── test_blazedemo.py │ │ ├── test_single.py │ │ └── test_statuses.py │ ├── python │ │ ├── __init__.py │ │ ├── bad_name.py │ │ ├── test_blazemeter_fail.py │ │ ├── test_blazemeter_pass.py │ │ ├── test_selenium_transactions.py │ │ └── test_setup_exception.py │ ├── report.ldjson │ ├── robot │ │ ├── robot-mock.bat │ │ ├── robot-mock.sh │ │ └── simple │ │ │ ├── lib │ │ │ └── LoginLibrary.py │ │ │ ├── sut │ │ │ └── login.py │ │ │ ├── test.robot │ │ │ ├── test_novar.robot │ │ │ └── vars.yaml │ ├── ruby │ │ ├── example_spec.rb │ │ ├── ruby.bat │ │ └── ruby.sh │ ├── selenium-server.jar │ ├── selenium-webdriver-1.0.0.tgz │ ├── test_action_start.py │ ├── test_nfc.py │ ├── test_nfc.yml │ ├── test_nfc_4_10.py │ └── testng │ │ ├── TestNGFailingSetup.java │ │ ├── TestNGSuite.java │ │ ├── jars │ │ ├── testng-suite.jar │ │ └── testng.xml │ │ ├── test.yml │ │ ├── testng-suite.jar │ │ └── testng.xml ├── siege │ ├── siege.bat │ ├── siege.out │ ├── siege.sh │ ├── siegerc │ └── url-file ├── soapui │ ├── amazon-sample.xml │ ├── egalaxy.xml │ ├── egalaxy.xml.yml │ ├── flickr-sample.xml │ ├── flickr-sample.xml.yml │ ├── globalweather.xml │ ├── gmaps-sample.xml │ ├── project.xml │ ├── project.xml.yml │ ├── smart.xml │ ├── smart.xml.yml │ └── youtube-sample.xml ├── swagger │ ├── auth-basic-converted.yaml │ ├── auth-basic-local-converted.yaml │ ├── auth-basic-local.json │ ├── auth-basic.json │ ├── auth-key-as-param-converted.yaml │ ├── auth-key-as-param.json │ ├── auth-key-converted.yaml │ ├── auth-key-multiscenarios-converted.yaml │ ├── auth-key.json │ ├── bzm-api-converted.yaml │ ├── bzm-api.json │ ├── bzm-converted-none.yaml │ ├── bzm-converted-values.yaml │ ├── bzm-converted-variables.yaml │ ├── no-host.json │ ├── non-yaml.json │ ├── petstore-converted.yaml │ ├── petstore.json │ └── petstore.yaml ├── test1.csv ├── test2.csv ├── tsung │ ├── http_simple.xml │ ├── stats │ │ └── tsung-stats │ │ │ ├── tsung.dump │ │ │ └── tsung.log │ ├── tsung.bat │ └── tsung.sh └── yaml │ ├── converter │ ├── all_controllers.yml │ ├── assertions.jmx │ ├── auth_manager.jmx │ ├── broken_resp_asserts.jmx │ ├── broken_resp_asserts.yml │ ├── controllers.jmx │ ├── controllers.yml │ ├── default.jmx │ ├── disabled.jmx │ ├── disabled.yml │ ├── duration.jmx │ ├── extractors.jmx │ ├── global_copy.jmx │ ├── group-tg.jmx │ ├── json_body.jmx │ ├── loop-controllers.jmx │ ├── param-null.jmx │ ├── params_conversion.jmx │ ├── params_conversion.yml │ ├── unicode.jmx │ └── vars.jmx │ ├── disable_autodetect.yml │ ├── distributed_gui.yml │ ├── env-eval.yml │ ├── error-response-bodies-config.yaml │ ├── func_test │ ├── gatling.yml │ ├── locust.yml │ ├── locust_script.py │ └── selenium.yml │ ├── included-circular1.yml │ ├── included-circular2.yml │ ├── included-level1.yml │ ├── included-level2.yml │ ├── included-level3.yml │ ├── jmeter-test-script.yaml │ ├── multi-docs.yml │ ├── resource_files.yml │ ├── selenium_executor_requests.yml │ ├── selenium_from_extension.yml │ ├── singletone-service.yml │ ├── tabs-issue-spaces.yml │ ├── tabs-issue.yml │ ├── test.yml │ ├── timers.yml │ ├── triple.yml │ └── wrong_cmd.yml └── unit ├── __init__.py ├── base.py ├── bza_client_example.py ├── cases.py ├── mocks.py ├── modules ├── __init__.py ├── _selenium │ ├── __init__.py │ ├── test_apiritif_builder.py │ ├── test_csharp.py │ ├── test_java.py │ ├── test_javascript.py │ ├── test_python_executors.py │ ├── test_ruby.py │ ├── test_selenium_builder.py │ ├── test_selenium_builder_4_10_0.py │ ├── test_selenium_builder_4_1_14.py │ └── test_selenium_executor.py ├── blazemeter │ └── test_engine_metrics.py ├── jmeter │ ├── __init__.py │ ├── test_JMX.py │ ├── test_JMeterExecutor.py │ ├── test_JMeterTool.py │ ├── test_JTLReader.py │ ├── test_ScenarioBuilder.py │ └── test_Threadgroups.py ├── pyscripts │ ├── __init__.py │ └── test_jmxrampup.py ├── test_ApacheBenchmark.py ├── test_FinalStatusReporter.py ├── test_GUIScreen.py ├── test_Gatling.py ├── test_JUnitXMLReporter.py ├── test_LocalProvisioning.py ├── test_Siege.py ├── test_SoapUI.py ├── test_Tsung.py ├── test_aggregator.py ├── test_blazeMeterUploader.py ├── test_cloudProvisioning.py ├── test_consoleStatusReporter.py ├── test_consolidatingAggregator.py ├── test_external.py ├── test_functionalAggregator.py ├── test_k6.py ├── test_locustIOExecutor.py ├── test_molotov.py ├── test_monitoring.py ├── test_passFailStatus.py ├── test_proxy2jmx.py ├── test_services.py └── test_shellexec.py ├── test_CLI.py ├── test_bza.py ├── test_configuration.py ├── test_engine.py ├── test_jmx2yaml.py ├── test_linter.py ├── test_multiPartForm.py ├── test_soapui2yaml.py ├── test_swagger2yaml.py └── test_utils.py /.codecov.yml: -------------------------------------------------------------------------------- 1 | codecov: 2 | notify: 3 | require_ci_to_pass: yes 4 | 5 | coverage: 6 | round: up 7 | 8 | ignore: 9 | - bzt/resources 10 | 11 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .dockerignore 3 | Dockerfile 4 | tests 5 | site 6 | **/*.pyc -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | **/target/ 2 | *.iml 3 | **/.idea/ 4 | /.cache/ 5 | /site/img/docs 6 | /site/dat/eg_globals.xml 7 | /build/ 8 | /dist/ 9 | /*.egg-info/ 10 | .coverage 11 | 12 | *.pyc 13 | *.project 14 | 15 | /site/composer.lock 16 | /site/.htaccess 17 | /site/vendor 18 | /site/img/design 19 | /site/dat/tmp 20 | 21 | # node.js 22 | node_modules 23 | .npm 24 | 25 | /tests/build/ 26 | /examples/BOOTH1/converted/ 27 | 28 | bzt/resources/NUnitRunner/* 29 | .gradle 30 | 31 | integr-artifacts* 32 | *.log 33 | examples/local* 34 | bzt/20* 35 | bzt/runtest/** -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include LICENSE 2 | include NOTICE 3 | include requirements.txt 4 | include bzt/bzt-configs.json 5 | recursive-include bzt/resources * 6 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | Codename: Taurus 2 | 3 | Copyright 2015 BlazeMeter Inc. 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. -------------------------------------------------------------------------------- /build-artifacts.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -xe 2 | 3 | PREV_DIR=`pwd` 4 | cd "$(dirname $0)" 5 | 6 | echo "Cleaning environment" 7 | python3 setup.py clean 8 | 9 | echo "Building chrome-loader.exe" 10 | rm -f bzt/resources/chrome-loader.exe 11 | x86_64-w64-mingw32-gcc -std=c99 -o bzt/resources/chrome-loader.exe bzt/resources/chrome-loader.c 12 | 13 | echo "Creating distribution packages" 14 | rm -rf ./dist 15 | python3 ./setup.py sdist bdist_wheel 16 | 17 | cd "${PREV_DIR}" 18 | -------------------------------------------------------------------------------- /build-info.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -xe 2 | 3 | echo "Getting build info" 4 | VERSION=$(git describe --tags $(git rev-list --tags --max-count=1)) 5 | GIT_INFO="$(git branch --show-current) $(git show --oneline -s)" 6 | echo "BUILD=\"${BUILD_NUMBER} $(date)\"" > bzt/resources/version/build.py 7 | echo "VERSION=\"${VERSION}\"" > bzt/resources/version/version.py 8 | echo "GIT_INFO=\"${GIT_INFO}\"" > bzt/resources/version/gitinfo.py 9 | -------------------------------------------------------------------------------- /bzt/TestNGExample.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - executor: selenium 4 | iterations: 10 5 | runner: testng 6 | scenario: 7 | script: TestNGExample.java 8 | -------------------------------------------------------------------------------- /bzt/__main__.py: -------------------------------------------------------------------------------- 1 | from bzt.cli import main 2 | 3 | if __name__ == '__main__': 4 | main() 5 | 6 | -------------------------------------------------------------------------------- /bzt/bzt-configs.json: -------------------------------------------------------------------------------- 1 | [ 2 | "resources/10-base-config.yml" 3 | ] 4 | -------------------------------------------------------------------------------- /bzt/engine/__init__.py: -------------------------------------------------------------------------------- 1 | from .names import EXEC, TAURUS_ARTIFACTS_DIR, SETTINGS 2 | from .engine import Engine 3 | from .dicts import Scenario, Configuration 4 | from .templates import HavingInstallableTools, Singletone 5 | from .modules import Provisioning, Reporter, Service, Aggregator, EngineModule, ScenarioExecutor 6 | -------------------------------------------------------------------------------- /bzt/engine/names.py: -------------------------------------------------------------------------------- 1 | """ 2 | Global BZT names 3 | 4 | Copyright 2019 BlazeMeter Inc. 5 | 6 | Licensed under the Apache License, Version 2.0 (the "License"); 7 | you may not use this file except in compliance with the License. 8 | You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, software 13 | distributed under the License is distributed on an "AS IS" BASIS, 14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | See the License for the specific language governing permissions and 16 | limitations under the License. 17 | """ 18 | 19 | EXEC = "execution" 20 | SETTINGS = "settings" 21 | SCENARIO = "scenario" 22 | TAURUS_ARTIFACTS_DIR = "TAURUS_ARTIFACTS_DIR" 23 | 24 | -------------------------------------------------------------------------------- /bzt/engine/templates.py: -------------------------------------------------------------------------------- 1 | """ 2 | BZT templates 3 | 4 | Copyright 2019 BlazeMeter Inc. 5 | 6 | Licensed under the Apache License, Version 2.0 (the "License"); 7 | you may not use this file except in compliance with the License. 8 | You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, software 13 | distributed under the License is distributed on an "AS IS" BASIS, 14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | See the License for the specific language governing permissions and 16 | limitations under the License. 17 | """ 18 | from abc import abstractmethod 19 | 20 | 21 | class HavingInstallableTools(object): 22 | @abstractmethod 23 | def install_required_tools(self): 24 | pass 25 | 26 | 27 | class Singletone(object): 28 | pass 29 | -------------------------------------------------------------------------------- /bzt/jmx/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | Modules package holds JMX handlers implementations 3 | 4 | Copyright 2017 BlazeMeter Inc. 5 | 6 | Licensed under the Apache License, Version 2.0 (the "License"); 7 | you may not use this file except in compliance with the License. 8 | You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, software 13 | distributed under the License is distributed on an "AS IS" BASIS, 14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | See the License for the specific language governing permissions and 16 | limitations under the License. 17 | """ 18 | 19 | from bzt.jmx.base import JMX, try_convert 20 | from bzt.jmx.tools import JMeterScenarioBuilder, LoadSettingsProcessor 21 | -------------------------------------------------------------------------------- /bzt/modules/_apiritif/__init__.py: -------------------------------------------------------------------------------- 1 | from .executor import ApiritifTester, ApiritifNoseExecutor 2 | -------------------------------------------------------------------------------- /bzt/modules/blazemeter/const.py: -------------------------------------------------------------------------------- 1 | DEDICATED_IPS = "dedicated-ips" 2 | LOC = "locations" 3 | LOC_WEIGHTED = "locations-weighted" 4 | NOTE_SIZE_LIMIT = 2048 -------------------------------------------------------------------------------- /bzt/modules/java/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | Copyright 2018 BlazeMeter Inc. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | """ 16 | from .tools import TaurusJavaHelper 17 | from .executors import TestNGTester, JUnitTester 18 | -------------------------------------------------------------------------------- /bzt/modules/pyscripts/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/bzt/modules/pyscripts/__init__.py -------------------------------------------------------------------------------- /bzt/modules/soapui.py: -------------------------------------------------------------------------------- 1 | from bzt.utils import SoapUIScriptConverter # backward compatibility 2 | -------------------------------------------------------------------------------- /bzt/resources/NUnitRunner/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/bzt/resources/NUnitRunner/.gitkeep -------------------------------------------------------------------------------- /bzt/resources/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/bzt/resources/__init__.py -------------------------------------------------------------------------------- /bzt/resources/chrome_launcher.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | WRAPPER=$(readlink -f "$0") 4 | HERE=$(dirname "$WRAPPER") 5 | 6 | exec "$HERE/_google-chrome" --no-sandbox --disable-infobars --start-fullscreen "$@" 7 | -------------------------------------------------------------------------------- /bzt/resources/dotnet/.gitignore: -------------------------------------------------------------------------------- 1 | # Autosave files 2 | *~ 3 | 4 | # build 5 | [Oo]bj/ 6 | [Bb]in/ 7 | packages/ 8 | TestResults/ 9 | 10 | # globs 11 | Makefile.in 12 | *.DS_Store 13 | *.sln.cache 14 | *.suo 15 | *.cache 16 | *.pidb 17 | *.userprefs 18 | *.usertasks 19 | config.log 20 | config.make 21 | config.status 22 | aclocal.m4 23 | install-sh 24 | autom4te.cache/ 25 | *.user 26 | *.tar.gz 27 | tarballs/ 28 | test-results/ 29 | Thumbs.db 30 | 31 | # Mac bundle stuff 32 | *.dmg 33 | *.app 34 | 35 | # resharper 36 | *_Resharper.* 37 | *.Resharper 38 | 39 | # dotCover 40 | *.dotCover 41 | -------------------------------------------------------------------------------- /bzt/resources/dotnet/DotnetTestRunner/Models/ReportItem.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace DotnetTestRunner.Models 4 | { 5 | public class ReportItem 6 | { 7 | public long StartTime { get; set; } 8 | public double Duration { get; set; } 9 | public string ThreadName { get; set; } 10 | public string TestCase { get; set; } 11 | public string TestSuite { get; set; } 12 | public string Status { get; set; } 13 | public string ErrorMessage { get; set; } 14 | public string ErrorTrace { get; set; } 15 | public Dictionary Extras { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /bzt/resources/dotnet/DotnetTestRunner/Program.cs: -------------------------------------------------------------------------------- 1 | using System.CommandLine; 2 | using System.Threading.Tasks; 3 | using DotnetTestRunner.Services.NUnit; 4 | using DotnetTestRunner.Services.xUnit; 5 | 6 | namespace DotnetTestRunner 7 | { 8 | public static class Program 9 | { 10 | public static async Task Main(string[] args) 11 | { 12 | var command = new RootCommand(".NET test runner for Taurus") 13 | { 14 | NUnitTestRunner.GetNUnitCommand(), 15 | XUnitTestRunner.GetNUnitCommand() 16 | }; 17 | 18 | await command.InvokeAsync(args); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /bzt/resources/dotnet/NUnitTests/NUnitTestExample.cs: -------------------------------------------------------------------------------- 1 | using NUnit.Framework; 2 | using NUnit.Framework.Legacy; 3 | 4 | namespace NUnitTests 5 | { 6 | [TestFixture] 7 | public class NUnitTestExample 8 | { 9 | private int _numberToTest; 10 | 11 | [SetUp] 12 | public void SetUp() 13 | { 14 | _numberToTest = 5; 15 | } 16 | 17 | [Test] 18 | public void IsFive_ExistingVariable_ReturnFive() 19 | { 20 | ClassicAssert.AreEqual(5, _numberToTest); 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /bzt/resources/dotnet/NUnitTests/NUnitTests.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net8.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /bzt/resources/dotnet/XUnitTests/XUnitTestExample.cs: -------------------------------------------------------------------------------- 1 | using Xunit; 2 | 3 | namespace XUnitTests 4 | { 5 | public class XUnitTestExample 6 | { 7 | private readonly int _numberToTest; 8 | 9 | public XUnitTestExample() 10 | { 11 | _numberToTest = 5; 12 | } 13 | 14 | [Fact] 15 | public void IsFive_ExistingVariable_ReturnFive() 16 | { 17 | Assert.Equal(5, _numberToTest); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /bzt/resources/dotnet/XUnitTests/XUnitTests.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net8.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /bzt/resources/shadow_element.py: -------------------------------------------------------------------------------- 1 | from selenium.webdriver.remote.webelement import WebElement 2 | 3 | 4 | class ShadowElement(WebElement): 5 | """ 6 | This class extends WebElement to allow for overriding methods that do not work properly in the Shadow components 7 | Currently the issues are mostly on salesforce site and so far only related to click action 8 | """ 9 | 10 | def __init__(self, element, driver): 11 | self.element = element 12 | self.driver = driver 13 | 14 | def __getattr__(self, attr): 15 | return getattr(self.element, attr) 16 | 17 | def click(self): 18 | self.driver.execute_script("arguments[0].click();", self.element) 19 | -------------------------------------------------------------------------------- /bzt/resources/taurus_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/bzt/resources/taurus_logo.gif -------------------------------------------------------------------------------- /bzt/resources/version/__init__.py: -------------------------------------------------------------------------------- 1 | DEV_VERSION = "0.0.0dev0" 2 | 3 | try: 4 | from .version import VERSION 5 | except ImportError: 6 | VERSION = DEV_VERSION 7 | 8 | try: 9 | from .gitinfo import GIT_INFO 10 | except ImportError: 11 | GIT_INFO = DEV_VERSION 12 | 13 | try: 14 | from .build import BUILD 15 | except ImportError: 16 | BUILD = DEV_VERSION 17 | -------------------------------------------------------------------------------- /bzt/resources/wdio-taurus-plugin/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@taurus/wdio-taurus-plugin", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "wdio-taurus-plugin.mjs", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "type": "module", 12 | "dependencies": { 13 | "@wdio/cli": "^9.2.1", 14 | "@wdio/json-reporter": "^9.1.3", 15 | "@wdio/local-runner": "^9.2.1", 16 | "@wdio/mocha-framework": "^9.1.3" 17 | } 18 | } -------------------------------------------------------------------------------- /bzt/test.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/bzt/test.jar -------------------------------------------------------------------------------- /cli-bza.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/cli-bza.png -------------------------------------------------------------------------------- /develop/Dockerfile-taurus: -------------------------------------------------------------------------------- 1 | FROM local_taurus_base 2 | 3 | COPY dist/bzt*whl /tmp 4 | 5 | WORKDIR /tmp 6 | # install python packages.. 7 | RUN $PIP_INSTALL ./bzt*whl chardet 8 | 9 | RUN rm -rf /usr/share/javascript/jquery && rm -rf /usr/share/javascript/jquery-ui && rm -rf /tmp/* && mkdir /bzt-configs /tmp/artifacts 10 | 11 | # Rootless user 12 | # USER 1337:0 13 | WORKDIR /bzt-configs 14 | ENTRYPOINT ["sh", "-c", "bzt -l /tmp/artifacts/bzt.log \"$@\"", "ignored"] 15 | -------------------------------------------------------------------------------- /develop/run_integration.sh: -------------------------------------------------------------------------------- 1 | #!/bin/zsh 2 | #This script is meant for internal testing 3 | #If you're making changes to the library versions, you need to refresh base image (it's sufficient to delete it) 4 | cd .. 5 | docker image rm local_taurus_develop -f 6 | docker pull us.gcr.io/verdant-bulwark-278/jenkins-docker-agent:taurus-agent-2 7 | docker run -v $(pwd):/tmp/taurus -w /tmp/taurus us.gcr.io/verdant-bulwark-278/jenkins-docker-agent:taurus-agent-2 sh -c "./build-artifacts.sh" 8 | [ -n "$(docker images -q local_taurus_base)" ] || docker build -f develop/Dockerfile-base -t local_taurus_base . 9 | docker build -f develop/Dockerfile-taurus --no-cache -t local_taurus_develop . 10 | docker run -v $(pwd):/bzt-configs -v $(pwd)/integr-artifacts:/tmp/artifacts local_taurus_develop -sequential examples/all-executors.yml 11 | cd develop -------------------------------------------------------------------------------- /examples/BOOTH1/cloud.yml: -------------------------------------------------------------------------------- 1 | --- 2 | provisioning: cloud 3 | 4 | modules: 5 | cloud: 6 | test: Booth Demo Scaled 7 | 8 | ~execution: 9 | - scenario: modified-jmx 10 | concurrency: 150 11 | ramp-up: 2m 12 | hold-for: 5m 13 | 14 | settings: 15 | artifacts-dir: ./bzt-artifacts 16 | interval: 5s 17 | 18 | -------------------------------------------------------------------------------- /examples/BOOTH1/convert.yml: -------------------------------------------------------------------------------- 1 | --- 2 | settings: 3 | artifacts-dir: ./converted 4 | 5 | services: 6 | - proxy2jmx 7 | - module: shellexec 8 | prepare: rm -r ./converted/* 9 | post-process: jmx2yaml ./converted/generated_Blazedemo.java.smart.jmx 10 | 11 | -------------------------------------------------------------------------------- /examples/BOOTH1/display.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - virtual-display 4 | -------------------------------------------------------------------------------- /examples/BOOTH1/jenkins.yml: -------------------------------------------------------------------------------- 1 | --- 2 | settings: 3 | #artifacts-dir: ./bzt-artifacts 4 | interval: 5s 5 | 6 | modules: 7 | blazemeter: 8 | test: Booth Demo 9 | 10 | reporting: 11 | - module: junit-xml 12 | - module: blazemeter 13 | - module: final-stats 14 | dump-csv: ${TAURUS_ARTIFACTS_DIR}/aggregate.csv 15 | 16 | services: 17 | - module: passfail 18 | criteria: 19 | - avg-rt>5000ms for 10s 20 | - failures>75% for 5s 21 | 22 | -------------------------------------------------------------------------------- /examples/BOOTH1/run-jmeter.yml: -------------------------------------------------------------------------------- 1 | --- 2 | scenarios: 3 | modified-jmx: 4 | script: ./converted/generated_Blazedemo.java.smart.jmx 5 | modifications: 6 | disable: 7 | - http://blazedemo.com/favicon.ico 8 | - https://r3---sn-p5qlsns6.gvt1.com/edgedl/chrome/dict/en-us-7-1.bdic 9 | - https://redirector.gvt1.com/edgedl/chrome/dict/en-us-7-1.bdic 10 | 11 | execution: 12 | - scenario: modified-jmx 13 | concurrency: 50 14 | ramp-up: 30s 15 | hold-for: 1m 16 | 17 | -------------------------------------------------------------------------------- /examples/BOOTH1/selenium.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | - scenario: Blazedemo.java 3 | executor: selenium 4 | -------------------------------------------------------------------------------- /examples/BOOTH2/display.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - virtual-display 4 | -------------------------------------------------------------------------------- /examples/BOOTH2/jenkins.yml: -------------------------------------------------------------------------------- 1 | --- 2 | settings: 3 | artifacts-dir: ./bzt-artifacts 4 | interval: 5s 5 | 6 | modules: 7 | blazemeter: 8 | test: Booth Demo 9 | 10 | reporting: 11 | - module: junit-xml 12 | - module: blazemeter 13 | - module: final-stats 14 | dump-csv: aggregate.csv 15 | 16 | services: 17 | - module: passfail 18 | criteria: 19 | - avg-rt>5000ms for 10s 20 | - failures>75% for 5s 21 | 22 | -------------------------------------------------------------------------------- /examples/BOOTH2/run-jmeter.yml: -------------------------------------------------------------------------------- 1 | --- 2 | scenarios: 3 | modified-jmx: 4 | script: Blazedemo.java.jmx 5 | modifications: 6 | disable: 7 | - http://blazedemo.com/favicon.ico 8 | - https://r3---sn-p5qlsns6.gvt1.com/edgedl/chrome/dict/en-us-7-1.bdic 9 | - https://redirector.gvt1.com/edgedl/chrome/dict/en-us-7-1.bdic 10 | 11 | execution: 12 | - scenario: modified-jmx 13 | concurrency: 500 14 | ramp-up: 10m 15 | 16 | services: 17 | - module: shellexec 18 | prepare: date > /tmp/1.txt 19 | post-process: rm /tmp/1.txt -------------------------------------------------------------------------------- /examples/BOOTH2/selenium.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - scenario: Blazedemo.java 4 | executor: selenium 5 | concurrency: 6 | local: 1 7 | cloud: 2 8 | hold-for: 10m 9 | -------------------------------------------------------------------------------- /examples/Jenkinsfile: -------------------------------------------------------------------------------- 1 | node { 2 | stage("clean") { 3 | cleanWs() // requires workspace cleanup plugin to be installed 4 | sh "pwd && ls -la" 5 | } 6 | 7 | stage("checkout") { 8 | checkout scm 9 | sh "pwd && ls -la" 10 | } 11 | 12 | stage("run test") { 13 | bzt "examples/jmeter/stepping.yml -report -o settings.artifacts-dir=artifacts" 14 | } 15 | 16 | stage("post-proc") { 17 | archiveArtifacts artifacts: 'artifacts/*.log' 18 | junit 'artifacts/xunit.xml' 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /examples/apiritif/apiritif_load.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | - executor: apiritif 3 | concurrency: 30 4 | ramp-up: 20m 5 | #iterations: 10000 6 | #hold-for: 1m 7 | #steps: 5 8 | scenario: local 9 | 10 | scenarios: 11 | local: 12 | retrieve-resources: false 13 | timeout: 1s 14 | #think-time: 250ms 15 | requests: 16 | - http://localhost:8080 17 | 18 | modules: 19 | blazemeter: 20 | report-name: ask -------------------------------------------------------------------------------- /examples/blazemeter-demo/dsl-quick_test.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | - concurrency: 100 3 | ramp-up: 1m 4 | hold-for: 5m 5 | scenario: quick-test 6 | 7 | scenarios: 8 | quick-test: 9 | requests: 10 | - http://blazedemo.com -------------------------------------------------------------------------------- /examples/blazemeter-demo/dsl-quick_test_cloud.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | - concurrency: 100 3 | ramp-up: 1m 4 | hold-for: 5m 5 | scenario: quick-test 6 | locations: 7 | us-west-1: 1 8 | us-east-1: 1 9 | locations-weighted: false 10 | # files: 11 | # - 1.csv 12 | # - 2.csv 13 | 14 | scenarios: 15 | quick-test: 16 | requests: 17 | - http://blazedemo.com 18 | 19 | modules: 20 | cloud: 21 | # account: My Account # numeric identifier can also be specified 22 | # workspace: Demo 23 | project: Taurus CLI # project name or id 24 | test: Quick Test Cloud -------------------------------------------------------------------------------- /examples/blazemeter-demo/existing-jmx.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | - concurrency: 100 3 | ramp-up: 1m 4 | hold-for: 5m 5 | scenario: simple 6 | 7 | scenarios: 8 | simple: 9 | script: existing-BlazeDemo.jmx 10 | properties: 11 | log_level.jmeter: DEBUG # add JMeter property 12 | variables: 13 | home_label_name: BlazeDemo.com 14 | modifications: 15 | disable: 16 | - Constant Timer -------------------------------------------------------------------------------- /examples/blazemeter-demo/junit-demo.yml: -------------------------------------------------------------------------------- 1 | --- 2 | scenarios: 3 | bdm: 4 | script: JUnitTaurusDemo.java 5 | 6 | execution: 7 | - executor: selenium 8 | scenario: bdm 9 | iterations: 10 10 | locations: 11 | eu-west-1: 1 12 | locations-weighted: false 13 | 14 | services: 15 | - module: virtual-display 16 | run-at: cloud 17 | width: 1920 18 | height: 1080 19 | - module: screenshoter 20 | run-at: cloud 21 | 22 | modules: 23 | selenium: 24 | selenium-tools: 25 | junit: 26 | compile-target-java: 1.8 -------------------------------------------------------------------------------- /examples/blazemeter-demo/module-cloud.yml: -------------------------------------------------------------------------------- 1 | --- 2 | modules: 3 | cloud: 4 | # token: ******:************** # API id and API secret divided by : 5 | timeout: 10s # BlazeMeter API client timeout 6 | browser-open: start # auto-open browser on test start/end/both/none 7 | check-interval: 5s # interval which Taurus uses to query test status from BlazeMeter 8 | public-report: false # make test report public, disabled by default 9 | send-report-email: false # send report email once test is finished, disabled by default 10 | # account: My Account # numeric identifier can also be specified 11 | workspace: Demo 12 | project: Taurus tests 13 | test: Example test 14 | # report-name: full report # name of report 15 | # detach: true # launch cloud test and immediately exit -------------------------------------------------------------------------------- /examples/blazemeter-demo/module-dedicated_ips.yml: -------------------------------------------------------------------------------- 1 | --- 2 | modules: 3 | blazemeter: 4 | cloud-mode: taurusCloud 5 | dedicated-ips: true 6 | delayed-start: true -------------------------------------------------------------------------------- /examples/blazemeter-demo/module-passfail.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - module: passfail 4 | criteria: 5 | - avg-rt>10ms for 7s, stop as failed 6 | - hits of reserve >10 for 13s, continue as failed -------------------------------------------------------------------------------- /examples/blazemeter-demo/module-v4.yml: -------------------------------------------------------------------------------- 1 | --- 2 | modules: 3 | blazemeter: 4 | cloud-mode: taurusCloud -------------------------------------------------------------------------------- /examples/blazemeter-demo/pytest-local.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | - executor: pytest 3 | iterations: 10 4 | scenario: 5 | script: pytest-blazedemo.py -------------------------------------------------------------------------------- /examples/blazemeter-demo/service-shellexec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - module: shellexec 4 | prepare: 5 | - mkdir /tmp/test 6 | startup: 7 | - echo 1 > /tmp/test 8 | - echo 2 > /tmp/test 9 | shutdown: 10 | - cat /tmp/test2 11 | post-process: 12 | - rm /tmp/test1 13 | - rm /tmp/test2 -------------------------------------------------------------------------------- /examples/bztdocker.sh: -------------------------------------------------------------------------------- 1 | sudo rm -rf `pwd`/docker-artifacts 2 | docker run -it --rm -v `pwd`:/bzt-configs -v `pwd`/docker-artifacts:/tmp/artifacts blazemeter/taurus "$@" -------------------------------------------------------------------------------- /examples/custom/run_it.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | - executor: my-custom 3 | concurrency: 100 4 | iterations: 10 5 | scenario: with-payload 6 | 7 | scenarios: 8 | with-payload: 9 | payload-file: payload.json 10 | 11 | modules: 12 | my-custom: 13 | class: custom_exec.MyCustomExecutor -------------------------------------------------------------------------------- /examples/docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python 2 | 3 | RUN pip install bzt && bzt --help 4 | 5 | RUN echo "settings:\n default-executor: apiritif" > /root/.bzt-rc 6 | 7 | WORKDIR /tmp 8 | ENTRYPOINT ["bzt"] 9 | -------------------------------------------------------------------------------- /examples/docker/test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker build -t bztm . && docker run -it -v `pwd`:/tmp bztm /tmp/test.yml -report -------------------------------------------------------------------------------- /examples/docker/test.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | - scenario: basic 3 | concurrency: 10 4 | ramp-up: 30s 5 | hold-for: 1m 6 | 7 | scenarios: 8 | basic: 9 | retrieve-resources: false 10 | think-time: 250ms 11 | requests: 12 | - http://blazedemo.com -------------------------------------------------------------------------------- /examples/executor-benchmark/all-executors.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh -xe 2 | for B in vu hits; do 3 | for E in locust gatling jmeter; do 4 | bzt scenario.yml exec-$B.yml service.yml -o execution.0.executor=$E -o modules.blazemeter.report-name="$B connect $E" -o scenarios.dummy.headers.Connection=close 5 | sleep 60 6 | bzt scenario.yml exec-$B.yml service.yml -o execution.0.executor=$E -o modules.blazemeter.report-name="$B keep-alive $E" -o scenarios.dummy.headers.Connection=keep-alive 7 | sleep 60 8 | done 9 | done -------------------------------------------------------------------------------- /examples/executor-benchmark/exec-hits.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - scenario: dummy 4 | concurrency: 2000 5 | throughput: 210000 6 | ramp-up: 15m 7 | -------------------------------------------------------------------------------- /examples/executor-benchmark/exec-vu.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - scenario: dummy 4 | concurrency: 64 5 | ramp-up: 5m 6 | -------------------------------------------------------------------------------- /examples/executor-benchmark/scenario.yml: -------------------------------------------------------------------------------- 1 | --- 2 | scenarios: 3 | dummy: 4 | default-address: http://192.168.2.2:8080 5 | retrieve-resources: false 6 | store-cache: false 7 | store-cookie: false 8 | use-dns-cache-mgr: false 9 | headers: 10 | Host: localhost 11 | timeout: 1s 12 | requests: 13 | - / 14 | -------------------------------------------------------------------------------- /examples/executor-benchmark/service.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - module: monitoring 4 | server-agent: 5 | - address: undera-laptop:4444 6 | label: target-server 7 | metrics: 8 | - cpu 9 | - disks:readbytes 10 | - disks:writebytes 11 | - network:bytesrecv 12 | - network:bytessent 13 | - module: shellexec 14 | prepare: rm -rf /tmp/benchmark-out/* 15 | 16 | reporting: 17 | - blazemeter 18 | 19 | modules: 20 | blazemeter: 21 | report-name: ask 22 | test: Taurus Executor Benchmark 23 | 24 | settings: 25 | artifacts-dir: /tmp/benchmark-out 26 | -------------------------------------------------------------------------------- /examples/functional/JUnitTest.java: -------------------------------------------------------------------------------- 1 | import org.junit.After; 2 | import org.junit.Before; 3 | import org.junit.AfterClass; 4 | import org.junit.BeforeClass; 5 | import org.junit.Test; 6 | import static org.junit.Assert.*; 7 | 8 | import java.util.concurrent.TimeUnit; 9 | import java.util.Date; 10 | import java.io.File; 11 | 12 | public class JUnitTest { 13 | @Test 14 | public void JUnit_test() { 15 | assertEquals("Hello, " + "World!", "Hello, World!"); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /examples/functional/TestNGTest.java: -------------------------------------------------------------------------------- 1 | package tests; 2 | 3 | import org.testng.Assert; 4 | import org.testng.SkipException; 5 | import org.testng.annotations.AfterMethod; 6 | import org.testng.annotations.BeforeMethod; 7 | import org.testng.annotations.Parameters; 8 | import org.testng.annotations.Test; 9 | 10 | public class TestNGTest { 11 | @Test 12 | public void testTestNG() { 13 | Assert.assertEquals(2 + 2, 4); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /examples/functional/mocha_example.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('MochaTest', function() { 4 | it('Mocha', function () { 5 | assert.equal(2 + 2, 4); 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /examples/functional/rspec_example.rb: -------------------------------------------------------------------------------- 1 | require "rspec" 2 | 3 | describe "RspecTest" do 4 | it "Ruby test" do 5 | expect(2 + 2).to eq(4) 6 | end 7 | 8 | end 9 | -------------------------------------------------------------------------------- /examples/functional/test_nose.py: -------------------------------------------------------------------------------- 1 | from unittest import TestCase 2 | 3 | 4 | class TestNose(TestCase): 5 | def test_Apiritif(self): 6 | self.assertEqual(2 + 2, 4) 7 | -------------------------------------------------------------------------------- /examples/functional/wdio_test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('sample test', () => { 4 | it("WDIO test", () => { 5 | var result = 2 + 2 * 2; 6 | assert.equal(result, 6); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /examples/gatling/BasicSimulation.scala: -------------------------------------------------------------------------------- 1 | package examples.gatling 2 | 3 | import io.gatling.core.Predef._ 4 | import io.gatling.http.Predef._ 5 | import scala.concurrent.duration._ 6 | 7 | class BasicSimulation extends Simulation { 8 | 9 | val httpConf = http 10 | .baseUrl("http://computer-database.gatling.io") 11 | .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") 12 | .doNotTrackHeader("1") 13 | .acceptLanguageHeader("en-US,en;q=0.5") 14 | .acceptEncodingHeader("gzip, deflate") 15 | .userAgentHeader("Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0") 16 | 17 | val scn = scenario("BasicSimulation") 18 | .exec(http("request_1") 19 | .get("/")) 20 | .pause(1) 21 | 22 | setUp( 23 | scn.inject(atOnceUsers(1)) 24 | ).protocols(httpConf) 25 | } -------------------------------------------------------------------------------- /examples/gatling/gatling-existing.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - executor: gatling 4 | scenario: existing 5 | 6 | concurrency: 100 7 | ramp-up: 30s 8 | steps: 5 9 | hold-for: 2m 10 | 11 | locations: 12 | us-east-1: 50 13 | us-west-1: 50 14 | 15 | scenarios: 16 | existing: 17 | script: blazedemo.scala 18 | simulation: examples.gatling.blazedemo 19 | -------------------------------------------------------------------------------- /examples/gatling/gatling-req.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - executor: gatling 4 | scenario: simple 5 | concurrency: 10 6 | ramp-up: 30s 7 | steps: 5 8 | hold-for: 2m 9 | # iterations: 100 10 | # throughput: 1000 11 | 12 | scenarios: 13 | simple: 14 | requests: 15 | - http://blazedemo.com/ 16 | blazedemo: 17 | default-address: blazedemo.com 18 | headers: 19 | X-Tracking: false 20 | Accept: "*/*" 21 | requests: 22 | - url: / 23 | headers: 24 | Accept: text/html 25 | assert: 26 | - contains: 27 | - ".+sometext.+" 28 | subject: body 29 | regexp: true 30 | not: true 31 | - url: /reserve.php 32 | method: POST 33 | body: 'Some Body Data' 34 | think-time: 2s 35 | assert: 36 | - contains: 37 | - 200 38 | subject: http-code 39 | not: true 40 | -------------------------------------------------------------------------------- /examples/gatling/gradle/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id "com.github.lkishalmi.gatling" version "0.7.4" 3 | } 4 | 5 | repositories { 6 | mavenCentral() 7 | } 8 | 9 | apply plugin: 'scala' 10 | 11 | dependencies { 12 | compile 'org.scala-lang:scala-library:2.11.8' 13 | } 14 | 15 | gatling { 16 | jvmArgs = [ '-Dgatling.core.outputDirectoryBaseName=TEST', '-Dgatling.core.directory.results=/tmp/111'] 17 | } 18 | -------------------------------------------------------------------------------- /examples/gatling/gradle/gradle-gatling.yml: -------------------------------------------------------------------------------- 1 | services: 2 | - module: shellexec 3 | prepare: 4 | - rm -rf build/reports/gatling 5 | #- gradle gatlingClasses # to spend here time, downloading JARs 6 | startup: 7 | - command: gradle gatlingRun 8 | background: true 9 | 10 | execution: 11 | - executor: external-results-loader 12 | data-file-pattern: build/reports/gatling/blazedemosimulation-*/simulation.log 13 | wait-for-file: 5s 14 | results-timeout: 5s -------------------------------------------------------------------------------- /examples/gatling/test.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/gatling/test.jar -------------------------------------------------------------------------------- /examples/gatling/test11.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/gatling/test11.jar -------------------------------------------------------------------------------- /examples/jmeter/body-file-payload.json: -------------------------------------------------------------------------------- 1 | {"payload": [1,2,3]} -------------------------------------------------------------------------------- /examples/jmeter/body-file.yml: -------------------------------------------------------------------------------- 1 | --- 2 | scenarios: 3 | bfile: 4 | think-time: 500ms 5 | requests: 6 | - url: http://blazedemo.com/purchase.php 7 | method: POST 8 | body-file: body-file-payload.json 9 | headers: 10 | Content-Type: application/json 11 | 12 | execution: 13 | - scenario: bfile 14 | hold-for: 5m -------------------------------------------------------------------------------- /examples/jmeter/csv-usage.yml: -------------------------------------------------------------------------------- 1 | --- 2 | scenarios: 3 | csv-demo: 4 | data-sources: 5 | - pages.csv 6 | - logins.csv 7 | requests: 8 | - http://blazedemo.com${page} 9 | - url: http://blazedemo.com/purchase.php 10 | method: POST 11 | body: 12 | username: ${username} 13 | password: ${password} 14 | 15 | execution: 16 | - scenario: csv-demo 17 | hold-for: 1m -------------------------------------------------------------------------------- /examples/jmeter/csv1.csv: -------------------------------------------------------------------------------- 1 | url 2 | http://localhost/?tag=csv1 3 | -------------------------------------------------------------------------------- /examples/jmeter/csv2.csv: -------------------------------------------------------------------------------- 1 | url 2 | http://localhost/?tag=csv2 3 | -------------------------------------------------------------------------------- /examples/jmeter/csv3.csv: -------------------------------------------------------------------------------- 1 | url 2 | http://localhost/?tag=csv3 3 | -------------------------------------------------------------------------------- /examples/jmeter/default-address-trick.yml: -------------------------------------------------------------------------------- 1 | --- 2 | scenarios: 3 | my_scenario: 4 | requests: 5 | - label: Home 6 | url: / 7 | method: GET 8 | think-time: 500ms 9 | 10 | execution: 11 | - concurrency: 5 12 | ramp-up: 30s 13 | hold-for: 1m 14 | scenario: 15 | default-address: http://blazedemo.com 16 | requests: 17 | - include-scenario: my_scenario 18 | -------------------------------------------------------------------------------- /examples/jmeter/existing.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | - scenario: existing 3 | concurrency: 50 4 | ramp-up: 1m 5 | hold-for: 2m 6 | 7 | scenarios: 8 | existing: 9 | headers: 10 | add-one: myval 11 | script: existing.jmx 12 | modifications: 13 | disable: 14 | - https://redirector.gvt1.com/edgedl/chrome/dict/en-us-7-1.bdic 15 | 16 | reporting: 17 | - junit-xml -------------------------------------------------------------------------------- /examples/jmeter/external.yml: -------------------------------------------------------------------------------- 1 | services: 2 | - module: shellexec 3 | prepare: 4 | - rm -f external-*.jtl # cleanup old files, so we can run it over again and again 5 | startup: # custom testing tool called here 6 | - command: jmeter -Jjmeter.save.saveservice.autoflush=true -n -t external.jmx 7 | background: true # makes Taurus proceed to results reading 8 | 9 | execution: 10 | - executor: external-results-loader 11 | data-file-pattern: external-*.jtl # find file by pattern 12 | wait-for-file: 5s # wait within this timeout for file to appear 13 | results-timeout: 5s # if no new results within this timeout - finish the job -------------------------------------------------------------------------------- /examples/jmeter/jmxvals.yml: -------------------------------------------------------------------------------- 1 | --- 2 | scenarios: 3 | jmxvals: 4 | script: jmxvals.jmx 5 | properties: 6 | users: 50 7 | rampup: 2 8 | loops: 8 9 | 10 | execution: 11 | - scenario: jmxvals 12 | -------------------------------------------------------------------------------- /examples/jmeter/logins.csv: -------------------------------------------------------------------------------- 1 | username,password 2 | user1,pwd1 3 | user2,pwd2 4 | user3,pwd3 5 | -------------------------------------------------------------------------------- /examples/jmeter/pages.csv: -------------------------------------------------------------------------------- 1 | page 2 | / 3 | /vacation.html 4 | /submit.php 5 | /404 6 | -------------------------------------------------------------------------------- /examples/jmeter/prmctl.yml: -------------------------------------------------------------------------------- 1 | --- 2 | scenarios: 3 | main: 4 | variables: 5 | url: http://localhost 6 | param: 0 7 | requests: 8 | - action: pause # this item serves as Parameterized Controller that sets variables before calling subroutine 9 | jsr223: 10 | execute: before 11 | script-text: vars.put("url", "http://blazedemo.com") 12 | - include-scenario: subroutine 13 | 14 | - action: pause 15 | jsr223: 16 | execute: before 17 | script-text: | # this is an example of multiline code block, marked by `|` 18 | vars.put("url", "http://blazedemo.com/vacation.html") 19 | vars.put("param", "${__Random(0,10)}") 20 | - include-scenario: subroutine 21 | subroutine: 22 | requests: 23 | - ${url}?param=${param} 24 | 25 | execution: 26 | - scenario: main 27 | hold-for: 1m 28 | -------------------------------------------------------------------------------- /examples/jmeter/simple-assert.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - concurrency: 1 4 | iterations: 50 5 | scenario: sc 6 | 7 | scenarios: 8 | sc: 9 | requests: 10 | - http://blazedemo.com/ 11 | - url: http://blazedemo.com 12 | label: should-fail 13 | assert: 14 | - "non-exist" 15 | -------------------------------------------------------------------------------- /examples/jmeter/three.yml: -------------------------------------------------------------------------------- 1 | --- 2 | scenarios: 3 | base: # this scenario will be re-used below with changing csv_file property 4 | data-sources: 5 | - ${__P(csv_file)} 6 | requests: 7 | - ${url} 8 | 9 | csv1: 10 | properties: 11 | csv_file: csv1.csv 12 | requests: 13 | - include-scenario: base 14 | 15 | csv2: 16 | properties: 17 | csv_file: csv2.csv 18 | requests: 19 | - include-scenario: base 20 | 21 | csv3: 22 | properties: 23 | csv_file: csv3.csv 24 | requests: 25 | - include-scenario: base 26 | 27 | # this will make executions to run one after another 28 | modules: 29 | local: 30 | sequential: true 31 | 32 | execution: # three executions, one per CSV file 33 | - scenario: csv1 34 | iterations: 1 35 | - scenario: csv2 36 | iterations: 1 37 | - scenario: csv3 38 | iterations: 1 39 | 40 | -------------------------------------------------------------------------------- /examples/k6/k6_example.js: -------------------------------------------------------------------------------- 1 | import http from 'k6/http'; 2 | import { sleep } from 'k6'; 3 | 4 | export default function () { 5 | http.get('https://blazedemo.com/?tool=K6'); 6 | } 7 | -------------------------------------------------------------------------------- /examples/molotov/blazedemo.py: -------------------------------------------------------------------------------- 1 | import molotov 2 | 3 | 4 | @molotov.scenario(100) 5 | async def Molotov_test(session): 6 | async with session.get('https://blazedemo.com/') as resp: 7 | assert resp.status == 200 8 | -------------------------------------------------------------------------------- /examples/proxy.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | - executor: jmeter 3 | hold-for: 30s 4 | scenario: 5 | retrieve-resources: false 6 | requests: 7 | - http://blazedemo.com/ 8 | 9 | 10 | # instructing JMeter to use proxy 11 | modules: 12 | jmeter: 13 | system-properties: 14 | http.proxyHost: 192.168.100.2 15 | http.proxyPort: 3128 16 | http.proxyUser: me 17 | http.proxyPass: really 18 | https.proxyHost: 192.168.100.2 19 | https.proxyPort: 3128 20 | https.proxyUser: me 21 | https.proxyPass: really 22 | 23 | # instructing Taurus to use proxy for Taurus-based requests (installing JMeter and plugins, etc) 24 | settings: 25 | proxy: 26 | address: http://192.168.100.2:3128 27 | username: me 28 | password: really 29 | 30 | -------------------------------------------------------------------------------- /examples/selenium/Blazedemoju.yml: -------------------------------------------------------------------------------- 1 | --- 2 | scenarios: 3 | bdm: 4 | script: Blazedemoju.java 5 | properties: 6 | scenprop: 1 7 | run-items: 8 | - Blazedemoju#blazedemoju1 9 | 10 | execution: 11 | - executor: selenium 12 | scenario: bdm 13 | run-items: 14 | - Blazedemoju#blazedemoju 15 | iterations: 5 16 | properties: 17 | execprop: 1 18 | 19 | modules: 20 | selenium: 21 | selenium-tools: 22 | junit: 23 | compile-target-java: 1.8 24 | properties: 25 | selsett: 1 26 | junit: 27 | properties: 28 | junitsett: 1 29 | -------------------------------------------------------------------------------- /examples/selenium/TestNGExample.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - executor: selenium 4 | iterations: 10 5 | runner: testng 6 | scenario: 7 | script: TestNGExample.java 8 | -------------------------------------------------------------------------------- /examples/selenium/WDJavaExample/WDJavaExample.yml: -------------------------------------------------------------------------------- 1 | --- 2 | scenarios: 3 | bdm: 4 | script: WDJavaExample.java 5 | 6 | execution: 7 | - executor: selenium 8 | scenario: bdm 9 | iterations: 1 10 | 11 | modules: 12 | selenium: 13 | selenium-tools: 14 | junit: 15 | compile-target-java: 1.8 -------------------------------------------------------------------------------- /examples/selenium/convert_to_jmx.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | executor: selenium 4 | iterations: 1 5 | scenario: 6 | script: dir 7 | 8 | services: 9 | - proxy2jmx 10 | -------------------------------------------------------------------------------- /examples/selenium/dir/Base.java: -------------------------------------------------------------------------------- 1 | package dir; 2 | 3 | import org.junit.Test; 4 | 5 | public abstract class Base { 6 | @Test 7 | public void runTests() { 8 | testMethod(); 9 | } 10 | 11 | abstract public void testMethod(); 12 | } 13 | -------------------------------------------------------------------------------- /examples/selenium/dotnet/NUnitTests.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/dotnet/NUnitTests.dll -------------------------------------------------------------------------------- /examples/selenium/dotnet/XUnitTests.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/dotnet/XUnitTests.dll -------------------------------------------------------------------------------- /examples/selenium/har-screenshots.yml: -------------------------------------------------------------------------------- 1 | --- 2 | scenarios: 3 | req: 4 | browser: Chrome 5 | requests: 6 | - http://ca.com 7 | 8 | execution: 9 | - scenario: req 10 | executor: selenium 11 | iterations: 1 12 | 13 | services: 14 | - module: virtual-display 15 | run-at: local 16 | - capturehar 17 | - screenshoter 18 | 19 | 20 | --- 21 | # fail it when no report was generated 22 | services: 23 | - module: shellexec 24 | post-process: ls ${TAURUS_ARTIFACTS_DIR}/cloud-artifacts/nose-req.har.html 25 | run-at: cloud 26 | #- module: shellexec 27 | # run-at: local 28 | # shutdown: cp /tmp/*.log ${TAURUS_ARTIFACTS_DIR}/ 29 | -------------------------------------------------------------------------------- /examples/selenium/maven-project/TaurusScriptV2.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Requires Taurus >= 1.6.9 3 | execution: 4 | - executor: selenium 5 | ramp-up: 1m 6 | hold-for: 30s 7 | scenario: simple-junit-test 8 | 9 | scenarios: 10 | simple-junit-test: 11 | script: ./src/test/java 12 | additional-classpath: 13 | - target/Selenium-1.0-SNAPSHOT.jar 14 | 15 | services: 16 | - module: shellexec 17 | prepare: mvn -Dmaven.test.skip=true clean package -------------------------------------------------------------------------------- /examples/selenium/maven-project/src/main/java/framework/BaseTestClassForBaseJunitTest.java: -------------------------------------------------------------------------------- 1 | package framework; 2 | 3 | import org.junit.AfterClass; 4 | import org.junit.BeforeClass; 5 | 6 | public class BaseTestClassForBaseJunitTest { 7 | @BeforeClass 8 | public static void beforeSuite() { 9 | System.out.println("beforeSuite"); 10 | } 11 | 12 | @AfterClass 13 | public static void afterClass() { 14 | System.out.println("afterSuite"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /examples/selenium/maven-project/src/test/java/selenium/JunitBaseTest.java: -------------------------------------------------------------------------------- 1 | package selenium; 2 | 3 | import framework.BaseTestClassForBaseJunitTest; 4 | import org.junit.Assert; 5 | import org.junit.Test; 6 | 7 | public class JunitBaseTest extends BaseTestClassForBaseJunitTest { 8 | @Test 9 | public void test(){ 10 | Assert.assertTrue(true); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /examples/selenium/mocha/lib/blazedemo.js: -------------------------------------------------------------------------------- 1 | exports.homePage = function() { 2 | return 'http://blazedemo.com/'; 3 | }; 4 | 5 | exports.homePageTitle = function() { 6 | return 'BlazeDemo'; 7 | }; 8 | 9 | exports.reserve = function() { 10 | return 'reserve.php'; 11 | }; 12 | -------------------------------------------------------------------------------- /examples/selenium/mocha/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mocha-webdriver-suite", 3 | "version": "1.0.0", 4 | "description": "Example selenium-based test suite using Mocha", 5 | "main": "index.js", 6 | "engines" : { 7 | "node" : ">= 6.9.0" 8 | }, 9 | "directories": { 10 | "test": "test" 11 | }, 12 | "dependencies": { 13 | "mocha": "^3.0.2", 14 | "selenium-webdriver": "^3.0.0-beta-3" 15 | }, 16 | "devDependencies": {}, 17 | "scripts": { 18 | "test": "mocha" 19 | }, 20 | "author": "", 21 | "license": "ISC", 22 | "repository": { 23 | "type": "git", 24 | "url": "https://github.com/Blazemeter/taurus" 25 | }, 26 | "bugs": { 27 | "url": "https://github.com/Blazemeter/taurus" 28 | }, 29 | "homepage": "https://github.com/Blazemeter/taurus" 30 | } 31 | -------------------------------------------------------------------------------- /examples/selenium/mocha/test.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - executor: selenium 4 | iterations: 5 5 | scenario: 6 | script: test/ # will run all .js files from test/ folder 7 | 8 | 9 | services: 10 | - module: shellexec 11 | prepare: 12 | - npm install 13 | -------------------------------------------------------------------------------- /examples/selenium/mocha/utility/utility.js: -------------------------------------------------------------------------------- 1 | // Placeholder for utility functions -------------------------------------------------------------------------------- /examples/selenium/mocha_example.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'), 2 | webdriver = require('selenium-webdriver'); 3 | 4 | var driver; 5 | 6 | describe('Blazedemo verification', function() { 7 | this.timeout(30000); 8 | 9 | before(async () => { 10 | driver = new webdriver.Builder(). 11 | withCapabilities(webdriver.Capabilities.firefox()). 12 | build(); 13 | await driver.get('http://blazedemo.com/'); 14 | }); 15 | 16 | after(function () { 17 | driver.quit(); 18 | }); 19 | 20 | it('Selenium Mocha', async () => { 21 | await driver.getTitle().then(function (title) { 22 | assert.equal(title, 'BlazeDemo'); 23 | }); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /examples/selenium/mocha_example.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - executor: selenium 4 | iterations: 10 5 | scenario: 6 | script: mocha_example.js 7 | -------------------------------------------------------------------------------- /examples/selenium/nunit/AssemblyDemo/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/nunit/AssemblyDemo/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /examples/selenium/nunit/AssemblyDemo/SeleniumSuite.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/nunit/AssemblyDemo/SeleniumSuite.dll -------------------------------------------------------------------------------- /examples/selenium/nunit/AssemblyDemo/SeleniumSuite.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/nunit/AssemblyDemo/SeleniumSuite.pdb -------------------------------------------------------------------------------- /examples/selenium/nunit/AssemblyDemo/WebDriver.Support.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/nunit/AssemblyDemo/WebDriver.Support.dll -------------------------------------------------------------------------------- /examples/selenium/nunit/AssemblyDemo/WebDriver.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/nunit/AssemblyDemo/WebDriver.dll -------------------------------------------------------------------------------- /examples/selenium/nunit/AssemblyDemo/nunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/nunit/AssemblyDemo/nunit.framework.dll -------------------------------------------------------------------------------- /examples/selenium/nunit/SeleniumSuite/.gitignore: -------------------------------------------------------------------------------- 1 | # Autosave files 2 | *~ 3 | 4 | # build 5 | [Oo]bj/ 6 | [Bb]in/ 7 | packages/ 8 | TestResults/ 9 | 10 | # globs 11 | Makefile.in 12 | *.DS_Store 13 | *.sln.cache 14 | *.suo 15 | *.cache 16 | *.pidb 17 | *.userprefs 18 | *.usertasks 19 | config.log 20 | config.make 21 | config.status 22 | aclocal.m4 23 | install-sh 24 | autom4te.cache/ 25 | *.user 26 | *.tar.gz 27 | tarballs/ 28 | test-results/ 29 | Thumbs.db 30 | 31 | # Mac bundle stuff 32 | *.dmg 33 | *.app 34 | 35 | # resharper 36 | *_Resharper.* 37 | *.Resharper 38 | 39 | # dotCover 40 | *.dotCover 41 | -------------------------------------------------------------------------------- /examples/selenium/nunit/SeleniumSuite/README.md: -------------------------------------------------------------------------------- 1 | # Selenium Test Suite with NUnit and Taurus 2 | 3 | This is an example test suite that uses Taurus to run Selenium/NUnit-based functional tests. 4 | 5 | It uses Chrome for running tests, so be sure to have it installed. 6 | 7 | ## Running the tests 8 | 9 | Use the following command: 10 | 11 | ```bash 12 | bzt test.yml 13 | ``` 14 | -------------------------------------------------------------------------------- /examples/selenium/nunit/SeleniumSuite/SeleniumSuite/SeleniumSuite.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /examples/selenium/nunit/SeleniumSuite/test.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - executor: selenium 4 | iterations: 10 5 | scenario: 6 | script: SeleniumSuite/bin/Release/netcoreapp3.1/SeleniumSuite.dll # assembly containing test suites 7 | -------------------------------------------------------------------------------- /examples/selenium/nunit/nunit-assembly-suite.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | - executor: selenium 3 | iterations: 10 4 | scenario: 5 | script: AssemblyDemo/SeleniumSuite.dll 6 | -------------------------------------------------------------------------------- /examples/selenium/phantomjs-demo/taurus-phantomjs.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - executor: selenium 4 | scenario: pjs-demo 5 | concurrerncy: 50 6 | ramp-up: 10m 7 | hold-for: 5m 8 | files: 9 | - /usr/bin/phantomjs 10 | locations: 11 | us-west-1: 1 12 | 13 | scenarios: 14 | pjs-demo: 15 | script: src/test/java 16 | -------------------------------------------------------------------------------- /examples/selenium/pytest/pytest_selenium.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | 3 | 4 | @pytest.fixture 5 | def browser(request): 6 | from selenium import webdriver 7 | request.instance.browser = webdriver.Firefox() 8 | request.addfinalizer(lambda: request.instance.browser.quit()) 9 | 10 | 11 | @pytest.mark.usefixtures("browser") 12 | class TestBlazedemo: 13 | def test_index(self): 14 | self.browser.get("http://blazedemo.com/") 15 | 16 | def test_reserve(self): 17 | self.browser.get("http://blazedemo.com/reserve.php") 18 | -------------------------------------------------------------------------------- /examples/selenium/pytest/pytest_selenium.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | - executor: selenium 3 | runner: pytest 4 | iterations: 3 5 | scenario: pytest-selenium 6 | 7 | 8 | scenarios: 9 | pytest-selenium: 10 | script: pytest_selenium.py -------------------------------------------------------------------------------- /examples/selenium/pytest_example.py: -------------------------------------------------------------------------------- 1 | def test_Pytest_arithmetic_gotcha(): 2 | assert 2 + 2 * 2 == 6 3 | 4 | def test_Pytest_gotcha(): 5 | assert "Hello" + ", World!" == "Hello, World!" 6 | -------------------------------------------------------------------------------- /examples/selenium/pytest_example.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | - executor: selenium 3 | runner: pytest 4 | iterations: 2 5 | scenario: 6 | script: pytest_example.py 7 | -------------------------------------------------------------------------------- /examples/selenium/robot/.gitignore: -------------------------------------------------------------------------------- 1 | tmp 2 | build 3 | dist 4 | .idea 5 | .*project 6 | *.pyc 7 | *$py.class 8 | .DS_Store 9 | .spyderworkspace 10 | log.html 11 | report.html 12 | output.xml 13 | *.log 14 | -------------------------------------------------------------------------------- /examples/selenium/robot/README.md: -------------------------------------------------------------------------------- 1 | # Robot Taurus example 2 | 3 | This example uses Taurus to execute Robot/Selenium based test suite. 4 | 5 | 6 | ## Prerequirements 7 | 8 | * Python 3 9 | * `pip install robotframework robotframework-seleniumlibrary` 10 | 11 | ## Running the test 12 | 13 | `bzt robot.yml` 14 | -------------------------------------------------------------------------------- /examples/selenium/robot/demoapp/html/demo.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: sans-serif; 3 | color: black; 4 | background: #DDDDDD; 5 | } 6 | #container { 7 | width: 30em; 8 | height: 15em; 9 | margin: 5em auto; 10 | background: white; 11 | border: 1px solid gray; 12 | padding: 0.5em 2em; 13 | } 14 | -------------------------------------------------------------------------------- /examples/selenium/robot/demoapp/html/error.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Error Page 5 | 6 | 7 | 8 |
9 |

Error Page

10 |

Login failed. Invalid user name and/or password.

11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /examples/selenium/robot/demoapp/html/welcome.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Welcome Page 5 | 6 | 7 | 8 |
9 |

Welcome Page

10 |

Login succeeded. Now you can logout.

11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /examples/selenium/robot/login_tests/gherkin_login.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Documentation A test suite with a single Gherkin style test. 3 | ... 4 | ... This test is functionally identical to the example in 5 | ... valid_login.robot file. 6 | Resource resource.robot 7 | Test Teardown Close Browser 8 | 9 | *** Test Cases *** 10 | Valid Login 11 | Given browser is opened to login page 12 | When user "demo" logs in with password "mode" 13 | Then welcome page should be open 14 | 15 | *** Keywords *** 16 | Browser is opened to login page 17 | Open browser to login page 18 | 19 | User "${username}" logs in with password "${password}" 20 | Input username ${username} 21 | Input password ${password} 22 | Submit credentials 23 | -------------------------------------------------------------------------------- /examples/selenium/robot/login_tests/valid_login.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Documentation A test suite with a single test for valid login. 3 | ... 4 | ... This test has a workflow that is created using keywords in 5 | ... the imported resource file. 6 | Resource resource.robot 7 | 8 | *** Test Cases *** 9 | Valid Login 10 | Open Browser To Login Page 11 | Input Username demo 12 | Input Password mode 13 | Submit Credentials 14 | Welcome Page Should Be Open 15 | [Teardown] Close Browser 16 | -------------------------------------------------------------------------------- /examples/selenium/robot/robot.yml: -------------------------------------------------------------------------------- 1 | services: 2 | - module: shellexec 3 | prepare: 4 | - command: python3 demoapp/server.py 5 | background: true 6 | 7 | execution: 8 | - executor: selenium 9 | runner: robot 10 | hold-for: 1m 11 | scenario: 12 | script: login_tests 13 | 14 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files for more about ignoring files. 2 | # 3 | # If you find yourself ignoring temporary files generated by your text editor 4 | # or operating system, you probably want to add a global ignore instead: 5 | # git config --global core.excludesfile '~/.gitignore_global' 6 | 7 | # Ignore bundler config. 8 | /.bundle 9 | 10 | # Ignore the default SQLite database. 11 | /db/*.sqlite3 12 | /db/*.sqlite3-journal 13 | 14 | # Ignore all logfiles and tempfiles. 15 | /log/* 16 | !/log/.keep 17 | /tmp 18 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/.rspec: -------------------------------------------------------------------------------- 1 | --color 2 | --require spec_helper 3 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/Rakefile: -------------------------------------------------------------------------------- 1 | # Add your own tasks in files placed in lib/tasks ending in .rake, 2 | # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. 3 | 4 | require File.expand_path('../config/application', __FILE__) 5 | 6 | Rails.application.load_tasks 7 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/app/assets/images/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/rspec-capybara/app/assets/images/.keep -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/app/assets/javascripts/application.js: -------------------------------------------------------------------------------- 1 | // This is a manifest file that'll be compiled into application.js, which will include all the files 2 | // listed below. 3 | // 4 | // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, 5 | // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path. 6 | // 7 | // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the 8 | // compiled file. 9 | // 10 | // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details 11 | // about supported directives. 12 | // 13 | //= require jquery 14 | //= require jquery_ujs 15 | //= require turbolinks 16 | //= require bootstrap-sprockets 17 | //= require_tree . 18 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/app/assets/javascripts/vendors.coffee: -------------------------------------------------------------------------------- 1 | # Place all the behaviors and hooks related to the matching controller here. 2 | # All this logic will automatically be available in application.js. 3 | # You can use CoffeeScript in this file: http://coffeescript.org/ 4 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/app/assets/stylesheets/application.css.sass: -------------------------------------------------------------------------------- 1 | @import "bootstrap-sprockets" 2 | @import "bootstrap" 3 | @import "*" 4 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/app/assets/stylesheets/vendors.scss: -------------------------------------------------------------------------------- 1 | // Place all the styles related to the Vendors controller here. 2 | // They will automatically be included in application.css. 3 | // You can use Sass (SCSS) here: http://sass-lang.com/ 4 | 5 | .vendors { 6 | border: 1pt; 7 | } 8 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/app/controllers/application_controller.rb: -------------------------------------------------------------------------------- 1 | class ApplicationController < ActionController::Base 2 | # Prevent CSRF attacks by raising an exception. 3 | # For APIs, you may want to use :null_session instead. 4 | protect_from_forgery with: :exception 5 | end 6 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/app/controllers/concerns/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/rspec-capybara/app/controllers/concerns/.keep -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/app/controllers/vendors_controller.rb: -------------------------------------------------------------------------------- 1 | class VendorsController < ApplicationController 2 | def index 3 | @vendors = Vendor.all 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/app/helpers/application_helper.rb: -------------------------------------------------------------------------------- 1 | module ApplicationHelper 2 | end 3 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/app/helpers/vendors_helper.rb: -------------------------------------------------------------------------------- 1 | module VendorsHelper 2 | end 3 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/app/mailers/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/rspec-capybara/app/mailers/.keep -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/app/models/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/rspec-capybara/app/models/.keep -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/app/models/concerns/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/rspec-capybara/app/models/concerns/.keep -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/app/models/suya.rb: -------------------------------------------------------------------------------- 1 | class Suya < ActiveRecord::Base 2 | belongs_to :vendor 3 | 4 | validates :meat, presence: true 5 | validates :spicy, inclusion: [true, false] 6 | validates :price, numericality: { only_integer: true } 7 | end 8 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/app/models/vendor.rb: -------------------------------------------------------------------------------- 1 | class Vendor < ActiveRecord::Base 2 | has_many :suyas 3 | end 4 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/app/views/layouts/application.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CapybaraRailsTutorial 5 | <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> 6 | <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 7 | <%= csrf_meta_tags %> 8 | 9 | 10 | 11 | <%= yield %> 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/app/views/vendors/index.html.erb: -------------------------------------------------------------------------------- 1 |

Vendors And Their Suyas

2 | 3 |
4 | <% @vendors.each do |vendor| %> 5 |
6 |

Vendor name: <%= vendor.name %>

7 | <% vendor.suyas.each do |suya| %> 8 |
  • I sell <%= suya.meat %> which costs <%= suya.price %>. Spicy: <%= suya.spicy %> %>
  • 9 | <% end %> 10 |
    11 | <% end %> 12 |
    13 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/bin/bundle: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 3 | load Gem.bin_path('bundler', 'bundle') 4 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/bin/rails: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | begin 3 | load File.expand_path("../spring", __FILE__) 4 | rescue LoadError 5 | end 6 | APP_PATH = File.expand_path('../../config/application', __FILE__) 7 | require_relative '../config/boot' 8 | require 'rails/commands' 9 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/bin/rake: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | begin 3 | load File.expand_path("../spring", __FILE__) 4 | rescue LoadError 5 | end 6 | require_relative '../config/boot' 7 | require 'rake' 8 | Rake.application.run 9 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/bin/spring: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | # This file loads spring without using Bundler, in order to be fast. 4 | # It gets overwritten when you run the `spring binstub` command. 5 | 6 | unless defined?(Spring) 7 | require "rubygems" 8 | require "bundler" 9 | 10 | if match = Bundler.default_lockfile.read.match(/^GEM$.*?^ (?: )*spring \((.*?)\)$.*?^$/m) 11 | Gem.paths = { "GEM_PATH" => [Bundler.bundle_path.to_s, *Gem.path].uniq } 12 | gem "spring", match[1] 13 | require "spring/binstub" 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/config.ru: -------------------------------------------------------------------------------- 1 | # This file is used by Rack-based servers to start the application. 2 | 3 | require ::File.expand_path('../config/environment', __FILE__) 4 | run Rails.application 5 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/config/boot.rb: -------------------------------------------------------------------------------- 1 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 2 | 3 | require 'bundler/setup' # Set up gems listed in the Gemfile. 4 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/config/database.yml: -------------------------------------------------------------------------------- 1 | # SQLite version 3.x 2 | # gem install sqlite3 3 | # 4 | # Ensure the SQLite 3 gem is defined in your Gemfile 5 | # gem 'sqlite3' 6 | # 7 | default: &default 8 | adapter: sqlite3 9 | pool: 5 10 | timeout: 5000 11 | 12 | development: 13 | <<: *default 14 | database: db/development.sqlite3 15 | 16 | # Warning: The database defined as "test" will be erased and 17 | # re-generated from your development database when you run "rake". 18 | # Do not set this db to the same as development or production. 19 | test: 20 | <<: *default 21 | database: db/test.sqlite3 22 | 23 | production: 24 | <<: *default 25 | database: db/production.sqlite3 26 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/config/environment.rb: -------------------------------------------------------------------------------- 1 | # Load the Rails application. 2 | require File.expand_path('../application', __FILE__) 3 | 4 | # Initialize the Rails application. 5 | Rails.application.initialize! 6 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/config/initializers/assets.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Version of your assets, change this if you want to expire all your assets. 4 | Rails.application.config.assets.version = '1.0' 5 | 6 | # Add additional assets to the asset load path 7 | # Rails.application.config.assets.paths << Emoji.images_path 8 | 9 | # Precompile additional assets. 10 | # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. 11 | # Rails.application.config.assets.precompile += %w( search.js ) 12 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/config/initializers/backtrace_silencers.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. 4 | # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } 5 | 6 | # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. 7 | # Rails.backtrace_cleaner.remove_silencers! 8 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/config/initializers/cookies_serializer.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | Rails.application.config.action_dispatch.cookies_serializer = :json 4 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/config/initializers/filter_parameter_logging.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Configure sensitive parameters which will be filtered from the log file. 4 | Rails.application.config.filter_parameters += [:password] 5 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/config/initializers/inflections.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new inflection rules using the following format. Inflections 4 | # are locale specific, and you may define rules for as many different 5 | # locales as you wish. All of these examples are active by default: 6 | # ActiveSupport::Inflector.inflections(:en) do |inflect| 7 | # inflect.plural /^(ox)$/i, '\1en' 8 | # inflect.singular /^(ox)en/i, '\1' 9 | # inflect.irregular 'person', 'people' 10 | # inflect.uncountable %w( fish sheep ) 11 | # end 12 | 13 | # These inflection rules are supported but not enabled by default: 14 | # ActiveSupport::Inflector.inflections(:en) do |inflect| 15 | # inflect.acronym 'RESTful' 16 | # end 17 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/config/initializers/mime_types.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new mime types for use in respond_to blocks: 4 | # Mime::Type.register "text/richtext", :rtf 5 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/config/initializers/session_store.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | Rails.application.config.session_store :cookie_store, key: '_capybara_rails_tutorial_session' 4 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/config/initializers/wrap_parameters.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # This file contains settings for ActionController::ParamsWrapper which 4 | # is enabled by default. 5 | 6 | # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. 7 | ActiveSupport.on_load(:action_controller) do 8 | wrap_parameters format: [:json] if respond_to?(:wrap_parameters) 9 | end 10 | 11 | # To enable root element in JSON for ActiveRecord objects. 12 | # ActiveSupport.on_load(:active_record) do 13 | # self.include_root_in_json = true 14 | # end 15 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/config/locales/en.yml: -------------------------------------------------------------------------------- 1 | # Files in the config/locales directory are used for internationalization 2 | # and are automatically loaded by Rails. If you want to use locales other 3 | # than English, add the necessary files in this directory. 4 | # 5 | # To use the locales, use `I18n.t`: 6 | # 7 | # I18n.t 'hello' 8 | # 9 | # In views, this is aliased to just `t`: 10 | # 11 | # <%= t('hello') %> 12 | # 13 | # To use a different locale, set it with `I18n.locale`: 14 | # 15 | # I18n.locale = :es 16 | # 17 | # This would use the information in config/locales/es.yml. 18 | # 19 | # To learn more, please read the Rails Internationalization guide 20 | # available at http://guides.rubyonrails.org/i18n.html. 21 | 22 | en: 23 | hello: "Hello world" 24 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/config/routes.rb: -------------------------------------------------------------------------------- 1 | Rails.application.routes.draw do 2 | get '/vendors', to: 'vendors#index', as: 'vendors' 3 | end 4 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/db/migrate/20150720161409_create_vendors.rb: -------------------------------------------------------------------------------- 1 | class CreateVendors < ActiveRecord::Migration 2 | def change 3 | create_table :vendors do |t| 4 | t.string :name 5 | 6 | t.timestamps null: false 7 | end 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/db/migrate/20150720214640_create_suyas.rb: -------------------------------------------------------------------------------- 1 | class CreateSuyas < ActiveRecord::Migration 2 | def change 3 | create_table :suyas do |t| 4 | 5 | t.timestamps null: false 6 | end 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/db/migrate/20150720215129_add_meat_to_suyas.rb: -------------------------------------------------------------------------------- 1 | class AddMeatToSuyas < ActiveRecord::Migration 2 | def change 3 | add_column :suyas, :meat, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/db/migrate/20150721092106_add_spicy_to_suyas.rb: -------------------------------------------------------------------------------- 1 | class AddSpicyToSuyas < ActiveRecord::Migration 2 | def change 3 | add_column :suyas, :spicy, :boolean 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/db/migrate/20150721092248_add_price_to_suyas.rb: -------------------------------------------------------------------------------- 1 | class AddPriceToSuyas < ActiveRecord::Migration 2 | def change 3 | add_column :suyas, :price, :integer 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/db/migrate/20150721104018_add_vendor_id_to_suyas.rb: -------------------------------------------------------------------------------- 1 | class AddVendorIdToSuyas < ActiveRecord::Migration 2 | def change 3 | add_reference :suyas, :vendor, index: true, foreign_key: true 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/lib/assets/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/rspec-capybara/lib/assets/.keep -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/lib/tasks/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/rspec-capybara/lib/tasks/.keep -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/log/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/rspec-capybara/log/.keep -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/rspec-capybara/public/favicon.ico -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/public/robots.txt: -------------------------------------------------------------------------------- 1 | # See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file 2 | # 3 | # To ban all spiders from the entire site uncomment the next two lines: 4 | # User-agent: * 5 | # Disallow: / 6 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/spec/controllers/vendors_controller_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe VendorsController, type: :controller do 4 | 5 | describe "GET #index" do 6 | it "returns http success" do 7 | get :index 8 | expect(response).to have_http_status(:success) 9 | end 10 | end 11 | 12 | end 13 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/spec/helpers/vendors_helper_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | # Specs in this file have access to a helper object that includes 4 | # the VendorsHelper. For example: 5 | # 6 | # describe VendorsHelper do 7 | # describe "string concat" do 8 | # it "concats two strings with spaces" do 9 | # expect(helper.concat_strings("this","that")).to eq("this that") 10 | # end 11 | # end 12 | # end 13 | RSpec.describe VendorsHelper, type: :helper do 14 | 15 | end 16 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/spec/models/vendor_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe Vendor, type: :model do 4 | it "has a name" do 5 | jeff = Vendor.create(name: "jeff") 6 | 7 | assert jeff.valid? 8 | end 9 | 10 | it "can have many suyas" do 11 | jeff = Vendor.create(name: "jeff") 12 | jeff.suyas << Suya.create(meat: "beef", spicy: false, price: 300) 13 | jeff.suyas << Suya.create(meat: "beef", spicy: false, price: 320) 14 | 15 | assert_equal 2, jeff.suyas.count 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/spec/views/vendors/index.html.erb_spec.rb: -------------------------------------------------------------------------------- 1 | require 'rails_helper' 2 | 3 | RSpec.describe "vendors/index.html.erb", type: :view do 4 | 5 | end 6 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/test.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # minimal Taurus configuration to run RSpec-based tests 3 | 4 | execution: 5 | - executor: selenium 6 | iterations: 3 # run 3 iterations of tests 7 | scenario: rspec-suite 8 | 9 | scenarios: 10 | rspec-suite: 11 | script: spec/ # take specs from `spec` dir. you can also put here a path to a single spec 12 | -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/vendor/assets/javascripts/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/rspec-capybara/vendor/assets/javascripts/.keep -------------------------------------------------------------------------------- /examples/selenium/rspec-capybara/vendor/assets/stylesheets/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/rspec-capybara/vendor/assets/stylesheets/.keep -------------------------------------------------------------------------------- /examples/selenium/rspec_example.rb: -------------------------------------------------------------------------------- 1 | require "selenium-webdriver" 2 | require "rspec" 3 | 4 | describe "Blazedemo" do 5 | 6 | before(:each) do 7 | @driver = Selenium::WebDriver.for :chrome 8 | @base_url = "http://blazedemo.com" 9 | @accept_next_alert = true 10 | @driver.manage.timeouts.implicit_wait = 30 11 | end 12 | 13 | after(:each) do 14 | @driver.quit 15 | end 16 | 17 | it "Selenium Ruby" do 18 | @driver.get(@base_url + "/purchase.php") 19 | @driver.find_element(:id, "inputName").clear 20 | @driver.find_element(:id, "inputName").send_keys "First Last" 21 | @driver.find_element(:id, "inputName").send_keys :return 22 | sleep 1.0 23 | end 24 | 25 | end 26 | -------------------------------------------------------------------------------- /examples/selenium/rspec_example.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - executor: selenium 4 | iterations: 10 5 | scenario: 6 | script: rspec_example.rb 7 | -------------------------------------------------------------------------------- /examples/selenium/sel-grid.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - scenario: req 4 | executor: selenium 5 | hold-for: 1m 6 | 7 | modules: 8 | selenium: 9 | remote: http://localhost 10 | capabilities: 11 | blazemeter.shipId: 5b98cfe5dee99c70197b23c6 12 | blazemeter.testId: 134 13 | blazemeter.buildId: 14 | 15 | scenarios: 16 | req: 17 | browser: Chrome 18 | timeout: 60s 19 | requests: 20 | - label: open home and choose flights 21 | url: http://blazedemo.com/ 22 | actions: 23 | - waitByXPath(//input[@type='submit']) 24 | -------------------------------------------------------------------------------- /examples/selenium/selenium-dir.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | executor: selenium 4 | hold-for: 5m 5 | scenario: 6 | script: dir 7 | -------------------------------------------------------------------------------- /examples/selenium/selenium1.yml: -------------------------------------------------------------------------------- 1 | #! /usr/local/bin/bzt 2 | --- 3 | execution: 4 | - executor: selenium 5 | hold-for: 3m 6 | scenario: 7 | script: selenium1.java 8 | locations: 9 | us-west-1: 1 10 | 11 | services: 12 | - virtual-display 13 | -------------------------------------------------------------------------------- /examples/selenium/testng/selenium-testng.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/examples/selenium/testng/selenium-testng.jar -------------------------------------------------------------------------------- /examples/selenium/testng/src/main/java/example/TestNG.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import org.openqa.selenium.WebDriver; 4 | import org.openqa.selenium.chrome.ChromeDriver; 5 | import org.testng.annotations.AfterClass; 6 | import org.testng.annotations.BeforeClass; 7 | import org.testng.annotations.Test; 8 | 9 | public class TestNG { 10 | 11 | private WebDriver driver; 12 | 13 | @BeforeClass 14 | public void setUp() { 15 | driver = new ChromeDriver(); 16 | } 17 | 18 | @Test 19 | public void testOpenUrl() { 20 | driver.get("https://www.blazedemo.com"); 21 | } 22 | 23 | @AfterClass 24 | public void tearDown() { 25 | if (driver != null) { 26 | driver.quit(); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /examples/selenium/wdio/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | 11 | # Directory for instrumented libs generated by jscoverage/JSCover 12 | lib-cov 13 | 14 | # Coverage directory used by tools like istanbul 15 | coverage 16 | 17 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 18 | .grunt 19 | 20 | # node-waf configuration 21 | .lock-wscript 22 | 23 | # Compiled binary addons (http://nodejs.org/api/addons.html) 24 | build/Release 25 | 26 | # Dependency directory 27 | node_modules 28 | 29 | # Optional npm cache directory 30 | .npm 31 | 32 | # Optional REPL history 33 | .node_repl_history 34 | 35 | # error screenshots 36 | errorShots 37 | -------------------------------------------------------------------------------- /examples/selenium/wdio/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "webdriverio-sample", 3 | "main": "index.js", 4 | "devDependencies": { 5 | "chai": "^3.4.1", 6 | "chai-as-promised": "^5.1.0", 7 | "mocha": "^3.5.3", 8 | "run-sequence": "^1.1.4", 9 | "wdio-mocha-framework": "^0.5.11", 10 | "webdriverio": "^4.8.0", 11 | "webdriver-manager": "^12.0.6" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /examples/selenium/wdio/specs/blazedemo/homepage.js: -------------------------------------------------------------------------------- 1 | describe('blazedemo homepage', () => { 2 | it('should load', () => { 3 | browser.url('http://blazedemo.com/'); 4 | var title = browser.title().value; 5 | title.should.be.equal("BlazeDemo"); 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /examples/selenium/wdio/wdio.yml: -------------------------------------------------------------------------------- 1 | services: 2 | - module: shellexec 3 | prepare: 4 | - npm install 5 | - node_modules/webdriver-manager/bin/webdriver-manager update 6 | - command: node_modules/webdriver-manager/bin/webdriver-manager start --standalone 7 | background: true 8 | 9 | execution: 10 | - executor: wdio 11 | iterations: 2 12 | scenario: 13 | script: wdio.conf.js 14 | -------------------------------------------------------------------------------- /profiled-test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -x 2 | python -m cProfile -o /tmp/taurus.profile `which nosetests` --nologcapture tests.unit.modules.test_external:TestExternalResultsLoader.test_errors_jtl2 3 | python -m gprof2dot -f pstats /tmp/taurus.profile | dot -Tpng -o /tmp/profile.png -------------------------------------------------------------------------------- /pull_request_template.md: -------------------------------------------------------------------------------- 1 | Each PR must conform to [Developer's Guide](https://gettaurus.org/docs/DeveloperGuide/#Rules-for-Contributing). 2 | 3 | Quick checklist: 4 | - [ ] Description of PR explains the context of change 5 | - [ ] Unit tests cover the change, no broken tests 6 | - [ ] No static analysis warnings (Codacy etc.) 7 | - [ ] Documentation update ('available in the unstable snapshot' warning if necessary) 8 | - [ ] Changes file inside `site/dat/docs/changes` directory, one-line note of change inside 9 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | astunparse>=1.6.0 2 | colorama; sys_platform == 'win32' 3 | colorlog 4 | cssselect 5 | Cython; python_version >= '3.9' 6 | fuzzyset2 7 | hdrpy>=0.3.3 8 | lxml>=4.6.2 9 | progressbar33 10 | psutil>=5.6.6 11 | pyvirtualdisplay; sys_platform != 'win32' 12 | pyyaml 13 | requests>=2.18.1 14 | urwid==2.6.16 15 | terminaltables>=3.1.0 16 | molotov!=2.3 17 | influxdb >= 5.3 18 | python-socketio>=5.8.0 19 | h11>=0.16.0 20 | websocket-client>=1.5.1 21 | urllib3==1.26.17 22 | # Set setuptools to 65.5.0 until this issue will be resolved https://github.com/pypa/setuptools/issues/4496 23 | # 65.5.0 is last version that supports python 3.7.0 24 | setuptools==65.5.0 -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [bdist_wheel] 2 | universal=1 3 | 4 | -------------------------------------------------------------------------------- /site/.dockerignore: -------------------------------------------------------------------------------- 1 | .dockerignore 2 | Dockerfile 3 | vendor 4 | composer.lock 5 | aggregate_func.sql -------------------------------------------------------------------------------- /site/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:7-apache 2 | 3 | RUN a2enmod rewrite && \ 4 | apt-get update && \ 5 | apt-get install -y --no-install-recommends git zip unzip libyaml-dev libpq-dev && \ 6 | docker-php-ext-install pdo pdo_pgsql pgsql && \ 7 | curl --silent --show-error https://getcomposer.org/installer | php && \ 8 | mv composer.phar /usr/bin && \ 9 | pecl install yaml-2.0.4 && \ 10 | echo "extension=yaml.so" > /usr/local/etc/php/conf.d/ext-yaml.ini 11 | 12 | ADD php.ini /usr/local/etc/php/ 13 | 14 | ADD composer.json ./ 15 | RUN composer.phar update --prefer-stable --no-dev 16 | 17 | RUN cp vendor/undera/pwe/.htaccess ./ 18 | ADD Taurus ./Taurus 19 | ADD dat ./dat 20 | ADD img ./img 21 | ADD builds ./builds 22 | ADD learn ./learn 23 | 24 | COPY bzt-usage-stats ./bzt-usage-stats 25 | RUN chmod 777 -R bzt-usage-stats/ 26 | ADD *.php ./ 27 | -------------------------------------------------------------------------------- /site/Taurus/TaurusWikiSyntax.php: -------------------------------------------------------------------------------- 1 | =5.5.0", 17 | "undera/pwe": "dev-master" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /site/dat/counter.tpl: -------------------------------------------------------------------------------- 1 | {literal} 2 | 12 | {/literal} -------------------------------------------------------------------------------- /site/dat/docs/KeywordIndex.md: -------------------------------------------------------------------------------- 1 | # Keywords Index 2 | 3 | -------------------------------------------------------------------------------- /site/dat/docs/Sidebar.md: -------------------------------------------------------------------------------- 1 | #### Quick Links: 2 | 3 | [Command-Line Tool](CommandLine) 4 | 5 | [Configuration Syntax](ConfigSyntax) 6 | 7 | [Keywords Index](KeywordIndex.md) 8 | 9 | [Execution Settings](ExecutionSettings) 10 | 11 | [Cloud Scaling](Cloud) 12 | -------------------------------------------------------------------------------- /site/dat/docs/XUnit.md: -------------------------------------------------------------------------------- 1 | # xUnit Executor 2 | 3 | This executor allows running tests written with xUnit framework. It uses .Net Core 8.0 with xUnit 2.7.0. 4 | 5 | Follow execution params are possible for NUnit Executor: `concurrency`, `iterations`, `hold-for` and `ramp-up`. 6 | 7 | Usage: 8 | ```yaml 9 | execution: 10 | - executor: xunit 11 | concurrency: 2 12 | iterations: 5 13 | scenario: 14 | script: bin/Release/TestAssembly.dll # assembly with tests 15 | ``` 16 | 17 | Taurus will run xUnit through a custom runner that will extract all tests from DLL assembly 18 | and pass them to xUnit to run them. 19 | 20 | Note that Taurus won't try to build your test suite solution. You should build it yourself, 21 | either with VisualStudio/Rider or with command line tools. 22 | 23 | Note: when running tests, you should have dotnet installed on your machine. -------------------------------------------------------------------------------- /site/dat/docs/changes/.gitkeep: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/doc-fixed-broken-links.change: -------------------------------------------------------------------------------- 1 | Doc: Fixed broken and outdated links in the documentation and footer and replaced http:// by https:// -------------------------------------------------------------------------------- /site/dat/docs/changes/doc-locust-hold-for.change: -------------------------------------------------------------------------------- 1 | Added the hold-for option to the Locust example and mentioned it's needed for long running tasks 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/enhance-gatling-extractor-include-scenario.change: -------------------------------------------------------------------------------- 1 | Added extractor support (regexp,json,xpath,css) for gatling executor 2 | Added include-scenario support for gatling executor - follows same syntax as supported for jmeter 3 | Include-scenario feature can be added as chain, one include-scenario can refer another one to any depth and this support is for Gatling only 4 | Added support for Multi host chained requests 5 | -------------------------------------------------------------------------------- /site/dat/docs/changes/feat-add-bzm-jmeter-mirror-link.change: -------------------------------------------------------------------------------- 1 | Add blazemeter jmeter mirror link as fallback 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/feat-change-find_element-methods.change: -------------------------------------------------------------------------------- 1 | Replaced specific 'find_element' methods by 'By' object in Selenium 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/feat-cloud-provisioning-validates-always.change: -------------------------------------------------------------------------------- 1 | Cloud provisioning call validate in all cases (not just for passfail module) 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/feat-influxdb-reporter-support.change: -------------------------------------------------------------------------------- 1 | Added support for influxdb-reporter plugin. -------------------------------------------------------------------------------- /site/dat/docs/changes/feat-jmeter-grpc-request.change: -------------------------------------------------------------------------------- 1 | Added support for jmeter-grpc-request plugin. -------------------------------------------------------------------------------- /site/dat/docs/changes/feat-typesecret.change: -------------------------------------------------------------------------------- 1 | new action typeSecret introduced to apiritif 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/fix-add-net-tools-to-docker: -------------------------------------------------------------------------------- 1 | Added net-tools to Dockerfile to fix startup loop finding `netstat` command -------------------------------------------------------------------------------- /site/dat/docs/changes/fix-assert-eval-escape-js.change: -------------------------------------------------------------------------------- 1 | fixed JS escaping to action_start and action_end calls for all JS Eval actions 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/fix-data-sources-logic-docs.change: -------------------------------------------------------------------------------- 1 | Fix data-sources docs and Apiritif logic 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/fix-jmeter-postprocess-file-error.change: -------------------------------------------------------------------------------- 1 | Avoid error in engine when empty 'modified_jmx' due to exception in prepare 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/fix-js-escape.change: -------------------------------------------------------------------------------- 1 | fixed incorrect escaping of JavaScript blocks for storeEval and scriptEval actions 2 | added JS escaping to action_start and action_end calls 3 | -------------------------------------------------------------------------------- /site/dat/docs/changes/fix-k6-no-error-message-when-404.change: -------------------------------------------------------------------------------- 1 | Generate error message when K6 doesn't log any 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/fix-locust-typo.change: -------------------------------------------------------------------------------- 1 | Fix locust typo in when processing datapoint. -------------------------------------------------------------------------------- /site/dat/docs/changes/fix-locust-wrapper-bug.change: -------------------------------------------------------------------------------- 1 | Locust wrapper bug fix 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/fix-new-lines-issue.change: -------------------------------------------------------------------------------- 1 | trim new lines characters from the beginning of JS expressions 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/fix-refactor-convert-body-to-string.change: -------------------------------------------------------------------------------- 1 | Refactor body to string conversion 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/fix-review-testng-xml-search.change: -------------------------------------------------------------------------------- 1 | Update testng-xml search 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/fix-script-eval-escape.change: -------------------------------------------------------------------------------- 1 | fixed unwanted escaping of JS blocks 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/fix-shadow-waitfor.change: -------------------------------------------------------------------------------- 1 | fixed support for waitFor action in Shadow DOM 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/fix-update-all-execs-labels.change: -------------------------------------------------------------------------------- 1 | Update labels, urls and test names for more understandable all-execs run results 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/fix-update-broken-embedded-video-link.change: -------------------------------------------------------------------------------- 1 | Fixed broken link to embedded video in doc. 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/fix-update-cli.change: -------------------------------------------------------------------------------- 1 | Fix cli.py update. loop/dictionary errors 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/fix-update-executor-widget.change: -------------------------------------------------------------------------------- 1 | Update executor widget 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/fix-update-molotov-executor-reader.change: -------------------------------------------------------------------------------- 1 | Update Molotov executor and reader 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/fix-update-pinned-executor-versions.change: -------------------------------------------------------------------------------- 1 | Updated pinned versions: Mocha, WDIO, JUnit, TestNG, JMeter, Gatling. 2 | -------------------------------------------------------------------------------- /site/dat/docs/changes/pass-fail-doc-colons.change: -------------------------------------------------------------------------------- 1 | clarify that colons are not allowed in short form of pass-fail label, plus workaround 2 | -------------------------------------------------------------------------------- /site/dat/docs/img/blazemeter-rsz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/docs/img/blazemeter-rsz.png -------------------------------------------------------------------------------- /site/dat/docs/img/blazemeter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/docs/img/blazemeter.png -------------------------------------------------------------------------------- /site/dat/docs/img/console-rsz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/docs/img/console-rsz.png -------------------------------------------------------------------------------- /site/dat/docs/img/console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/docs/img/console.png -------------------------------------------------------------------------------- /site/dat/docs/img/monitoring-widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/docs/img/monitoring-widget.png -------------------------------------------------------------------------------- /site/dat/docs/img/win-tools-install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/docs/img/win-tools-install.png -------------------------------------------------------------------------------- /site/dat/empty.tpl: -------------------------------------------------------------------------------- 1 | {$content} -------------------------------------------------------------------------------- /site/dat/json.tpl: -------------------------------------------------------------------------------- 1 | {$data|json_encode} -------------------------------------------------------------------------------- /site/dat/kb/img/Getting Started with Taurus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/Getting Started with Taurus.png -------------------------------------------------------------------------------- /site/dat/kb/img/bamboo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/bamboo1.png -------------------------------------------------------------------------------- /site/dat/kb/img/bamboo10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/bamboo10.png -------------------------------------------------------------------------------- /site/dat/kb/img/bamboo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/bamboo2.png -------------------------------------------------------------------------------- /site/dat/kb/img/bamboo3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/bamboo3.png -------------------------------------------------------------------------------- /site/dat/kb/img/bamboo4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/bamboo4.png -------------------------------------------------------------------------------- /site/dat/kb/img/bamboo5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/bamboo5.png -------------------------------------------------------------------------------- /site/dat/kb/img/bamboo6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/bamboo6.png -------------------------------------------------------------------------------- /site/dat/kb/img/bamboo7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/bamboo7.png -------------------------------------------------------------------------------- /site/dat/kb/img/bamboo8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/bamboo8.png -------------------------------------------------------------------------------- /site/dat/kb/img/bamboo9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/bamboo9.png -------------------------------------------------------------------------------- /site/dat/kb/img/blazemeter1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/blazemeter1.png -------------------------------------------------------------------------------- /site/dat/kb/img/blazemeter2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/blazemeter2.png -------------------------------------------------------------------------------- /site/dat/kb/img/blazemeter3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/blazemeter3.png -------------------------------------------------------------------------------- /site/dat/kb/img/console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/console.png -------------------------------------------------------------------------------- /site/dat/kb/img/console2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/console2.png -------------------------------------------------------------------------------- /site/dat/kb/img/console3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/console3.png -------------------------------------------------------------------------------- /site/dat/kb/img/console4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/console4.png -------------------------------------------------------------------------------- /site/dat/kb/img/console5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/console5.png -------------------------------------------------------------------------------- /site/dat/kb/img/console6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/console6.png -------------------------------------------------------------------------------- /site/dat/kb/img/console7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/console7.png -------------------------------------------------------------------------------- /site/dat/kb/img/console8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/console8.png -------------------------------------------------------------------------------- /site/dat/kb/img/java-project-idea.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/java-project-idea.png -------------------------------------------------------------------------------- /site/dat/kb/img/jenkins1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/jenkins1.png -------------------------------------------------------------------------------- /site/dat/kb/img/jenkins2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/jenkins2.png -------------------------------------------------------------------------------- /site/dat/kb/img/jenkins3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/jenkins3.png -------------------------------------------------------------------------------- /site/dat/kb/img/jenkins4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/jenkins4.png -------------------------------------------------------------------------------- /site/dat/kb/img/jmeter-files.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/jmeter-files.png -------------------------------------------------------------------------------- /site/dat/kb/img/sel-act1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/sel-act1.png -------------------------------------------------------------------------------- /site/dat/kb/img/sel-act2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/sel-act2.png -------------------------------------------------------------------------------- /site/dat/kb/img/sel-act3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/sel-act3.png -------------------------------------------------------------------------------- /site/dat/kb/img/sel-act4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/sel-act4.png -------------------------------------------------------------------------------- /site/dat/kb/img/sel-act5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/sel-act5.png -------------------------------------------------------------------------------- /site/dat/kb/img/sel-act6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/sel-act6.png -------------------------------------------------------------------------------- /site/dat/kb/img/sel-act7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/sel-act7.png -------------------------------------------------------------------------------- /site/dat/kb/img/sel-act8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/sel-act8.png -------------------------------------------------------------------------------- /site/dat/kb/img/selenium-ldjson.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/selenium-ldjson.png -------------------------------------------------------------------------------- /site/dat/kb/img/shellexec1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/shellexec1.png -------------------------------------------------------------------------------- /site/dat/kb/img/shellexec2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/shellexec2.png -------------------------------------------------------------------------------- /site/dat/kb/img/teamcity1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/teamcity1.png -------------------------------------------------------------------------------- /site/dat/kb/img/teamcity10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/teamcity10.png -------------------------------------------------------------------------------- /site/dat/kb/img/teamcity11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/teamcity11.png -------------------------------------------------------------------------------- /site/dat/kb/img/teamcity12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/teamcity12.png -------------------------------------------------------------------------------- /site/dat/kb/img/teamcity13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/teamcity13.png -------------------------------------------------------------------------------- /site/dat/kb/img/teamcity14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/teamcity14.png -------------------------------------------------------------------------------- /site/dat/kb/img/teamcity15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/teamcity15.png -------------------------------------------------------------------------------- /site/dat/kb/img/teamcity16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/teamcity16.png -------------------------------------------------------------------------------- /site/dat/kb/img/teamcity2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/teamcity2.png -------------------------------------------------------------------------------- /site/dat/kb/img/teamcity3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/teamcity3.png -------------------------------------------------------------------------------- /site/dat/kb/img/teamcity4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/teamcity4.png -------------------------------------------------------------------------------- /site/dat/kb/img/teamcity5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/teamcity5.png -------------------------------------------------------------------------------- /site/dat/kb/img/teamcity6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/teamcity6.png -------------------------------------------------------------------------------- /site/dat/kb/img/teamcity7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/teamcity7.png -------------------------------------------------------------------------------- /site/dat/kb/img/teamcity8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/teamcity8.png -------------------------------------------------------------------------------- /site/dat/kb/img/teamcity9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/dat/kb/img/teamcity9.png -------------------------------------------------------------------------------- /site/dat/sample-scripts/existing_jmeter_script.yml.md: -------------------------------------------------------------------------------- 1 | ```yaml 2 | execution: 3 | - iterations: 50 4 | concurrency: 10 5 | scenario: with_script 6 | 7 | scenarios: 8 | with_script: 9 | script: my-existing.jmx 10 | 11 | reporting: 12 | - module: passfail 13 | criteria: 14 | - "avg-rt>150ms for 10s, continue as failed" 15 | - "fail>50% for 10s, stop as failed" 16 | ``` 17 | -------------------------------------------------------------------------------- /site/dat/sample-scripts/quick_test.yml.md: -------------------------------------------------------------------------------- 1 | ```yaml 2 | execution: 3 | - concurrency: 100 4 | ramp-up: 1m 5 | hold-for: 5m 6 | scenario: quick-test 7 | 8 | scenarios: 9 | quick-test: 10 | requests: 11 | - http://blazedemo.com 12 | ``` 13 | -------------------------------------------------------------------------------- /site/img/.htaccess: -------------------------------------------------------------------------------- 1 | Options +Indexes -------------------------------------------------------------------------------- /site/img/blazemeter-mini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/img/blazemeter-mini.png -------------------------------------------------------------------------------- /site/img/codename-taurus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/img/codename-taurus.png -------------------------------------------------------------------------------- /site/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/img/favicon.png -------------------------------------------------------------------------------- /site/img/taurus.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/img/taurus.ico -------------------------------------------------------------------------------- /site/img/taurus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/site/img/taurus.png -------------------------------------------------------------------------------- /site/index.php: -------------------------------------------------------------------------------- 1 | =1.1.3 2 | http-here 3 | nose2 4 | codecov 5 | gevent 6 | gevent-websocket -------------------------------------------------------------------------------- /tests/resources/ab/ab.bat: -------------------------------------------------------------------------------- 1 | echo off 2 | -------------------------------------------------------------------------------- /tests/resources/ab/ab.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -xe 2 | 3 | # apache benchmark runner is empty because we already have apachebench.tsv file with TSV data -------------------------------------------------------------------------------- /tests/resources/ab/ab.tsv: -------------------------------------------------------------------------------- 1 | starttime seconds ctime dtime ttime wait 2 | Tue Mar 01 13:13:25 2016 1456827205 115 117 232 117 3 | Tue Mar 01 13:13:24 2016 1456827204 116 116 232 116 4 | Tue Mar 01 13:13:24 2016 1456827204 117 117 233 116 5 | Tue Mar 01 13:13:24 2016 1456827204 117 117 234 117 6 | Tue Mar 01 13:13:25 2016 1456827205 114 121 235 121 7 | Tue Mar 01 13:13:23 2016 1456827203 119 117 235 117 8 | Tue Mar 01 13:13:23 2016 1456827203 116 127 243 127 9 | Tue Mar 01 13:13:23 2016 1456827203 128 117 245 117 10 | Tue Mar 01 13:13:23 2016 1456827203 119 128 247 128 11 | Tue Mar 01 13:13:24 2016 1456827204 120 127 247 126 12 | -------------------------------------------------------------------------------- /tests/resources/android-emulator/emulator.bat: -------------------------------------------------------------------------------- 1 | echo off 2 | 3 | set EMULATOR_PATH=%~dp0 4 | python %EMULATOR_PATH%/emulator.py %* 5 | -------------------------------------------------------------------------------- /tests/resources/android-emulator/emulator.py: -------------------------------------------------------------------------------- 1 | # Mock for emulator 2 | # it supports next functional: 3 | # 1. wait for terminate if no 2 parameters are sent 4 | 5 | import sys 6 | import time 7 | 8 | if len(sys.argv) == 2 and sys.argv[1] == '-list-avds': 9 | print('Fake emulator') 10 | exit(0) 11 | if len(sys.argv) == 3 and sys.argv[1] == '-avd': 12 | print('wait for terminating...') 13 | time.sleep(100) 14 | exit(1) 15 | else: 16 | exit(1) 17 | -------------------------------------------------------------------------------- /tests/resources/android-emulator/emulator.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | EMULATOR_DIR=`dirname "$0"` 3 | python ${EMULATOR_DIR}/emulator.py $@ 4 | -------------------------------------------------------------------------------- /tests/resources/apiritif/test_codegen_requests.py: -------------------------------------------------------------------------------- 1 | # coding=utf-8 2 | 3 | import logging 4 | import random 5 | import string 6 | import sys 7 | import unittest 8 | from time import time, sleep 9 | 10 | import apiritif 11 | 12 | 13 | class TestAPI(unittest.TestCase): 14 | 15 | def setUp(self): 16 | self.vars = {} 17 | 18 | timeout = 30.0 19 | apiritif.put_into_thread_store(timeout=timeout, func_mode=False, scenario_name='autogenerated_87f1619977') 20 | 21 | def _1_apiritif(self): 22 | with apiritif.smart_transaction('apiritif'): 23 | response = apiritif.http.get('http://localhost:8000/') 24 | 25 | def test_test_requests(self): 26 | self._1_apiritif() 27 | -------------------------------------------------------------------------------- /tests/resources/apiritif/test_nfc.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | - scenario: sc1 3 | iterations: 2 4 | executor: selenium 5 | 6 | scenarios: 7 | sc1: 8 | timeout: 2s 9 | requests: 10 | - setup: 11 | - https://blazedemo.com/setup1 12 | - https://blazedemo.com/setup2 13 | 14 | - https://blazedemo.com/main1 15 | - https://blazedemo.com/main2 16 | - https://blazedemo.com/main3 17 | 18 | - teardown: 19 | - https://blazedemo.com/teardown1 20 | - https://blazedemo.com/teardown2 21 | -------------------------------------------------------------------------------- /tests/resources/appium/appium.bat: -------------------------------------------------------------------------------- 1 | echo off 2 | 3 | set APPIUM_PATH=%~dp0 4 | python %APPIUM_PATH%/appium.py %* 5 | -------------------------------------------------------------------------------- /tests/resources/appium/appium.py: -------------------------------------------------------------------------------- 1 | # Mock for appium 2 | # it supports next functional: 3 | # 1. exit successfully if 'list' command received. 4 | # 2. wait for terminate if no parameters are sent 5 | 6 | import sys 7 | import time 8 | 9 | if len(sys.argv) == 2 and sys.argv[1] == '--version': 10 | print('It is fake appium') 11 | exit(0) 12 | elif len(sys.argv) == 1: 13 | time.sleep(100) 14 | exit(1) 15 | else: 16 | exit(1) 17 | -------------------------------------------------------------------------------- /tests/resources/appium/appium.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | APPIUM_DIR=`dirname "$0"` 3 | python ${APPIUM_DIR}/appium.py $@ 4 | -------------------------------------------------------------------------------- /tests/resources/artifacts-1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/resources/artifacts-1.zip -------------------------------------------------------------------------------- /tests/resources/functional/test_all.py: -------------------------------------------------------------------------------- 1 | from unittest import TestCase, skipIf 2 | 3 | 4 | class TestAll(TestCase): 5 | def test_passing(self): 6 | pass 7 | 8 | def test_erroring(self): 9 | raise Exception("Ima broke") 10 | 11 | def test_failing(self): 12 | self.assertEquals(2 + 2 * 2, 8) 13 | 14 | @skipIf(2 > 1, "Skip everytime") 15 | def test_skipped(self): 16 | pass 17 | -------------------------------------------------------------------------------- /tests/resources/gatling/SimpleSimulation.scala: -------------------------------------------------------------------------------- 1 | import io.gatling.core.Predef._ 2 | import io.gatling.http.Predef._ 3 | import scala.concurrent.duration._ 4 | 5 | class SimpleSimulation extends Simulation { 6 | 7 | val conf = http.baseUrl("http://blazedemo.com") 8 | 9 | val scn = scenario("Simple scenario") 10 | .exec(http("req1").get("/")).pause(1) 11 | 12 | setUp(scn.inject(atOnceUsers(1))).protocols(conf).maxDuration(2) 13 | } 14 | -------------------------------------------------------------------------------- /tests/resources/gatling/deps.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/resources/gatling/deps.jar -------------------------------------------------------------------------------- /tests/resources/gatling/gatling-5-000/simulation.log: -------------------------------------------------------------------------------- 1 | RUN LogReplay gatling-139646781467600 1549361913283 3.5.1 2 | USER All START 1549361914993 1549361914993 3 | REQUEST 1549361915995 1549361915999 KO status.find.lessThanOrEqual(399), but actually 401 is not less than or equal to 399 4 | REQUEST 1549361915041 1549361915050 KO status.find.in(200,304,201,202,203,204,205,206,207,208,209), but actually found 400 5 | -------------------------------------------------------------------------------- /tests/resources/gatling/gatling-dist-3.5.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/resources/gatling/gatling-dist-3.5.1.zip -------------------------------------------------------------------------------- /tests/resources/gatling/gatling3.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | set COMPILER_CLASSPATH="" 4 | set GATLING_CLASSPATH="" 5 | 6 | if DEFINED GATLING_HOME ( 7 | set GATLING_PATH=%GATLING_HOME%/gatling 8 | ) else ( 9 | set GATLING_PATH=%~dp0 10 | ) 11 | 12 | python -u %GATLING_PATH%/gatling-fake.py %* 13 | -------------------------------------------------------------------------------- /tests/resources/gatling/gatling3.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | COMPILER_CLASSPATH= 4 | GATLING_CLASSPATH= 5 | 6 | if [ -n "$GATLING_HOME" ]; then 7 | GATLING_DIR=${GATLING_HOME}/gatling 8 | else 9 | GATLING_DIR=`dirname "$0"` 10 | fi 11 | 12 | JAVA="echo me" 13 | bash -c "$JAVA" 14 | 15 | GATLING_HOME="$GATLING_HOME" COMPILATION_CLASSPATH="$COMPILATION_CLASSPATH" python -u ${GATLING_DIR}/gatling-fake.py $@ 16 | -------------------------------------------------------------------------------- /tests/resources/gatling/simulations.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/resources/gatling/simulations.jar -------------------------------------------------------------------------------- /tests/resources/httpserver/BlazeDemo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | BlazeDemo 5 | 6 | 7 | 8 |
    9 |
    10 |

    Welcome to the Simple Travel Agency!

    11 |
    12 |
    13 |
    14 |
    15 | 16 |
    17 | 18 |
    19 |
    20 | -------------------------------------------------------------------------------- /tests/resources/httpserver/start.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | """launch small http server 4 | """ 5 | import os 6 | import argparse 7 | from http.server import HTTPServer, SimpleHTTPRequestHandler 8 | 9 | 10 | def main(): 11 | parser = argparse.ArgumentParser() 12 | parser.add_argument('--port', '-p', default=8000, type=int) 13 | parser.add_argument('--dir', '-d', default=os.path.dirname(os.path.realpath(__file__)), type=str) 14 | args = parser.parse_args() 15 | 16 | os.chdir(args.dir) 17 | 18 | server_address = ('', args.port) 19 | httpd = HTTPServer(server_address, SimpleHTTPRequestHandler) 20 | sa = httpd.socket.getsockname() 21 | print("Serving HTTP on %s port %s ..." % (sa[0], sa[1])) 22 | httpd.serve_forever() 23 | 24 | 25 | if __name__ == "__main__": 26 | main() 27 | -------------------------------------------------------------------------------- /tests/resources/jmeter/body-file.dat: -------------------------------------------------------------------------------- 1 | sample of body 2 | -------------------------------------------------------------------------------- /tests/resources/jmeter/jmeter-loader.bat: -------------------------------------------------------------------------------- 1 | echo off 2 | 3 | set JMETER_PATH=%~dp0 4 | python %JMETER_PATH%/jmeter-fake.py %* 5 | -------------------------------------------------------------------------------- /tests/resources/jmeter/jmeter-loader.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | JMETER_DIR=`dirname "$0"` 3 | python ${JMETER_DIR}/jmeter-fake.py $@ 4 | -------------------------------------------------------------------------------- /tests/resources/jmeter/jmeter-plugins-manager.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/resources/jmeter/jmeter-plugins-manager.jar -------------------------------------------------------------------------------- /tests/resources/jmeter/jmx/nested/directory/a.csv: -------------------------------------------------------------------------------- 1 | path 2 | /?tag=1 3 | /?tag=2 4 | /?tag=3 5 | /?tag=4 6 | -------------------------------------------------------------------------------- /tests/resources/jmeter/jmx/not-jmx.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/resources/jmeter/jtl/500-success/error.jtl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/resources/jmeter/jtl/500-success/kpi.jtl: -------------------------------------------------------------------------------- 1 | timeStamp,elapsed,label,responseCode,responseMessage,threadName,success,bytes,grpThreads,allThreads,Latency,Hostname,Connect 2 | 1638792107320,772,Request 001,500,Internal Server Error,Thread Group 1-1,true,1837,2,2,758,2f6ba4467a78,540 3 | -------------------------------------------------------------------------------- /tests/resources/jmeter/jtl/embedded_resources/kpi_ed.jtl: -------------------------------------------------------------------------------- 1 | timeStamp,elapsed,label,responseCode,responseMessage,threadName,success,bytes,grpThreads,allThreads,Latency,Hostname,Connect 2 | 1638860844873,1123,Request 001,200,"Embedded resource download error:https://blazedemo.com/img/logo12.png code:404 message:Not Found, ",Thread Group 1-1,false,4432,1,1,652,f63690e4046d,374 3 | -------------------------------------------------------------------------------- /tests/resources/jmeter/jtl/resource-errors-main-assert.jtl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Response Assertion 6 | true 7 | false 8 | Test failed 9 | 10 | http://127.0.0.1:8000/rnr/dictionary/ 11 | 12 | -------------------------------------------------------------------------------- /tests/resources/jmeter/jtl/simple.kpi.jtl: -------------------------------------------------------------------------------- 1 | timeStamp,elapsed,label,responseCode,responseMessage,threadName,success,bytes,grpThreads,allThreads,Latency,Hostname,Connect 2 | 1535636052585,6479,http://blazedemo.com/,200,OK,autogenerated_454dd4d1d2 1-1,true,290472,1,1,5465,dimitri-box,5403 3 | 1535636059081,63,http://blazedemo.com/not-found,404,Not Found,autogenerated_454dd4d1d2 1-1,false,15136,1,1,63,dimitri-box,0 4 | 1535636059154,272,http://blazedemo.com/,200,OK,autogenerated_454dd4d1d2 1-1,true,290472,1,1,53,dimitri-box,0 5 | 1535636059428,57,http://blazedemo.com/not-found,404,Not Found,autogenerated_454dd4d1d2 1-1,false,15135,1,1,57,dimitri-box,0 6 | 1535636059488,246,http://blazedemo.com/,200,OK,autogenerated_454dd4d1d2 1-1,true,290472,1,1,52,dimitri-box,0 7 | 1535636059735,62,http://blazedemo.com/not-found,404,Not Found,autogenerated_454dd4d1d2 1-1,false,15136,1,1,62,dimitri-box,0 8 | -------------------------------------------------------------------------------- /tests/resources/jmeter/jtl/smart-aggregation/kpi.jtl: -------------------------------------------------------------------------------- 1 | timeStamp,elapsed,label,responseCode,responseMessage,threadName,success,bytes,grpThreads,allThreads,Latency,Hostname,Connect 2 | 1612333832827,300,https://blazedemo.com,200,OK,sc1 1-1,false,286136,1,1,300,nactus,100 3 | 1612333834544,800,https://tut.by,200,OK,sc1 1-1,true,5422832,1,1,45,nactus,41 4 | 1612333836382,1360,https://blazedemo.com/bla,Non HTTP response code: java.net.SocketTimeoutException,Non HTTP response message: Read timed out,sc1 1-1,false,3087,1,1,0,nactus,353 5 | 1612333837299,900,https://tut.by,200,OK,sc1 1-1,true,5205884,1,1,27,nactus,23 6 | -------------------------------------------------------------------------------- /tests/resources/jmeter/jtl/tabs.jtl: -------------------------------------------------------------------------------- 1 | timeStamp elapsed label responseCode responseMessage threadName success bytes grpThreads allThreads Latency Hostname 2 | 1488473413202 1008 http://localhost:8080 200 OK ThreadGroup 1-1 true 1228181 1 1 132 undera-laptop 3 | 1488473414911 268 http://localhost:8080 200 OK ThreadGroup 1-1 true 1228180 1 1 88 undera-laptop 4 | 1488473415682 296 http://localhost:8080 200 OK ThreadGroup 1-1 true 1215774 1 1 47 undera-laptop 5 | 1488473416509 253 http://localhost:8080 200 OK ThreadGroup 1-1 true 1228181 1 1 87 undera-laptop 6 | -------------------------------------------------------------------------------- /tests/resources/jmeter/jtl/tranctl.jtl: -------------------------------------------------------------------------------- 1 | timeStamp,elapsed,label,responseCode,responseMessage,success,grpThreads,allThreads,Latency,Connect 2 | 1431534938725,264,Transaction Controller1,200,"Number of samples in transaction : 1, number of failing samples : 0",true,1,1,0,0 3 | 1431534938734,998,Transaction Controller2,200,"Number of samples in transaction : 1, number of failing samples : 1",false,1,1,0,0 4 | -------------------------------------------------------------------------------- /tests/resources/jmeter/unicode_file: -------------------------------------------------------------------------------- 1 | {"result":"вопросы"} -------------------------------------------------------------------------------- /tests/resources/json/concurrency.json: -------------------------------------------------------------------------------- 1 | { 2 | "execution": { 3 | "scenario": { 4 | "script": "tests/jmeter/jmx/dummy.jmx" 5 | }, 6 | "concurrency": 100, 7 | "ramp-up": 60, 8 | "locations": [ 9 | "aws-eu", 10 | "aws-us-west", 11 | { 12 | "location": "aws-us-west", 13 | "weight": 5, 14 | "concurrency": 50, 15 | "machines": 10 16 | } 17 | ] 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /tests/resources/json/gatling.json: -------------------------------------------------------------------------------- 1 | { 2 | "execution": { 3 | "executor": "gatling", 4 | "scenario": { 5 | "script": "tests/gatling/BasicSimulation.scala", 6 | "simulation": "mytest.BasicSimulation" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /tests/resources/json/jmx.json: -------------------------------------------------------------------------------- 1 | { 2 | "execution": { 3 | "scenario": { 4 | "name": "JMX Scenario", 5 | "executor": "jmeter", 6 | "sla": [], 7 | "script": "tests/jmeter/jmx/dummy.jmx", 8 | "modifications": [ 9 | { 10 | "element": "Dummy Sampler", 11 | "enabled": "false" 12 | }, 13 | { 14 | "element": "Thread Group", 15 | "properties": { 16 | "ThreadGroup.main_controller": { 17 | "LoopController.loops": 10 18 | } 19 | } 20 | } 21 | ], 22 | "files": [] 23 | } 24 | }, 25 | "modules": { 26 | "jmeter": { 27 | "path": "build/jmeter/bin/jmeter" 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /tests/resources/json/json-but-not-yaml.json: -------------------------------------------------------------------------------- 1 | {"provisioning":"local","scenarios":{"req":{"browser":"Chrome","timeout":"5s","requests":["http:\/\/blazedemo.com\/"]}},"execution":{"scenario":"req","iterations":10,"hold-for":"5m","executor":"selenium","locations-weighted":false,"locations":{"us-east-1":3}},"modules":{"cloud":{"test":"Taurus Selenium 10 itteration","project":"Taurus"},"selenium":{"virtual-display":{"width":1280,"height":800}}}} 2 | -------------------------------------------------------------------------------- /tests/resources/json/merge1.json: -------------------------------------------------------------------------------- 1 | { 2 | "provisioning": "local", 3 | "modules": { 4 | "local": "bzt.modules.provisioning.Local", 5 | "remote": "bzt.modules.provisioning.Remote", 6 | "jmeter": { 7 | "class": "bzt.modules.jmeter.JMeterExecutor", 8 | "path": "build/jmeter/bin/jmeter", 9 | "properties": { 10 | "log_level.jmeter": "DEBUG" 11 | } 12 | } 13 | }, 14 | "list-append": [ 15 | 1, 16 | 2, 17 | 3 18 | ], 19 | "list-replace": [ 20 | 1, 21 | 2, 22 | 3 23 | ], 24 | "list-complex": [ 25 | ["simple"], 26 | [{"token": "test"}] 27 | ] 28 | } -------------------------------------------------------------------------------- /tests/resources/json/merge2.json: -------------------------------------------------------------------------------- 1 | { 2 | "provisioning": "local", 3 | "modules": { 4 | "jmeter": { 5 | "path": "build/jmeter/bin/jmeter", 6 | "^properties": "" 7 | }, 8 | "remote": { 9 | "dict-over": "string" 10 | } 11 | }, 12 | "list-append": [ 13 | 4, 14 | 5, 15 | 6 16 | ], 17 | "~list-replace": [ 18 | 4, 19 | 5 20 | ], 21 | "~list-replace-notexistent": [ 22 | 6, 23 | 7 24 | ], 25 | "list-complex": [ 26 | [{"dict2": false}] 27 | ] 28 | } -------------------------------------------------------------------------------- /tests/resources/json/mock_end_err.json: -------------------------------------------------------------------------------- 1 | { 2 | "provisioning": "mock1", 3 | "modules": { 4 | "mock1": { 5 | "class": "tests.unit.mocks.ModuleMock", 6 | "shutdown": "tests.unit.mocks.KeyboardInterrupt" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /tests/resources/json/mock_normal.json: -------------------------------------------------------------------------------- 1 | { 2 | "provisioning": "mock1", 3 | "execution": [ 4 | { 5 | "scenario": { 6 | "executor": "mock2" 7 | } 8 | }, 9 | { 10 | "scenario": { 11 | "executor": "mock3" 12 | } 13 | } 14 | ], 15 | "modules": { 16 | "mock1": {"class": "tests.unit.mocks.ModuleMock"}, 17 | "mock2": "tests.unit.mocks.ModuleMock", 18 | "mock3": "tests.unit.mocks.ModuleMock", 19 | "mock4": "tests.unit.mocks.ModuleMock" 20 | }, 21 | "test": [ 22 | 1, 23 | 2, 24 | 3 25 | ], 26 | "cli-aliases": { 27 | "test4": { 28 | "services": ["mock4"] 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /tests/resources/json/mock_postproc_err.json: -------------------------------------------------------------------------------- 1 | { 2 | "provisioning": "mock1", 3 | "modules": { 4 | "mock1": { 5 | "class": "tests.unit.mocks.ModuleMock", 6 | "postproc": "bzt.AutomatedShutdown" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /tests/resources/json/mock_prepare_err.json: -------------------------------------------------------------------------------- 1 | { 2 | "provisioning": "mock1", 3 | "modules": { 4 | "mock1": { 5 | "class": "tests.unit.mocks.ModuleMock", 6 | "prepare": "tests.unit.mocks.KeyboardInterrupt" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /tests/resources/json/mock_start_err.json: -------------------------------------------------------------------------------- 1 | { 2 | "provisioning": "mock1", 3 | "modules": { 4 | "mock1": { 5 | "class": "tests.unit.mocks.ModuleMock", 6 | "startup": "tests.unit.mocks.KeyboardInterrupt" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /tests/resources/json/mock_wait_err.json: -------------------------------------------------------------------------------- 1 | { 2 | "provisioning": "mock", 3 | "modules": { 4 | "mock": { 5 | "class": "tests.unit.mocks.ModuleMock", 6 | "check": "tests.unit.mocks.KeyboardInterrupt" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /tests/resources/json/reporting.json: -------------------------------------------------------------------------------- 1 | { 2 | "reporting": [ 3 | "mock", 4 | { 5 | "module": "mock" 6 | } 7 | ], 8 | "modules": { 9 | "mock": { 10 | "class": "tests.unit.mocks.ModuleMock", 11 | "check_iterations": 30 12 | }, 13 | "console": { 14 | "disable": false 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /tests/resources/k6/k6_mock.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo v0.30.0 3 | -------------------------------------------------------------------------------- /tests/resources/k6/k6_mock.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo v0.30.0 4 | -------------------------------------------------------------------------------- /tests/resources/k6/k6_script.js: -------------------------------------------------------------------------------- 1 | import http from 'k6/http'; 2 | import { sleep } from 'k6'; 3 | 4 | export default function () { 5 | http.get('https://blazedemo.com/'); 6 | sleep(1); 7 | } 8 | -------------------------------------------------------------------------------- /tests/resources/locust/locust-kpi.jtl: -------------------------------------------------------------------------------- 1 | timeStamp,label,method,elapsed,bytes,responseCode,responseMessage,success,allThreads,Latency 2 | 1582640251851,,,0,0,500,__on_request_failure() got an unexpected keyword argument 'response_length',false,1,0 3 | -------------------------------------------------------------------------------- /tests/resources/locust/locust-mock.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo %* 3 | -------------------------------------------------------------------------------- /tests/resources/locust/locust-mock.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -xe 2 | 3 | # dump cmdline 4 | echo "$@" 5 | -------------------------------------------------------------------------------- /tests/resources/locust/locust.py: -------------------------------------------------------------------------------- 1 | """ 2 | For testing purpose only 3 | """ 4 | -------------------------------------------------------------------------------- /tests/resources/locust/simple.py: -------------------------------------------------------------------------------- 1 | from locust import HttpUser, TaskSet, task, between 2 | 3 | 4 | class WebsiteTasks(TaskSet): 5 | def on_start(self): 6 | self.client.post("/login", { 7 | "username": "test_user", 8 | "password": "" 9 | }) 10 | 11 | @task 12 | def index(self): 13 | self.client.get("/") 14 | 15 | @task 16 | def about(self): 17 | self.client.get("/about/") 18 | 19 | 20 | class WebsiteUser(HttpUser): 21 | tasks = [WebsiteTasks] 22 | wait_time = between(0.100, 1.500) 23 | -------------------------------------------------------------------------------- /tests/resources/molotov/loadtest.py: -------------------------------------------------------------------------------- 1 | import molotov 2 | 3 | 4 | @molotov.scenario(100) 5 | async def scenario_one(session): 6 | async with session.get('http://blazedemo.com/') as resp: 7 | assert resp.status == 200 8 | 9 | 10 | @molotov.scenario(100) 11 | async def scenario_two(session): 12 | async with session.get('http://blazedemo.com/not-found') as resp: 13 | assert resp.status == 404 14 | -------------------------------------------------------------------------------- /tests/resources/molotov/molotov-mock.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo 2.1 3 | -------------------------------------------------------------------------------- /tests/resources/molotov/molotov-mock.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo 2.1 4 | -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/invalid_total_inactive_file/memory/memory.limit_in_bytes: -------------------------------------------------------------------------------- 1 | 1073741824 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/invalid_total_inactive_file/memory/memory.stat: -------------------------------------------------------------------------------- 1 | cache 0 2 | rss 811008 3 | rss_huge 0 4 | shmem 0 5 | mapped_file 0 6 | dirty 0 7 | writeback 0 8 | swap 0 9 | pgpgin 1485 10 | pgpgout 1254 11 | pgfault 2310 12 | pgmajfault 0 13 | inactive_anon 811008 14 | active_anon 0 15 | inactive_file 0 16 | active_file 0 17 | unevictable 0 18 | hierarchical_memory_limit 14036271104 19 | hierarchical_memsw_limit 9223372036854771712 20 | total_cache 0 21 | total_rss 811008 22 | total_rss_huge 0 23 | total_shmem 0 24 | total_mapped_file 0 25 | total_dirty 0 26 | total_writeback 0 27 | total_swap 0 28 | total_pgpgin 1485 29 | total_pgpgout 1254 30 | total_pgfault 2310 31 | total_pgmajfault 0 32 | total_inactive_anon 811008 33 | total_active_anon 0 34 | total_inactive_file invalid 35 | total_active_file 0 36 | total_unevictable 0 37 | -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/invalid_total_inactive_file/memory/memory.usage_in_bytes: -------------------------------------------------------------------------------- 1 | 134217728 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/no_cpu_limit1/cpu/cpu.cfs_period_us: -------------------------------------------------------------------------------- 1 | 100000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/no_cpu_limit1/cpu/cpu.cfs_quota_us: -------------------------------------------------------------------------------- 1 | -1 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/no_cpu_limit1/cpu/cpuacct.usage: -------------------------------------------------------------------------------- 1 | 80173951000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/no_cpu_limit2/cpu/cpu.cfs_period_us: -------------------------------------------------------------------------------- 1 | 100000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/no_cpu_limit2/cpu/cpu.cfs_quota_us: -------------------------------------------------------------------------------- 1 | -1 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/no_cpu_limit2/cpu/cpuacct.usage: -------------------------------------------------------------------------------- 1 | 80223951000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/no_mem_limit/memory/memory.limit_in_bytes: -------------------------------------------------------------------------------- 1 | 9223372036854771712 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/no_mem_limit/memory/memory.stat: -------------------------------------------------------------------------------- 1 | cache 0 2 | rss 811008 3 | rss_huge 0 4 | shmem 0 5 | mapped_file 0 6 | dirty 0 7 | writeback 0 8 | swap 0 9 | pgpgin 1485 10 | pgpgout 1254 11 | pgfault 2310 12 | pgmajfault 0 13 | inactive_anon 811008 14 | active_anon 0 15 | inactive_file 0 16 | active_file 0 17 | unevictable 0 18 | hierarchical_memory_limit 14036271104 19 | hierarchical_memsw_limit 9223372036854771712 20 | total_cache 0 21 | total_rss 811008 22 | total_rss_huge 0 23 | total_shmem 0 24 | total_mapped_file 0 25 | total_dirty 0 26 | total_writeback 0 27 | total_swap 0 28 | total_pgpgin 1485 29 | total_pgpgout 1254 30 | total_pgfault 2310 31 | total_pgmajfault 0 32 | total_inactive_anon 811008 33 | total_active_anon 0 34 | total_inactive_file 8634304 35 | total_active_file 0 36 | total_unevictable 0 37 | -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/no_mem_limit/memory/memory.usage_in_bytes: -------------------------------------------------------------------------------- 1 | 834217728 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/no_total_inactive_file/memory/memory.limit_in_bytes: -------------------------------------------------------------------------------- 1 | 1073741824 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/no_total_inactive_file/memory/memory.stat: -------------------------------------------------------------------------------- 1 | cache 0 2 | rss 811008 3 | rss_huge 0 4 | shmem 0 5 | mapped_file 0 6 | dirty 0 7 | writeback 0 8 | swap 0 9 | pgpgin 1485 10 | pgpgout 1254 11 | pgfault 2310 12 | pgmajfault 0 13 | inactive_anon 811008 14 | active_anon 0 15 | inactive_file 0 16 | active_file 0 17 | unevictable 0 18 | hierarchical_memory_limit 14036271104 19 | hierarchical_memsw_limit 9223372036854771712 20 | total_cache 0 21 | total_rss 811008 22 | total_rss_huge 0 23 | total_shmem 0 24 | total_mapped_file 0 25 | total_dirty 0 26 | total_writeback 0 27 | total_swap 0 28 | total_pgpgin 1485 29 | total_pgpgout 1254 30 | total_pgfault 2310 31 | total_pgmajfault 0 32 | total_inactive_anon 811008 33 | total_active_anon 0 34 | total_active_file 0 35 | total_unevictable 0 36 | -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/no_total_inactive_file/memory/memory.usage_in_bytes: -------------------------------------------------------------------------------- 1 | 134217728 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_absent_cpu_usage1/cpu/cpu.cfs_period_us: -------------------------------------------------------------------------------- 1 | 100000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_absent_cpu_usage1/cpu/cpu.cfs_quota_us: -------------------------------------------------------------------------------- 1 | 200000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_absent_cpu_usage1/cpu/cpuacct.usage: -------------------------------------------------------------------------------- 1 | invalid -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_cpu_limit1/cpu/cpu.cfs_period_us: -------------------------------------------------------------------------------- 1 | 100000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_cpu_limit1/cpu/cpu.cfs_quota_us: -------------------------------------------------------------------------------- 1 | 200000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_cpu_limit1/cpu/cpuacct.usage: -------------------------------------------------------------------------------- 1 | 80173951000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_cpu_limit2/cpu/cpu.cfs_period_us: -------------------------------------------------------------------------------- 1 | 100000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_cpu_limit2/cpu/cpu.cfs_quota_us: -------------------------------------------------------------------------------- 1 | 200000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_cpu_limit2/cpu/cpuacct.usage: -------------------------------------------------------------------------------- 1 | 80573951000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_invalid_cpu_usage1/cpu/cpu.cfs_period_us: -------------------------------------------------------------------------------- 1 | 100000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_invalid_cpu_usage1/cpu/cpu.cfs_quota_us: -------------------------------------------------------------------------------- 1 | 200000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_mem_limit/memory/memory.limit_in_bytes: -------------------------------------------------------------------------------- 1 | 1073741824 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_mem_limit/memory/memory.stat: -------------------------------------------------------------------------------- 1 | cache 0 2 | rss 811008 3 | rss_huge 0 4 | shmem 0 5 | mapped_file 0 6 | dirty 0 7 | writeback 0 8 | swap 0 9 | pgpgin 1485 10 | pgpgout 1254 11 | pgfault 2310 12 | pgmajfault 0 13 | inactive_anon 811008 14 | active_anon 0 15 | inactive_file 0 16 | active_file 0 17 | unevictable 0 18 | hierarchical_memory_limit 14036271104 19 | hierarchical_memsw_limit 9223372036854771712 20 | total_cache 0 21 | total_rss 811008 22 | total_rss_huge 0 23 | total_shmem 0 24 | total_mapped_file 0 25 | total_dirty 0 26 | total_writeback 0 27 | total_swap 0 28 | total_pgpgin 1485 29 | total_pgpgout 1254 30 | total_pgfault 2310 31 | total_pgmajfault 0 32 | total_inactive_anon 811008 33 | total_active_anon 0 34 | total_inactive_file 30634304 35 | total_active_file 0 36 | total_unevictable 0 37 | -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_mem_limit/memory/memory.usage_in_bytes: -------------------------------------------------------------------------------- 1 | 134217728 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_small_cpu_period1/cpu/cpu.cfs_period_us: -------------------------------------------------------------------------------- 1 | 50000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_small_cpu_period1/cpu/cpu.cfs_quota_us: -------------------------------------------------------------------------------- 1 | 200000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_small_cpu_period1/cpu/cpuacct.usage: -------------------------------------------------------------------------------- 1 | 80173951000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_small_cpu_period2/cpu/cpu.cfs_period_us: -------------------------------------------------------------------------------- 1 | 50000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_small_cpu_period2/cpu/cpu.cfs_quota_us: -------------------------------------------------------------------------------- 1 | 200000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/with_small_cpu_period2/cpu/cpuacct.usage: -------------------------------------------------------------------------------- 1 | 80573951000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/zero_total_inactive_file/memory/memory.limit_in_bytes: -------------------------------------------------------------------------------- 1 | 1073741824 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/zero_total_inactive_file/memory/memory.stat: -------------------------------------------------------------------------------- 1 | cache 0 2 | rss 811008 3 | rss_huge 0 4 | shmem 0 5 | mapped_file 0 6 | dirty 0 7 | writeback 0 8 | swap 0 9 | pgpgin 1485 10 | pgpgout 1254 11 | pgfault 2310 12 | pgmajfault 0 13 | inactive_anon 811008 14 | active_anon 0 15 | inactive_file 0 16 | active_file 0 17 | unevictable 0 18 | hierarchical_memory_limit 14036271104 19 | hierarchical_memsw_limit 9223372036854771712 20 | total_cache 0 21 | total_rss 811008 22 | total_rss_huge 0 23 | total_shmem 0 24 | total_mapped_file 0 25 | total_dirty 0 26 | total_writeback 0 27 | total_swap 0 28 | total_pgpgin 1485 29 | total_pgpgout 1254 30 | total_pgfault 2310 31 | total_pgmajfault 0 32 | total_inactive_anon 811008 33 | total_active_anon 0 34 | total_inactive_file 0 35 | total_active_file 0 36 | total_unevictable 0 37 | -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups1/zero_total_inactive_file/memory/memory.usage_in_bytes: -------------------------------------------------------------------------------- 1 | 134217728 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/invalid_cpu_quota1/cpu.max: -------------------------------------------------------------------------------- 1 | 200000 invalid -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/invalid_cpu_quota1/cpu.stat: -------------------------------------------------------------------------------- 1 | usage_usec 80173951 2 | user_usec 72176809 3 | system_usec 7997141 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/invalid_cpu_quota2/cpu.max: -------------------------------------------------------------------------------- 1 | 200000 invalid -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/invalid_cpu_quota2/cpu.stat: -------------------------------------------------------------------------------- 1 | usage_usec 80223951 2 | user_usec 72176809 3 | system_usec 7997141 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/invalid_inactive_file/memory.current: -------------------------------------------------------------------------------- 1 | 134217728 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/invalid_inactive_file/memory.max: -------------------------------------------------------------------------------- 1 | 1073741824 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/no_cpu_limit1/cpu.max: -------------------------------------------------------------------------------- 1 | max 100000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/no_cpu_limit1/cpu.stat: -------------------------------------------------------------------------------- 1 | usage_usec 80173951 2 | user_usec 72176809 3 | system_usec 7997141 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/no_cpu_limit2/cpu.max: -------------------------------------------------------------------------------- 1 | max 100000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/no_cpu_limit2/cpu.stat: -------------------------------------------------------------------------------- 1 | usage_usec 80223951 2 | user_usec 72176809 3 | system_usec 7997141 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/no_inactive_file/memory.current: -------------------------------------------------------------------------------- 1 | 134217728 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/no_inactive_file/memory.max: -------------------------------------------------------------------------------- 1 | 1073741824 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/no_mem_limit/memory.current: -------------------------------------------------------------------------------- 1 | 834217728 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/no_mem_limit/memory.max: -------------------------------------------------------------------------------- 1 | max -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/with_absent_cpu_usage1/cpu.max: -------------------------------------------------------------------------------- 1 | 200000 100000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/with_absent_cpu_usage1/cpu.stat: -------------------------------------------------------------------------------- 1 | user_usec 72176809 2 | system_usec 7997141 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/with_cpu_limit1/cpu.max: -------------------------------------------------------------------------------- 1 | 200000 100000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/with_cpu_limit1/cpu.stat: -------------------------------------------------------------------------------- 1 | usage_usec 80173951 2 | user_usec 72176809 3 | system_usec 7997141 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/with_cpu_limit2/cpu.max: -------------------------------------------------------------------------------- 1 | 200000 100000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/with_cpu_limit2/cpu.stat: -------------------------------------------------------------------------------- 1 | usage_usec 80573951 2 | user_usec 72176809 3 | system_usec 7997141 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/with_invalid_cpu_usage1/cpu.max: -------------------------------------------------------------------------------- 1 | 200000 100000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/with_invalid_cpu_usage1/cpu.stat: -------------------------------------------------------------------------------- 1 | usage_usec invalid 2 | user_usec 72176809 3 | system_usec 7997141 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/with_mem_limit/memory.current: -------------------------------------------------------------------------------- 1 | 134217728 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/with_mem_limit/memory.max: -------------------------------------------------------------------------------- 1 | 1073741824 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/with_small_cpu_period1/cpu.max: -------------------------------------------------------------------------------- 1 | 200000 50000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/with_small_cpu_period1/cpu.stat: -------------------------------------------------------------------------------- 1 | usage_usec 80173951 2 | user_usec 72176809 3 | system_usec 7997141 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/with_small_cpu_period2/cpu.max: -------------------------------------------------------------------------------- 1 | 200000 50000 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/with_small_cpu_period2/cpu.stat: -------------------------------------------------------------------------------- 1 | usage_usec 80573951 2 | user_usec 72176809 3 | system_usec 7997141 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/zero_inactive_file/memory.current: -------------------------------------------------------------------------------- 1 | 134217728 -------------------------------------------------------------------------------- /tests/resources/monitoring/cgroups2/zero_inactive_file/memory.max: -------------------------------------------------------------------------------- 1 | 1073741824 -------------------------------------------------------------------------------- /tests/resources/monitoring/mtab/mtab-empty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/resources/monitoring/mtab/mtab-empty -------------------------------------------------------------------------------- /tests/resources/newman/newman.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo %* 3 | 4 | set REPORT_FILE=%TAURUS_ARTIFACTS_DIR%\NewmanExecutor.ldjson 5 | 6 | echo {"test_case":"should load","test_suite":"demo","status":"PASSED","start_time":1537789085.169,"duration":0.002,"error_msg":null,"error_trace":null} > %REPORT_FILE% 7 | 8 | -------------------------------------------------------------------------------- /tests/resources/newman/newman.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -xe 2 | 3 | # dump cmdline 4 | echo "$@" 5 | 6 | REPORT_FILE="$TAURUS_ARTIFACTS_DIR/NewmanExecutor.ldjson" 7 | 8 | echo '{"test_case":"should load","test_suite":"demo","status":"PASSED","start_time":1537789085.169,"duration":0.002,"error_msg":null,"error_trace":null}' > "$REPORT_FILE" 9 | -------------------------------------------------------------------------------- /tests/resources/plugins/bzt_plugin_dummy/50-dummy.yml: -------------------------------------------------------------------------------- 1 | modules: 2 | dummy: 3 | class: bzt_plugin_dummy.dummy.DummyExecutor 4 | -------------------------------------------------------------------------------- /tests/resources/plugins/bzt_plugin_dummy/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/resources/plugins/bzt_plugin_dummy/__init__.py -------------------------------------------------------------------------------- /tests/resources/plugins/bzt_plugin_dummy/bzt-configs.json: -------------------------------------------------------------------------------- 1 | ["50-dummy.yml"] 2 | -------------------------------------------------------------------------------- /tests/resources/plugins/bzt_plugin_dummy/demo.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | - executor: dummy 3 | -------------------------------------------------------------------------------- /tests/resources/plugins/bzt_plugin_invalid/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/resources/plugins/bzt_plugin_invalid/__init__.py -------------------------------------------------------------------------------- /tests/resources/plugins/bzt_plugin_invalid/bzt-configs.json: -------------------------------------------------------------------------------- 1 | # i am invalid JSON 2 | ["50-invalid.yml"] 3 | -------------------------------------------------------------------------------- /tests/resources/python-pip/python-pip.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo Package Version 3 | echo ----------------------- ----------- 4 | echo pip 21.3 5 | echo new-version 0 6 | echo installed 0 7 | echo Successfully installed test-package-0.0.0 -------------------------------------------------------------------------------- /tests/resources/python-pip/python-pip.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "Package Version 4 | ----------------------- ----------- 5 | pip 21.3 6 | new-version 0 7 | installed 0 8 | Successfully installed test-package-0.0.0" 9 | -------------------------------------------------------------------------------- /tests/resources/selenium/data-sources/data.csv: -------------------------------------------------------------------------------- 1 | host,page 2 | http://localhost:8000,BlazeDemo.html 3 | -------------------------------------------------------------------------------- /tests/resources/selenium/dotnet/assemblies/Empty.dll: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /tests/resources/selenium/f1.py: -------------------------------------------------------------------------------- 1 | 1 2 | 2 3 | 3 -------------------------------------------------------------------------------- /tests/resources/selenium/f2.py: -------------------------------------------------------------------------------- 1 | 2 2 | -------------------------------------------------------------------------------- /tests/resources/selenium/invalid/NotJUnittest.java: -------------------------------------------------------------------------------- 1 | public class NotJUnittest { 2 | public static void main(String[] args) { 3 | } 4 | } -------------------------------------------------------------------------------- /tests/resources/selenium/invalid/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/resources/selenium/invalid/__init__.py -------------------------------------------------------------------------------- /tests/resources/selenium/invalid/dummy.py: -------------------------------------------------------------------------------- 1 | class JohnDoe(object): 2 | def do_nothing(self): 3 | pass -------------------------------------------------------------------------------- /tests/resources/selenium/invalid/invalid.java: -------------------------------------------------------------------------------- 1 | No way to be compiled. -------------------------------------------------------------------------------- /tests/resources/selenium/js-mocha/bd_scenarios.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'), 2 | Mocha = require('mocha'); 3 | 4 | describe('Simple test', function() { 5 | this.timeout(30000); 6 | 7 | it('this test passes', function () { 8 | assert.equal(eval('1 + 2 + 3 + 4'), 10); 9 | }); 10 | 11 | xit("this test is skipped", function () { 12 | // do nothing 13 | }); 14 | 15 | it("this test is broken", function () { 16 | assert.equal(2 + 2 * 2, 8); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /tests/resources/selenium/js-mocha/mocha.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo %* 3 | 4 | set REPORT_FILE=%TAURUS_ARTIFACTS_DIR%\MochaTester.ldjson 5 | 6 | echo {"test_case":"should load","test_suite":"demo","status":"PASSED","start_time":1537789085.169,"duration":0.002,"error_msg":null,"error_trace":null} > %REPORT_FILE% 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/resources/selenium/js-mocha/mocha.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -xe 2 | 3 | # dump cmdline 4 | echo "$@" 5 | 6 | REPORT_FILE="$TAURUS_ARTIFACTS_DIR/MochaTester.ldjson" 7 | 8 | echo '{"test_case":"should load","test_suite":"demo","status":"PASSED","start_time":1537789085.169,"duration":0.002,"error_msg":null,"error_trace":null}' > "$REPORT_FILE" 9 | -------------------------------------------------------------------------------- /tests/resources/selenium/js-wdio/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | 11 | # Directory for instrumented libs generated by jscoverage/JSCover 12 | lib-cov 13 | 14 | # Coverage directory used by tools like istanbul 15 | coverage 16 | 17 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 18 | .grunt 19 | 20 | # node-waf configuration 21 | .lock-wscript 22 | 23 | # Compiled binary addons (http://nodejs.org/api/addons.html) 24 | build/Release 25 | 26 | # Dependency directory 27 | node_modules 28 | 29 | # Optional npm cache directory 30 | .npm 31 | 32 | # Optional REPL history 33 | .node_repl_history 34 | 35 | # error screenshots 36 | errorShots 37 | -------------------------------------------------------------------------------- /tests/resources/selenium/js-wdio/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "webdriverio-sample", 3 | "main": "index.js", 4 | "devDependencies": { 5 | "chai": "^3.4.1", 6 | "chai-as-promised": "^5.1.0", 7 | "mocha": "^3.5.3", 8 | "run-sequence": "^1.1.4", 9 | "wdio-mocha-framework": "^0.5.11", 10 | "webdriverio": "^4.8.0" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /tests/resources/selenium/js-wdio/specs/twitter/homepage.js: -------------------------------------------------------------------------------- 1 | describe('blazedemo homepage', () => { 2 | it('should load', () => { 3 | var result = 2 + 2 * 2; 4 | result.should.be.equal(6); 5 | }); 6 | }); 7 | -------------------------------------------------------------------------------- /tests/resources/selenium/js-wdio/wdio.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo %* 3 | 4 | set REPORT_FILE=%TAURUS_ARTIFACTS_DIR%\WebdriverIOExecutor.ldjson 5 | 6 | echo {"test_case":"should load","test_suite":"demo","status":"PASSED","start_time":1537789085.169,"duration":0.002,"error_msg":null,"error_trace":null} > %REPORT_FILE% 7 | 8 | -------------------------------------------------------------------------------- /tests/resources/selenium/js-wdio/wdio.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -xe 2 | 3 | # dump cmdline 4 | echo "$@" 5 | 6 | REPORT_FILE="$TAURUS_ARTIFACTS_DIR/WebdriverIOExecutor.ldjson" 7 | 8 | echo '{"test_case":"should load","test_suite":"demo","status":"PASSED","start_time":1537789085.169,"duration":0.002,"error_msg":null,"error_trace":null}' > "$REPORT_FILE" 9 | -------------------------------------------------------------------------------- /tests/resources/selenium/junit/jar/another_dummy.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/resources/selenium/junit/jar/another_dummy.jar -------------------------------------------------------------------------------- /tests/resources/selenium/junit/jar/dummy.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/resources/selenium/junit/jar/dummy.jar -------------------------------------------------------------------------------- /tests/resources/selenium/junit/java_package/src/selenium_package/Dummy.java: -------------------------------------------------------------------------------- 1 | package selenium_package; 2 | 3 | public class Dummy { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /tests/resources/selenium/junit/runner.properties: -------------------------------------------------------------------------------- 1 | execprop=2 2 | junit_version=5 3 | scenprop=3 4 | settprop=1 5 | report_file=ARTIFACTS+JUnitTester.csv 6 | iterations=1 -------------------------------------------------------------------------------- /tests/resources/selenium/mocha-7.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/resources/selenium/mocha-7.0.0.tgz -------------------------------------------------------------------------------- /tests/resources/selenium/mockdriver: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/resources/selenium/mockdriver -------------------------------------------------------------------------------- /tests/resources/selenium/pytest/bin/runner.py: -------------------------------------------------------------------------------- 1 | import sys 2 | print(" ".join(sys.argv)) 3 | -------------------------------------------------------------------------------- /tests/resources/selenium/pytest/test_blazedemo.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | 3 | 4 | @pytest.fixture 5 | def browser(request): 6 | from selenium import webdriver 7 | request.instance.browser = webdriver.Firefox() 8 | request.addfinalizer(lambda: request.instance.browser.quit()) 9 | 10 | 11 | @pytest.mark.usefixtures("browser") 12 | class TestBlazedemo: 13 | def test_index(self): 14 | self.browser.get("http://blazedemo.com/") 15 | 16 | def test_reserve(self): 17 | self.browser.get("http://blazedemo.com/reserve.php") 18 | -------------------------------------------------------------------------------- /tests/resources/selenium/pytest/test_single.py: -------------------------------------------------------------------------------- 1 | def test_primitive(): 2 | assert 2 + 2 * 2 == 6 3 | -------------------------------------------------------------------------------- /tests/resources/selenium/pytest/test_statuses.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | 3 | 4 | def test_passed(): 5 | pass 6 | 7 | 8 | def test_failed(): 9 | assert 2 + 2 * 2 == 8 10 | 11 | 12 | def test_broken(): 13 | raise Exception("Ima broke") 14 | 15 | 16 | def test_skipped(): 17 | pytest.skip("yo") 18 | raise Exception("If you see it - ima broke") 19 | -------------------------------------------------------------------------------- /tests/resources/selenium/python/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/resources/selenium/python/__init__.py -------------------------------------------------------------------------------- /tests/resources/selenium/python/bad_name.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | 3 | 4 | class TestBrowser(unittest.TestCase): 5 | def setUp(self): 6 | pass 7 | 8 | def test_something(self): 9 | pass 10 | 11 | def tearDown(self): 12 | pass 13 | 14 | 15 | if __name__ == "__main__": 16 | unittest.main() 17 | -------------------------------------------------------------------------------- /tests/resources/selenium/python/test_selenium_transactions.py: -------------------------------------------------------------------------------- 1 | import time 2 | import unittest 3 | 4 | import apiritif 5 | 6 | 7 | class TestSomething(unittest.TestCase): 8 | def test_me(self): 9 | with apiritif.transaction_logged('hello there'): 10 | time.sleep(0.1) 11 | self.assertEqual(2 + 2, 4) 12 | -------------------------------------------------------------------------------- /tests/resources/selenium/python/test_setup_exception.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | 3 | from selenium import webdriver 4 | from selenium.common.exceptions import NoSuchElementException 5 | from selenium.common.exceptions import NoAlertPresentException 6 | 7 | 8 | class TestBlazemeterPass(unittest.TestCase): 9 | @classmethod 10 | def setUpClass(cls): 11 | raise Exception("Catch that") 12 | 13 | def test_pass(self): 14 | pass 15 | -------------------------------------------------------------------------------- /tests/resources/selenium/robot/robot-mock.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo %* 3 | 4 | set REPORT_FILE=%TAURUS_ARTIFACTS_DIR%\RobotExecutor.ldjson 5 | 6 | echo {"test_suite": "Test", "test_case": "User can create an account and log in", "status": "PASSED", "start_time": 1582199961.0, "duration": 0.076, "error_msg": null, "error_trace": null, "extras": {"assertions": []}, "assertions": [], "subsamples": [], "path": []} > %REPORT_FILE% 7 | 8 | -------------------------------------------------------------------------------- /tests/resources/selenium/robot/robot-mock.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -xe 2 | 3 | # dump cmdline 4 | echo "$@" 5 | 6 | REPORT_FILE="$TAURUS_ARTIFACTS_DIR/RobotExecutor.ldjson" 7 | 8 | echo '{"test_suite": "Test", "test_case": "User can create an account and log in", "status": "PASSED", "start_time": 1582199961.0, "duration": 0.076, "error_msg": null, "error_trace": null, "extras": {"assertions": []}, "assertions": [], "subsamples": [], "path": []}' > "$REPORT_FILE" 9 | -------------------------------------------------------------------------------- /tests/resources/selenium/robot/simple/vars.yaml: -------------------------------------------------------------------------------- 1 | USERNAME: janedoe 2 | 3 | -------------------------------------------------------------------------------- /tests/resources/selenium/ruby/example_spec.rb: -------------------------------------------------------------------------------- 1 | RSpec.describe "my group" do 2 | 3 | specify "passing test" do 4 | expect(42).to eq(42) 5 | end 6 | 7 | specify "failing test" do 8 | expect(2 + 2 * 2).to eq(8) 9 | end 10 | 11 | specify "breaking test" do 12 | 0 / 0 13 | end 14 | end 15 | 16 | -------------------------------------------------------------------------------- /tests/resources/selenium/ruby/ruby.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo %* 3 | 4 | set REPORT_FILE=%TAURUS_ARTIFACTS_DIR%\RSpecTester.ldjson 5 | 6 | echo {"test_case":"should load","test_suite":"demo","status":"PASSED","start_time":1537789085.169,"duration":0.002,"error_msg":null,"error_trace":null} > %REPORT_FILE% 7 | 8 | -------------------------------------------------------------------------------- /tests/resources/selenium/ruby/ruby.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -xe 2 | 3 | # dump cmdline 4 | echo "$@" 5 | 6 | REPORT_FILE="$TAURUS_ARTIFACTS_DIR/RSpecTester.ldjson" 7 | 8 | echo '{"test_case":"should load","test_suite":"demo","status":"PASSED","start_time":1537789085.169,"duration":0.002,"error_msg":null,"error_trace":null}' > "$REPORT_FILE" 9 | -------------------------------------------------------------------------------- /tests/resources/selenium/selenium-server.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/resources/selenium/selenium-server.jar -------------------------------------------------------------------------------- /tests/resources/selenium/selenium-webdriver-1.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/resources/selenium/selenium-webdriver-1.0.0.tgz -------------------------------------------------------------------------------- /tests/resources/selenium/test_nfc.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | - scenario: sc1 3 | iterations: 2 4 | executor: selenium 5 | 6 | scenarios: 7 | sc1: 8 | timeout: 2s 9 | requests: 10 | - setup: 11 | - https://blazedemo.com/setup1 12 | - label: setup2 13 | actions: 14 | - go(https://blazedemo.com/setup2) 15 | 16 | - https://blazedemo.com/main1 17 | - label: main2 18 | actions: 19 | - go(https://blazedemo.com/main2) 20 | 21 | - teardown: 22 | - https://blazedemo.com/teardown1 23 | - label: teardown2 24 | actions: 25 | - go(https://blazedemo.com/teardown2) 26 | -------------------------------------------------------------------------------- /tests/resources/selenium/testng/TestNGFailingSetup.java: -------------------------------------------------------------------------------- 1 | package tests; 2 | 3 | import org.testng.Assert; 4 | import org.testng.annotations.BeforeMethod; 5 | import org.testng.SkipException; 6 | import org.testng.annotations.Test; 7 | 8 | public class TestNGFailingSetup { 9 | @BeforeMethod 10 | public void setUp() { 11 | float x = 0 / 0; 12 | } 13 | 14 | @Test 15 | public void good() { 16 | Assert.assertEquals("Hello" + ", World!", "Hello, World!"); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /tests/resources/selenium/testng/TestNGSuite.java: -------------------------------------------------------------------------------- 1 | package tests; 2 | 3 | import org.testng.Assert; 4 | import org.testng.SkipException; 5 | import org.testng.annotations.Test; 6 | 7 | public class TestNGSuite { 8 | @Test 9 | public void good() { 10 | Assert.assertEquals("Hello" + ", World!", "Hello, World!"); 11 | } 12 | 13 | @Test 14 | public void bad() { 15 | Assert.assertEquals(2 + 2 * 2, 8); 16 | } 17 | 18 | @Test 19 | public void ugly() { 20 | throw new SkipException("Skipping the test case"); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /tests/resources/selenium/testng/jars/testng-suite.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/resources/selenium/testng/jars/testng-suite.jar -------------------------------------------------------------------------------- /tests/resources/selenium/testng/jars/testng.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/resources/selenium/testng/test.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | executor: selenium 4 | runner: testng 5 | scenario: 6 | script: testng-suite.jar 7 | -------------------------------------------------------------------------------- /tests/resources/selenium/testng/testng-suite.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/resources/selenium/testng/testng-suite.jar -------------------------------------------------------------------------------- /tests/resources/selenium/testng/testng.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/resources/siege/siege.bat: -------------------------------------------------------------------------------- 1 | echo off 2 | echo -e " 1,HTTP/1.1,200, 0.39, 3372,/,0,2015-12-20 21:30:14" 3 | echo -e " 2,HTTP/1.1,200, 0.33, 3372,/,0,2015-12-20 21:30:15" 4 | -------------------------------------------------------------------------------- /tests/resources/siege/siege.out: -------------------------------------------------------------------------------- 1 |  4,HTTP/1.1,200, 0.36, 3372,/,0,2015-12-20 21:30:13 2 |  0,HTTP/1.1,200, 0.38, 3372,/,0,2015-12-20 21:30:13 3 |  1,HTTP/1.1,200, 0.38, 3372,/,0,2015-12-20 21:30:14 4 |  3,HTTP/1.1,200, 0.39, 3372,/,0,2015-12-20 21:31:14 5 |  2,HTTP/1.1,200, 0.40, 3372,/,0,2015-12-20 21:34:14 6 |  0,HTTP/1.1,200, 0.38, 3372,/,0,2015-12-21 21:33:14 7 |  4,HTTP/1.1,200, 0.41, 3372,/,0,2015-12-22 21:30:14 8 |  1,HTTP/1.1,200, 0.40, 3372,/,0,2015-12-20 21:30:15 9 |  3,HTTP/1.1,200, 0.39, 3372,/,0,2015-12-20 21:30:15 10 |  2,HTTP/1.1,200, 0.39, 3372,/,0,2015-12-20 21:37:15 11 | -------------------------------------------------------------------------------- /tests/resources/siege/siege.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -xe 2 | echo -e " 1,HTTP/1.1,200, 0.39, 3372,/,0,2015-12-20 21:30:14" 3 | echo -e " 2,HTTP/1.1,200, 0.33, 3372,/,0,2015-12-20 21:30:15" 4 | -------------------------------------------------------------------------------- /tests/resources/siege/siegerc: -------------------------------------------------------------------------------- 1 | verbose = true 2 | csv = true 3 | timestamp = false 4 | fullurl = true 5 | display-id = true 6 | show-logfile = false 7 | logging = false 8 | foo = baz 9 | 10 | -------------------------------------------------------------------------------- /tests/resources/siege/url-file: -------------------------------------------------------------------------------- 1 | PROT=http:// 2 | $(PROT)ya.ru 3 | $(PROT)mail.ru -------------------------------------------------------------------------------- /tests/resources/swagger/auth-basic-converted.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - concurrency: 1 4 | hold-for: 1m 5 | scenario: BZM-API 6 | scenarios: 7 | BZM-API: 8 | default-address: ${default-address} 9 | headers: 10 | Authorization: Basic ${__base64Encode(${auth})} 11 | requests: 12 | - url: ${default-path}/tests 13 | settings: 14 | env: 15 | auth: USER:PASSWORD 16 | default-address: https://a.blazemeter.com 17 | default-path: /api/v4 18 | 19 | -------------------------------------------------------------------------------- /tests/resources/swagger/auth-basic-local-converted.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - concurrency: 1 4 | hold-for: 1m 5 | scenario: BZM-API 6 | scenarios: 7 | BZM-API: 8 | default-address: ${default-address} 9 | requests: 10 | - headers: 11 | Authorization: Basic ${__base64Encode(${auth})} 12 | url: ${default-path}/tests 13 | variables: 14 | auth: USER:PASSWORD 15 | settings: 16 | env: 17 | default-address: https://a.blazemeter.com 18 | default-path: /api/v4 19 | 20 | -------------------------------------------------------------------------------- /tests/resources/swagger/auth-key-as-param-converted.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - concurrency: 1 4 | hold-for: 1m 5 | scenario: BZM-API 6 | scenarios: 7 | BZM-API: 8 | default-address: ${default-address} 9 | requests: 10 | - body: 11 | api_key: ${myApiKey} 12 | url: ${default-path}/tests 13 | variables: 14 | myApiKey: TOKEN 15 | settings: 16 | env: 17 | default-address: https://a.blazemeter.com 18 | default-path: /api/v4 19 | 20 | -------------------------------------------------------------------------------- /tests/resources/swagger/auth-key-converted.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - concurrency: 1 4 | hold-for: 1m 5 | scenario: BZM-API 6 | scenarios: 7 | BZM-API: 8 | default-address: ${default-address} 9 | headers: 10 | api_key: ${myApiKey} 11 | requests: 12 | - url: ${default-path}/tests 13 | settings: 14 | env: 15 | default-address: https://a.blazemeter.com 16 | default-path: /api/v4 17 | myApiKey: TOKEN 18 | 19 | -------------------------------------------------------------------------------- /tests/resources/swagger/auth-key-multiscenarios-converted.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - concurrency: 1 4 | hold-for: 1m 5 | scenario: /tests 6 | scenarios: 7 | /tests: 8 | default-address: ${default-address} 9 | headers: 10 | api_key: ${myApiKey} 11 | requests: 12 | - url: ${default-path}/tests 13 | settings: 14 | env: 15 | default-address: https://a.blazemeter.com 16 | default-path: /api/v4 17 | myApiKey: TOKEN 18 | 19 | -------------------------------------------------------------------------------- /tests/resources/swagger/bzm-converted-none.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - concurrency: 1 4 | hold-for: 1m 5 | scenario: BZM-API 6 | scenarios: 7 | BZM-API: 8 | default-address: ${default-address} 9 | requests: 10 | - url: ${default-path}/tests 11 | - method: POST 12 | url: ${default-path}/tests 13 | - url: ${default-path}/tests/{testId} 14 | - method: PUT 15 | url: ${default-path}/tests/{testId} 16 | - method: DELETE 17 | url: ${default-path}/tests/{testId} 18 | - method: PATCH 19 | url: ${default-path}/tests/{testId} 20 | - method: POST 21 | url: ${default-path}/tests/{testId}/start 22 | - url: ${default-path}/reports 23 | - url: ${default-path}/reports/{reportId} 24 | settings: 25 | env: 26 | default-address: https://a.blazemeter.com 27 | default-path: /api/v4 28 | 29 | -------------------------------------------------------------------------------- /tests/resources/swagger/bzm-converted-values.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - concurrency: 1 4 | hold-for: 1m 5 | scenario: BZM-API 6 | scenarios: 7 | BZM-API: 8 | default-address: ${default-address} 9 | requests: 10 | - url: ${default-path}/tests 11 | - method: POST 12 | url: ${default-path}/tests 13 | - url: ${default-path}/tests/1 14 | - method: PUT 15 | url: ${default-path}/tests/1 16 | - method: DELETE 17 | url: ${default-path}/tests/1 18 | - method: PATCH 19 | url: ${default-path}/tests/1 20 | - method: POST 21 | url: ${default-path}/tests/1/start 22 | - url: ${default-path}/reports 23 | - url: ${default-path}/reports/1 24 | settings: 25 | env: 26 | default-address: https://a.blazemeter.com 27 | default-path: /api/v4 28 | 29 | -------------------------------------------------------------------------------- /tests/resources/test1.csv: -------------------------------------------------------------------------------- 1 | col1,col2 2 | val1,val2 3 | val3,val4 -------------------------------------------------------------------------------- /tests/resources/test2.csv: -------------------------------------------------------------------------------- 1 | val1 2 | val2 3 | -------------------------------------------------------------------------------- /tests/resources/tsung/tsung.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo %* 3 | -------------------------------------------------------------------------------- /tests/resources/tsung/tsung.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -xe 2 | 3 | # do nothing 4 | echo "$@" 5 | -------------------------------------------------------------------------------- /tests/resources/yaml/disable_autodetect.yml: -------------------------------------------------------------------------------- 1 | settings: 2 | artifacts-dir: ${BZT_ENV_TEST}/test/${BZT_ENV_TEST_UNSET} 3 | env: 4 | TAURUS_JMETER_DISABLE_AUTO_DETECT: true 5 | 6 | scenarios: 7 | scen1: 8 | default-address: http://${BZT_ENV_TEST}/ 9 | requests: 10 | - /${BZT_ENV_TEST}/ 11 | - /${PATH}/ 12 | - /${TEMP}/ 13 | - /${TAURUS_ARTIFACTS_DIR}/ 14 | 15 | toplevel: ${BZT_ENV_TEST}/top 16 | 17 | execution: 18 | - scenario: scen1 -------------------------------------------------------------------------------- /tests/resources/yaml/env-eval.yml: -------------------------------------------------------------------------------- 1 | settings: 2 | artifacts-dir: ${BZT_ENV_TEST}/test/${BZT_ENV_TEST_UNSET} 3 | env: 4 | BZT_ENV_TEST: success 5 | BZT_ENV_TEST_UNSET: null 6 | PATH: ${PATH} 7 | 8 | scenarios: 9 | scen1: 10 | default-address: http://${BZT_ENV_TEST}/ 11 | requests: 12 | - /${BZT_ENV_TEST}/ 13 | - /${PATH}/ 14 | - /${TEMP}/ 15 | - /${TAURUS_ARTIFACTS_DIR}/ 16 | 17 | toplevel: ${BZT_ENV_TEST}/top 18 | -------------------------------------------------------------------------------- /tests/resources/yaml/error-response-bodies-config.yaml: -------------------------------------------------------------------------------- 1 | modules: 2 | consolidator: 3 | collect-error-response-bodies: true 4 | error-response-bodies-limit: 5 5 | error-response-bodies-size-limit: 10 6 | -------------------------------------------------------------------------------- /tests/resources/yaml/func_test/gatling.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - concurrency: 1 4 | executor: gatling 5 | hold-for: 5 6 | scenario: 7 | requests: 8 | - url: http://blazedemo.com -------------------------------------------------------------------------------- /tests/resources/yaml/func_test/locust.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - concurrency: 1 4 | executor: locust 5 | iterations: 5 6 | scenario: 7 | default-address: http://blazedemo.com 8 | script: tests/resources/yaml/func_test/locust_script.py -------------------------------------------------------------------------------- /tests/resources/yaml/func_test/locust_script.py: -------------------------------------------------------------------------------- 1 | from locust import HttpLocust, TaskSet, task, between 2 | 3 | 4 | class WebsiteTasks(TaskSet): 5 | @task 6 | def index(self): 7 | self.client.get("/") 8 | 9 | 10 | class WebsiteUser(HttpLocust): 11 | task_set = WebsiteTasks 12 | wait_time = between(0.010, 0.150) 13 | -------------------------------------------------------------------------------- /tests/resources/yaml/func_test/selenium.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - concurrency: 1 4 | executor: selenium 5 | hold-for: 5 6 | scenario: 7 | requests: 8 | - url: http://blazedemo.com 9 | 10 | services: 11 | - virtual-display 12 | -------------------------------------------------------------------------------- /tests/resources/yaml/included-circular1.yml: -------------------------------------------------------------------------------- 1 | level1: true 2 | included-configs: 3 | - included-circular2.yml 4 | -------------------------------------------------------------------------------- /tests/resources/yaml/included-circular2.yml: -------------------------------------------------------------------------------- 1 | level2: true 2 | included-configs: 3 | - included-circular1.yml 4 | 5 | settings: 6 | check-updates: false -------------------------------------------------------------------------------- /tests/resources/yaml/included-level1.yml: -------------------------------------------------------------------------------- 1 | level1: true 2 | included-configs: 3 | - included-level2.yml -------------------------------------------------------------------------------- /tests/resources/yaml/included-level2.yml: -------------------------------------------------------------------------------- 1 | level2: true 2 | included-configs: 3 | - included-level3.yml -------------------------------------------------------------------------------- /tests/resources/yaml/included-level3.yml: -------------------------------------------------------------------------------- 1 | level3: true -------------------------------------------------------------------------------- /tests/resources/yaml/jmeter-test-script.yaml: -------------------------------------------------------------------------------- 1 | execution: 2 | - concurrency: 3 3 | hold-for: 10s 4 | scenario: sample 5 | 6 | scenarios: 7 | sample: 8 | timeout: 500ms 9 | keepalive: true 10 | requests: 11 | - https://a.blazemeter.com/api/v4/workspaces/1787108 12 | -------------------------------------------------------------------------------- /tests/resources/yaml/multi-docs.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | - executor: jmeter 3 | concurrency: 1 4 | scenario: 5 | retrieve-resources: false 6 | requests: 7 | - http://blazedemo.com/?runner=jmeter 8 | 9 | --- 10 | 11 | { 12 | "execution": [{ 13 | "executor": "gatling", 14 | "concurrency": 1, 15 | "scenario": { 16 | "requests": [ 17 | "http://blazedemo.com/?runner=gatling" 18 | ] 19 | } 20 | }] 21 | } 22 | -------------------------------------------------------------------------------- /tests/resources/yaml/selenium_executor_requests.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | executor: selenium 4 | iterations: 1 5 | scenario: 6 | browser: Firefox 7 | timeout: 10 8 | think-time: 1s500ms 9 | requests: 10 | - url: "http://blazedemo.com/" 11 | assert: 12 | - contains: 13 | - BlazeMeter 14 | - Travel The World 15 | subject: body 16 | regexp: false 17 | not: false 18 | - contains: 19 | - Simple 20 | - Travel 21 | regexp: true 22 | not: false 23 | - contains: 24 | - NOTPRESENT 25 | regexp: true 26 | not: true 27 | - url: "http://blazedemo.com/" 28 | think-time: 1s 29 | timeout: 2 30 | assert: 31 | - Find Flights 32 | - url: "http://blazedemo.com/" 33 | -------------------------------------------------------------------------------- /tests/resources/yaml/selenium_from_extension.yml: -------------------------------------------------------------------------------- 1 | 2 | # Script generated by Blazemeter Chrome Extension 3 | 4 | modules: 5 | apiritif: 6 | ignore-unknown-actions: true 7 | 8 | execution: 9 | - executor: selenium 10 | scenario: qwerty-Selenium 11 | iterations: 1 12 | 13 | scenarios: 14 | qwerty-Selenium: 15 | browser: Firefox # available browsers are: ["Firefox", "Chrome", "Ie", "Opera"] 16 | headless: false 17 | timeout: 60s 18 | think-time: 0s 19 | requests: 20 | - label: Test 21 | actions: 22 | - go(http://127.0.0.1:8000/) 23 | -------------------------------------------------------------------------------- /tests/resources/yaml/singletone-service.yml: -------------------------------------------------------------------------------- 1 | provisioning: mock 2 | services: 3 | - module: singletone-mock 4 | - module: singletone-mock 5 | 6 | - run-at: mock 7 | module: mock 8 | - run-at: cloud 9 | module: mock 10 | 11 | reporting: 12 | - run-at: mock 13 | module: mock 14 | - run-at: cloud 15 | module: mock 16 | - module: mock 17 | 18 | modules: 19 | singletone-mock: 20 | class: tests.unit.mocks.SingletoneServiceMock -------------------------------------------------------------------------------- /tests/resources/yaml/tabs-issue-spaces.yml: -------------------------------------------------------------------------------- 1 | --- 2 | blockstart1: 3 | simple tab: true 4 | space: tab 5 | tab in: "\tmiddle" 6 | blockstart2: 7 | tab: space 8 | blockstart3: 9 | double: tab 10 | blockstart4: 11 | tab-space: tab 12 | blockstart5: 13 | space-tab-space: tab 14 | blockstart6: 15 | four-spaces: 1 16 | one-tab: 1 17 | 18 | -------------------------------------------------------------------------------- /tests/resources/yaml/tabs-issue.yml: -------------------------------------------------------------------------------- 1 | blockstart1: 2 | simple tab: true 3 | tab in: " middle" 4 | space: tab 5 | 6 | blockstart2: 7 | tab: space 8 | 9 | # some comment 10 | blockstart3: 11 | double: tab 12 | blockstart4: 13 | tab-space: tab 14 | blockstart5: 15 | space-tab-space: tab 16 | blockstart6: 17 | four-spaces: 1 18 | one-tab: 1 19 | -------------------------------------------------------------------------------- /tests/resources/yaml/test.yml: -------------------------------------------------------------------------------- 1 | --- 2 | key: value -------------------------------------------------------------------------------- /tests/resources/yaml/timers.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | scenario: 3 | think-time: 0.75s # constant timer 4 | requests: 5 | - http://blazedemo.com/t0 6 | - url: http://blazedemo.com/t1 7 | think-time: uniform(1m, 5s) # uniform random timer, mean ('maximum'/2 + 'delay') and deviation ('max'/2) 8 | - url: http://blazedemo.com/t2 9 | think-time: gaussian(11s, 0.5s) # gaussian random timer, mean ('offset') and deviation 10 | - url: http://blazedemo.com/t3 11 | think-time: poisson(2m, 30s) # poisson random timer, final mean ('lambda'+offset) and offset 12 | -------------------------------------------------------------------------------- /tests/resources/yaml/triple.yml: -------------------------------------------------------------------------------- 1 | --- 2 | execution: 3 | - scenario: 4 | requests: 5 | - http://localhost/100 6 | iterations: 100 7 | - scenario: 8 | requests: 9 | - http://localhost/200 10 | iterations: 100 11 | - scenario: 12 | requests: 13 | - http://localhost/300 14 | iterations: 100 15 | -------------------------------------------------------------------------------- /tests/resources/yaml/wrong_cmd.yml: -------------------------------------------------------------------------------- 1 | execution: 2 | iteration: 1 3 | scenario: 4 | requests: 5 | - http://blazedemo.com 6 | 7 | services: 8 | - module: shellexec 9 | startup: 10 | - wrong_cmd 11 | 12 | modules: 13 | shellexec: 14 | class: bzt.modules.shellexec.ShellExecutor 15 | 16 | -------------------------------------------------------------------------------- /tests/unit/__init__.py: -------------------------------------------------------------------------------- 1 | """ unit test """ 2 | from tests.unit.base import TEST_DIR, BUILD_DIR, RESOURCES_DIR, BASE_CONFIG, ROOT_LOGGER, BZT_DIR 3 | from tests.unit.base import close_reader_file, local_paths_config 4 | from tests.unit.mocks import random_datapoint, EngineEmul, BZMock 5 | from tests.unit.cases import BZTestCase, ExecutorTestCase 6 | -------------------------------------------------------------------------------- /tests/unit/modules/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/unit/modules/__init__.py -------------------------------------------------------------------------------- /tests/unit/modules/jmeter/test_Threadgroups.py: -------------------------------------------------------------------------------- 1 | from bzt.jmx import JMX 2 | from bzt.jmx.threadgroups import ThreadGroupHandler 3 | from tests.unit import BZTestCase 4 | 5 | 6 | class TestThreadGroups(BZTestCase): 7 | def test_property_resolving(self): 8 | jmx = JMX(original="tests/resources/jmeter/torero/duration-with-env.jmx") 9 | tgh = ThreadGroupHandler(self.log) 10 | thread_groups = list(tgh.groups(jmx)) 11 | self.assertEqual('${var1}', thread_groups[0].get_ramp_up()) 12 | self.assertEqual('M', thread_groups[0]._get_time_unit()) 13 | self.assertEqual(12, thread_groups[0].get_concurrency()) 14 | self.assertEqual(1, thread_groups[0].get_rate()) 15 | self.assertEqual(None, thread_groups[0].get_iterations()) 16 | self.assertEqual(60, thread_groups[0].get_duration()) 17 | 18 | -------------------------------------------------------------------------------- /tests/unit/modules/pyscripts/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/taurus/08166bcb658e2e0f60dd4c7ce913744946f69889/tests/unit/modules/pyscripts/__init__.py --------------------------------------------------------------------------------