neoload 1.3.14.dev2__tar.gz → 1.3.15__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. {neoload-1.3.14.dev2 → neoload-1.3.15}/PKG-INFO +9 -17
  2. {neoload-1.3.14.dev2 → neoload-1.3.15}/README.md +8 -16
  3. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/commands/report.py +27 -39
  4. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/neoload_cli_lib/rest_crud.py +1 -0
  5. neoload-1.3.15/neoload/resources/jinja/common/header.j2 +8 -0
  6. neoload-1.3.15/neoload/resources/jinja/common/styles.css +60 -0
  7. neoload-1.3.15/neoload/version.py +1 -0
  8. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload.egg-info/PKG-INFO +9 -17
  9. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/report/test_report_json_output.py +0 -6
  10. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/report/test_trends_json_output.py +0 -9
  11. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/resources/report/expected_custom_report.html +2 -8
  12. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/resources/report/expected_custom_report_filtered.html +2 -8
  13. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/resources/report/expected_template_trends.html +2 -8
  14. neoload-1.3.14.dev2/neoload/resources/jinja/common/header.j2 +0 -8
  15. neoload-1.3.14.dev2/neoload/resources/jinja/common/styles.css +0 -66
  16. neoload-1.3.14.dev2/neoload/version.py +0 -1
  17. {neoload-1.3.14.dev2 → neoload-1.3.15}/.github/workflows/python-integration-tests.yml +0 -0
  18. {neoload-1.3.14.dev2 → neoload-1.3.15}/.github/workflows/python-package.yml +0 -0
  19. {neoload-1.3.14.dev2 → neoload-1.3.15}/.github/workflows/python-post-release-changelog-pr.yml +0 -0
  20. {neoload-1.3.14.dev2 → neoload-1.3.15}/.github/workflows/python-release.yml +0 -0
  21. {neoload-1.3.14.dev2 → neoload-1.3.15}/.gitignore +0 -0
  22. {neoload-1.3.14.dev2 → neoload-1.3.15}/.travis.yml +0 -0
  23. {neoload-1.3.14.dev2 → neoload-1.3.15}/CHANGELOG.md +0 -0
  24. {neoload-1.3.14.dev2 → neoload-1.3.15}/LICENSE +0 -0
  25. {neoload-1.3.14.dev2 → neoload-1.3.15}/MANIFEST.in +0 -0
  26. {neoload-1.3.14.dev2 → neoload-1.3.15}/examples/docker/Dockerfile +0 -0
  27. {neoload-1.3.14.dev2 → neoload-1.3.15}/examples/pipelines/aws/.nlignore +0 -0
  28. {neoload-1.3.14.dev2 → neoload-1.3.15}/examples/pipelines/aws/buildspec.yaml +0 -0
  29. {neoload-1.3.14.dev2 → neoload-1.3.15}/examples/pipelines/azure_devops/.nlignore +0 -0
  30. {neoload-1.3.14.dev2 → neoload-1.3.15}/examples/pipelines/azure_devops/Azure_DevOps_Pipeline_NeoLoad_CLI.jpg +0 -0
  31. {neoload-1.3.14.dev2 → neoload-1.3.15}/examples/pipelines/azure_devops/Azure_DevOps_Pipeline_NeoLoad_SLA_jUnit.jpg +0 -0
  32. {neoload-1.3.14.dev2 → neoload-1.3.15}/examples/pipelines/azure_devops/README.md +0 -0
  33. {neoload-1.3.14.dev2 → neoload-1.3.15}/examples/pipelines/azure_devops/neoload-cli-docker.yml +0 -0
  34. {neoload-1.3.14.dev2 → neoload-1.3.15}/examples/pipelines/azure_devops/neoload-cli-dyninfra.yml +0 -0
  35. {neoload-1.3.14.dev2 → neoload-1.3.15}/examples/pipelines/bamboo-specs/.nlignore +0 -0
  36. {neoload-1.3.14.dev2 → neoload-1.3.15}/examples/pipelines/bamboo-specs/Bamboo_Pipeline_NeoLoad_SLA_jUnit.jpg +0 -0
  37. {neoload-1.3.14.dev2 → neoload-1.3.15}/examples/pipelines/bamboo-specs/README.md +0 -0
  38. {neoload-1.3.14.dev2 → neoload-1.3.15}/examples/pipelines/bamboo-specs/bamboo-v1.yaml +0 -0
  39. {neoload-1.3.14.dev2 → neoload-1.3.15}/examples/pipelines/bamboo-specs/bamboo-v2.yaml +0 -0
  40. {neoload-1.3.14.dev2 → neoload-1.3.15}/examples/pipelines/github/neoload-github-actions-demo.yml +0 -0
  41. {neoload-1.3.14.dev2 → neoload-1.3.15}/examples/pipelines/gitlab/.nlignore +0 -0
  42. {neoload-1.3.14.dev2 → neoload-1.3.15}/examples/pipelines/gitlab/openshift.gitlab-ci.yml +0 -0
  43. {neoload-1.3.14.dev2 → neoload-1.3.15}/examples/pipelines/jenkins/Jenkinsfile_dyninfra +0 -0
  44. {neoload-1.3.14.dev2 → neoload-1.3.15}/examples/pipelines/jenkins/Jenkinsfile_slafails +0 -0
  45. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/__init__.py +0 -0
  46. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/__main__.py +0 -0
  47. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/commands/__init__.py +0 -0
  48. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/commands/config.py +0 -0
  49. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/commands/docker.py +0 -0
  50. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/commands/fastfail.py +0 -0
  51. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/commands/login.py +0 -0
  52. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/commands/logout.py +0 -0
  53. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/commands/logs.py +0 -0
  54. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/commands/logs_url.py +0 -0
  55. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/commands/project.py +0 -0
  56. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/commands/run.py +0 -0
  57. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/commands/status.py +0 -0
  58. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/commands/stop.py +0 -0
  59. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/commands/test_results.py +0 -0
  60. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/commands/test_settings.py +0 -0
  61. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/commands/validate.py +0 -0
  62. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/commands/wait.py +0 -0
  63. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/commands/workspaces.py +0 -0
  64. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/commands/zones.py +0 -0
  65. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/neoload_cli_lib/__init__.py +0 -0
  66. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/neoload_cli_lib/bad_as_code_exception.py +0 -0
  67. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/neoload_cli_lib/cli_exception.py +0 -0
  68. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/neoload_cli_lib/config_global.py +0 -0
  69. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/neoload_cli_lib/displayer.py +0 -0
  70. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/neoload_cli_lib/docker_lib.py +0 -0
  71. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/neoload_cli_lib/filtering.py +0 -0
  72. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/neoload_cli_lib/hooks.py +0 -0
  73. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/neoload_cli_lib/logs_tools.py +0 -0
  74. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/neoload_cli_lib/logs_traduction_map.py +0 -0
  75. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/neoload_cli_lib/name_resolver.py +0 -0
  76. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/neoload_cli_lib/neoLoad_project.py +0 -0
  77. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/neoload_cli_lib/paths.py +0 -0
  78. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/neoload_cli_lib/running_tools.py +0 -0
  79. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/neoload_cli_lib/schema_validation.py +0 -0
  80. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/neoload_cli_lib/tools.py +0 -0
  81. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/neoload_cli_lib/user_data.py +0 -0
  82. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/resources/__init__.py +0 -0
  83. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/resources/jinja/__init__.py +0 -0
  84. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/resources/jinja/builtin_console_summary.j2 +0 -0
  85. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/resources/jinja/builtin_transactions_csv.j2 +0 -0
  86. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/resources/jinja/common/common.js +0 -0
  87. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/resources/jinja/common/external_data.html.j2 +0 -0
  88. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/resources/jinja/common/general_details.html.j2 +0 -0
  89. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/resources/jinja/common/hits_per_second.html.j2 +0 -0
  90. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/resources/jinja/common/running_vus.html.j2 +0 -0
  91. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/resources/jinja/common/transactions.html.j2 +0 -0
  92. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/resources/jinja/common/workload_characteristics.html.j2 +0 -0
  93. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/resources/jinja/custom_transactions_export.j2 +0 -0
  94. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/resources/jinja/sample-custom-report.html.j2 +0 -0
  95. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/resources/jinja/sample-trends-report.html.j2 +0 -0
  96. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/resources/jinja/trends/general_details.html.j2 +0 -0
  97. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/resources/jinja/trends/transaction_trends.html.j2 +0 -0
  98. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload/resources/jinja/trends/trends.js +0 -0
  99. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload.egg-info/SOURCES.txt +0 -0
  100. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload.egg-info/dependency_links.txt +0 -0
  101. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload.egg-info/entry_points.txt +0 -0
  102. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload.egg-info/requires.txt +0 -0
  103. {neoload-1.3.14.dev2 → neoload-1.3.15}/neoload.egg-info/top_level.txt +0 -0
  104. {neoload-1.3.14.dev2 → neoload-1.3.15}/notes/PSB_20200421_TODO.txt +0 -0
  105. {neoload-1.3.14.dev2 → neoload-1.3.15}/notes/acceptance.txt +0 -0
  106. {neoload-1.3.14.dev2 → neoload-1.3.15}/pull_request_template.md +0 -0
  107. {neoload-1.3.14.dev2 → neoload-1.3.15}/pytest.ini +0 -0
  108. {neoload-1.3.14.dev2 → neoload-1.3.15}/requirements.txt +0 -0
  109. {neoload-1.3.14.dev2 → neoload-1.3.15}/resources/as-code.latest.schema.json +0 -0
  110. {neoload-1.3.14.dev2 → neoload-1.3.15}/setup.cfg +0 -0
  111. {neoload-1.3.14.dev2 → neoload-1.3.15}/setup.py +0 -0
  112. {neoload-1.3.14.dev2 → neoload-1.3.15}/sonar-project.properties +0 -0
  113. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/__init__.py +0 -0
  114. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/docker/test_docker_cleanups.py +0 -0
  115. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/docker/test_docker_connections.py +0 -0
  116. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/docker/test_docker_hooks.py +0 -0
  117. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/fastfail/test_fastfail_slas.py +0 -0
  118. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/project/test_upload.py +0 -0
  119. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/report/test_report.py +0 -0
  120. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/report/test_report_templates.py +0 -0
  121. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/report/test_report_transactions.py +0 -0
  122. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/report/test_report_trends.py +0 -0
  123. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/report/test_trends_templates.py +0 -0
  124. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/status/test_status_with_names.py +0 -0
  125. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/test_config.py +0 -0
  126. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/test_login.py +0 -0
  127. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/test_logout.py +0 -0
  128. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/test_logs/test_logs.py +0 -0
  129. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/test_logs_url.py +0 -0
  130. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/test_results/test_result_delete.py +0 -0
  131. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/test_results/test_result_ls.py +0 -0
  132. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/test_results/test_result_patch.py +0 -0
  133. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/test_results/test_result_put.py +0 -0
  134. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/test_run.py +0 -0
  135. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/test_settings/test_create.py +0 -0
  136. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/test_settings/test_createorpatch.py +0 -0
  137. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/test_settings/test_delete.py +0 -0
  138. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/test_settings/test_ls.py +0 -0
  139. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/test_settings/test_patch.py +0 -0
  140. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/test_settings/test_put.py +0 -0
  141. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/test_validate.py +0 -0
  142. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/wait/test_wait.py +0 -0
  143. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/workspaces/test_workspace_ls.py +0 -0
  144. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/workspaces/test_workspace_use.py +0 -0
  145. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/commands/zones/test_zones.py +0 -0
  146. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/conftest.py +0 -0
  147. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/helpers/__init__.py +0 -0
  148. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/helpers/test_utils.py +0 -0
  149. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/integration/expected/fastfail.log +0 -0
  150. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/integration/expected/junit-sla.xml +0 -0
  151. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/integration/expected/run.log +0 -0
  152. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/integration/expected/summary.txt +0 -0
  153. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/integration/runAllScripts.sh +0 -0
  154. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/integration/scripts/cleanup.sh +0 -0
  155. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/integration/scripts/project.upload.test.sh +0 -0
  156. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/integration/scripts/results.delete.test.sh +0 -0
  157. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/integration/scripts/results.patch.test.sh +0 -0
  158. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/integration/scripts/results.put.test.sh +0 -0
  159. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/integration/scripts/run.fastfail.test.sh +0 -0
  160. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/integration/scripts/run.oneliner.test.sh +0 -0
  161. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/integration/scripts/run.test.sh +0 -0
  162. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/integration/scripts/settings.create.delete.test.sh +0 -0
  163. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/integration/scripts/settings.patch.test.sh +0 -0
  164. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/integration/scripts/settings.put.test.sh +0 -0
  165. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/integration/scripts/validate.test.sh +0 -0
  166. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/integration/scripts/wait.test.sh +0 -0
  167. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/integration/scripts/zones.ls.test.sh +0 -0
  168. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_cli_lib/test_SchemaValidation.py +0 -0
  169. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_cli_lib/test_displayer.py +0 -0
  170. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_cli_lib/test_docker.py +0 -0
  171. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_cli_lib/test_filtering.py +0 -0
  172. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_cli_lib/test_rest_crud.py +0 -0
  173. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_cli_lib/test_running_tools.py +0 -0
  174. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_cli_lib/test_tools.py +0 -0
  175. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_cli_lib/test_user_data.py +0 -0
  176. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_projects/.nlignore +0 -0
  177. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_projects/broken_yaml.yaml +0 -0
  178. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_projects/empty.yaml +0 -0
  179. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_projects/example_1/.gitlab-ci.yml +0 -0
  180. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_projects/example_1/.nlignore +0 -0
  181. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_projects/example_1/data/cities.csv +0 -0
  182. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_projects/example_1/default.yaml +0 -0
  183. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_projects/example_1/paths/geosearch_get.yaml +0 -0
  184. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_projects/example_1/slas/prod.yaml +0 -0
  185. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_projects/example_1/slas/uat.yaml +0 -0
  186. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_projects/example_1.zip +0 -0
  187. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_projects/invalid_to_schema.yaml +0 -0
  188. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/neoload_projects/simpledemo.yml +0 -0
  189. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/resources/__init__.py +0 -0
  190. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/resources/expected_neoload_junit_slas.xml +0 -0
  191. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/resources/expected_summary_text_no_sla.txt +0 -0
  192. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/resources/expected_summary_text_with_sla.txt +0 -0
  193. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/resources/jinja/__init__.py +0 -0
  194. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/resources/report/expected_custom_transactions.csv +0 -0
  195. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/resources/report/expected_report.json +0 -0
  196. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/resources/report/expected_report_filtered.json +0 -0
  197. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/resources/report/expected_template_transactions.json +0 -0
  198. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/resources/report/expected_template_transactions_csv.csv +0 -0
  199. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/resources/report/expected_trends.json +0 -0
  200. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/resources/report/raw_expected_custom_report.html +0 -0
  201. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/resources/report/raw_expected_report.json +0 -0
  202. {neoload-1.3.14.dev2 → neoload-1.3.15}/tests/test_readme.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: neoload
3
- Version: 1.3.14.dev2
3
+ Version: 1.3.15
4
4
  Summary: A command-line native utility for launching and observing NeoLoad performance tests
5
5
  Home-page: https://github.com/Neotys-Labs/neoload-cli
6
6
  Author: Neotys
@@ -245,8 +245,6 @@ The 'report' subcommand is intended to simplify not only common data exporting n
245
245
  templating capabilities over a standard, correlated data model. In contrast to the test-results
246
246
  subcommand, 'report' can be used to generate as well as transform test result data.
247
247
 
248
- :warning: The 'report' subcommand can be **slow** (several hours) on results with a lots of transactions or monitors.
249
-
250
248
  ### Exporting Transaction CSV data
251
249
  ```
252
250
  Usage: neoload report [OPTIONS] [NAME]
@@ -322,20 +320,6 @@ neoload report --json-in ~/Downloads/temp.json \
322
320
  NOTE: built-in reports produce a reduced-scope JSON data model and are therefore faster
323
321
  that exporting all test data for various templates and output specs.
324
322
 
325
- ### Work with big results
326
-
327
- Big results for the CLI means several hundreds of transactions, with several LGs and last several hours.
328
-
329
- The 'report' subcommand get a lot of data from NeoLoad Web API, it is not recommended to use with big results
330
- because it could take several hours to complete and may fail.
331
-
332
- The 'report' subcommand gets all "values" and the "timeseries points" of all statistics from NLW API for each transaction and monitor: \
333
- it makes 2 API calls per transaction and 1 API call per monitor to NLW API. 10 calls are made in parallel
334
- (can be configured with env variable `NL_MAX_WORKERS`). \
335
- In NeoLoad Web SaaS, the rate limit of 300 calls per minute may be reached, the CLI will adapt and slow down.
336
-
337
- To see which API calls are made, you can use the debug option: `neoload --debug report`
338
-
339
323
  ## View zones
340
324
  ```
341
325
  neoload zones --human
@@ -469,6 +453,14 @@ neoload wait cur
469
453
 
470
454
  [An example for Jenkins pipeline is found here.](examples/pipelines/jenkins/Jenkinsfile_slafails)
471
455
 
456
+ ## Troubleshooting
457
+ ### Windows and non UTF-8 characters
458
+ Windows use default encoding as ASCII, but the NeoLoad CLI needs UTF-8 encoding.\
459
+ Before running some commands like `neoload report` on windows, you need to set environment variable `set PYTHONUTF8=1`\
460
+ More info [here](https://docs.python.org/3/using/windows.html#utf-8-mode) and [here](https://docs.python.org/3/library/os.html#utf8-mode).
461
+ Note that with Python 3.15, no need to do that anymore [PEP 686 – Make UTF-8 mode default](https://peps.python.org/pep-0686/)
462
+
463
+
472
464
  ## Packaging the CLI with Build Agents
473
465
  Many of the above CI examples include a step to explicitly install the NeoLoad CLI as part of the
474
466
  build steps. However, if you want the CLI baked into some build agent directly so that it
@@ -214,8 +214,6 @@ The 'report' subcommand is intended to simplify not only common data exporting n
214
214
  templating capabilities over a standard, correlated data model. In contrast to the test-results
215
215
  subcommand, 'report' can be used to generate as well as transform test result data.
216
216
 
217
- :warning: The 'report' subcommand can be **slow** (several hours) on results with a lots of transactions or monitors.
218
-
219
217
  ### Exporting Transaction CSV data
220
218
  ```
221
219
  Usage: neoload report [OPTIONS] [NAME]
@@ -291,20 +289,6 @@ neoload report --json-in ~/Downloads/temp.json \
291
289
  NOTE: built-in reports produce a reduced-scope JSON data model and are therefore faster
292
290
  that exporting all test data for various templates and output specs.
293
291
 
294
- ### Work with big results
295
-
296
- Big results for the CLI means several hundreds of transactions, with several LGs and last several hours.
297
-
298
- The 'report' subcommand get a lot of data from NeoLoad Web API, it is not recommended to use with big results
299
- because it could take several hours to complete and may fail.
300
-
301
- The 'report' subcommand gets all "values" and the "timeseries points" of all statistics from NLW API for each transaction and monitor: \
302
- it makes 2 API calls per transaction and 1 API call per monitor to NLW API. 10 calls are made in parallel
303
- (can be configured with env variable `NL_MAX_WORKERS`). \
304
- In NeoLoad Web SaaS, the rate limit of 300 calls per minute may be reached, the CLI will adapt and slow down.
305
-
306
- To see which API calls are made, you can use the debug option: `neoload --debug report`
307
-
308
292
  ## View zones
309
293
  ```
310
294
  neoload zones --human
@@ -438,6 +422,14 @@ neoload wait cur
438
422
 
439
423
  [An example for Jenkins pipeline is found here.](examples/pipelines/jenkins/Jenkinsfile_slafails)
440
424
 
425
+ ## Troubleshooting
426
+ ### Windows and non UTF-8 characters
427
+ Windows use default encoding as ASCII, but the NeoLoad CLI needs UTF-8 encoding.\
428
+ Before running some commands like `neoload report` on windows, you need to set environment variable `set PYTHONUTF8=1`\
429
+ More info [here](https://docs.python.org/3/using/windows.html#utf-8-mode) and [here](https://docs.python.org/3/library/os.html#utf8-mode).
430
+ Note that with Python 3.15, no need to do that anymore [PEP 686 – Make UTF-8 mode default](https://peps.python.org/pep-0686/)
431
+
432
+
441
433
  ## Packaging the CLI with Build Agents
442
434
  Many of the above CI examples include a step to explicitly install the NeoLoad CLI as part of the
443
435
  build steps. However, if you want the CLI baked into some build agent directly so that it
@@ -35,7 +35,7 @@ __operation_elements = "/elements"
35
35
  __operation_monitors = "/monitors"
36
36
 
37
37
  QUERY_CATEGORY_TRANSACTION = "category=TRANSACTION"
38
- CONTROLLER_MONITORS_ROOT = ['Controller', 'Contrôleur']
38
+ CONTROLLER_MONITORS_ROOT = ['Controller', 'Contrôleur', 'JMeter']
39
39
 
40
40
  meta_key = 'result id'
41
41
  __resolver = test_results.get_resolver();
@@ -224,7 +224,7 @@ def parse_source_data_spec(json_in, model, report_type, name):
224
224
 
225
225
  def process_final_output(template, template_text, json_data):
226
226
  if template_text is None or template_text == "":
227
- return json.dumps(json_data)
227
+ return json.dumps(json_data, ensure_ascii=False)
228
228
  else:
229
229
  dirname = os.path.dirname(os.path.abspath(template))
230
230
  loader = jinja2.FileSystemLoader(searchpath=dirname)
@@ -259,43 +259,35 @@ def can_raw_transactions_data():
259
259
  return False if user_data.is_version_lower_than('2.6.0') else True
260
260
 
261
261
 
262
- def is_not_all_transactions(element):
263
- return element.get('elementId') != 'all-transactions'
262
+ def should_raw_transactions_data(__id, time_filter):
263
+ if time_filter is not None and can_raw_transactions_data():
264
+ # look for the transaction with the smallest number of iterations, but that has raw data
264
265
 
265
-
266
- def should_raw_transactions_data(__id, time_binding):
267
- if rest_crud.get_workspace() is None:
268
- logging.warning("No Workspace defined. For better performance, please define one before the report: neoload workspace use 'Default Workspace'")
269
266
  # grab all transactions list
270
267
  json_elements_transactions = rest_crud.get(
271
268
  get_end_point(__id, __operation_elements) + "?" + QUERY_CATEGORY_TRANSACTION)
272
- values = []
269
+ txns = []
273
270
  for el in json_elements_transactions:
274
271
  if el['type'] != 'TRANSACTION':
275
272
  continue
276
273
  # grab count of this transaction and only add if there are iterations
277
274
  json_values = rest_crud.get(get_end_point(__id, __operation_elements) + "/" + el['id'] + "/values")
278
275
  if json_values['count'] > 0:
279
- values.append({
280
- 'elementId': el['id'],
276
+ txns.append({
277
+ 'id': el['id'],
281
278
  'count': json_values['count']
282
279
  })
283
- break
284
- else:
285
- values = rest_crud.get(get_end_point(__id, __operation_elements) + "/values?" + QUERY_CATEGORY_TRANSACTION)
286
- transaction_with_max_count = max(filter(is_not_all_transactions, values), key=lambda el: el['count'], default=None)
287
- if time_binding is not None and "from_secs" in time_binding and can_raw_transactions_data() and transaction_with_max_count is not None:
288
- tr_id = transaction_with_max_count.get('elementId')
289
- try:
290
- raw_points_length = len(
291
- rest_crud.get(f"{get_end_point(__id, __operation_elements)}/{tr_id}/raw?format=JSON"))
292
- except cli_exception.CliException as ex:
293
- logging.error(ex.format_message())
294
- raw_points_length = 0
295
- gprint(f"Will {'' if raw_points_length > 0 else 'not '}use raw data because time filter enabled and transaction {tr_id} has {raw_points_length} raw data")
296
- return raw_points_length > 0
297
-
298
- logging.debug("Will not use raw data because: no time filter or NLW not compatible or no transaction has raw data")
280
+
281
+ # sort ascending by count (smallest number of iterations produces smallest amount of data)
282
+ txns = sorted(txns, key=lambda el: el['count'])
283
+ for el in txns:
284
+ this_raw_count = len(
285
+ rest_crud.get(get_end_point(__id, __operation_elements) + "/" + el['id'] + "/raw?format=JSON"))
286
+ if this_raw_count > 0:
287
+ logging.debug("use_raw[1]: True")
288
+ return True
289
+
290
+ logging.debug("use_raw[1]: False")
299
291
  return False
300
292
 
301
293
 
@@ -355,9 +347,11 @@ def get_single_report(name, components=None, time_filter=None, elements_filter=N
355
347
 
356
348
  statistics_list = get_standard_statistics_list()
357
349
 
358
- fill_single_requests(__id, elements_filter, time_binding, statistics_list, components, data)
350
+ use_txn_raw = should_raw_transactions_data(__id, time_filter)
359
351
 
360
- fill_single_transactions(__id, elements_filter, time_binding, statistics_list, components, data)
352
+ fill_single_requests(__id, elements_filter, time_binding, statistics_list, use_txn_raw, components, data)
353
+
354
+ fill_single_transactions(__id, elements_filter, time_binding, statistics_list, use_txn_raw, components, data)
361
355
 
362
356
  fill_single_monitors(__id, components, data)
363
357
 
@@ -414,7 +408,7 @@ def fill_single_events(__id, components, data):
414
408
  data['events'] = rest_crud.get(get_end_point(__id, __operation_events))
415
409
 
416
410
 
417
- def fill_single_requests(__id, elements_filter, time_binding, statistics_list, components, data):
411
+ def fill_single_requests(__id, elements_filter, time_binding, statistics_list, use_txn_raw, components, data):
418
412
  if components['all_requests']:
419
413
  gprint("Getting all-request data...")
420
414
 
@@ -429,13 +423,13 @@ def fill_single_requests(__id, elements_filter, time_binding, statistics_list, c
429
423
  json_elements_all_requests = json_elements_all_requests + json_elements_all_requests_preserve
430
424
 
431
425
  json_elements_all_requests = get_elements_data(__id, json_elements_all_requests, time_binding, True,
432
- statistics_list, False)
426
+ statistics_list, use_txn_raw)
433
427
 
434
428
  data['all_requests'] = json_elements_all_requests[0] if json_elements_all_requests is not None and len(
435
429
  json_elements_all_requests) > 0 else {},
436
430
 
437
431
 
438
- def fill_single_transactions(__id, elements_filter, time_binding, statistics_list, components, data):
432
+ def fill_single_transactions(__id, elements_filter, time_binding, statistics_list, use_txn_raw, components, data):
439
433
  if components['transactions']:
440
434
  gprint("Getting transactions...")
441
435
 
@@ -444,7 +438,6 @@ def fill_single_transactions(__id, elements_filter, time_binding, statistics_lis
444
438
  if not elements_filter is None:
445
439
  json_elements_transactions = filter_elements(json_elements_transactions, elements_filter)
446
440
 
447
- use_txn_raw = should_raw_transactions_data(__id, time_binding)
448
441
  json_elements_transactions = get_elements_data(__id, json_elements_transactions, time_binding, True,
449
442
  statistics_list, use_txn_raw)
450
443
 
@@ -907,12 +900,7 @@ def get_elements_data(result_id, base_col, time_binding, include_points, statist
907
900
  procedure = lambda el: (
908
901
  get_perf_time(), get_element_data(el, result_id, time_binding, include_points, statistics_list, use_txn_raw))
909
902
 
910
- max_workers = MAX_ELEMENTS_WORKERS
911
- try:
912
- max_workers = int(os.getenv('NL_MAX_WORKERS', MAX_ELEMENTS_WORKERS))
913
- except ValueError:
914
- logging.warning(f'NL_MAX_WORKERS environment variable is not an integer. Use default {MAX_ELEMENTS_WORKERS}')
915
- with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor:
903
+ with concurrent.futures.ThreadPoolExecutor(max_workers=MAX_ELEMENTS_WORKERS) as executor:
916
904
  translate = {executor.submit(procedure, el): el for el in base_col}
917
905
  for future in concurrent.futures.as_completed(translate):
918
906
  orig = translate[future]
@@ -169,6 +169,7 @@ def __create_url(endpoint: str):
169
169
 
170
170
 
171
171
  def __handle_error(response):
172
+ response.encoding = response.apparent_encoding
172
173
  status_code = response.status_code
173
174
  if status_code > 299:
174
175
  request = response.request
@@ -0,0 +1,8 @@
1
+ <div class="clearfix">
2
+ <div style="float:left;width:80%;">
3
+ <h1 style="text-align:left;">{{title}}</h1>
4
+ </div>
5
+ <div style="float:right;width:160px;padding-top:0.75em;">
6
+ <svg fill="hsla(210, 100%, 30%, 1)" viewBox="0 0 1366 281.16"><polygon points="34.84 227.65 0 192.81 52.38 140.43 0.39 88.44 35.23 53.6 122.06 140.43 34.84 227.65"></polygon><polygon points="88.34 281.16 53.51 246.32 140.73 159.1 227.56 245.93 192.72 280.76 140.73 228.78 88.34 281.16"></polygon><polygon points="140.43 122.06 53.6 35.23 88.44 0.4 140.43 52.39 192.81 0 227.65 34.84 140.43 122.06"></polygon><polygon points="468.86 31.92 289.87 31.92 289.87 65.1 361.88 65.1 361.88 248.26 396.85 248.26 396.85 65.1 468.86 65.1 468.86 31.92"></polygon><path d="M475.27,106.83l-3.22-18.74H441V248.26h35v-106a54.21,54.21,0,0,1,21.62-16.84,75.54,75.54,0,0,1,31.27-6.53h6.27V85.1h-6.27C507.51,85.1,489.53,92.4,475.27,106.83Z"></path><rect x="553.54" y="88.09" width="34.97" height="160.17"></rect><rect x="552.49" y="26.54" width="37.06" height="37.06"></rect><path d="M698.43,84C647.13,84,607,120.54,607,167.2v.61c0,46.15,40,82.29,91.14,82.29,18.74,0,34.61-3.73,48.5-11.42l-.39-.35c-.6-.55-1.21-1.1-1.77-1.7h0a81.16,81.16,0,0,1-15.07-23.18,60.44,60.44,0,0,1-29.23,7.27c-31.35,0-55-23-55-53.52v-.61c0-29.67,23.27-52.91,53-52.91A60.63,60.63,0,0,1,729.62,122a88.74,88.74,0,0,1,17.79-26.71C733.54,87.67,717.5,84,698.43,84Z"></path><path d="M818.2,85.1a78.28,78.28,0,0,0-28.15,5.3,71,71,0,0,0-24.38,15.71,77.17,77.17,0,0,0-17,26.17c-4.26,10.44-6.42,22.77-6.42,36.66a103.82,103.82,0,0,0,5,32.88A67.86,67.86,0,0,0,788.79,245c10.61,4.12,23.26,6.21,37.61,6.21a149.67,149.67,0,0,0,16.64-.92c5.44-.61,10.57-1.37,15.23-2.27a124.88,124.88,0,0,0,12.55-3,63.44,63.44,0,0,0,8.14-3l-4.83-28.9a113,113,0,0,1-17.5,4.91,123.43,123.43,0,0,1-25.5,2.46c-15.86,0-28.14-3.59-36.52-10.68s-13.21-17.25-14.26-30.18l-.06-.71H889.18c.18-1.84.32-3.94.42-6.24.1-2.64.15-4.87.15-6.83,0-26.74-6.36-47.12-18.9-60.56S840.6,85.1,818.2,85.1Zm34.7,68H780.57l.1-.74a62.7,62.7,0,0,1,3.5-13.87,38.93,38.93,0,0,1,7.21-12.1,34.87,34.87,0,0,1,27.13-11.8,34.91,34.91,0,0,1,14.93,3,31.25,31.25,0,0,1,10.63,8.1,35.47,35.47,0,0,1,6.59,12.12,48,48,0,0,1,2.24,14.69Z"></path><path d="M994.06,85.1c-19.22,0-36.78,7.46-52.29,22.18l-3.3-19.19H907.4V248.26h35V144.16C956.61,126.79,971.78,118,987.48,118c19.77,0,29,10.35,29,32.57v97.71h35V147.56c0-17.61-5.14-32.53-15.28-44.37C1025.86,91.19,1011.7,85.1,994.06,85.1Z"></path><path d="M1123.54,49.87l-63.36,62v7.32h28.39v88.74c0,28.34,16.43,43.33,47.51,43.33a61.19,61.19,0,0,0,28.69-7l2.09-1.09V214.78h-6.8l-.76.34c-13.3,5.91-24.77,5.1-31.23,2.38-3-1.31-4.53-5.33-4.53-12V119.18h43.32V88.09h-43.32Z"></path><rect x="1188.39" y="88.09" width="34.97" height="160.17"></rect><rect x="1187.35" y="26.54" width="37.06" height="37.06"></rect><path d="M1356,173a47.6,47.6,0,0,0-24.31-15.16l-26.46-6.94a119.71,119.71,0,0,1-21.89-7.8c-6.51-3.16-7.27-7-7.27-9.59,0-4.25,2.38-7.78,7.27-10.79,5.42-3.34,14.23-5,26.19-5,12.17,0,24.83,2.72,37.65,8.07l.72.3h6.76V94.66l-2.54-.94a141.69,141.69,0,0,0-49.76-8.62c-18.21,0-32.89,4.75-43.64,14.11-10.9,9.5-16.42,22-16.42,37,0,11.14,3.47,20.48,10.32,27.76A51.06,51.06,0,0,0,1277,178.49l26.33,7.06a130.83,130.83,0,0,1,21.59,7.61c7,3.31,7,6.66,7,7.76,0,7.49-3,17.45-29.28,17.45a99,99,0,0,1-51.2-13.8l-.92-.54h-6.45v32.18l2,1.11c16.84,9.24,35.72,13.93,56.11,13.93,20.65,0,36.57-4.53,47.3-13.45,10.94-9.1,16.49-20.43,16.49-33.68C1366,191.13,1362.63,180.65,1356,173Z"></path></svg>
7
+ </div>
8
+ </div>
@@ -0,0 +1,60 @@
1
+ body {
2
+ font-family: Helvetica, sans-serif;
3
+ padding: 2em;
4
+ }
5
+ table {
6
+ border-collapse: collapse;
7
+ width: 100%;
8
+ }
9
+
10
+ td, th {
11
+ border: 1px solid #ddd;
12
+ padding: 8px;
13
+ }
14
+
15
+ tr:nth-child(even){background-color: #f2f2f2;}
16
+
17
+ th {
18
+ padding-top: 12px;
19
+ padding-bottom: 12px;
20
+ text-align: left;
21
+ background-color: #4CAF50;
22
+ color: white;
23
+ }
24
+
25
+ h1 {
26
+ margin: 1em auto;
27
+ text-align: center;
28
+ }
29
+
30
+ h3 {
31
+ padding: 0.3em;
32
+ margin: 1em auto;
33
+ text-align: center;
34
+ background-color: #e2e2ff;
35
+ border-bottom: #444;
36
+ }
37
+
38
+ .clearfix::after {
39
+ content: "";
40
+ clear: both;
41
+ display: table;
42
+ }
43
+
44
+ td.graph {
45
+ padding:0px;
46
+ }
47
+ div.graph {
48
+ background-color:#eee;
49
+ }
50
+
51
+ table.legend {
52
+ margin: 0em auto;
53
+ text-align: center;
54
+ width: 75%;
55
+ border: 1px solid #000;
56
+ }
57
+ table.legend, table.legend > tbody > tr > td {
58
+ border: 0px;
59
+ padding:0px;
60
+ }
@@ -0,0 +1 @@
1
+ __version__ = "1.3.15"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: neoload
3
- Version: 1.3.14.dev2
3
+ Version: 1.3.15
4
4
  Summary: A command-line native utility for launching and observing NeoLoad performance tests
5
5
  Home-page: https://github.com/Neotys-Labs/neoload-cli
6
6
  Author: Neotys
@@ -245,8 +245,6 @@ The 'report' subcommand is intended to simplify not only common data exporting n
245
245
  templating capabilities over a standard, correlated data model. In contrast to the test-results
246
246
  subcommand, 'report' can be used to generate as well as transform test result data.
247
247
 
248
- :warning: The 'report' subcommand can be **slow** (several hours) on results with a lots of transactions or monitors.
249
-
250
248
  ### Exporting Transaction CSV data
251
249
  ```
252
250
  Usage: neoload report [OPTIONS] [NAME]
@@ -322,20 +320,6 @@ neoload report --json-in ~/Downloads/temp.json \
322
320
  NOTE: built-in reports produce a reduced-scope JSON data model and are therefore faster
323
321
  that exporting all test data for various templates and output specs.
324
322
 
325
- ### Work with big results
326
-
327
- Big results for the CLI means several hundreds of transactions, with several LGs and last several hours.
328
-
329
- The 'report' subcommand get a lot of data from NeoLoad Web API, it is not recommended to use with big results
330
- because it could take several hours to complete and may fail.
331
-
332
- The 'report' subcommand gets all "values" and the "timeseries points" of all statistics from NLW API for each transaction and monitor: \
333
- it makes 2 API calls per transaction and 1 API call per monitor to NLW API. 10 calls are made in parallel
334
- (can be configured with env variable `NL_MAX_WORKERS`). \
335
- In NeoLoad Web SaaS, the rate limit of 300 calls per minute may be reached, the CLI will adapt and slow down.
336
-
337
- To see which API calls are made, you can use the debug option: `neoload --debug report`
338
-
339
323
  ## View zones
340
324
  ```
341
325
  neoload zones --human
@@ -469,6 +453,14 @@ neoload wait cur
469
453
 
470
454
  [An example for Jenkins pipeline is found here.](examples/pipelines/jenkins/Jenkinsfile_slafails)
471
455
 
456
+ ## Troubleshooting
457
+ ### Windows and non UTF-8 characters
458
+ Windows use default encoding as ASCII, but the NeoLoad CLI needs UTF-8 encoding.\
459
+ Before running some commands like `neoload report` on windows, you need to set environment variable `set PYTHONUTF8=1`\
460
+ More info [here](https://docs.python.org/3/using/windows.html#utf-8-mode) and [here](https://docs.python.org/3/library/os.html#utf8-mode).
461
+ Note that with Python 3.15, no need to do that anymore [PEP 686 – Make UTF-8 mode default](https://peps.python.org/pep-0686/)
462
+
463
+
472
464
  ## Packaging the CLI with Build Agents
473
465
  Many of the above CI examples include a step to explicitly install the NeoLoad CLI as part of the
474
466
  build steps. However, if you want the CLI baked into some build agent directly so that it
@@ -122,9 +122,6 @@ class TestReportJsonOutput:
122
122
  elif endpoint == 'v3/workspaces/5f689c3f0860270001606902/test-results/c6ae22a9-9868-4966-8b1e-8439b985e792/monitors/de6f330b-eecb-32cf-8582-63e0e1654735/points':
123
123
  return '[{"from":0,"to":1000,"AVG":0},{"from":1000,"to":2000,"AVG":10},{"from":2000,"to":3000,"AVG":10}]'
124
124
 
125
- elif endpoint == 'v3/workspaces/5f689c3f0860270001606902/test-results/c6ae22a9-9868-4966-8b1e-8439b985e792/elements/values?category=TRANSACTION':
126
- return '[{"count":259,"elementPerSecond":2.1455317,"minDuration":137,"maxDuration":5590,"avgDuration":372.4556,"minTTFB":32,"maxTTFB":229,"avgTTFB":59.158302,"failureCount":0,"failureRate":0.0,"percentile50":186.0,"percentile90":240.0,"percentile95":266.0,"percentile99":5584.0,"elementId":"e66cb9ec-3c72-49b4-b3a2-5fa91e2fd911","userPathId":"kamoulox"},{"count":259,"elementPerSecond":2.1455317,"minDuration":139,"maxDuration":305,"avgDuration":176.32819,"minTTFB":32,"maxTTFB":92,"avgTTFB":44.749035,"failureCount":0,"failureRate":0.0,"percentile50":169.0,"percentile90":215.0,"percentile95":241.0,"percentile99":279.0,"elementId":"818d2419-daec-43d6-b004-b1195799df57","userPathId":"kamoulox"},{"count":259,"elementPerSecond":2.1455317,"minDuration":136,"maxDuration":365,"avgDuration":176.99614,"minTTFB":32,"maxTTFB":91,"avgTTFB":46.482624,"failureCount":0,"failureRate":0.0,"percentile50":166.0,"percentile90":236.0,"percentile95":246.0,"percentile99":305.0,"elementId":"7dea9e71-4777-4fdb-88d0-2a3dbb2eaa1a","userPathId":"kamoulox"},{"count":259,"elementPerSecond":2.1455317,"minDuration":134,"maxDuration":356,"avgDuration":170.46332,"minTTFB":32,"maxTTFB":90,"avgTTFB":44.69884,"failureCount":0,"failureRate":0.0,"percentile50":161.0,"percentile90":202.0,"percentile95":214.0,"percentile99":277.0,"elementId":"6a0ef850-8644-4236-80e5-53748fbd2d01","userPathId":"kamoulox"},{"count":1036,"elementPerSecond":8.582127,"minDuration":134,"maxDuration":5590,"avgDuration":224.0608,"minTTFB":32,"maxTTFB":229,"avgTTFB":48.7722,"failureCount":0,"failureRate":0.0,"percentile50":171.0,"percentile90":219.0,"percentile95":246.0,"percentile99":365.0,"elementId":"all-transactions","userPathId":"all-userpaths"}]'
127
-
128
125
  elif endpoint.startswith \
129
126
  ("v3/workspaces/5f689c3f0860270001606902/test-results/c6ae22a9-9868-4966-8b1e-8439b985e792/monitors/"):
130
127
  return '[]'
@@ -248,8 +245,5 @@ class TestReportJsonOutput:
248
245
  elif endpoint == 'v3/workspaces/5f689c3f0860270001606902/test-results/1c393548-1e78-4632-8dd1-b661fb6cd043/monitors/a471ab71-378c-3e5b-b119-6c9b20b86106/points':
249
246
  return '[{"from": 0, "to": 1000, "AVG": 247.0}, {"from": 1000, "to": 2000, "AVG": 270.0}, {"from": 2000, "to": 3000, "AVG": 270.0}, {"from": 3000, "to": 4000, "AVG": 272.0}, {"from": 4000, "to": 5000, "AVG": 272.0}, {"from": 5000, "to": 6000, "AVG": 271.0}, {"from": 6000, "to": 7000, "AVG": 271.0}, {"from": 7000, "to": 8000, "AVG": 271.0}, {"from": 8000, "to": 9000, "AVG": 271.0}, {"from": 9000, "to": 10000, "AVG": 271.0}, {"from": 10000, "to": 11000, "AVG": 272.0}]'
250
247
 
251
- elif endpoint == 'v3/workspaces/5f689c3f0860270001606902/test-results/1c393548-1e78-4632-8dd1-b661fb6cd043/elements/values?category=TRANSACTION':
252
- return '[{"count":259,"elementPerSecond":2.1455317,"minDuration":137,"maxDuration":5590,"avgDuration":372.4556,"minTTFB":32,"maxTTFB":229,"avgTTFB":59.158302,"failureCount":0,"failureRate":0.0,"percentile50":186.0,"percentile90":240.0,"percentile95":266.0,"percentile99":5584.0,"elementId":"e66cb9ec-3c72-49b4-b3a2-5fa91e2fd911","userPathId":"kamoulox"},{"count":259,"elementPerSecond":2.1455317,"minDuration":139,"maxDuration":305,"avgDuration":176.32819,"minTTFB":32,"maxTTFB":92,"avgTTFB":44.749035,"failureCount":0,"failureRate":0.0,"percentile50":169.0,"percentile90":215.0,"percentile95":241.0,"percentile99":279.0,"elementId":"818d2419-daec-43d6-b004-b1195799df57","userPathId":"kamoulox"},{"count":259,"elementPerSecond":2.1455317,"minDuration":136,"maxDuration":365,"avgDuration":176.99614,"minTTFB":32,"maxTTFB":91,"avgTTFB":46.482624,"failureCount":0,"failureRate":0.0,"percentile50":166.0,"percentile90":236.0,"percentile95":246.0,"percentile99":305.0,"elementId":"7dea9e71-4777-4fdb-88d0-2a3dbb2eaa1a","userPathId":"kamoulox"},{"count":259,"elementPerSecond":2.1455317,"minDuration":134,"maxDuration":356,"avgDuration":170.46332,"minTTFB":32,"maxTTFB":90,"avgTTFB":44.69884,"failureCount":0,"failureRate":0.0,"percentile50":161.0,"percentile90":202.0,"percentile95":214.0,"percentile99":277.0,"elementId":"6a0ef850-8644-4236-80e5-53748fbd2d01","userPathId":"kamoulox"},{"count":1036,"elementPerSecond":8.582127,"minDuration":134,"maxDuration":5590,"avgDuration":224.0608,"minTTFB":32,"maxTTFB":229,"avgTTFB":48.7722,"failureCount":0,"failureRate":0.0,"percentile50":171.0,"percentile90":219.0,"percentile95":246.0,"percentile99":365.0,"elementId":"all-transactions","userPathId":"all-userpaths"}]'
253
-
254
248
  else:
255
249
  raise Exception('Endpoint NOT mocked : ' + endpoint)
@@ -160,14 +160,5 @@ class TestTrendsJsonOutput:
160
160
  elif endpoint == 'v3/workspaces/5f689c3f0860270001606902/test-results/8725e0cd-92a4-4105-803b-86433851fcfc/elements/b3e1f7c6-a4ef-438e-a3bb-8ffa1cb4a85e/points?statistics=AVG_DURATION,MIN_DURATION,MAX_DURATION,COUNT,THROUGHPUT,ELEMENTS_PER_SECOND,ERRORS,ERRORS_PER_SECOND,ERROR_RATE,AVG_TTFB,MIN_TTFB,MAX_TTFB':
161
161
  return '[{"from": 0, "to": 5120000, "AVG_TTFB": 42.64835, "ERRORS": 0, "AVG_DURATION": 42.64835, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 53, "MAX_DURATION": 53, "ELEMENTS_PER_SECOND": 0.07109375, "THROUGHPUT": 0.0, "COUNT": 364}, {"from": 5120000, "to": 10240000, "AVG_TTFB": 42.755493, "ERRORS": 0, "AVG_DURATION": 42.755493, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 52, "MAX_DURATION": 52, "ELEMENTS_PER_SECOND": 0.07109375, "THROUGHPUT": 0.0, "COUNT": 364}, {"from": 10240000, "to": 15360000, "AVG_TTFB": 42.660275, "ERRORS": 0, "AVG_DURATION": 42.660275, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 15360000, "to": 20480000, "AVG_TTFB": 42.691257, "ERRORS": 0, "AVG_DURATION": 42.691257, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 48, "MAX_DURATION": 48, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 20480000, "to": 25600000, "AVG_TTFB": 42.635616, "ERRORS": 0, "AVG_DURATION": 42.635616, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 25600000, "to": 30720000, "AVG_TTFB": 42.695652, "ERRORS": 0, "AVG_DURATION": 42.695652, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.071875, "THROUGHPUT": 0.0, "COUNT": 368}, {"from": 30720000, "to": 35840000, "AVG_TTFB": 44.041096, "ERRORS": 0, "AVG_DURATION": 44.041096, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 552, "MAX_DURATION": 552, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 35840000, "to": 40960000, "AVG_TTFB": 42.576923, "ERRORS": 0, "AVG_DURATION": 42.576923, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 46, "MAX_DURATION": 46, "ELEMENTS_PER_SECOND": 0.07109375, "THROUGHPUT": 0.0, "COUNT": 364}, {"from": 40960000, "to": 46080000, "AVG_TTFB": 42.698368, "ERRORS": 0, "AVG_DURATION": 42.698368, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 47, "MAX_DURATION": 47, "ELEMENTS_PER_SECOND": 0.071875, "THROUGHPUT": 0.0, "COUNT": 368}, {"from": 46080000, "to": 51200000, "AVG_TTFB": 47.2549, "ERRORS": 0, "AVG_DURATION": 47.2549, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 1649, "MAX_DURATION": 1649, "ELEMENTS_PER_SECOND": 0.069726564, "THROUGHPUT": 0.0, "COUNT": 357}, {"from": 51200000, "to": 56320000, "AVG_TTFB": 42.618786, "ERRORS": 0, "AVG_DURATION": 42.618786, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.07070313, "THROUGHPUT": 0.0, "COUNT": 362}, {"from": 56320000, "to": 61440000, "AVG_TTFB": 42.586113, "ERRORS": 0, "AVG_DURATION": 42.586113, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.0703125, "THROUGHPUT": 0.0, "COUNT": 360}, {"from": 61440000, "to": 66560000, "AVG_TTFB": 43.163486, "ERRORS": 0, "AVG_DURATION": 43.163486, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 246, "MAX_DURATION": 246, "ELEMENTS_PER_SECOND": 0.07167969, "THROUGHPUT": 0.0, "COUNT": 367}, {"from": 66560000, "to": 71680000, "AVG_TTFB": 42.649315, "ERRORS": 0, "AVG_DURATION": 42.649315, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 49, "MAX_DURATION": 49, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 71680000, "to": 76800000, "AVG_TTFB": 43.00551, "ERRORS": 0, "AVG_DURATION": 43.00551, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 147, "MAX_DURATION": 147, "ELEMENTS_PER_SECOND": 0.070898436, "THROUGHPUT": 0.0, "COUNT": 363}, {"from": 76800000, "to": 81920000, "AVG_TTFB": 42.51233, "ERRORS": 0, "AVG_DURATION": 42.51233, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 81920000, "to": 87040000, "AVG_TTFB": 42.628414, "ERRORS": 0, "AVG_DURATION": 42.628414, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 55, "MAX_DURATION": 55, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 87040000, "to": 92160000, "AVG_TTFB": 42.402172, "ERRORS": 0, "AVG_DURATION": 42.402172, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.071875, "THROUGHPUT": 0.0, "COUNT": 368}, {"from": 92160000, "to": 97280000, "AVG_TTFB": 42.4, "ERRORS": 0, "AVG_DURATION": 42.4, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 49, "MAX_DURATION": 49, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 97280000, "to": 102400000, "AVG_TTFB": 43.717808, "ERRORS": 0, "AVG_DURATION": 43.717808, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 543, "MAX_DURATION": 543, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 102400000, "to": 107520000, "AVG_TTFB": 42.333332, "ERRORS": 0, "AVG_DURATION": 42.333332, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 49, "MAX_DURATION": 49, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 107520000, "to": 112640000, "AVG_TTFB": 42.355015, "ERRORS": 0, "AVG_DURATION": 42.355015, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.072070315, "THROUGHPUT": 0.0, "COUNT": 369}, {"from": 112640000, "to": 117760000, "AVG_TTFB": 42.46049, "ERRORS": 0, "AVG_DURATION": 42.46049, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 102, "MAX_DURATION": 102, "ELEMENTS_PER_SECOND": 0.07167969, "THROUGHPUT": 0.0, "COUNT": 367}, {"from": 117760000, "to": 122880000, "AVG_TTFB": 42.348774, "ERRORS": 0, "AVG_DURATION": 42.348774, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07167969, "THROUGHPUT": 0.0, "COUNT": 367}, {"from": 122880000, "to": 128000000, "AVG_TTFB": 42.345303, "ERRORS": 0, "AVG_DURATION": 42.345303, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 47, "MAX_DURATION": 47, "ELEMENTS_PER_SECOND": 0.07070313, "THROUGHPUT": 0.0, "COUNT": 362}, {"from": 128000000, "to": 133120000, "AVG_TTFB": 42.371586, "ERRORS": 0, "AVG_DURATION": 42.371586, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 47, "MAX_DURATION": 47, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 133120000, "to": 138240000, "AVG_TTFB": 42.71507, "ERRORS": 0, "AVG_DURATION": 42.71507, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 114, "MAX_DURATION": 114, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 138240000, "to": 143360000, "AVG_TTFB": 42.347107, "ERRORS": 0, "AVG_DURATION": 42.347107, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.070898436, "THROUGHPUT": 0.0, "COUNT": 363}, {"from": 143360000, "to": 148480000, "AVG_TTFB": 42.32967, "ERRORS": 0, "AVG_DURATION": 42.32967, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07109375, "THROUGHPUT": 0.0, "COUNT": 364}, {"from": 148480000, "to": 153600000, "AVG_TTFB": 42.372604, "ERRORS": 0, "AVG_DURATION": 42.372604, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 47, "MAX_DURATION": 47, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 153600000, "to": 158720000, "AVG_TTFB": 42.361412, "ERRORS": 0, "AVG_DURATION": 42.361412, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.071875, "THROUGHPUT": 0.0, "COUNT": 368}, {"from": 158720000, "to": 163840000, "AVG_TTFB": 46.74931, "ERRORS": 0, "AVG_DURATION": 46.74931, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 1130, "MAX_DURATION": 1130, "ELEMENTS_PER_SECOND": 0.070898436, "THROUGHPUT": 0.0, "COUNT": 363}, {"from": 163840000, "to": 168960000, "AVG_TTFB": 42.442623, "ERRORS": 0, "AVG_DURATION": 42.442623, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 168960000, "to": 174080000, "AVG_TTFB": 42.48361, "ERRORS": 0, "AVG_DURATION": 42.48361, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 55, "MAX_DURATION": 55, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 174080000, "to": 179200000, "AVG_TTFB": 42.440773, "ERRORS": 0, "AVG_DURATION": 42.440773, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.070898436, "THROUGHPUT": 0.0, "COUNT": 363}, {"from": 179200000, "to": 184320000, "AVG_TTFB": 43.035618, "ERRORS": 0, "AVG_DURATION": 43.035618, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 256, "MAX_DURATION": 256, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 184320000, "to": 189440000, "AVG_TTFB": 44.201103, "ERRORS": 0, "AVG_DURATION": 44.201103, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 634, "MAX_DURATION": 634, "ELEMENTS_PER_SECOND": 0.070898436, "THROUGHPUT": 0.0, "COUNT": 363}, {"from": 189440000, "to": 194560000, "AVG_TTFB": 46.317936, "ERRORS": 0, "AVG_DURATION": 46.317936, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 1454, "MAX_DURATION": 1454, "ELEMENTS_PER_SECOND": 0.071875, "THROUGHPUT": 0.0, "COUNT": 368}, {"from": 194560000, "to": 199680000, "AVG_TTFB": 45.19726, "ERRORS": 0, "AVG_DURATION": 45.19726, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 42, "ERROR_RATE": 0.0, "MIN_TTFB": 42, "MAX_TTFB": 1015, "MAX_DURATION": 1015, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 199680000, "to": 204800000, "AVG_TTFB": 42.530056, "ERRORS": 0, "AVG_DURATION": 42.530056, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 51, "MAX_DURATION": 51, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 204800000, "to": 209920000, "AVG_TTFB": 42.515236, "ERRORS": 0, "AVG_DURATION": 42.515236, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 42, "ERROR_RATE": 0.0, "MIN_TTFB": 42, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07050781, "THROUGHPUT": 0.0, "COUNT": 361}, {"from": 209920000, "to": 215040000, "AVG_TTFB": 42.563187, "ERRORS": 0, "AVG_DURATION": 42.563187, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 96, "MAX_DURATION": 96, "ELEMENTS_PER_SECOND": 0.07109375, "THROUGHPUT": 0.0, "COUNT": 364}, {"from": 215040000, "to": 220160000, "AVG_TTFB": 42.72576, "ERRORS": 0, "AVG_DURATION": 42.72576, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 152, "MAX_DURATION": 152, "ELEMENTS_PER_SECOND": 0.07050781, "THROUGHPUT": 0.0, "COUNT": 361}, {"from": 220160000, "to": 225280000, "AVG_TTFB": 44.265755, "ERRORS": 0, "AVG_DURATION": 44.265755, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 698, "MAX_DURATION": 698, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 225280000, "to": 230400000, "AVG_TTFB": 42.488766, "ERRORS": 0, "AVG_DURATION": 42.488766, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 49, "MAX_DURATION": 49, "ELEMENTS_PER_SECOND": 0.06953125, "THROUGHPUT": 0.0, "COUNT": 356}, {"from": 230400000, "to": 235520000, "AVG_TTFB": 42.485096, "ERRORS": 0, "AVG_DURATION": 42.485096, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 42, "ERROR_RATE": 0.0, "MIN_TTFB": 42, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.072070315, "THROUGHPUT": 0.0, "COUNT": 369}, {"from": 235520000, "to": 240640000, "AVG_TTFB": 42.515068, "ERRORS": 0, "AVG_DURATION": 42.515068, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 42, "ERROR_RATE": 0.0, "MIN_TTFB": 42, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 240640000, "to": 245760000, "AVG_TTFB": 42.356163, "ERRORS": 0, "AVG_DURATION": 42.356163, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 245760000, "to": 250880000, "AVG_TTFB": 42.270718, "ERRORS": 0, "AVG_DURATION": 42.270718, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 49, "MAX_DURATION": 49, "ELEMENTS_PER_SECOND": 0.07070313, "THROUGHPUT": 0.0, "COUNT": 362}, {"from": 250880000, "to": 256000000, "AVG_TTFB": 42.364132, "ERRORS": 0, "AVG_DURATION": 42.364132, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 67, "MAX_DURATION": 67, "ELEMENTS_PER_SECOND": 0.071875, "THROUGHPUT": 0.0, "COUNT": 368}, {"from": 256000000, "to": 261120000, "AVG_TTFB": 42.40822, "ERRORS": 0, "AVG_DURATION": 42.40822, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 61, "MAX_DURATION": 61, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 261120000, "to": 266240000, "AVG_TTFB": 42.84153, "ERRORS": 0, "AVG_DURATION": 42.84153, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 235, "MAX_DURATION": 235, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 266240000, "to": 271360000, "AVG_TTFB": 42.42033, "ERRORS": 0, "AVG_DURATION": 42.42033, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 46, "MAX_DURATION": 46, "ELEMENTS_PER_SECOND": 0.07109375, "THROUGHPUT": 0.0, "COUNT": 364}, {"from": 271360000, "to": 276480000, "AVG_TTFB": 42.51233, "ERRORS": 0, "AVG_DURATION": 42.51233, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 276480000, "to": 281600000, "AVG_TTFB": 42.81967, "ERRORS": 0, "AVG_DURATION": 42.81967, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 42, "ERROR_RATE": 0.0, "MIN_TTFB": 42, "MAX_TTFB": 145, "MAX_DURATION": 145, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 281600000, "to": 286720000, "AVG_TTFB": 42.580822, "ERRORS": 0, "AVG_DURATION": 42.580822, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 42, "ERROR_RATE": 0.0, "MIN_TTFB": 42, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 286720000, "to": 291840000, "AVG_TTFB": 42.546963, "ERRORS": 0, "AVG_DURATION": 42.546963, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 42, "ERROR_RATE": 0.0, "MIN_TTFB": 42, "MAX_TTFB": 46, "MAX_DURATION": 46, "ELEMENTS_PER_SECOND": 0.07070313, "THROUGHPUT": 0.0, "COUNT": 362}, {"from": 291840000, "to": 296960000, "AVG_TTFB": 42.62295, "ERRORS": 0, "AVG_DURATION": 42.62295, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 42, "ERROR_RATE": 0.0, "MIN_TTFB": 42, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 296960000, "to": 302080000, "AVG_TTFB": 42.49587, "ERRORS": 0, "AVG_DURATION": 42.49587, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 42, "ERROR_RATE": 0.0, "MIN_TTFB": 42, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.070898436, "THROUGHPUT": 0.0, "COUNT": 363}, {"from": 302080000, "to": 307200000, "AVG_TTFB": 42.535713, "ERRORS": 0, "AVG_DURATION": 42.535713, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 46, "MAX_DURATION": 46, "ELEMENTS_PER_SECOND": 0.07109375, "THROUGHPUT": 0.0, "COUNT": 364}, {"from": 307200000, "to": 312320000, "AVG_TTFB": 42.446865, "ERRORS": 0, "AVG_DURATION": 42.446865, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.07167969, "THROUGHPUT": 0.0, "COUNT": 367}, {"from": 312320000, "to": 317440000, "AVG_TTFB": 45.04155, "ERRORS": 0, "AVG_DURATION": 45.04155, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 42, "ERROR_RATE": 0.0, "MIN_TTFB": 42, "MAX_TTFB": 957, "MAX_DURATION": 957, "ELEMENTS_PER_SECOND": 0.07050781, "THROUGHPUT": 0.0, "COUNT": 361}, {"from": 317440000, "to": 322560000, "AVG_TTFB": 42.52186, "ERRORS": 0, "AVG_DURATION": 42.52186, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 322560000, "to": 327680000, "AVG_TTFB": 42.48229, "ERRORS": 0, "AVG_DURATION": 42.48229, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07167969, "THROUGHPUT": 0.0, "COUNT": 367}, {"from": 327680000, "to": 332800000, "AVG_TTFB": 42.40274, "ERRORS": 0, "AVG_DURATION": 42.40274, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 332800000, "to": 337920000, "AVG_TTFB": 42.429752, "ERRORS": 0, "AVG_DURATION": 42.429752, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.070898436, "THROUGHPUT": 0.0, "COUNT": 363}, {"from": 337920000, "to": 343040000, "AVG_TTFB": 42.431694, "ERRORS": 0, "AVG_DURATION": 42.431694, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 343040000, "to": 348160000, "AVG_TTFB": 42.398907, "ERRORS": 0, "AVG_DURATION": 42.398907, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 46, "MAX_DURATION": 46, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 348160000, "to": 353280000, "AVG_TTFB": 42.38692, "ERRORS": 0, "AVG_DURATION": 42.38692, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07167969, "THROUGHPUT": 0.0, "COUNT": 367}, {"from": 353280000, "to": 358400000, "AVG_TTFB": 42.516483, "ERRORS": 0, "AVG_DURATION": 42.516483, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 42, "ERROR_RATE": 0.0, "MIN_TTFB": 42, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07109375, "THROUGHPUT": 0.0, "COUNT": 364}, {"from": 358400000, "to": 363520000, "AVG_TTFB": 42.52459, "ERRORS": 0, "AVG_DURATION": 42.52459, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 49, "MAX_DURATION": 49, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 363520000, "to": 368640000, "AVG_TTFB": 44.554348, "ERRORS": 0, "AVG_DURATION": 44.554348, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 819, "MAX_DURATION": 819, "ELEMENTS_PER_SECOND": 0.071875, "THROUGHPUT": 0.0, "COUNT": 368}, {"from": 368640000, "to": 373760000, "AVG_TTFB": 42.463013, "ERRORS": 0, "AVG_DURATION": 42.463013, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 373760000, "to": 378880000, "AVG_TTFB": 42.807064, "ERRORS": 0, "AVG_DURATION": 42.807064, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 182, "MAX_DURATION": 182, "ELEMENTS_PER_SECOND": 0.071875, "THROUGHPUT": 0.0, "COUNT": 368}, {"from": 378880000, "to": 384000000, "AVG_TTFB": 42.527626, "ERRORS": 0, "AVG_DURATION": 42.527626, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 48, "MAX_DURATION": 48, "ELEMENTS_PER_SECOND": 0.07070313, "THROUGHPUT": 0.0, "COUNT": 362}, {"from": 384000000, "to": 389120000, "AVG_TTFB": 42.449593, "ERRORS": 0, "AVG_DURATION": 42.449593, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07167969, "THROUGHPUT": 0.0, "COUNT": 367}, {"from": 389120000, "to": 394240000, "AVG_TTFB": 42.473972, "ERRORS": 0, "AVG_DURATION": 42.473972, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 394240000, "to": 399360000, "AVG_TTFB": 50.043716, "ERRORS": 0, "AVG_DURATION": 50.043716, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 1529, "MAX_DURATION": 1529, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 399360000, "to": 404480000, "AVG_TTFB": 42.423077, "ERRORS": 0, "AVG_DURATION": 42.423077, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07109375, "THROUGHPUT": 0.0, "COUNT": 364}, {"from": 404480000, "to": 409600000, "AVG_TTFB": 42.464287, "ERRORS": 0, "AVG_DURATION": 42.464287, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07109375, "THROUGHPUT": 0.0, "COUNT": 364}, {"from": 409600000, "to": 414720000, "AVG_TTFB": 43.696476, "ERRORS": 0, "AVG_DURATION": 43.696476, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 497, "MAX_DURATION": 497, "ELEMENTS_PER_SECOND": 0.072070315, "THROUGHPUT": 0.0, "COUNT": 369}, {"from": 414720000, "to": 419840000, "AVG_TTFB": 42.5, "ERRORS": 0, "AVG_DURATION": 42.5, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 42, "ERROR_RATE": 0.0, "MIN_TTFB": 42, "MAX_TTFB": 49, "MAX_DURATION": 49, "ELEMENTS_PER_SECOND": 0.07109375, "THROUGHPUT": 0.0, "COUNT": 364}, {"from": 419840000, "to": 424960000, "AVG_TTFB": 42.472374, "ERRORS": 0, "AVG_DURATION": 42.472374, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07070313, "THROUGHPUT": 0.0, "COUNT": 362}, {"from": 424960000, "to": 430080000, "AVG_TTFB": 42.472527, "ERRORS": 0, "AVG_DURATION": 42.472527, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07109375, "THROUGHPUT": 0.0, "COUNT": 364}, {"from": 430080000, "to": 435200000, "AVG_TTFB": 42.525887, "ERRORS": 0, "AVG_DURATION": 42.525887, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07167969, "THROUGHPUT": 0.0, "COUNT": 367}, {"from": 435200000, "to": 440320000, "AVG_TTFB": 42.51366, "ERRORS": 0, "AVG_DURATION": 42.51366, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 440320000, "to": 445440000, "AVG_TTFB": 42.469944, "ERRORS": 0, "AVG_DURATION": 42.469944, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 445440000, "to": 450560000, "AVG_TTFB": 42.49863, "ERRORS": 0, "AVG_DURATION": 42.49863, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 450560000, "to": 455680000, "AVG_TTFB": 42.464672, "ERRORS": 0, "AVG_DURATION": 42.464672, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.071875, "THROUGHPUT": 0.0, "COUNT": 368}, {"from": 455680000, "to": 460800000, "AVG_TTFB": 42.476963, "ERRORS": 0, "AVG_DURATION": 42.476963, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.072070315, "THROUGHPUT": 0.0, "COUNT": 369}, {"from": 460800000, "to": 465920000, "AVG_TTFB": 42.516483, "ERRORS": 0, "AVG_DURATION": 42.516483, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 47, "MAX_DURATION": 47, "ELEMENTS_PER_SECOND": 0.07109375, "THROUGHPUT": 0.0, "COUNT": 364}, {"from": 465920000, "to": 471040000, "AVG_TTFB": 42.50411, "ERRORS": 0, "AVG_DURATION": 42.50411, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 471040000, "to": 476160000, "AVG_TTFB": 43.277927, "ERRORS": 0, "AVG_DURATION": 43.277927, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 338, "MAX_DURATION": 338, "ELEMENTS_PER_SECOND": 0.07167969, "THROUGHPUT": 0.0, "COUNT": 367}, {"from": 476160000, "to": 481280000, "AVG_TTFB": 42.41011, "ERRORS": 0, "AVG_DURATION": 42.41011, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 50, "MAX_DURATION": 50, "ELEMENTS_PER_SECOND": 0.06953125, "THROUGHPUT": 0.0, "COUNT": 356}, {"from": 481280000, "to": 486400000, "AVG_TTFB": 42.442623, "ERRORS": 0, "AVG_DURATION": 42.442623, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 486400000, "to": 491520000, "AVG_TTFB": 42.40274, "ERRORS": 0, "AVG_DURATION": 42.40274, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 491520000, "to": 496640000, "AVG_TTFB": 42.73297, "ERRORS": 0, "AVG_DURATION": 42.73297, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 121, "MAX_DURATION": 121, "ELEMENTS_PER_SECOND": 0.07167969, "THROUGHPUT": 0.0, "COUNT": 367}, {"from": 496640000, "to": 501760000, "AVG_TTFB": 42.460056, "ERRORS": 0, "AVG_DURATION": 42.460056, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.070898436, "THROUGHPUT": 0.0, "COUNT": 363}, {"from": 501760000, "to": 506880000, "AVG_TTFB": 42.550964, "ERRORS": 0, "AVG_DURATION": 42.550964, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.070898436, "THROUGHPUT": 0.0, "COUNT": 363}, {"from": 506880000, "to": 512000000, "AVG_TTFB": 42.51639, "ERRORS": 0, "AVG_DURATION": 42.51639, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 512000000, "to": 517120000, "AVG_TTFB": 42.445354, "ERRORS": 0, "AVG_DURATION": 42.445354, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 517120000, "to": 522240000, "AVG_TTFB": 42.575344, "ERRORS": 0, "AVG_DURATION": 42.575344, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 50, "MAX_DURATION": 50, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 522240000, "to": 527360000, "AVG_TTFB": 42.630436, "ERRORS": 0, "AVG_DURATION": 42.630436, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 42, "ERROR_RATE": 0.0, "MIN_TTFB": 42, "MAX_TTFB": 55, "MAX_DURATION": 55, "ELEMENTS_PER_SECOND": 0.071875, "THROUGHPUT": 0.0, "COUNT": 368}, {"from": 527360000, "to": 532480000, "AVG_TTFB": 42.60929, "ERRORS": 0, "AVG_DURATION": 42.60929, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 46, "MAX_DURATION": 46, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 532480000, "to": 537600000, "AVG_TTFB": 48.63115, "ERRORS": 0, "AVG_DURATION": 48.63115, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 2254, "MAX_DURATION": 2254, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 537600000, "to": 542720000, "AVG_TTFB": 42.598362, "ERRORS": 0, "AVG_DURATION": 42.598362, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 48, "MAX_DURATION": 48, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 542720000, "to": 547840000, "AVG_TTFB": 42.56011, "ERRORS": 0, "AVG_DURATION": 42.56011, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 42, "ERROR_RATE": 0.0, "MIN_TTFB": 42, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.07148437, "THROUGHPUT": 0.0, "COUNT": 366}, {"from": 547840000, "to": 552960000, "AVG_TTFB": 42.575344, "ERRORS": 0, "AVG_DURATION": 42.575344, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 49, "MAX_DURATION": 49, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 552960000, "to": 558080000, "AVG_TTFB": 42.46154, "ERRORS": 0, "AVG_DURATION": 42.46154, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 46, "MAX_DURATION": 46, "ELEMENTS_PER_SECOND": 0.07109375, "THROUGHPUT": 0.0, "COUNT": 364}, {"from": 558080000, "to": 563200000, "AVG_TTFB": 42.384617, "ERRORS": 0, "AVG_DURATION": 42.384617, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07109375, "THROUGHPUT": 0.0, "COUNT": 364}, {"from": 563200000, "to": 568320000, "AVG_TTFB": 43.38889, "ERRORS": 0, "AVG_DURATION": 43.38889, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 380, "MAX_DURATION": 380, "ELEMENTS_PER_SECOND": 0.0703125, "THROUGHPUT": 0.0, "COUNT": 360}, {"from": 568320000, "to": 573440000, "AVG_TTFB": 42.48077, "ERRORS": 0, "AVG_DURATION": 42.48077, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07109375, "THROUGHPUT": 0.0, "COUNT": 364}, {"from": 573440000, "to": 578560000, "AVG_TTFB": 42.4958, "ERRORS": 0, "AVG_DURATION": 42.4958, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.069726564, "THROUGHPUT": 0.0, "COUNT": 357}, {"from": 578560000, "to": 583680000, "AVG_TTFB": 42.63014, "ERRORS": 0, "AVG_DURATION": 42.63014, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 42, "ERROR_RATE": 0.0, "MIN_TTFB": 42, "MAX_TTFB": 46, "MAX_DURATION": 46, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 583680000, "to": 588800000, "AVG_TTFB": 42.46575, "ERRORS": 0, "AVG_DURATION": 42.46575, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 588800000, "to": 593920000, "AVG_TTFB": 44.655556, "ERRORS": 0, "AVG_DURATION": 44.655556, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 600, "MAX_DURATION": 600, "ELEMENTS_PER_SECOND": 0.0703125, "THROUGHPUT": 0.0, "COUNT": 360}, {"from": 593920000, "to": 599040000, "AVG_TTFB": 42.582417, "ERRORS": 0, "AVG_DURATION": 42.582417, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 55, "MAX_DURATION": 55, "ELEMENTS_PER_SECOND": 0.07109375, "THROUGHPUT": 0.0, "COUNT": 364}, {"from": 599040000, "to": 604160000, "AVG_TTFB": 42.554947, "ERRORS": 0, "AVG_DURATION": 42.554947, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.07109375, "THROUGHPUT": 0.0, "COUNT": 364}, {"from": 604160000, "to": 609280000, "AVG_TTFB": 42.38904, "ERRORS": 0, "AVG_DURATION": 42.38904, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 45, "MAX_DURATION": 45, "ELEMENTS_PER_SECOND": 0.07128906, "THROUGHPUT": 0.0, "COUNT": 365}, {"from": 609280000, "to": 614400000, "AVG_TTFB": 42.379486, "ERRORS": 0, "AVG_DURATION": 42.379486, "ERRORS_PER_SECOND": 0.0, "MIN_DURATION": 41, "ERROR_RATE": 0.0, "MIN_TTFB": 41, "MAX_TTFB": 44, "MAX_DURATION": 44, "ELEMENTS_PER_SECOND": 0.038085938, "THROUGHPUT": 0.0, "COUNT": 195}]'
162
162
 
163
- elif endpoint == 'v3/workspaces/5f689c3f0860270001606902/test-results/71e88176-3353-4bcd-941a-284533099b43/elements/values?category=TRANSACTION':
164
- return '[{"count":175134,"elementPerSecond":0.28616166,"minDuration":4,"maxDuration":39397,"avgDuration":88.658615,"minTTFB":0,"maxTTFB":38709,"avgTTFB":20.956781,"failureCount":515,"failureRate":0.29406056,"percentile50":44.0,"percentile90":109.0,"percentile95":216.0,"percentile99":853.0,"elementId":"all-transactions","userPathId":"all-userpaths"},{"count":43769,"elementPerSecond":0.07151672,"minDuration":13,"maxDuration":25501,"avgDuration":88.53439,"minTTFB":2,"maxTTFB":25208,"avgTTFB":14.020608,"failureCount":177,"failureRate":0.40439582,"percentile50":28.0,"percentile90":106.0,"percentile95":147.0,"percentile99":1255.5,"elementId":"0ca05bf2-4ba9-483e-9041-c9ac38ecb8b8","userPathId":"ParcoursUtilisateur"},{"count":43789,"elementPerSecond":0.0715494,"minDuration":12,"maxDuration":39397,"avgDuration":165.83934,"minTTFB":0,"maxTTFB":38709,"avgTTFB":13.644523,"failureCount":174,"failureRate":0.39736006,"percentile50":70.0,"percentile90":218.0,"percentile95":255.0,"percentile99":1628.0,"elementId":"062b066f-e7c0-4e67-9a08-65d6494fecc9","userPathId":"ParcoursUtilisateur"},{"count":43769,"elementPerSecond":0.07151672,"minDuration":42,"maxDuration":57,"avgDuration":44.10802,"minTTFB":42,"maxTTFB":57,"avgTTFB":44.10802,"failureCount":0,"failureRate":0.0,"percentile50":44.0,"percentile90":45.0,"percentile95":46.0,"percentile99":47.0,"elementId":"b3e1f7c6-a4ef-438e-a3bb-8ffa1cb4a85e","userPathId":"ParcoursUtilisateur"},{"count":43807,"elementPerSecond":0.071578816,"minDuration":4,"maxDuration":32618,"avgDuration":56.14566,"minTTFB":1,"maxTTFB":21955,"avgTTFB":12.065035,"failureCount":164,"failureRate":0.37436938,"percentile50":20.0,"percentile90":77.0,"percentile95":79.0,"percentile99":436.0,"elementId":"50ddd53f-4a4b-4bf8-a6b3-7a262d3d6cef","userPathId":"ParcoursUtilisateur"}]'
165
-
166
- elif endpoint == 'v3/workspaces/5f689c3f0860270001606902/test-results/ba912bd5-d4ee-425c-ae82-b56a75c0e6ef/elements/values?category=TRANSACTION':
167
- return '[{"count":42460,"elementPerSecond":0.06937791,"minDuration":12,"maxDuration":349267,"avgDuration":263.73944,"minTTFB":1,"maxTTFB":29896,"avgTTFB":13.923928,"failureCount":187,"failureRate":0.44041452,"percentile50":73.0,"percentile90":222.0,"percentile95":284.0,"percentile99":2191.5,"elementId":"062b066f-e7c0-4e67-9a08-65d6494fecc9","userPathId":"ParcoursUtilisateur"},{"count":169824,"elementPerSecond":0.2774855,"minDuration":4,"maxDuration":349267,"avgDuration":154.04784,"minTTFB":1,"maxTTFB":29896,"avgTTFB":21.678661,"failureCount":530,"failureRate":0.3120878,"percentile50":45.0,"percentile90":135.0,"percentile95":220.0,"percentile99":1167.5,"elementId":"all-transactions","userPathId":"all-userpaths"},{"count":42438,"elementPerSecond":0.06934196,"minDuration":43,"maxDuration":532,"avgDuration":45.06122,"minTTFB":43,"maxTTFB":532,"avgTTFB":45.06122,"failureCount":0,"failureRate":0.0,"percentile50":45.0,"percentile90":46.0,"percentile95":46.0,"percentile99":53.0,"elementId":"b3e1f7c6-a4ef-438e-a3bb-8ffa1cb4a85e","userPathId":"ParcoursUtilisateur"},{"count":42488,"elementPerSecond":0.06942365,"minDuration":4,"maxDuration":347335,"avgDuration":150.04663,"minTTFB":1,"maxTTFB":26125,"avgTTFB":13.476652,"failureCount":170,"failureRate":0.400113,"percentile50":19.0,"percentile90":76.0,"percentile95":82.0,"percentile99":1003.5,"elementId":"50ddd53f-4a4b-4bf8-a6b3-7a262d3d6cef","userPathId":"ParcoursUtilisateur"},{"count":42438,"elementPerSecond":0.06934196,"minDuration":14,"maxDuration":300103,"avgDuration":157.29189,"minTTFB":2,"maxTTFB":27974,"avgTTFB":14.26653,"failureCount":173,"failureRate":0.4076535,"percentile50":30.0,"percentile90":109.0,"percentile95":164.0,"percentile99":1487.5,"elementId":"0ca05bf2-4ba9-483e-9041-c9ac38ecb8b8","userPathId":"ParcoursUtilisateur"}]'
168
-
169
- elif endpoint == 'v3/workspaces/5f689c3f0860270001606902/test-results/8725e0cd-92a4-4105-803b-86433851fcfc/elements/values?category=TRANSACTION':
170
- return '[{"count":43605,"elementPerSecond":0.07124878,"minDuration":14,"maxDuration":52860,"avgDuration":178.2553,"minTTFB":2,"maxTTFB":20923,"avgTTFB":29.552986,"failureCount":536,"failureRate":1.2292168,"percentile50":31.0,"percentile90":214.0,"percentile95":635.0,"percentile99":2599.0,"elementId":"0ca05bf2-4ba9-483e-9041-c9ac38ecb8b8","userPathId":"ParcoursUtilisateur"},{"count":43605,"elementPerSecond":0.07124878,"minDuration":41,"maxDuration":2254,"avgDuration":42.898132,"minTTFB":41,"maxTTFB":2254,"avgTTFB":42.898132,"failureCount":0,"failureRate":0.0,"percentile50":42.0,"percentile90":43.0,"percentile95":43.0,"percentile99":44.0,"elementId":"b3e1f7c6-a4ef-438e-a3bb-8ffa1cb4a85e","userPathId":"ParcoursUtilisateur"},{"count":43621,"elementPerSecond":0.07127492,"minDuration":13,"maxDuration":42019,"avgDuration":280.4733,"minTTFB":1,"maxTTFB":24906,"avgTTFB":33.460835,"failureCount":551,"failureRate":1.2631531,"percentile50":78.0,"percentile90":360.0,"percentile95":878.0,"percentile99":3572.0,"elementId":"062b066f-e7c0-4e67-9a08-65d6494fecc9","userPathId":"ParcoursUtilisateur"},{"count":174480,"elementPerSecond":0.28509316,"minDuration":3,"maxDuration":52860,"avgDuration":156.48524,"minTTFB":1,"maxTTFB":24906,"avgTTFB":32.4538,"failureCount":1624,"failureRate":0.9307657,"percentile50":43.0,"percentile90":219.0,"percentile95":404.0,"percentile99":2107.5,"elementId":"all-transactions","userPathId":"all-userpaths"},{"count":43649,"elementPerSecond":0.071320675,"minDuration":3,"maxDuration":43991,"avgDuration":124.30122,"minTTFB":1,"maxTTFB":20266,"avgTTFB":23.911499,"failureCount":537,"failureRate":1.2302687,"percentile50":18.0,"percentile90":95.0,"percentile95":290.0,"percentile99":1772.0,"elementId":"50ddd53f-4a4b-4bf8-a6b3-7a262d3d6cef","userPathId":"ParcoursUtilisateur"}]'
171
-
172
163
  else:
173
164
  raise Exception('Endpoint NOT mocked : ' + endpoint)