Repository: eldaduzman/pymeter Branch: main Commit: f1774515f08f Files: 51 Total size: 611.2 KB Directory structure: gitextract_eu2_wdlm/ ├── .all-contributorsrc ├── .github/ │ ├── dependabot.yml │ └── workflows/ │ ├── build.yaml │ └── publish-pypi.yaml ├── .gitignore ├── .pylintrc ├── .readthedocs.yaml ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── cosmic-ray-config.ini ├── docs/ │ ├── Mutation-Testing/ │ │ ├── 01102022.html │ │ └── 27092022.html │ ├── requirements.txt │ └── user-guide/ │ ├── Makefile │ ├── make.bat │ └── source/ │ ├── api.rst │ ├── assertions.rst │ ├── conf.py │ ├── config.rst │ ├── index.rst │ ├── installation.rst │ ├── postprocessors.rst │ ├── quickstart.rst │ ├── reporters.rst │ ├── samplers.rst │ └── timers.rst ├── java-dependencies/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── us/ │ │ └── abstracta/ │ │ └── jmeter/ │ │ └── App.java │ └── test/ │ └── java/ │ └── us/ │ └── abstracta/ │ └── jmeter/ │ └── AppTest.java ├── pyproject.toml ├── src/ │ └── pymeter/ │ ├── __init__.py │ └── api/ │ ├── __init__.py │ ├── assertions.py │ ├── config.py │ ├── postprocessors.py │ ├── reporters.py │ ├── samplers.py │ └── timers.py ├── tox.ini └── utests/ ├── __init__.py ├── resources/ │ └── test_data.csv ├── test_assertions.py ├── test_csv_data_set.py ├── test_postprocessors.py ├── test_reporter.py ├── test_sampler.py ├── test_test_plan.py ├── test_thread_group.py ├── test_timers.py └── test_vars.py ================================================ FILE CONTENTS ================================================ ================================================ FILE: .all-contributorsrc ================================================ { "files": [ "README.md" ], "imageSize": 100, "commit": false, "commitConvention": "angular", "contributors": [ { "login": "Minitour", "name": "Antonio Zaitoun", "avatar_url": "https://avatars.githubusercontent.com/u/17438617?v=4", "profile": "https://www.linkedin.com/in/antonio-zaitoun/", "contributions": [ "doc" ] }, { "login": "eldaduzman", "name": "Eldad Uzman", "avatar_url": "https://avatars.githubusercontent.com/u/55621402?v=4", "profile": "https://medium.com/@eldadu1985", "contributions": [ "infra", "test", "code" ] } ], "contributorsPerLine": 7, "skipCi": true, "repoType": "github", "repoHost": "https://github.com", "projectName": "pymeter", "projectOwner": "eldaduzman" } ================================================ FILE: .github/dependabot.yml ================================================ # To get started with Dependabot version updates, you'll need to specify which # package ecosystems to update and where the package manifests are located. # Please see the documentation for all configuration options: # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates version: 2 updates: - package-ecosystem: "" # See documentation for possible values directory: "/" # Location of package manifests schedule: interval: "weekly" - package-ecosystem: "" # See documentation for possible values directory: "/java-dependencies" # Location of package manifests schedule: interval: "weekly" ================================================ FILE: .github/workflows/build.yaml ================================================ name: run tests on: [pull_request] jobs: test: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest] python_version: [3.8, 3.9, 3.10.x, 3.11.x] java_version: [8,11] java_distribution: [temurin] steps: - uses: actions/checkout@v3 - uses: actions/setup-java@v2 with: distribution: ${{ matrix.java_distribution }} java-version: ${{ matrix.java_version }} - name: Setup Python ${{ matrix.python_version }} uses: actions/setup-python@v3 with: python-version: ${{ matrix.python_version }} - name: Run maven tests run: mvn dependency:copy-dependencies -f java-dependencies/pom.xml - name: install python dependencies run: | python -m pip install --upgrade pip pip install tox tox-gh-actions poetry==1.5.1 - name: make jars dir run: mkdir -p src/pymeter/resources/jars - name: copy jars run: cp java-dependencies/target/dependency/* src/pymeter/resources/jars - name: display jars run: ls -l src/pymeter/resources/jars - name: test with tox run: tox ================================================ FILE: .github/workflows/publish-pypi.yaml ================================================ # This workflow will upload a Python Package using Twine when a release is created # For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries # This workflow uses actions that are not certified by GitHub. # They are provided by a third-party and are governed by # separate terms of service, privacy policy, and support # documentation. name: Upload Python Package on: release: types: [published] permissions: contents: read jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-java@v2 with: distribution: temurin java-version: 11 - name: Create jar run: | mvn dependency:copy-dependencies -f java-dependencies/pom.xml mkdir -p src/pymeter/resources/jars cp java-dependencies/target/dependency/* src/pymeter/resources/jars ls -l src/pymeter/resources/jars - name: Set up Python uses: actions/setup-python@v3 with: python-version: '3.8' - name: Install dependencies run: | python -m pip install --upgrade pip pip install poetry==1.5.1 poetry install --only-root - name: Build package run: poetry build -f sdist - name: Publish package uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29 with: user: __token__ password: ${{ secrets.PYPI_API_TOKEN }} ================================================ FILE: .gitignore ================================================ # File created using '.gitignore Generator' for Visual Studio Code: https://bit.ly/vscode-gig # Created by https://www.toptal.com/developers/gitignore/api/windows,visualstudiocode,java,pycharm+all,python # Edit at https://www.toptal.com/developers/gitignore?templates=windows,visualstudiocode,java,pycharm+all,python ### Java ### # Compiled class file *.class # Log file *.log # BlueJ files *.ctxt # Mobile Tools for Java (J2ME) .mtj.tmp/ # Package Files # *.jar *.war *.nar *.ear *.zip *.tar.gz *.rar # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* replay_pid* ### PyCharm+all ### # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 # User-specific stuff .idea/**/workspace.xml .idea/**/tasks.xml .idea/**/usage.statistics.xml .idea/**/dictionaries .idea/**/shelf # AWS User-specific .idea/**/aws.xml # Generated files .idea/**/contentModel.xml # Sensitive or high-churn files .idea/**/dataSources/ .idea/**/dataSources.ids .idea/**/dataSources.local.xml .idea/**/sqlDataSources.xml .idea/**/dynamic.xml .idea/**/uiDesigner.xml .idea/**/dbnavigator.xml # Gradle .idea/**/gradle.xml .idea/**/libraries # Gradle and Maven with auto-import # When using Gradle or Maven with auto-import, you should exclude module files, # since they will be recreated, and may cause churn. Uncomment if using # auto-import. # .idea/artifacts # .idea/compiler.xml # .idea/jarRepositories.xml # .idea/modules.xml # .idea/*.iml # .idea/modules # *.iml # *.ipr # CMake cmake-build-*/ # Mongo Explorer plugin .idea/**/mongoSettings.xml # File-based project format *.iws # IntelliJ out/ # mpeltonen/sbt-idea plugin .idea_modules/ # JIRA plugin atlassian-ide-plugin.xml # Cursive Clojure plugin .idea/replstate.xml # SonarLint plugin .idea/sonarlint/ # Crashlytics plugin (for Android Studio and IntelliJ) com_crashlytics_export_strings.xml crashlytics.properties crashlytics-build.properties fabric.properties # Editor-based Rest Client .idea/httpRequests # Android studio 3.1+ serialized cache file .idea/caches/build_file_checksums.ser ### PyCharm+all Patch ### # Ignore everything but code style settings and run configurations # that are supposed to be shared within teams. .idea/* !.idea/codeStyles !.idea/runConfigurations ### Python ### # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ share/python-wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .nox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover *.py,cover .hypothesis/ .pytest_cache/ cover/ # Translations *.mo *.pot # Django stuff: local_settings.py db.sqlite3 db.sqlite3-journal # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder .pybuilder/ target/ # Jupyter Notebook .ipynb_checkpoints # IPython profile_default/ ipython_config.py # pyenv # For a library or package, you might want to ignore these files since the code is # intended to run in multiple environments; otherwise, check them in: # .python-version # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. # However, in case of collaboration, if having platform-specific dependencies or dependencies # having no cross-platform support, pipenv may install dependencies that don't work, or not # install all needed dependencies. #Pipfile.lock # poetry # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. # This is especially recommended for binary packages to ensure reproducibility, and is more # commonly ignored for libraries. # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control #poetry.lock # pdm # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. #pdm.lock # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it # in version control. # https://pdm.fming.dev/#use-with-ide .pdm.toml # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm __pypackages__/ # Celery stuff celerybeat-schedule celerybeat.pid # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ .dmypy.json dmypy.json # Pyre type checker .pyre/ # pytype static type analyzer .pytype/ # Cython debug symbols cython_debug/ # PyCharm # JetBrains specific template is maintained in a separate JetBrains.gitignore that can # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ ### VisualStudioCode ### .vscode/* !.vscode/settings.json !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json !.vscode/*.code-snippets # Local History for Visual Studio Code .history/ # Built Visual Studio Code Extensions *.vsix ### VisualStudioCode Patch ### # Ignore all local history of files .history .ionide # Support for Project snippet scope .vscode/*.code-snippets # Ignore code-workspaces *.code-workspace ### Windows ### # Windows thumbnail cache files Thumbs.db Thumbs.db:encryptable ehthumbs.db ehthumbs_vista.db # Dump file *.stackdump # Folder config file [Dd]esktop.ini # Recycle Bin used on file shares $RECYCLE.BIN/ # Windows Installer files *.cab *.msi *.msix *.msm *.msp # Windows shortcuts *.lnk # End of https://www.toptal.com/developers/gitignore/api/windows,visualstudiocode,java,pycharm+all,python # Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option) html-report-*/ .vscode/ output/ *.sqlite playground/ ================================================ FILE: .pylintrc ================================================ [MASTER] init-hook='import sys; sys.path.append("."); sys.path.append("src")' [FORMAT] max-line-length=150 ================================================ FILE: .readthedocs.yaml ================================================ version: 2 build: os: ubuntu-20.04 tools: python: "3.8" apt_packages: - default-jdk - maven jobs: pre_install: - pwd - ls -lstr - ls -lstr src - ls -lstr src/pymeter - mvn dependency:copy-dependencies -f java-dependencies/pom.xml - mkdir -p src/pymeter/resources/jars - cp java-dependencies/target/dependency/* src/pymeter/resources/jars - ls -l src/pymeter/resources/jars sphinx: configuration: docs/user-guide/source/conf.py # Optionally build your docs in additional formats such as PDF and ePub formats: all python: install: - requirements: docs/requirements.txt - method: pip path: . ================================================ FILE: CODE_OF_CONDUCT.md ================================================ # Contributor Code of Conduct Trust, respect, collaboration and transparency are core values we believe should live and breathe within our projects. Our community welcomes participants from around the world with different experiences, unique perspectives, and great ideas to share. ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: - Using welcoming and inclusive language - Being respectful of differing viewpoints and experiences - Gracefully accepting constructive criticism - Attempting collaboration before conflict - Focusing on what is best for the community - Showing empathy towards other community members Examples of unacceptable behavior by participants include: - Violence, threats of violence, or inciting others to commit self-harm - The use of sexualized language or imagery and unwelcome sexual attention or advances - Trolling, intentionally spreading misinformation, insulting/derogatory comments, and personal or political attacks - Public or private harassment - Publishing others' private information, such as a physical or electronic address, without explicit permission - Abuse of the reporting process to intentionally harass or exclude others - Advocating for, or encouraging, any of the above behavior - Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting one of the maintainers privately 1. Eldad Uzman - eldadu1985@gmail.com All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. If you are unsure whether an incident is a violation, or whether the space where the incident took place is covered by our Code of Conduct, **we encourage you to still report it**. We would prefer to have a few extra reports where we decide to take no action, than to leave an incident go unnoticed and unresolved that may result in an individual or group to feel like they can no longer participate in the community. Reports deemed as not a violation will also allow us to improve our Code of Conduct and processes surrounding it. If you witness a dangerous situation or someone in distress, we encourage you to report even if you are only an observer. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), [version 1.4](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html). ================================================ FILE: LICENSE ================================================ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ================================================ FILE: README.md ================================================ # pymeter [![All Contributors](https://img.shields.io/badge/all_contributors-2-orange.svg?style=flat-square)](#contributors-) Simple JMeter performance tests API for python #### Powered by [JMeter-DSL](https://abstracta.github.io/jmeter-java-dsl/) and [pyjnius](https://github.com/kivy/pyjnius) [![Version](https://img.shields.io/pypi/v/pymeter.svg)](https://pypi.python.org/pypi/pymeter) ![](https://raw.githubusercontent.com/eldaduzman/pymeter/main/docs/badges/coverage-badge.svg) ![](https://raw.githubusercontent.com/eldaduzman/pymeter/main/docs/badges/pylint.svg) ![](https://raw.githubusercontent.com/eldaduzman/pymeter/main/docs/badges/mutscore.svg) [![Generic badge](https://img.shields.io/badge/python-3.8|3.9|3.10|3.11-blue.svg)](https://python.org/) [![Generic badge](https://img.shields.io/badge/JMeterDsl-1.23.3-blue.svg)](https://abstracta.github.io/jmeter-java-dsl/) [![Documentation Status](https://readthedocs.org/projects/pymeter/badge/?version=latest)](https://pymeter.readthedocs.io/en/latest/?badge=latest) [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)




## Load testing with JMeter using python! Read the documentation [here](https://pymeter.readthedocs.io/en/latest/)
Read about performance benchmarking [here](https://github.com/eldaduzman/pymeter-benchmark) **JMeter** is one of the most popular and long standing load testing tools.
The original implementation is a gui based tool to script load test scenarios in a hierarchical structure, however this came with limitations and shortcomings. For once, upgrading JMeter versions is painful, as it involved manually downloading and deploying executable files. This became very clear when [log4j](https://en.wikipedia.org/wiki/Log4Shell) vulnerability was discovered, and software developers needed to instantly upgrade their log4j versions. With JMeter, this was even more painful without a proper package management system such as maven or gradle. Other limitations include difficulty to share code between different projects, using source control management tools such as git or svn. It is quite difficult to extend JMeter and it requires a GUI editor which means to use additional development environment instead of using a single IDE for all needs. The awesome folks at [abstracta](https://abstracta.us/) have put up an amazing amount of work to deliver [JMeter-DSL](https://abstracta.github.io/jmeter-java-dsl/), which allows developers to use plain Java to script their load test scenarios, and pretty much solve all the pain mentioned above. `pymeter` project is aimed to capitalize on the success of JMeter-DSL and extend it to the python community! Using [pyjnius](https://github.com/kivy/pyjnius) developed by Kivy, it is possible to bridge between JMeter-DSLs classes written in Java and reflect them into python's runtime environment without spawning up java runtime and relying on costly inter-process communication. ### Pre-requisites: 1. python version 3.9 or higher - [download](https://www.python.org/) 2. Java version 8 or 11 - [download](https://adoptium.net/temurin/releases) 3. JAVA_HOME environment variable set - [read](https://confluence.atlassian.com/doc/setting-the-java_home-variable-in-windows-8895.html) ### Install pymeter ```bash >>> pip install pymeter ``` ### simple pymeter script: ```python """unittest module""" from unittest import TestCase, main from pymeter.api.config import TestPlan, ThreadGroupWithRampUpAndHold from pymeter.api.postprocessors import JsonExtractor from pymeter.api.reporters import HtmlReporter from pymeter.api.samplers import DummySampler, HttpSampler from pymeter.api.timers import UniformRandomTimer class TestTestPlanClass(TestCase): def test_1(self): json_extractor = JsonExtractor("variable", "args.var") timer = UniformRandomTimer(1000, 2000) http_sampler = HttpSampler( "Echo", "https://postman-echo.com/get?var=${__Random(0,10)}", timer, json_extractor, ) dummy_sampler = DummySampler("dummy ${variable}", "hi dummy") tg = ThreadGroupWithRampUpAndHold( 10, 1, 60, http_sampler, dummy_sampler, name="Some Name" ) html_reporter = HtmlReporter() tp = TestPlan(tg, html_reporter) stats = tp.run() print( f"duration= {stats.duration_milliseconds}", f"mean= {stats.sample_time_mean_milliseconds}", f"min= {stats.sample_time_min_milliseconds}", f"median= {stats.sample_time_median_milliseconds}", f"90p= {stats.sample_time_90_percentile_milliseconds}", f"95p= {stats.sample_time_95_percentile_milliseconds}", f"99p= {stats.sample_time_99_percentile_milliseconds}", f"max= {stats.sample_time_max_milliseconds}", sep="\t", ) self.assertLess(stats.sample_time_99_percentile_milliseconds, 2000) if __name__ == "__main__": main() ``` In this example, the standard python unittest was used to execute the test code, however pymeter is framework agnostic and can be used by any other testing framework ## File Structure ``` | .coverage | .gitignore | .pylintrc | cosmic-ray-config.ini | LICENSE | make.bat | Makefile | poetry.lock | pyproject.toml | README.md | tox.ini +---source | | conf.py | | index.rst | | | +---_static | \---_templates +---src | \---pymeter | | __init__.py | | | +---api | | | config.py | | | postprocessors.py | | | reporters.py | | | samplers.py | | | timers.py | | | __init__.py | | | +---utests | | test_postprocessors.py | | test_reporter.py | | test_sampler.py | | test_test_plan.py | | test_thread_group.py | | test_timers.py | | __init__.py | | ``` ## Code styling ### `black` used for auto-formatting code [read](https://pypi.org/project/black/), ### `pylint` used for code linting and pep8 compliance [read](https://pypi.org/project/pylint/), ### `mypy` used for type hinting [read](https://pypi.org/project/mypy/), ### `perflint` pylint extension for performance linting [read](https://betterprogramming.pub/use-perflint-a-performance-linter-for-python-eae8e54f1e99) ### `cosmic-ray` Python tool for mutation testing [read](https://python.plainenglish.io/python-mutation-testing-with-cosmic-ray-4b78eb9e0676) ## Contributors
Antonio Zaitoun
Antonio Zaitoun

📖
Eldad Uzman
Eldad Uzman

🚇 ⚠️ 💻
## links 1. [JMeter Dsl](https://abstracta.github.io/jmeter-java-dsl/) 2. [pyjnius](https://github.com/kivy/pyjnius) ================================================ FILE: cosmic-ray-config.ini ================================================ [cosmic-ray] module-path = "src\\pymeter" timeout = 200.0 excluded-modules = [] test-command = "python -m unittest discover" [cosmic-ray.distributor] name = "local" ================================================ FILE: docs/Mutation-Testing/01102022.html ================================================ Cosmic Ray Report

Cosmic Ray Report

Date time: 01/10/2022 01:14:54

Total jobs: 35

Complete: 35 (100.00%)

Surviving mutants: 0 (0.00%)

operator: core/ReplaceUnaryOperator_Delete_Not, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\__init__.py
+++ bsrc\pymeter\api\__init__.py
@@ -239,7 +239,7 @@
     @property
     def java_wrapped_element(self):
         """retrieves the java element wrapped in the python object by class name"""
-        if not self.__class__.wrapped_instance_name:
+        if  self.__class__.wrapped_instance_name:
             self.__class__.wrapped_instance_name = BaseJMeterClass.pattern.sub(
                 "_", self.__class__.__name__
             ).lower()
EEEEE..EEE.EEE.EEEEEEE.EE

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 17, in test_http_sampler

    http_sampler = HttpSampler(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 100, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 100, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'JsonExtractor' object has no attribute '_None_instance'



======================================================================

ERROR: test_postprocessor_on_thread_group (utests.test_postprocessors.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 41, in test_postprocessor_on_thread_group

    tg1 = ThreadGroupSimple(1, 1, dummy_sampler, json_extractor)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 234, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 234, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'DummySampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 17, in test_http_sampler

    tg = ThreadGroupWithRampUpAndHold(2, 1, 2, http_sampler, name="Some Name")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 262, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 262, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_2_headers (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 90, in test_http_2_headers

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 148, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_duplicated_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 105, in test_http_duplicated_header

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 148, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 15, in test_http_sampler

    tg1 = ThreadGroupSimple(1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 234, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 234, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_valid_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 77, in test_http_valid_header

    ).header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 148, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_post_http_sampler_dict_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 28, in test_post_http_sampler_dict_input

    ).post({"var1": 1}, ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 126, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_post_http_sampler_list_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 39, in test_post_http_sampler_list_input

    ).post([1, 2, 3, 4], ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 126, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_post_http_sampler_str_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 50, in test_post_http_sampler_str_input

    ).post('{"name": "John Doe"}', ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 126, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_empty_test_plan (utests.test_test_plan.TestTestPlanClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 24, in test_creation_of_empty_test_plan

    python_test_plan_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'TestPlan' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 33, in test_creation_of_test_plan_with_valid_children

    test_plan = TestPlan(tg1, tg2)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 156, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 156, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'ThreadGroupWithRampUpAndHold' object has no attribute '_None_instance'



======================================================================

ERROR: test_run_empty_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 90, in test_run_empty_flow

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 156, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 156, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'ThreadGroupWithRampUpAndHold' object has no attribute '_None_instance'



======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 56, in test_run_positive_flow

    tg1 = ThreadGroupWithRampUpAndHold(30, 1, 20, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 262, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 262, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 99, in test_run_validate_order

    tg_setup = SetupThreadGroup(dummy_sampler_for_setup)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 196, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 196, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'DummySampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_empty_setup_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 24, in test_creation_of_empty_setup_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'SetupThreadGroup' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_empty_teardown_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 32, in test_creation_of_empty_teardown_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'TeardownThreadGroup' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_empty_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 16, in test_creation_of_empty_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'ThreadGroupWithRampUpAndHold' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_thread_group_with_valid_children (utests.test_thread_group.TestThreadGroupClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 40, in test_creation_of_thread_group_with_valid_children

    python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 262, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 262, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 15, in test_uniform_random_timer

    http_sampler = HttpSampler("Echo", "https://postman-echo.com/get?var=1", timer)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 100, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 100, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'UniformRandomTimer' object has no attribute '_None_instance'



----------------------------------------------------------------------

Ran 25 tests in 0.845s



FAILED (errors=20)

operator: core/AddNot, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\__init__.py
+++ bsrc\pymeter\api\__init__.py
@@ -239,7 +239,7 @@
     @property
     def java_wrapped_element(self):
         """retrieves the java element wrapped in the python object by class name"""
-        if not self.__class__.wrapped_instance_name:
+        if not not self.__class__.wrapped_instance_name:
             self.__class__.wrapped_instance_name = BaseJMeterClass.pattern.sub(
                 "_", self.__class__.__name__
             ).lower()
EEEEE..EEE.EEE.EEEEEEE.EE

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 17, in test_http_sampler

    http_sampler = HttpSampler(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 100, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 100, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'JsonExtractor' object has no attribute '_None_instance'



======================================================================

ERROR: test_postprocessor_on_thread_group (utests.test_postprocessors.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 41, in test_postprocessor_on_thread_group

    tg1 = ThreadGroupSimple(1, 1, dummy_sampler, json_extractor)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 234, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 234, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'DummySampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 17, in test_http_sampler

    tg = ThreadGroupWithRampUpAndHold(2, 1, 2, http_sampler, name="Some Name")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 262, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 262, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_2_headers (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 90, in test_http_2_headers

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 148, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_duplicated_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 105, in test_http_duplicated_header

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 148, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 15, in test_http_sampler

    tg1 = ThreadGroupSimple(1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 234, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 234, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_valid_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 77, in test_http_valid_header

    ).header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 148, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_post_http_sampler_dict_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 28, in test_post_http_sampler_dict_input

    ).post({"var1": 1}, ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 126, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_post_http_sampler_list_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 39, in test_post_http_sampler_list_input

    ).post([1, 2, 3, 4], ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 126, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_post_http_sampler_str_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 50, in test_post_http_sampler_str_input

    ).post('{"name": "John Doe"}', ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 126, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_empty_test_plan (utests.test_test_plan.TestTestPlanClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 24, in test_creation_of_empty_test_plan

    python_test_plan_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'TestPlan' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 33, in test_creation_of_test_plan_with_valid_children

    test_plan = TestPlan(tg1, tg2)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 156, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 156, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'ThreadGroupWithRampUpAndHold' object has no attribute '_None_instance'



======================================================================

ERROR: test_run_empty_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 90, in test_run_empty_flow

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 156, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 156, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'ThreadGroupWithRampUpAndHold' object has no attribute '_None_instance'



======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 56, in test_run_positive_flow

    tg1 = ThreadGroupWithRampUpAndHold(30, 1, 20, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 262, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 262, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 99, in test_run_validate_order

    tg_setup = SetupThreadGroup(dummy_sampler_for_setup)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 196, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 196, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'DummySampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_empty_setup_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 24, in test_creation_of_empty_setup_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'SetupThreadGroup' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_empty_teardown_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 32, in test_creation_of_empty_teardown_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'TeardownThreadGroup' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_empty_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 16, in test_creation_of_empty_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'ThreadGroupWithRampUpAndHold' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_thread_group_with_valid_children (utests.test_thread_group.TestThreadGroupClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 40, in test_creation_of_thread_group_with_valid_children

    python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 262, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 262, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 15, in test_uniform_random_timer

    http_sampler = HttpSampler("Echo", "https://postman-echo.com/get?var=1", timer)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 100, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 100, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'UniformRandomTimer' object has no attribute '_None_instance'



----------------------------------------------------------------------

Ran 25 tests in 0.713s



FAILED (errors=20)

operator: core/NumberReplacer, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\__init__.py
+++ bsrc\pymeter\api\__init__.py
@@ -230,7 +230,7 @@
 
         return (
             str(type(self.java_wrapped_element))
-            .split("class ")[1]
+            .split("class ")[ 2]
             .split("'jnius.reflect.")[1]
             .split("'")[0]
             .strip()
Warning: Nashorn engine is planned to be removed from a future JDK release

E00:42:54.214 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =   20.4/s Avg:   407 Min:   407 Max:   407 Err:     0 (0.00%)

.EEE.. +      1 in 00:00:01 =    1.5/s Avg:   619 Min:   619 Max:   619 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

 =      1 in 00:00:01 =    1.5/s Avg:   619 Min:   619 Max:   619 Err:     0 (0.00%)

EEE.EEE.E =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +      1 in 00:00:01 =    1.6/s Avg:   588 Min:   588 Max:   588 Err:     0 (0.00%) Active: 18 Started: 18 Finished: 0

 +   3897 in 00:00:21 =  189.5/s Avg:   157 Min:   138 Max:   705 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3898 in 00:00:21 =  183.9/s Avg:   158 Min:   138 Max:   705 Err:     0 (0.00%)

E.EEE.E =      1 in 00:00:03 =    0.4/s Avg:   577 Min:   577 Max:   577 Err:     0 (0.00%)

E

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 27, in test_http_sampler

    json_extractor.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 23, in test_http_sampler

    html_reporter.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_http_2_headers (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 94, in test_http_2_headers

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_http_duplicated_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 109, in test_http_duplicated_header

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 19, in test_http_sampler

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_http_valid_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 79, in test_http_valid_header

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_post_http_sampler_dict_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 30, in test_post_http_sampler_dict_input

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_post_http_sampler_list_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 41, in test_post_http_sampler_list_input

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_post_http_sampler_str_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 52, in test_post_http_sampler_str_input

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_empty_test_plan (utests.test_test_plan.TestTestPlanClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 24, in test_creation_of_empty_test_plan

    python_test_plan_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 35, in test_creation_of_test_plan_with_valid_children

    test_plan.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 60, in test_run_positive_flow

    test_plan.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_empty_setup_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 24, in test_creation_of_empty_setup_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_empty_teardown_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 32, in test_creation_of_empty_teardown_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_empty_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 16, in test_creation_of_empty_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_thread_group_with_valid_children (utests.test_thread_group.TestThreadGroupClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 42, in test_creation_of_thread_group_with_valid_children

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 20, in test_uniform_random_timer

    timer.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



----------------------------------------------------------------------

Ran 25 tests in 40.348s



FAILED (errors=17)

operator: core/NumberReplacer, occurrence: 1
--- mutation diff ---
--- asrc\pymeter\api\__init__.py
+++ bsrc\pymeter\api\__init__.py
@@ -230,7 +230,7 @@
 
         return (
             str(type(self.java_wrapped_element))
-            .split("class ")[1]
+            .split("class ")[ 0]
             .split("'jnius.reflect.")[1]
             .split("'")[0]
             .strip()
Warning: Nashorn engine is planned to be removed from a future JDK release

E00:43:39.849 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =   15.9/s Avg:    56 Min:    56 Max:    56 Err:     0 (0.00%)

.EEE.. =      1 in 00:00:01 =    1.3/s Avg:   655 Min:   655 Max:   655 Err:     0 (0.00%)

EEE.EEE.E =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +   1587 in 00:00:09 =  168.6/s Avg:   165 Min:   140 Max:   677 Err:     0 (0.00%) Active: 30 Started: 30 Finished: 0

 +   2260 in 00:00:12 =  191.1/s Avg:   156 Min:   140 Max:   462 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3847 in 00:00:21 =  181.1/s Avg:   160 Min:   140 Max:   677 Err:     0 (0.00%)

E.EEE.E =      1 in 00:00:03 =    0.3/s Avg:   647 Min:   647 Max:   647 Err:     0 (0.00%)

E

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 27, in test_http_sampler

    json_extractor.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 23, in test_http_sampler

    html_reporter.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_http_2_headers (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 94, in test_http_2_headers

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_http_duplicated_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 109, in test_http_duplicated_header

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 19, in test_http_sampler

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_http_valid_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 79, in test_http_valid_header

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_post_http_sampler_dict_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 30, in test_post_http_sampler_dict_input

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_post_http_sampler_list_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 41, in test_post_http_sampler_list_input

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_post_http_sampler_str_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 52, in test_post_http_sampler_str_input

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_empty_test_plan (utests.test_test_plan.TestTestPlanClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 24, in test_creation_of_empty_test_plan

    python_test_plan_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 35, in test_creation_of_test_plan_with_valid_children

    test_plan.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 60, in test_run_positive_flow

    test_plan.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_empty_setup_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 24, in test_creation_of_empty_setup_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_empty_teardown_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 32, in test_creation_of_empty_teardown_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_empty_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 16, in test_creation_of_empty_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_thread_group_with_valid_children (utests.test_thread_group.TestThreadGroupClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 42, in test_creation_of_thread_group_with_valid_children

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 20, in test_uniform_random_timer

    timer.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



----------------------------------------------------------------------

Ran 25 tests in 45.731s



FAILED (errors=17)

operator: core/NumberReplacer, occurrence: 2
--- mutation diff ---
--- asrc\pymeter\api\__init__.py
+++ bsrc\pymeter\api\__init__.py
@@ -231,7 +231,7 @@
         return (
             str(type(self.java_wrapped_element))
             .split("class ")[1]
-            .split("'jnius.reflect.")[1]
+            .split("'jnius.reflect.")[ 2]
             .split("'")[0]
             .strip()
         )
Warning: Nashorn engine is planned to be removed from a future JDK release

E00:44:27.381 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =   10.4/s Avg:   305 Min:   305 Max:   305 Err:     0 (0.00%)

. +      8 in 00:00:01 =    5.7/s Avg:   258 Min:   144 Max:   608 Err:     0 (0.00%) Active: 2 Started: 2 Finished: 0

EEE.. +      1 in 00:00:01 =    1.4/s Avg:   654 Min:   654 Max:   654 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

 =      1 in 00:00:01 =    1.4/s Avg:   654 Min:   654 Max:   654 Err:     0 (0.00%)

EEE.EEE.E =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. =   3800 in 00:00:21 =  179.2/s Avg:   162 Min:   140 Max:   684 Err:     0 (0.00%)

E.EEE.E +      1 in 00:00:03 =    0.4/s Avg:   617 Min:   617 Max:   617 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

 =      1 in 00:00:03 =    0.4/s Avg:   617 Min:   617 Max:   617 Err:     0 (0.00%)

E

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 27, in test_http_sampler

    json_extractor.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 23, in test_http_sampler

    html_reporter.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_http_2_headers (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 94, in test_http_2_headers

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_http_duplicated_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 109, in test_http_duplicated_header

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 19, in test_http_sampler

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_http_valid_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 79, in test_http_valid_header

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_post_http_sampler_dict_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 30, in test_post_http_sampler_dict_input

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_post_http_sampler_list_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 41, in test_post_http_sampler_list_input

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_post_http_sampler_str_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 52, in test_post_http_sampler_str_input

    http_sampler.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_empty_test_plan (utests.test_test_plan.TestTestPlanClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 24, in test_creation_of_empty_test_plan

    python_test_plan_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 35, in test_creation_of_test_plan_with_valid_children

    test_plan.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 60, in test_run_positive_flow

    test_plan.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_empty_setup_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 24, in test_creation_of_empty_setup_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_empty_teardown_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 32, in test_creation_of_empty_teardown_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_empty_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 16, in test_creation_of_empty_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_thread_group_with_valid_children (utests.test_thread_group.TestThreadGroupClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 42, in test_creation_of_thread_group_with_valid_children

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 20, in test_uniform_random_timer

    timer.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



----------------------------------------------------------------------

Ran 25 tests in 44.230s



FAILED (errors=17)

operator: core/NumberReplacer, occurrence: 3
--- mutation diff ---
--- asrc\pymeter\api\__init__.py
+++ bsrc\pymeter\api\__init__.py
@@ -231,7 +231,7 @@
         return (
             str(type(self.java_wrapped_element))
             .split("class ")[1]
-            .split("'jnius.reflect.")[1]
+            .split("'jnius.reflect.")[ 0]
             .split("'")[0]
             .strip()
         )
Warning: Nashorn engine is planned to be removed from a future JDK release

F00:45:15.565 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =   11.6/s Avg:   139 Min:   139 Max:   139 Err:     0 (0.00%)

.FFF.. =      1 in 00:00:01 =    1.4/s Avg:   646 Min:   646 Max:   646 Err:     0 (0.00%)

FFF.FFF.F =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +    784 in 00:00:05 =  148.1/s Avg:   178 Min:   138 Max:   676 Err:     0 (0.00%) Active: 30 Started: 30 Finished: 0

 +   2979 in 00:00:16 =  186.2/s Avg:   159 Min:   138 Max:   447 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3763 in 00:00:21 =  176.7/s Avg:   163 Min:   138 Max:   676 Err:     0 (0.00%)

F.FFF.F =      1 in 00:00:03 =    0.4/s Avg:   635 Min:   635 Max:   635 Err:     0 (0.00%)

F

======================================================================

FAIL: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 26, in test_http_sampler

    self.assertEqual(

AssertionError: '' != 'us.abstracta.jmeter.javadsl.core.postprocessors.DslJsonExtractor'

+ us.abstracta.jmeter.javadsl.core.postprocessors.DslJsonExtractor



======================================================================

FAIL: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 22, in test_http_sampler

    self.assertEqual(

AssertionError: '' != 'us.abstracta.jmeter.javadsl.core.listeners.HtmlReporter'

+ us.abstracta.jmeter.javadsl.core.listeners.HtmlReporter



======================================================================

FAIL: test_http_2_headers (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 93, in test_http_2_headers

    self.assertEqual(

AssertionError: '' != 'us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler'

+ us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler



======================================================================

FAIL: test_http_duplicated_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 108, in test_http_duplicated_header

    self.assertEqual(

AssertionError: '' != 'us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler'

+ us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler



======================================================================

FAIL: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 18, in test_http_sampler

    self.assertEqual(

AssertionError: '' != 'us.abstracta.jmeter.javadsl.http.DslHttpSampler'

+ us.abstracta.jmeter.javadsl.http.DslHttpSampler



======================================================================

FAIL: test_http_valid_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 78, in test_http_valid_header

    self.assertEqual(

AssertionError: '' != 'us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler'

+ us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler



======================================================================

FAIL: test_post_http_sampler_dict_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 29, in test_post_http_sampler_dict_input

    self.assertEqual(

AssertionError: '' != 'us.abstracta.jmeter.javadsl.http.DslHttpSampler'

+ us.abstracta.jmeter.javadsl.http.DslHttpSampler



======================================================================

FAIL: test_post_http_sampler_list_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 40, in test_post_http_sampler_list_input

    self.assertEqual(

AssertionError: '' != 'us.abstracta.jmeter.javadsl.http.DslHttpSampler'

+ us.abstracta.jmeter.javadsl.http.DslHttpSampler



======================================================================

FAIL: test_post_http_sampler_str_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 51, in test_post_http_sampler_str_input

    self.assertEqual(

AssertionError: '' != 'us.abstracta.jmeter.javadsl.http.DslHttpSampler'

+ us.abstracta.jmeter.javadsl.http.DslHttpSampler



======================================================================

FAIL: test_creation_of_empty_test_plan (utests.test_test_plan.TestTestPlanClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 23, in test_creation_of_empty_test_plan

    self.assertEqual(

AssertionError: '' != 'us.abstracta.jmeter.javadsl.core.DslTestPlan'

+ us.abstracta.jmeter.javadsl.core.DslTestPlan



======================================================================

FAIL: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 34, in test_creation_of_test_plan_with_valid_children

    self.assertEqual(

AssertionError: '' != 'us.abstracta.jmeter.javadsl.core.DslTestPlan'

+ us.abstracta.jmeter.javadsl.core.DslTestPlan



======================================================================

FAIL: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 59, in test_run_positive_flow

    self.assertEqual(

AssertionError: '' != 'us.abstracta.jmeter.javadsl.core.DslTestPlan'

+ us.abstracta.jmeter.javadsl.core.DslTestPlan



======================================================================

FAIL: test_creation_of_empty_setup_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 23, in test_creation_of_empty_setup_thread_group

    self.assertEqual(

AssertionError: '' != 'us.abstracta.jmeter.javadsl.core.threadgroups.DslSetupThreadGroup'

+ us.abstracta.jmeter.javadsl.core.threadgroups.DslSetupThreadGroup



======================================================================

FAIL: test_creation_of_empty_teardown_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 31, in test_creation_of_empty_teardown_thread_group

    self.assertEqual(

AssertionError: '' != 'us.abstracta.jmeter.javadsl.core.threadgroups.DslTeardownThreadGroup'

+ us.abstracta.jmeter.javadsl.core.threadgroups.DslTeardownThreadGroup



======================================================================

FAIL: test_creation_of_empty_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 15, in test_creation_of_empty_thread_group

    self.assertEqual(

AssertionError: '' != 'us.abstracta.jmeter.javadsl.core.threadgroups.DslDefaultThreadGroup'

+ us.abstracta.jmeter.javadsl.core.threadgroups.DslDefaultThreadGroup



======================================================================

FAIL: test_creation_of_thread_group_with_valid_children (utests.test_thread_group.TestThreadGroupClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 41, in test_creation_of_thread_group_with_valid_children

    self.assertEqual(

AssertionError: '' != 'us.abstracta.jmeter.javadsl.core.threadgroups.DslDefaultThreadGroup'

+ us.abstracta.jmeter.javadsl.core.threadgroups.DslDefaultThreadGroup



======================================================================

FAIL: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 19, in test_uniform_random_timer

    self.assertEqual(

AssertionError: '' != 'us.abstracta.jmeter.javadsl.core.timers.DslUniformRandomTimer'

+ us.abstracta.jmeter.javadsl.core.timers.DslUniformRandomTimer



----------------------------------------------------------------------

Ran 25 tests in 45.294s



FAILED (failures=17)

operator: core/NumberReplacer, occurrence: 4
--- mutation diff ---
--- asrc\pymeter\api\__init__.py
+++ bsrc\pymeter\api\__init__.py
@@ -232,7 +232,7 @@
             str(type(self.java_wrapped_element))
             .split("class ")[1]
             .split("'jnius.reflect.")[1]
-            .split("'")[0]
+            .split("'")[ 1]
             .strip()
         )
 
Warning: Nashorn engine is planned to be removed from a future JDK release

 +      1 in 00:00:02 =    0.5/s Avg:  1379 Min:  1379 Max:  1379 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

F00:46:03.962 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 +      1 in 00:00:00 =   10.4/s Avg:   295 Min:   295 Max:   295 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

 =      1 in 00:00:00 =   10.2/s Avg:   295 Min:   295 Max:   295 Err:     0 (0.00%)

. +      1 in 00:00:01 =    1.5/s Avg:   629 Min:   629 Max:   629 Err:     0 (0.00%) Active: 2 Started: 2 Finished: 0

FFF.. =      1 in 00:00:01 =    1.5/s Avg:   609 Min:   609 Max:   609 Err:     0 (0.00%)

FFF.FFF.F =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +   3096 in 00:00:17 =  181.0/s Avg:   159 Min:   138 Max:   843 Err:     0 (0.00%) Active: 30 Started: 30 Finished: 0

 +    780 in 00:00:04 =  188.8/s Avg:   157 Min:   138 Max:   425 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3876 in 00:00:21 =  182.5/s Avg:   158 Min:   138 Max:   843 Err:     0 (0.00%)

F +      1 in 00:00:00 =  500.0/s Avg:   235 Min:   235 Max:   235 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

.FFF.F =      1 in 00:00:03 =    0.4/s Avg:   657 Min:   657 Max:   657 Err:     0 (0.00%)

F

======================================================================

FAIL: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 26, in test_http_sampler

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.postprocessors.DslJsonExtractor'

- >

+ us.abstracta.jmeter.javadsl.core.postprocessors.DslJsonExtractor





======================================================================

FAIL: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 22, in test_http_sampler

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.listeners.HtmlReporter'

- >

+ us.abstracta.jmeter.javadsl.core.listeners.HtmlReporter





======================================================================

FAIL: test_http_2_headers (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 93, in test_http_2_headers

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler'

- >

+ us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler





======================================================================

FAIL: test_http_duplicated_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 108, in test_http_duplicated_header

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler'

- >

+ us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler





======================================================================

FAIL: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 18, in test_http_sampler

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.http.DslHttpSampler'

- >

+ us.abstracta.jmeter.javadsl.http.DslHttpSampler





======================================================================

FAIL: test_http_valid_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 78, in test_http_valid_header

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler'

- >

+ us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler





======================================================================

FAIL: test_post_http_sampler_dict_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 29, in test_post_http_sampler_dict_input

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.http.DslHttpSampler'

- >

+ us.abstracta.jmeter.javadsl.http.DslHttpSampler





======================================================================

FAIL: test_post_http_sampler_list_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 40, in test_post_http_sampler_list_input

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.http.DslHttpSampler'

- >

+ us.abstracta.jmeter.javadsl.http.DslHttpSampler





======================================================================

FAIL: test_post_http_sampler_str_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 51, in test_post_http_sampler_str_input

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.http.DslHttpSampler'

- >

+ us.abstracta.jmeter.javadsl.http.DslHttpSampler





======================================================================

FAIL: test_creation_of_empty_test_plan (utests.test_test_plan.TestTestPlanClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 23, in test_creation_of_empty_test_plan

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.DslTestPlan'

- >

+ us.abstracta.jmeter.javadsl.core.DslTestPlan





======================================================================

FAIL: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 34, in test_creation_of_test_plan_with_valid_children

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.DslTestPlan'

- >

+ us.abstracta.jmeter.javadsl.core.DslTestPlan





======================================================================

FAIL: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 59, in test_run_positive_flow

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.DslTestPlan'

- >

+ us.abstracta.jmeter.javadsl.core.DslTestPlan





======================================================================

FAIL: test_creation_of_empty_setup_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 23, in test_creation_of_empty_setup_thread_group

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.threadgroups.DslSetupThreadGroup'

- >

+ us.abstracta.jmeter.javadsl.core.threadgroups.DslSetupThreadGroup





======================================================================

FAIL: test_creation_of_empty_teardown_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 31, in test_creation_of_empty_teardown_thread_group

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.threadgroups.DslTeardownThreadGroup'

- >

+ us.abstracta.jmeter.javadsl.core.threadgroups.DslTeardownThreadGroup





======================================================================

FAIL: test_creation_of_empty_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 15, in test_creation_of_empty_thread_group

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.threadgroups.DslDefaultThreadGroup'

- >

+ us.abstracta.jmeter.javadsl.core.threadgroups.DslDefaultThreadGroup





======================================================================

FAIL: test_creation_of_thread_group_with_valid_children (utests.test_thread_group.TestThreadGroupClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 41, in test_creation_of_thread_group_with_valid_children

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.threadgroups.DslDefaultThreadGroup'

- >

+ us.abstracta.jmeter.javadsl.core.threadgroups.DslDefaultThreadGroup





======================================================================

FAIL: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 19, in test_uniform_random_timer

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.timers.DslUniformRandomTimer'

- >

+ us.abstracta.jmeter.javadsl.core.timers.DslUniformRandomTimer





----------------------------------------------------------------------

Ran 25 tests in 45.603s



FAILED (failures=17)

operator: core/NumberReplacer, occurrence: 5
--- mutation diff ---
--- asrc\pymeter\api\__init__.py
+++ bsrc\pymeter\api\__init__.py
@@ -232,7 +232,7 @@
             str(type(self.java_wrapped_element))
             .split("class ")[1]
             .split("'jnius.reflect.")[1]
-            .split("'")[0]
+            .split("'")[ -1]
             .strip()
         )
 
Warning: Nashorn engine is planned to be removed from a future JDK release

F00:46:49.250 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =   10.4/s Avg:   329 Min:   329 Max:   329 Err:     0 (0.00%)

.FFF.. =      1 in 00:00:01 =    1.4/s Avg:   629 Min:   629 Max:   629 Err:     0 (0.00%)

FFF.FFF.F =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +    120 in 00:00:02 =   69.2/s Avg:   267 Min:   141 Max:   669 Err:     0 (0.00%) Active: 30 Started: 30 Finished: 0

 +   3689 in 00:00:20 =  188.9/s Avg:   158 Min:   138 Max:   695 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3809 in 00:00:21 =  179.2/s Avg:   161 Min:   138 Max:   695 Err:     0 (0.00%)

F.FFF.F =      1 in 00:00:03 =    0.4/s Avg:   644 Min:   644 Max:   644 Err:     0 (0.00%)

F

======================================================================

FAIL: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 26, in test_http_sampler

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.postprocessors.DslJsonExtractor'

- >

+ us.abstracta.jmeter.javadsl.core.postprocessors.DslJsonExtractor





======================================================================

FAIL: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 22, in test_http_sampler

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.listeners.HtmlReporter'

- >

+ us.abstracta.jmeter.javadsl.core.listeners.HtmlReporter





======================================================================

FAIL: test_http_2_headers (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 93, in test_http_2_headers

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler'

- >

+ us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler





======================================================================

FAIL: test_http_duplicated_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 108, in test_http_duplicated_header

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler'

- >

+ us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler





======================================================================

FAIL: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 18, in test_http_sampler

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.http.DslHttpSampler'

- >

+ us.abstracta.jmeter.javadsl.http.DslHttpSampler





======================================================================

FAIL: test_http_valid_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 78, in test_http_valid_header

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler'

- >

+ us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler





======================================================================

FAIL: test_post_http_sampler_dict_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 29, in test_post_http_sampler_dict_input

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.http.DslHttpSampler'

- >

+ us.abstracta.jmeter.javadsl.http.DslHttpSampler





======================================================================

FAIL: test_post_http_sampler_list_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 40, in test_post_http_sampler_list_input

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.http.DslHttpSampler'

- >

+ us.abstracta.jmeter.javadsl.http.DslHttpSampler





======================================================================

FAIL: test_post_http_sampler_str_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 51, in test_post_http_sampler_str_input

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.http.DslHttpSampler'

- >

+ us.abstracta.jmeter.javadsl.http.DslHttpSampler





======================================================================

FAIL: test_creation_of_empty_test_plan (utests.test_test_plan.TestTestPlanClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 23, in test_creation_of_empty_test_plan

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.DslTestPlan'

- >

+ us.abstracta.jmeter.javadsl.core.DslTestPlan





======================================================================

FAIL: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 34, in test_creation_of_test_plan_with_valid_children

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.DslTestPlan'

- >

+ us.abstracta.jmeter.javadsl.core.DslTestPlan





======================================================================

FAIL: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 59, in test_run_positive_flow

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.DslTestPlan'

- >

+ us.abstracta.jmeter.javadsl.core.DslTestPlan





======================================================================

FAIL: test_creation_of_empty_setup_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 23, in test_creation_of_empty_setup_thread_group

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.threadgroups.DslSetupThreadGroup'

- >

+ us.abstracta.jmeter.javadsl.core.threadgroups.DslSetupThreadGroup





======================================================================

FAIL: test_creation_of_empty_teardown_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 31, in test_creation_of_empty_teardown_thread_group

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.threadgroups.DslTeardownThreadGroup'

- >

+ us.abstracta.jmeter.javadsl.core.threadgroups.DslTeardownThreadGroup





======================================================================

FAIL: test_creation_of_empty_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 15, in test_creation_of_empty_thread_group

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.threadgroups.DslDefaultThreadGroup'

- >

+ us.abstracta.jmeter.javadsl.core.threadgroups.DslDefaultThreadGroup





======================================================================

FAIL: test_creation_of_thread_group_with_valid_children (utests.test_thread_group.TestThreadGroupClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 41, in test_creation_of_thread_group_with_valid_children

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.threadgroups.DslDefaultThreadGroup'

- >

+ us.abstracta.jmeter.javadsl.core.threadgroups.DslDefaultThreadGroup





======================================================================

FAIL: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 19, in test_uniform_random_timer

    self.assertEqual(

AssertionError: '>' != 'us.abstracta.jmeter.javadsl.core.timers.DslUniformRandomTimer'

- >

+ us.abstracta.jmeter.javadsl.core.timers.DslUniformRandomTimer





----------------------------------------------------------------------

Ran 25 tests in 46.460s



FAILED (failures=17)

operator: core/RemoveDecorator, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\__init__.py
+++ bsrc\pymeter\api\__init__.py
@@ -235,8 +235,6 @@
             .split("'")[0]
             .strip()
         )
-
-    @property
     def java_wrapped_element(self):
         """retrieves the java element wrapped in the python object by class name"""
         if not self.__class__.wrapped_instance_name:
EEEEE..EEE.EEE.EEEEEEE.EE

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 17, in test_http_sampler

    http_sampler = HttpSampler(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 99, in __init__

    self._http_sampler_instance.children(

  File "jnius\jnius_export_class.pxi", line 879, in jnius.JavaMethod.__call__

  File "jnius\jnius_conversion.pxi", line 158, in jnius.populate_args

  File "jnius\jnius_conversion.pxi", line 815, in jnius.convert_pyarray_to_java

jnius.JavaException: Invalid variable (<bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.postprocessors.JsonExtractor object at 0x00000180A073D300>>,) used for L array 'Lus/abstracta/jmeter/javadsl/core/samplers/BaseSampler$SamplerChild;'



======================================================================

ERROR: test_postprocessor_on_thread_group (utests.test_postprocessors.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 41, in test_postprocessor_on_thread_group

    tg1 = ThreadGroupSimple(1, 1, dummy_sampler, json_extractor)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 233, in __init__

    self._thread_group_simple_instance.children(

  File "jnius\jnius_export_class.pxi", line 1177, in jnius.JavaMultipleMethod.__call__

  File "jnius\jnius_export_class.pxi", line 879, in jnius.JavaMethod.__call__

  File "jnius\jnius_conversion.pxi", line 158, in jnius.populate_args

  File "jnius\jnius_conversion.pxi", line 815, in jnius.convert_pyarray_to_java

jnius.JavaException: Invalid variable (<bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.samplers.DummySampler object at 0x00000180A073FA90>>, <bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.postprocessors.JsonExtractor object at 0x00000180A073D300>>) used for L array 'Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;'



======================================================================

ERROR: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 17, in test_http_sampler

    tg = ThreadGroupWithRampUpAndHold(2, 1, 2, http_sampler, name="Some Name")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 261, in __init__

    self._ramp_to_and_hold_instance.children(

  File "jnius\jnius_export_class.pxi", line 1177, in jnius.JavaMultipleMethod.__call__

  File "jnius\jnius_export_class.pxi", line 879, in jnius.JavaMethod.__call__

  File "jnius\jnius_conversion.pxi", line 158, in jnius.populate_args

  File "jnius\jnius_conversion.pxi", line 815, in jnius.convert_pyarray_to_java

jnius.JavaException: Invalid variable (<bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.samplers.HttpSampler object at 0x000001809E50EC80>>,) used for L array 'Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;'



======================================================================

ERROR: test_http_2_headers (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 90, in test_http_2_headers

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 148, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

AttributeError: 'function' object has no attribute 'header'



======================================================================

ERROR: test_http_duplicated_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 105, in test_http_duplicated_header

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 148, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

AttributeError: 'function' object has no attribute 'header'



======================================================================

ERROR: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 15, in test_http_sampler

    tg1 = ThreadGroupSimple(1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 233, in __init__

    self._thread_group_simple_instance.children(

  File "jnius\jnius_export_class.pxi", line 1177, in jnius.JavaMultipleMethod.__call__

  File "jnius\jnius_export_class.pxi", line 879, in jnius.JavaMethod.__call__

  File "jnius\jnius_conversion.pxi", line 158, in jnius.populate_args

  File "jnius\jnius_conversion.pxi", line 815, in jnius.convert_pyarray_to_java

jnius.JavaException: Invalid variable (<bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.samplers.HttpSampler object at 0x00000180A073C7F0>>,) used for L array 'Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;'



======================================================================

ERROR: test_http_valid_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 77, in test_http_valid_header

    ).header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 148, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

AttributeError: 'function' object has no attribute 'header'



======================================================================

ERROR: test_post_http_sampler_dict_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 28, in test_post_http_sampler_dict_input

    ).post({"var1": 1}, ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 126, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

AttributeError: 'function' object has no attribute 'post'



======================================================================

ERROR: test_post_http_sampler_list_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 39, in test_post_http_sampler_list_input

    ).post([1, 2, 3, 4], ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 126, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

AttributeError: 'function' object has no attribute 'post'



======================================================================

ERROR: test_post_http_sampler_str_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 50, in test_post_http_sampler_str_input

    ).post('{"name": "John Doe"}', ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 126, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

AttributeError: 'function' object has no attribute 'post'



======================================================================

ERROR: test_creation_of_empty_test_plan (utests.test_test_plan.TestTestPlanClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 24, in test_creation_of_empty_test_plan

    python_test_plan_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 33, in test_creation_of_test_plan_with_valid_children

    test_plan = TestPlan(tg1, tg2)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 155, in __init__

    self._test_plan_instance.children(

  File "jnius\jnius_export_class.pxi", line 879, in jnius.JavaMethod.__call__

  File "jnius\jnius_conversion.pxi", line 158, in jnius.populate_args

  File "jnius\jnius_conversion.pxi", line 815, in jnius.convert_pyarray_to_java

jnius.JavaException: Invalid variable (<bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.config.ThreadGroupWithRampUpAndHold object at 0x00000180A073F010>>, <bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.config.ThreadGroupWithRampUpAndHold object at 0x00000180A0719D80>>) used for L array 'Lus/abstracta/jmeter/javadsl/core/DslTestPlan$TestPlanChild;'



======================================================================

ERROR: test_run_empty_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 90, in test_run_empty_flow

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 155, in __init__

    self._test_plan_instance.children(

  File "jnius\jnius_export_class.pxi", line 879, in jnius.JavaMethod.__call__

  File "jnius\jnius_conversion.pxi", line 158, in jnius.populate_args

  File "jnius\jnius_conversion.pxi", line 815, in jnius.convert_pyarray_to_java

jnius.JavaException: Invalid variable (<bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.config.ThreadGroupWithRampUpAndHold object at 0x00000180A073D540>>,) used for L array 'Lus/abstracta/jmeter/javadsl/core/DslTestPlan$TestPlanChild;'



======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 56, in test_run_positive_flow

    tg1 = ThreadGroupWithRampUpAndHold(30, 1, 20, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 261, in __init__

    self._ramp_to_and_hold_instance.children(

  File "jnius\jnius_export_class.pxi", line 1177, in jnius.JavaMultipleMethod.__call__

  File "jnius\jnius_export_class.pxi", line 879, in jnius.JavaMethod.__call__

  File "jnius\jnius_conversion.pxi", line 158, in jnius.populate_args

  File "jnius\jnius_conversion.pxi", line 815, in jnius.convert_pyarray_to_java

jnius.JavaException: Invalid variable (<bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.samplers.HttpSampler object at 0x00000180A073CC40>>,) used for L array 'Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;'



======================================================================

ERROR: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 99, in test_run_validate_order

    tg_setup = SetupThreadGroup(dummy_sampler_for_setup)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 195, in __init__

    self._setup_thread_group_instance.children(

  File "jnius\jnius_export_class.pxi", line 1177, in jnius.JavaMultipleMethod.__call__

  File "jnius\jnius_export_class.pxi", line 879, in jnius.JavaMethod.__call__

  File "jnius\jnius_conversion.pxi", line 158, in jnius.populate_args

  File "jnius\jnius_conversion.pxi", line 815, in jnius.convert_pyarray_to_java

jnius.JavaException: Invalid variable (<bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.samplers.DummySampler object at 0x00000180A073CC40>>,) used for L array 'Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;'



======================================================================

ERROR: test_creation_of_empty_setup_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 24, in test_creation_of_empty_setup_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_empty_teardown_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 32, in test_creation_of_empty_teardown_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_empty_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 16, in test_creation_of_empty_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_thread_group_with_valid_children (utests.test_thread_group.TestThreadGroupClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 40, in test_creation_of_thread_group_with_valid_children

    python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 261, in __init__

    self._ramp_to_and_hold_instance.children(

  File "jnius\jnius_export_class.pxi", line 1177, in jnius.JavaMultipleMethod.__call__

  File "jnius\jnius_export_class.pxi", line 879, in jnius.JavaMethod.__call__

  File "jnius\jnius_conversion.pxi", line 158, in jnius.populate_args

  File "jnius\jnius_conversion.pxi", line 815, in jnius.convert_pyarray_to_java

jnius.JavaException: Invalid variable (<bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.samplers.HttpSampler object at 0x00000180A073CD00>>,) used for L array 'Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;'



======================================================================

ERROR: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 15, in test_uniform_random_timer

    http_sampler = HttpSampler("Echo", "https://postman-echo.com/get?var=1", timer)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 99, in __init__

    self._http_sampler_instance.children(

  File "jnius\jnius_export_class.pxi", line 879, in jnius.JavaMethod.__call__

  File "jnius\jnius_conversion.pxi", line 158, in jnius.populate_args

  File "jnius\jnius_conversion.pxi", line 815, in jnius.convert_pyarray_to_java

jnius.JavaException: Invalid variable (<bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.timers.UniformRandomTimer object at 0x00000180A073ED70>>,) used for L array 'Lus/abstracta/jmeter/javadsl/core/samplers/BaseSampler$SamplerChild;'



----------------------------------------------------------------------

Ran 25 tests in 1.246s



FAILED (errors=20)

operator: core/ReplaceOrWithAnd, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\reporters.py
+++ bsrc\pymeter\api\reporters.py
@@ -45,7 +45,7 @@
     """Reports results to HTML format"""
     def __init__(self, directory: Optional[str] = None) -> None:
 
-        directory = directory or os.path.join(
+        directory = directory and os.path.join(
             "output", f'html-report-{datetime.now().strftime("%m%d%Y%H%M%S")}'
         )
         self._html_reporter_instance = HtmlReporter.jmeter_class.htmlReporter(directory)
Warning: Nashorn engine is planned to be removed from a future JDK release

E00:47:45.895 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =    7.1/s Avg:   397 Min:   397 Max:   397 Err:     0 (0.00%)

.F.... =      1 in 00:00:01 =    1.5/s Avg:   615 Min:   615 Max:   615 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +    636 in 00:00:04 =  141.6/s Avg:   182 Min:   140 Max:   675 Err:     0 (0.00%) Active: 30 Started: 30 Finished: 0

 +   3155 in 00:00:17 =  188.9/s Avg:   158 Min:   140 Max:   528 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3791 in 00:00:21 =  178.8/s Avg:   162 Min:   140 Max:   675 Err:     0 (0.00%)

.E..... =      1 in 00:00:03 =    0.4/s Avg:   607 Min:   607 Max:   607 Err:     0 (0.00%)

.

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 31, in test_http_sampler

    with open(path_to_jtl, "r", encoding="utf-8") as jtl_file:

FileNotFoundError: [Errno 2] No such file or directory: 'output\\a0fec9b4-b95c-49c9-93b4-fd13dc8a2ef0\\report.jtl'



======================================================================

ERROR: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 108, in test_run_validate_order

    with open(path_to_jtl, "r", encoding="utf-8") as jtl_file:

FileNotFoundError: [Errno 2] No such file or directory: 'output\\5659f6b8-cdb5-42b8-b382-aaf1a4df23bc\\report.jtl'



======================================================================

FAIL: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 26, in test_http_sampler

    self.assertTrue(os.path.exists(output_dir))

AssertionError: False is not true



----------------------------------------------------------------------

Ran 25 tests in 45.298s



FAILED (failures=1, errors=2)

operator: core/ReplaceUnaryOperator_Delete_Not, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\samplers.py
+++ bsrc\pymeter\api\samplers.py
@@ -118,7 +118,7 @@
 
         if isinstance(body, (dict, list)):
             body = json.dumps(body)
-        elif not isinstance(body, str):
+        elif  isinstance(body, str):
             raise TypeError(
                 f"Invalid type, expected `list`, 'dict', or 'str'. got {type(body)}"
             )
Warning: Nashorn engine is planned to be removed from a future JDK release

.00:48:32.473 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 +      1 in 00:00:00 =   10.9/s Avg:   237 Min:   237 Max:   237 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

 =      1 in 00:00:00 =   10.6/s Avg:   237 Min:   237 Max:   237 Err:     0 (0.00%)

. +      1 in 00:00:01 =    1.5/s Avg:   623 Min:   623 Max:   623 Err:     0 (0.00%) Active: 2 Started: 2 Finished: 0

..... =      1 in 00:00:01 =    1.5/s Avg:   599 Min:   599 Max:   599 Err:     0 (0.00%)

...E.E... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +   3263 in 00:00:18 =  181.1/s Avg:   159 Min:   139 Max:   659 Err:     0 (0.00%) Active: 30 Started: 30 Finished: 0

 +    627 in 00:00:03 =  186.8/s Avg:   155 Min:   139 Max:   441 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3890 in 00:00:21 =  182.0/s Avg:   158 Min:   139 Max:   659 Err:     0 (0.00%)

F +      1 in 00:00:00 = 1000.0/s Avg:   383 Min:   383 Max:   383 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

...... =      1 in 00:00:03 =    0.4/s Avg:   631 Min:   631 Max:   631 Err:     0 (0.00%)

.

======================================================================

ERROR: test_post_http_sampler_int_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 62, in test_post_http_sampler_int_input

    ).post(1, ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 126, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

  File "jnius\jnius_export_class.pxi", line 1163, in jnius.JavaMultipleMethod.__call__

jnius.JavaException: No methods called post in us/abstracta/jmeter/javadsl/http/DslHttpSampler matching your arguments, requested: (1, <org.apache.http.entity.ContentType at 0x1faa599b330 jclass=org/apache/http/entity/ContentType jself=<LocalRef obj=0x-5c93be20 at 0x1faa58b6550>>), available: ['(Ljava/lang/String;Lorg/apache/http/entity/ContentType;)Lus/abstracta/jmeter/javadsl/http/DslHttpSampler;', '(Ljava/util/function/Function;Lorg/apache/http/entity/ContentType;)Lus/abstracta/jmeter/javadsl/http/DslHttpSampler;']



======================================================================

ERROR: test_post_http_sampler_str_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 50, in test_post_http_sampler_str_input

    ).post('{"name": "John Doe"}', ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 122, in post

    raise TypeError(

TypeError: Invalid type, expected `list`, 'dict', or 'str'. got <class 'str'>



======================================================================

FAIL: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 74, in test_run_positive_flow

    self.assertLessEqual(

AssertionError: 488 not less than or equal to 443



----------------------------------------------------------------------

Ran 25 tests in 45.195s



FAILED (failures=1, errors=2)

operator: core/ReplaceUnaryOperator_Delete_Not, occurrence: 1
--- mutation diff ---
--- asrc\pymeter\api\samplers.py
+++ bsrc\pymeter\api\samplers.py
@@ -141,7 +141,7 @@
 
             Self: a new sampler instance
         """
-        if not isinstance(key, str):
+        if  isinstance(key, str):
             raise TypeError("key field must be a string")
         if not isinstance(value, str):
             raise TypeError("value field must be a string")
Warning: Nashorn engine is planned to be removed from a future JDK release

.00:49:19.609 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =    7.5/s Avg:   349 Min:   349 Max:   349 Err:     0 (0.00%)

..EEEF =      1 in 00:00:01 =    1.4/s Avg:   621 Min:   621 Max:   621 Err:     0 (0.00%)

.E....... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +     13 in 00:00:01 =   13.9/s Avg:   473 Min:   145 Max:   657 Err:     0 (0.00%) Active: 27 Started: 27 Finished: 0

 +   3828 in 00:00:20 =  188.7/s Avg:   159 Min:   138 Max:   674 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3841 in 00:00:21 =  181.0/s Avg:   160 Min:   138 Max:   674 Err:     0 (0.00%)

F...... =      1 in 00:00:03 =    0.4/s Avg:   612 Min:   612 Max:   612 Err:     0 (0.00%)

.

======================================================================

ERROR: test_http_2_headers (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 90, in test_http_2_headers

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 145, in header

    raise TypeError("key field must be a string")

TypeError: key field must be a string



======================================================================

ERROR: test_http_duplicated_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 105, in test_http_duplicated_header

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 145, in header

    raise TypeError("key field must be a string")

TypeError: key field must be a string



======================================================================

ERROR: test_http_invalid_header_key (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 119, in test_http_invalid_header_key

    ).header(1, "aa")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 148, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

  File "jnius\jnius_export_class.pxi", line 1163, in jnius.JavaMultipleMethod.__call__

jnius.JavaException: No methods called header in us/abstracta/jmeter/javadsl/http/DslHttpSampler matching your arguments, requested: (1, 'aa'), available: ['(Ljava/lang/String;Ljava/util/function/Function;)Lus/abstracta/jmeter/javadsl/http/DslBaseHttpSampler;', '(Ljava/lang/String;Ljava/lang/String;)Lus/abstracta/jmeter/javadsl/http/DslBaseHttpSampler;']



======================================================================

ERROR: test_http_valid_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 77, in test_http_valid_header

    ).header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 145, in header

    raise TypeError("key field must be a string")

TypeError: key field must be a string



======================================================================

FAIL: test_http_invalid_header_value (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 140, in test_http_invalid_header_value

    self.assertEqual(

AssertionError: 'key field must be a string' != 'value field must be a string'

- key field must be a string

? ^ -

+ value field must be a string

? ^^^^





======================================================================

FAIL: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 78, in test_run_positive_flow

    self.assertLessEqual(

AssertionError: 632 not less than or equal to 611



----------------------------------------------------------------------

Ran 25 tests in 44.790s



FAILED (failures=2, errors=4)

operator: core/ReplaceUnaryOperator_Delete_Not, occurrence: 2
--- mutation diff ---
--- asrc\pymeter\api\samplers.py
+++ bsrc\pymeter\api\samplers.py
@@ -143,7 +143,7 @@
         """
         if not isinstance(key, str):
             raise TypeError("key field must be a string")
-        if not isinstance(value, str):
+        if  isinstance(value, str):
             raise TypeError("value field must be a string")
         self._http_sampler_instance = self.java_wrapped_element.header(key, value)
         return self
Warning: Nashorn engine is planned to be removed from a future JDK release

 +      1 in 00:00:01 =    0.7/s Avg:   994 Min:   994 Max:   994 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

.00:50:06.335 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =    9.3/s Avg:    86 Min:    86 Max:    86 Err:     0 (0.00%)

..EE.E =      1 in 00:00:01 =    1.5/s Avg:   598 Min:   598 Max:   598 Err:     0 (0.00%)

.E....... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +   2530 in 00:00:14 =  176.8/s Avg:   161 Min:   138 Max:   672 Err:     0 (0.00%) Active: 30 Started: 30 Finished: 0

 +   1340 in 00:00:07 =  194.2/s Avg:   155 Min:   138 Max:   440 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3870 in 00:00:21 =  182.4/s Avg:   159 Min:   138 Max:   672 Err:     0 (0.00%)

....... =      1 in 00:00:03 =    0.4/s Avg:   585 Min:   585 Max:   585 Err:     0 (0.00%)

.

======================================================================

ERROR: test_http_2_headers (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 90, in test_http_2_headers

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 147, in header

    raise TypeError("value field must be a string")

TypeError: value field must be a string



======================================================================

ERROR: test_http_duplicated_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 105, in test_http_duplicated_header

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 147, in header

    raise TypeError("value field must be a string")

TypeError: value field must be a string



======================================================================

ERROR: test_http_invalid_header_value (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 135, in test_http_invalid_header_value

    ).header("key1", 1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 148, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

  File "jnius\jnius_export_class.pxi", line 1163, in jnius.JavaMultipleMethod.__call__

jnius.JavaException: No methods called header in us/abstracta/jmeter/javadsl/http/DslHttpSampler matching your arguments, requested: ('key1', 1), available: ['(Ljava/lang/String;Ljava/lang/String;)Lus/abstracta/jmeter/javadsl/http/DslBaseHttpSampler;', '(Ljava/lang/String;Ljava/util/function/Function;)Lus/abstracta/jmeter/javadsl/http/DslBaseHttpSampler;']



======================================================================

ERROR: test_http_valid_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 77, in test_http_valid_header

    ).header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 147, in header

    raise TypeError("value field must be a string")

TypeError: value field must be a string



----------------------------------------------------------------------

Ran 25 tests in 44.175s



FAILED (errors=4)

operator: core/AddNot, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\samplers.py
+++ bsrc\pymeter\api\samplers.py
@@ -116,7 +116,7 @@
             Self: a new sampler instance
         """
 
-        if isinstance(body, (dict, list)):
+        if not isinstance(body, (dict, list)):
             body = json.dumps(body)
         elif not isinstance(body, str):
             raise TypeError(
Warning: Nashorn engine is planned to be removed from a future JDK release

.00:50:53.197 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =   11.0/s Avg:    86 Min:    86 Max:    86 Err:     0 (0.00%)

...... +      1 in 00:00:01 =    1.4/s Avg:   637 Min:   637 Max:   637 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

 =      1 in 00:00:01 =    1.4/s Avg:   637 Min:   637 Max:   637 Err:     0 (0.00%)

..EFE.... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +      1 in 00:00:01 =    1.5/s Avg:   624 Min:   624 Max:   624 Err:     0 (0.00%) Active: 20 Started: 20 Finished: 0

 +   3794 in 00:00:21 =  184.6/s Avg:   162 Min:   142 Max:   678 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3795 in 00:00:21 =  178.8/s Avg:   162 Min:   142 Max:   678 Err:     0 (0.00%)

F...... =      1 in 00:00:03 =    0.4/s Avg:   656 Min:   656 Max:   656 Err:     0 (0.00%)

.

======================================================================

ERROR: test_post_http_sampler_dict_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 28, in test_post_http_sampler_dict_input

    ).post({"var1": 1}, ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 122, in post

    raise TypeError(

TypeError: Invalid type, expected `list`, 'dict', or 'str'. got <class 'dict'>



======================================================================

ERROR: test_post_http_sampler_list_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 39, in test_post_http_sampler_list_input

    ).post([1, 2, 3, 4], ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 122, in post

    raise TypeError(

TypeError: Invalid type, expected `list`, 'dict', or 'str'. got <class 'list'>



======================================================================

FAIL: test_post_http_sampler_int_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 58, in test_post_http_sampler_int_input

    with self.assertRaises(TypeError) as exp:

AssertionError: TypeError not raised



======================================================================

FAIL: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 74, in test_run_positive_flow

    self.assertLessEqual(

AssertionError: 436 not less than or equal to 187



----------------------------------------------------------------------

Ran 25 tests in 45.290s



FAILED (failures=2, errors=2)

operator: core/AddNot, occurrence: 1
--- mutation diff ---
--- asrc\pymeter\api\samplers.py
+++ bsrc\pymeter\api\samplers.py
@@ -141,7 +141,7 @@
 
             Self: a new sampler instance
         """
-        if not isinstance(key, str):
+        if not not isinstance(key, str):
             raise TypeError("key field must be a string")
         if not isinstance(value, str):
             raise TypeError("value field must be a string")
Warning: Nashorn engine is planned to be removed from a future JDK release

.00:51:40.753 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =   11.9/s Avg:   272 Min:   272 Max:   272 Err:     0 (0.00%)

..EEEF =      1 in 00:00:01 =    1.4/s Avg:   651 Min:   651 Max:   651 Err:     0 (0.00%)

.E....... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +   1630 in 00:00:10 =  169.4/s Avg:   162 Min:   138 Max:   699 Err:     0 (0.00%) Active: 30 Started: 30 Finished: 0

 +   2244 in 00:00:12 =  193.3/s Avg:   156 Min:   138 Max:   443 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3874 in 00:00:21 =  182.4/s Avg:   159 Min:   138 Max:   699 Err:     0 (0.00%)

F...... =      1 in 00:00:03 =    0.4/s Avg:   685 Min:   685 Max:   685 Err:     0 (0.00%)

.

======================================================================

ERROR: test_http_2_headers (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 90, in test_http_2_headers

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 145, in header

    raise TypeError("key field must be a string")

TypeError: key field must be a string



======================================================================

ERROR: test_http_duplicated_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 105, in test_http_duplicated_header

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 145, in header

    raise TypeError("key field must be a string")

TypeError: key field must be a string



======================================================================

ERROR: test_http_invalid_header_key (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 119, in test_http_invalid_header_key

    ).header(1, "aa")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 148, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

  File "jnius\jnius_export_class.pxi", line 1163, in jnius.JavaMultipleMethod.__call__

jnius.JavaException: No methods called header in us/abstracta/jmeter/javadsl/http/DslHttpSampler matching your arguments, requested: (1, 'aa'), available: ['(Ljava/lang/String;Ljava/util/function/Function;)Lus/abstracta/jmeter/javadsl/http/DslBaseHttpSampler;', '(Ljava/lang/String;Ljava/lang/String;)Lus/abstracta/jmeter/javadsl/http/DslBaseHttpSampler;']



======================================================================

ERROR: test_http_valid_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 77, in test_http_valid_header

    ).header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 145, in header

    raise TypeError("key field must be a string")

TypeError: key field must be a string



======================================================================

FAIL: test_http_invalid_header_value (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 140, in test_http_invalid_header_value

    self.assertEqual(

AssertionError: 'key field must be a string' != 'value field must be a string'

- key field must be a string

? ^ -

+ value field must be a string

? ^^^^





======================================================================

FAIL: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 74, in test_run_positive_flow

    self.assertLessEqual(

AssertionError: 332 not less than or equal to 175



----------------------------------------------------------------------

Ran 25 tests in 45.285s



FAILED (failures=2, errors=4)

operator: core/AddNot, occurrence: 2
--- mutation diff ---
--- asrc\pymeter\api\samplers.py
+++ bsrc\pymeter\api\samplers.py
@@ -143,7 +143,7 @@
         """
         if not isinstance(key, str):
             raise TypeError("key field must be a string")
-        if not isinstance(value, str):
+        if not not isinstance(value, str):
             raise TypeError("value field must be a string")
         self._http_sampler_instance = self.java_wrapped_element.header(key, value)
         return self
Warning: Nashorn engine is planned to be removed from a future JDK release

.00:52:27.491 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =    9.5/s Avg:   276 Min:   276 Max:   276 Err:     0 (0.00%)

. +      5 in 00:00:01 =    4.0/s Avg:   355 Min:   167 Max:   690 Err:     0 (0.00%) Active: 2 Started: 2 Finished: 0

.EE.E +      1 in 00:00:01 =    1.4/s Avg:   658 Min:   658 Max:   658 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

 =      1 in 00:00:01 =    1.4/s Avg:   658 Min:   658 Max:   658 Err:     0 (0.00%)

.E....... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. =   3855 in 00:00:21 =  181.2/s Avg:   159 Min:   139 Max:   815 Err:     0 (0.00%)

F...... +      1 in 00:00:03 =    0.4/s Avg:   665 Min:   665 Max:   665 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

 =      1 in 00:00:03 =    0.4/s Avg:   665 Min:   665 Max:   665 Err:     0 (0.00%)

.

======================================================================

ERROR: test_http_2_headers (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 90, in test_http_2_headers

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 147, in header

    raise TypeError("value field must be a string")

TypeError: value field must be a string



======================================================================

ERROR: test_http_duplicated_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 105, in test_http_duplicated_header

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 147, in header

    raise TypeError("value field must be a string")

TypeError: value field must be a string



======================================================================

ERROR: test_http_invalid_header_value (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 135, in test_http_invalid_header_value

    ).header("key1", 1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 148, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

  File "jnius\jnius_export_class.pxi", line 1163, in jnius.JavaMultipleMethod.__call__

jnius.JavaException: No methods called header in us/abstracta/jmeter/javadsl/http/DslHttpSampler matching your arguments, requested: ('key1', 1), available: ['(Ljava/lang/String;Ljava/util/function/Function;)Lus/abstracta/jmeter/javadsl/http/DslBaseHttpSampler;', '(Ljava/lang/String;Ljava/lang/String;)Lus/abstracta/jmeter/javadsl/http/DslBaseHttpSampler;']



======================================================================

ERROR: test_http_valid_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 77, in test_http_valid_header

    ).header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 147, in header

    raise TypeError("value field must be a string")

TypeError: value field must be a string



======================================================================

FAIL: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 74, in test_run_positive_flow

    self.assertLessEqual(

AssertionError: 571 not less than or equal to 196



----------------------------------------------------------------------

Ran 25 tests in 44.782s



FAILED (failures=1, errors=4)

operator: core/ExceptionReplacer, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\samplers.py
+++ bsrc\pymeter\api\samplers.py
@@ -55,7 +55,7 @@
 
 try:
     from typing import Self
-except ImportError:
+except CosmicRayTestingException:
     from typing_extensions import Self
 from pymeter.api import ThreadGroupChildElement, ContentType
 
EEEEEE

======================================================================

ERROR: utests.test_postprocessors (unittest.loader._FailedTest)

----------------------------------------------------------------------

ImportError: Failed to import test module: utests.test_postprocessors

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 57, in <module>

    from typing import Self

ImportError: cannot import name 'Self' from 'typing' (C:\Python310\lib\typing.py)



During handling of the above exception, another exception occurred:



Traceback (most recent call last):

  File "C:\Python310\lib\unittest\loader.py", line 436, in _find_test_path

    module = self._get_module_from_name(name)

  File "C:\Python310\lib\unittest\loader.py", line 377, in _get_module_from_name

    __import__(name)

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 8, in <module>

    from pymeter.api.samplers import DummySampler, HttpSampler

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 58, in <module>

    except CosmicRayTestingException:

NameError: name 'CosmicRayTestingException' is not defined





======================================================================

ERROR: utests.test_reporter (unittest.loader._FailedTest)

----------------------------------------------------------------------

ImportError: Failed to import test module: utests.test_reporter

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 57, in <module>

    from typing import Self

ImportError: cannot import name 'Self' from 'typing' (C:\Python310\lib\typing.py)



During handling of the above exception, another exception occurred:



Traceback (most recent call last):

  File "C:\Python310\lib\unittest\loader.py", line 436, in _find_test_path

    module = self._get_module_from_name(name)

  File "C:\Python310\lib\unittest\loader.py", line 377, in _get_module_from_name

    __import__(name)

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 8, in <module>

    from pymeter.api.samplers import HttpSampler

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 58, in <module>

    except CosmicRayTestingException:

NameError: name 'CosmicRayTestingException' is not defined





======================================================================

ERROR: utests.test_sampler (unittest.loader._FailedTest)

----------------------------------------------------------------------

ImportError: Failed to import test module: utests.test_sampler

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 57, in <module>

    from typing import Self

ImportError: cannot import name 'Self' from 'typing' (C:\Python310\lib\typing.py)



During handling of the above exception, another exception occurred:



Traceback (most recent call last):

  File "C:\Python310\lib\unittest\loader.py", line 436, in _find_test_path

    module = self._get_module_from_name(name)

  File "C:\Python310\lib\unittest\loader.py", line 377, in _get_module_from_name

    __import__(name)

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 5, in <module>

    from pymeter.api.samplers import HttpSampler

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 58, in <module>

    except CosmicRayTestingException:

NameError: name 'CosmicRayTestingException' is not defined





======================================================================

ERROR: utests.test_test_plan (unittest.loader._FailedTest)

----------------------------------------------------------------------

ImportError: Failed to import test module: utests.test_test_plan

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 57, in <module>

    from typing import Self

ImportError: cannot import name 'Self' from 'typing' (C:\Python310\lib\typing.py)



During handling of the above exception, another exception occurred:



Traceback (most recent call last):

  File "C:\Python310\lib\unittest\loader.py", line 436, in _find_test_path

    module = self._get_module_from_name(name)

  File "C:\Python310\lib\unittest\loader.py", line 377, in _get_module_from_name

    __import__(name)

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 14, in <module>

    from pymeter.api.samplers import DummySampler, HttpSampler

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 58, in <module>

    except CosmicRayTestingException:

NameError: name 'CosmicRayTestingException' is not defined





======================================================================

ERROR: utests.test_thread_group (unittest.loader._FailedTest)

----------------------------------------------------------------------

ImportError: Failed to import test module: utests.test_thread_group

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 57, in <module>

    from typing import Self

ImportError: cannot import name 'Self' from 'typing' (C:\Python310\lib\typing.py)



During handling of the above exception, another exception occurred:



Traceback (most recent call last):

  File "C:\Python310\lib\unittest\loader.py", line 436, in _find_test_path

    module = self._get_module_from_name(name)

  File "C:\Python310\lib\unittest\loader.py", line 377, in _get_module_from_name

    __import__(name)

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 6, in <module>

    from pymeter.api.samplers import HttpSampler

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 58, in <module>

    except CosmicRayTestingException:

NameError: name 'CosmicRayTestingException' is not defined





======================================================================

ERROR: utests.test_timers (unittest.loader._FailedTest)

----------------------------------------------------------------------

ImportError: Failed to import test module: utests.test_timers

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 57, in <module>

    from typing import Self

ImportError: cannot import name 'Self' from 'typing' (C:\Python310\lib\typing.py)



During handling of the above exception, another exception occurred:



Traceback (most recent call last):

  File "C:\Python310\lib\unittest\loader.py", line 436, in _find_test_path

    module = self._get_module_from_name(name)

  File "C:\Python310\lib\unittest\loader.py", line 377, in _get_module_from_name

    __import__(name)

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 4, in <module>

    from pymeter.api.samplers import HttpSampler

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 58, in <module>

    except CosmicRayTestingException:

NameError: name 'CosmicRayTestingException' is not defined





----------------------------------------------------------------------

Ran 6 tests in 0.001s



FAILED (errors=6)

operator: core/ReplaceUnaryOperator_Delete_Not, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -148,7 +148,7 @@
             return self.java_wrapped_element.duration().toMillis()
 
     def __init__(self, *children: TestPlanChildElement) -> None:
-        if not all(isinstance(c, TestPlanChildElement) for c in children):
+        if  all(isinstance(c, TestPlanChildElement) for c in children):
             raise TypeError("only takes children of type `TestPlanChildElement`")
         self._test_plan_instance = BaseConfigElement.jmeter_class.testPlan()
         if children:
EEE....E.....EEEEEE.....E

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 24, in test_http_sampler

    test_plan = TestPlan(tg1, html_reporter)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_postprocessor_on_thread_group (utests.test_postprocessors.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 42, in test_postprocessor_on_thread_group

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 20, in test_http_sampler

    tp = TestPlan(tg, html_reporter)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 16, in test_http_sampler

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_creation_of_empty_test_plan (utests.test_test_plan.TestTestPlanClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 22, in test_creation_of_empty_test_plan

    python_test_plan_object = TestPlan()

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_creation_of_test_plan_with_invalid_children (utests.test_test_plan.TestTestPlanClass)

Children must be of type TestPlanChildElement,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 43, in test_creation_of_test_plan_with_invalid_children

    test_plan = TestPlan(1, "aaa")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 156, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 156, in <listcomp>

    *[c.java_wrapped_element for c in children]

AttributeError: 'int' object has no attribute 'java_wrapped_element'



======================================================================

ERROR: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 33, in test_creation_of_test_plan_with_valid_children

    test_plan = TestPlan(tg1, tg2)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_run_empty_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 90, in test_run_empty_flow

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 57, in test_run_positive_flow

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 104, in test_run_validate_order

    test_plan = TestPlan(tg_setup, tg_main, tg_teardown, html_reporter)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 17, in test_uniform_random_timer

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



----------------------------------------------------------------------

Ran 25 tests in 1.403s



FAILED (errors=11)

operator: core/ReplaceUnaryOperator_Delete_Not, occurrence: 1
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -177,7 +177,7 @@
     """base class for all thread groups"""
 
     def __init__(self, *children: ThreadGroupChildElement) -> None:
-        if not all(isinstance(c, ThreadGroupChildElement) for c in children):
+        if  all(isinstance(c, ThreadGroupChildElement) for c in children):
             raise TypeError("only takes children of type `ThreadGroupChildElement`")
         super().__init__()
 
EEE....E.......EEEEEEEEEE

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 21, in test_http_sampler

    tg1 = ThreadGroupSimple(1, 1, http_sampler, dummy_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 228, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_postprocessor_on_thread_group (utests.test_postprocessors.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 41, in test_postprocessor_on_thread_group

    tg1 = ThreadGroupSimple(1, 1, dummy_sampler, json_extractor)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 228, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 17, in test_http_sampler

    tg = ThreadGroupWithRampUpAndHold(2, 1, 2, http_sampler, name="Some Name")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 249, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 15, in test_http_sampler

    tg1 = ThreadGroupSimple(1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 228, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 31, in test_creation_of_test_plan_with_valid_children

    tg1 = ThreadGroupWithRampUpAndHold(10, 10, 10)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 249, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_run_empty_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 89, in test_run_empty_flow

    tg1 = ThreadGroupWithRampUpAndHold(1, 1, 1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 249, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 56, in test_run_positive_flow

    tg1 = ThreadGroupWithRampUpAndHold(30, 1, 20, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 249, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 99, in test_run_validate_order

    tg_setup = SetupThreadGroup(dummy_sampler_for_setup)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 190, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_empty_setup_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 22, in test_creation_of_empty_setup_thread_group

    python_thread_group_object = SetupThreadGroup()

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 190, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_empty_teardown_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 30, in test_creation_of_empty_teardown_thread_group

    python_thread_group_object = TeardownThreadGroup()

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 205, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_empty_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 14, in test_creation_of_empty_thread_group

    python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 249, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_thread_group_with_invalid_children (utests.test_thread_group.TestThreadGroupClass)

Children must be of type ThreadGroupChildElement,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 50, in test_creation_of_thread_group_with_invalid_children

    python_thread_group_object = ThreadGroupWithRampUpAndHold(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 262, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 262, in <listcomp>

    *[c.java_wrapped_element for c in children]

AttributeError: 'str' object has no attribute 'java_wrapped_element'



======================================================================

ERROR: test_creation_of_thread_group_with_valid_children (utests.test_thread_group.TestThreadGroupClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 40, in test_creation_of_thread_group_with_valid_children

    python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 249, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 16, in test_uniform_random_timer

    tg1 = ThreadGroupSimple(1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 228, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



----------------------------------------------------------------------

Ran 25 tests in 1.028s



FAILED (errors=14)

operator: core/AddNot, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -148,7 +148,7 @@
             return self.java_wrapped_element.duration().toMillis()
 
     def __init__(self, *children: TestPlanChildElement) -> None:
-        if not all(isinstance(c, TestPlanChildElement) for c in children):
+        if not not all(isinstance(c, TestPlanChildElement) for c in children):
             raise TypeError("only takes children of type `TestPlanChildElement`")
         self._test_plan_instance = BaseConfigElement.jmeter_class.testPlan()
         if children:
EEE....E.....EEEEEE.....E

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 24, in test_http_sampler

    test_plan = TestPlan(tg1, html_reporter)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_postprocessor_on_thread_group (utests.test_postprocessors.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 42, in test_postprocessor_on_thread_group

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 20, in test_http_sampler

    tp = TestPlan(tg, html_reporter)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 16, in test_http_sampler

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_creation_of_empty_test_plan (utests.test_test_plan.TestTestPlanClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 22, in test_creation_of_empty_test_plan

    python_test_plan_object = TestPlan()

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_creation_of_test_plan_with_invalid_children (utests.test_test_plan.TestTestPlanClass)

Children must be of type TestPlanChildElement,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 43, in test_creation_of_test_plan_with_invalid_children

    test_plan = TestPlan(1, "aaa")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 156, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 156, in <listcomp>

    *[c.java_wrapped_element for c in children]

AttributeError: 'int' object has no attribute 'java_wrapped_element'



======================================================================

ERROR: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 33, in test_creation_of_test_plan_with_valid_children

    test_plan = TestPlan(tg1, tg2)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_run_empty_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 90, in test_run_empty_flow

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 57, in test_run_positive_flow

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 104, in test_run_validate_order

    test_plan = TestPlan(tg_setup, tg_main, tg_teardown, html_reporter)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 17, in test_uniform_random_timer

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 152, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



----------------------------------------------------------------------

Ran 25 tests in 1.082s



FAILED (errors=11)

operator: core/AddNot, occurrence: 1
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -151,7 +151,7 @@
         if not all(isinstance(c, TestPlanChildElement) for c in children):
             raise TypeError("only takes children of type `TestPlanChildElement`")
         self._test_plan_instance = BaseConfigElement.jmeter_class.testPlan()
-        if children:
+        if not children:
             self._test_plan_instance.children(
                 *[c.java_wrapped_element for c in children]
             )
Warning: Nashorn engine is planned to be removed from a future JDK release

 =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

E =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

F.... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

F =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

E..... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

F

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 31, in test_http_sampler

    with open(path_to_jtl, "r", encoding="utf-8") as jtl_file:

FileNotFoundError: [Errno 2] No such file or directory: 'output\\fbd99792-54bf-43c3-9a61-66487386a925\\report.jtl'



======================================================================

ERROR: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 108, in test_run_validate_order

    with open(path_to_jtl, "r", encoding="utf-8") as jtl_file:

FileNotFoundError: [Errno 2] No such file or directory: 'output\\f21d25aa-d5f0-4ea7-ac1a-587eabcac8b4\\report.jtl'



======================================================================

FAIL: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 26, in test_http_sampler

    self.assertTrue(os.path.exists(output_dir))

AssertionError: False is not true



======================================================================

FAIL: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 63, in test_run_positive_flow

    self.assertGreaterEqual(stats.duration_milliseconds, 20000)

AssertionError: 22 not greater than or equal to 20000



======================================================================

FAIL: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 27, in test_uniform_random_timer

    self.assertGreaterEqual(stats.duration_milliseconds, 2000)

AssertionError: 19 not greater than or equal to 2000



----------------------------------------------------------------------

Ran 25 tests in 8.956s



FAILED (failures=3, errors=2)

operator: core/AddNot, occurrence: 2
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -177,7 +177,7 @@
     """base class for all thread groups"""
 
     def __init__(self, *children: ThreadGroupChildElement) -> None:
-        if not all(isinstance(c, ThreadGroupChildElement) for c in children):
+        if not not all(isinstance(c, ThreadGroupChildElement) for c in children):
             raise TypeError("only takes children of type `ThreadGroupChildElement`")
         super().__init__()
 
EEE....E.......EEEEEEEEEE

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 21, in test_http_sampler

    tg1 = ThreadGroupSimple(1, 1, http_sampler, dummy_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 228, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_postprocessor_on_thread_group (utests.test_postprocessors.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 41, in test_postprocessor_on_thread_group

    tg1 = ThreadGroupSimple(1, 1, dummy_sampler, json_extractor)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 228, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 17, in test_http_sampler

    tg = ThreadGroupWithRampUpAndHold(2, 1, 2, http_sampler, name="Some Name")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 249, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 15, in test_http_sampler

    tg1 = ThreadGroupSimple(1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 228, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 31, in test_creation_of_test_plan_with_valid_children

    tg1 = ThreadGroupWithRampUpAndHold(10, 10, 10)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 249, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_run_empty_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 89, in test_run_empty_flow

    tg1 = ThreadGroupWithRampUpAndHold(1, 1, 1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 249, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 56, in test_run_positive_flow

    tg1 = ThreadGroupWithRampUpAndHold(30, 1, 20, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 249, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 99, in test_run_validate_order

    tg_setup = SetupThreadGroup(dummy_sampler_for_setup)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 190, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_empty_setup_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 22, in test_creation_of_empty_setup_thread_group

    python_thread_group_object = SetupThreadGroup()

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 190, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_empty_teardown_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 30, in test_creation_of_empty_teardown_thread_group

    python_thread_group_object = TeardownThreadGroup()

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 205, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_empty_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 14, in test_creation_of_empty_thread_group

    python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 249, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_thread_group_with_invalid_children (utests.test_thread_group.TestThreadGroupClass)

Children must be of type ThreadGroupChildElement,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 50, in test_creation_of_thread_group_with_invalid_children

    python_thread_group_object = ThreadGroupWithRampUpAndHold(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 262, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 262, in <listcomp>

    *[c.java_wrapped_element for c in children]

AttributeError: 'str' object has no attribute 'java_wrapped_element'



======================================================================

ERROR: test_creation_of_thread_group_with_valid_children (utests.test_thread_group.TestThreadGroupClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 40, in test_creation_of_thread_group_with_valid_children

    python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 249, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 16, in test_uniform_random_timer

    tg1 = ThreadGroupSimple(1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 228, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 181, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



----------------------------------------------------------------------

Ran 25 tests in 1.297s



FAILED (errors=14)

operator: core/AddNot, occurrence: 3
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -191,7 +191,7 @@
         self._setup_thread_group_instance = (
             BaseConfigElement.jmeter_class.setupThreadGroup()
         )
-        if children:
+        if not children:
             self._setup_thread_group_instance.children(
                 *[c.java_wrapped_element for c in children]
             )
Warning: Nashorn engine is planned to be removed from a future JDK release

.00:53:43.268 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =    8.0/s Avg:   267 Min:   267 Max:   267 Err:     0 (0.00%)

...... =      1 in 00:00:01 =    1.5/s Avg:   611 Min:   611 Max:   611 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +   1066 in 00:00:07 =  156.1/s Avg:   172 Min:   139 Max:   668 Err:     0 (0.00%) Active: 30 Started: 30 Finished: 0

 +   2773 in 00:00:14 =  192.3/s Avg:   155 Min:   138 Max:   491 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3839 in 00:00:21 =  180.7/s Avg:   160 Min:   138 Max:   668 Err:     0 (0.00%)

.FE.... =      1 in 00:00:03 =    0.4/s Avg:   611 Min:   611 Max:   611 Err:     0 (0.00%)

.

======================================================================

ERROR: test_creation_of_empty_setup_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 22, in test_creation_of_empty_setup_thread_group

    python_thread_group_object = SetupThreadGroup()

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 195, in __init__

    self._setup_thread_group_instance.children(

  File "jnius\jnius_export_class.pxi", line 1163, in jnius.JavaMultipleMethod.__call__

jnius.JavaException: No methods called children in us/abstracta/jmeter/javadsl/core/threadgroups/DslSetupThreadGroup matching your arguments, requested: (), available: ['([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup;', '([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/DslSimpleThreadGroup;']



======================================================================

FAIL: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 111, in test_run_validate_order

    self.assertListEqual(["dummy_setup", "dummy_main", "dummy_teardown"], lst)

AssertionError: Lists differ: ['dummy_setup', 'dummy_main', 'dummy_teardown'] != ['dummy_main', 'dummy_teardown']



First differing element 0:

'dummy_setup'

'dummy_main'



First list contains 1 additional elements.

First extra element 2:

'dummy_teardown'



- ['dummy_setup', 'dummy_main', 'dummy_teardown']

?  ---------------



+ ['dummy_main', 'dummy_teardown']



----------------------------------------------------------------------

Ran 25 tests in 46.434s



FAILED (failures=1, errors=1)

operator: core/AddNot, occurrence: 4
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -206,7 +206,7 @@
         self._teardown_thread_group_instance = (
             BaseConfigElement.jmeter_class.teardownThreadGroup()
         )
-        if children:
+        if not children:
             self._teardown_thread_group_instance.children(
                 *[c.java_wrapped_element for c in children]
             )
Warning: Nashorn engine is planned to be removed from a future JDK release

.00:54:31.182 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 +      1 in 00:00:00 =   11.0/s Avg:   200 Min:   200 Max:   200 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

 =      1 in 00:00:00 =   10.5/s Avg:   200 Min:   200 Max:   200 Err:     0 (0.00%)

. +      1 in 00:00:01 =    1.5/s Avg:   625 Min:   625 Max:   625 Err:     0 (0.00%) Active: 2 Started: 2 Finished: 0

..... =      1 in 00:00:01 =    1.4/s Avg:   661 Min:   661 Max:   661 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +   3241 in 00:00:18 =  177.8/s Avg:   162 Min:   139 Max:   671 Err:     0 (0.00%) Active: 30 Started: 30 Finished: 0

 +    552 in 00:00:03 =  184.7/s Avg:   161 Min:   140 Max:   438 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3793 in 00:00:21 =  178.8/s Avg:   162 Min:   139 Max:   671 Err:     0 (0.00%)

F +      1 in 00:00:00 = 1000.0/s Avg:   225 Min:   225 Max:   225 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

F.E... =      1 in 00:00:03 =    0.4/s Avg:   668 Min:   668 Max:   668 Err:     0 (0.00%)

.

======================================================================

ERROR: test_creation_of_empty_teardown_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 30, in test_creation_of_empty_teardown_thread_group

    python_thread_group_object = TeardownThreadGroup()

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 210, in __init__

    self._teardown_thread_group_instance.children(

  File "jnius\jnius_export_class.pxi", line 1163, in jnius.JavaMultipleMethod.__call__

jnius.JavaException: No methods called children in us/abstracta/jmeter/javadsl/core/threadgroups/DslTeardownThreadGroup matching your arguments, requested: (), available: ['([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup;', '([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/DslSimpleThreadGroup;']



======================================================================

FAIL: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 74, in test_run_positive_flow

    self.assertLessEqual(

AssertionError: 479 not less than or equal to 293



======================================================================

FAIL: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 111, in test_run_validate_order

    self.assertListEqual(["dummy_setup", "dummy_main", "dummy_teardown"], lst)

AssertionError: Lists differ: ['dummy_setup', 'dummy_main', 'dummy_teardown'] != ['dummy_setup', 'dummy_main']



First list contains 1 additional elements.

First extra element 2:

'dummy_teardown'



- ['dummy_setup', 'dummy_main', 'dummy_teardown']

?                             ------------------



+ ['dummy_setup', 'dummy_main']



----------------------------------------------------------------------

Ran 25 tests in 46.245s



FAILED (failures=2, errors=1)

operator: core/AddNot, occurrence: 5
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -229,7 +229,7 @@
         self._thread_group_simple_instance = BaseConfigElement.jmeter_class.threadGroup(
             name, number_of_threads, iterations
         )
-        if children:
+        if not children:
             self._thread_group_simple_instance.children(
                 *[c.java_wrapped_element for c in children]
             )
Warning: Nashorn engine is planned to be removed from a future JDK release

F =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

...... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +      1 in 00:00:01 =    1.5/s Avg:   593 Min:   593 Max:   593 Err:     0 (0.00%) Active: 20 Started: 20 Finished: 0

 +   3876 in 00:00:21 =  188.9/s Avg:   158 Min:   138 Max:   735 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3877 in 00:00:21 =  182.8/s Avg:   158 Min:   138 Max:   735 Err:     0 (0.00%)

FF..... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

F

======================================================================

FAIL: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 33, in test_http_sampler

    self.assertIn("dummy 1", [line.split(",")[2] for line in jtl_file])

AssertionError: 'dummy 1' not found in []



======================================================================

FAIL: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 74, in test_run_positive_flow

    self.assertLessEqual(

AssertionError: 551 not less than or equal to 198



======================================================================

FAIL: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 111, in test_run_validate_order

    self.assertListEqual(["dummy_setup", "dummy_main", "dummy_teardown"], lst)

AssertionError: Lists differ: ['dummy_setup', 'dummy_main', 'dummy_teardown'] != ['dummy_setup', 'dummy_teardown']



First differing element 1:

'dummy_main'

'dummy_teardown'



First list contains 1 additional elements.

First extra element 2:

'dummy_teardown'



- ['dummy_setup', 'dummy_main', 'dummy_teardown']

?                --------------



+ ['dummy_setup', 'dummy_teardown']



======================================================================

FAIL: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 27, in test_uniform_random_timer

    self.assertGreaterEqual(stats.duration_milliseconds, 2000)

AssertionError: 89 not greater than or equal to 2000



----------------------------------------------------------------------

Ran 25 tests in 46.526s



FAILED (failures=4)

operator: core/AddNot, occurrence: 6
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -257,7 +257,7 @@
                 BaseConfigElement.java_duration.ofSeconds(holdup_time_seconds),
             )
         )
-        if children:
+        if not children:
             self._ramp_to_and_hold_instance.children(
                 *[c.java_wrapped_element for c in children]
             )
Warning: Nashorn engine is planned to be removed from a future JDK release

.00:56:14.824 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =   10.8/s Avg:   251 Min:   251 Max:   251 Err:     0 (0.00%)

.F.... =      1 in 00:00:01 =    1.4/s Avg:   646 Min:   646 Max:   646 Err:     0 (0.00%)

........EE =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

F...E.. +      1 in 00:00:03 =    0.4/s Avg:   618 Min:   618 Max:   618 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

 =      1 in 00:00:03 =    0.4/s Avg:   618 Min:   618 Max:   618 Err:     0 (0.00%)

.

======================================================================

ERROR: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 31, in test_creation_of_test_plan_with_valid_children

    tg1 = ThreadGroupWithRampUpAndHold(10, 10, 10)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 261, in __init__

    self._ramp_to_and_hold_instance.children(

  File "jnius\jnius_export_class.pxi", line 1163, in jnius.JavaMultipleMethod.__call__

jnius.JavaException: No methods called children in us/abstracta/jmeter/javadsl/core/threadgroups/DslDefaultThreadGroup matching your arguments, requested: (), available: ['([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup;', '([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/DslDefaultThreadGroup;']



======================================================================

ERROR: test_run_empty_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 89, in test_run_empty_flow

    tg1 = ThreadGroupWithRampUpAndHold(1, 1, 1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 261, in __init__

    self._ramp_to_and_hold_instance.children(

  File "jnius\jnius_export_class.pxi", line 1163, in jnius.JavaMultipleMethod.__call__

jnius.JavaException: No methods called children in us/abstracta/jmeter/javadsl/core/threadgroups/DslDefaultThreadGroup matching your arguments, requested: (), available: ['([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup;', '([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/DslDefaultThreadGroup;']



======================================================================

ERROR: test_creation_of_empty_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 14, in test_creation_of_empty_thread_group

    python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 261, in __init__

    self._ramp_to_and_hold_instance.children(

  File "jnius\jnius_export_class.pxi", line 1163, in jnius.JavaMultipleMethod.__call__

jnius.JavaException: No methods called children in us/abstracta/jmeter/javadsl/core/threadgroups/DslDefaultThreadGroup matching your arguments, requested: (), available: ['([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup;', '([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/DslDefaultThreadGroup;']



======================================================================

FAIL: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 31, in test_http_sampler

    self.assertTrue(os.path.exists(path_to_json))

AssertionError: False is not true



======================================================================

FAIL: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 63, in test_run_positive_flow

    self.assertGreaterEqual(stats.duration_milliseconds, 20000)

AssertionError: 1010 not greater than or equal to 20000



----------------------------------------------------------------------

Ran 25 tests in 33.069s



FAILED (failures=2, errors=3)

operator: core/ExceptionReplacer, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -168,7 +168,7 @@
         """
         try:
             return TestPlan.TestPlanStats(self._test_plan_instance.run())
-        except JavaException as java_exception:
+        except CosmicRayTestingException as java_exception:
             print("\n\t at ".join(java_exception.stacktrace))
             raise java_exception
 
Warning: Nashorn engine is planned to be removed from a future JDK release

.00:56:53.649 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =    9.3/s Avg:   296 Min:   296 Max:   296 Err:     0 (0.00%)

...... =      1 in 00:00:01 =    1.4/s Avg:   642 Min:   642 Max:   642 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +   3201 in 00:00:18 =  175.6/s Avg:   164 Min:   137 Max:   728 Err:     0 (0.00%) Active: 30 Started: 30 Finished: 0

 +    574 in 00:00:03 =  190.8/s Avg:   158 Min:   138 Max:   360 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3775 in 00:00:21 =  177.7/s Avg:   163 Min:   137 Max:   728 Err:     0 (0.00%)

F +      1 in 00:00:00 = 1000.0/s Avg:   167 Min:   167 Max:   167 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

...... =      1 in 00:00:03 =    0.4/s Avg:   603 Min:   603 Max:   603 Err:     0 (0.00%)

.

======================================================================

FAIL: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 78, in test_run_positive_flow

    self.assertLessEqual(

AssertionError: 634 not less than or equal to 617



----------------------------------------------------------------------

Ran 25 tests in 66.573s



FAILED (failures=1)

operator: core/RemoveDecorator, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -98,8 +98,6 @@
         def __init__(self, java_instance) -> None:
             self._test_plan_stats_instance = java_instance
             super().__init__()
-
-        @property
         def sample_time_mean_milliseconds(self):
             """returns the mean of sample times in milliseconds"""
             return self.java_wrapped_element.overallStats.sampleTime().mean().toMillis()
Warning: Nashorn engine is planned to be removed from a future JDK release

.00:58:04.653 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 +      1 in 00:00:00 =   13.9/s Avg:   350 Min:   350 Max:   350 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

 =      1 in 00:00:00 =   13.5/s Avg:   350 Min:   350 Max:   350 Err:     0 (0.00%)

...... =      1 in 00:00:01 =    1.5/s Avg:   636 Min:   636 Max:   636 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +    661 in 00:00:05 =  135.6/s Avg:   188 Min:   141 Max:   705 Err:     0 (0.00%) Active: 30 Started: 30 Finished: 0

 +   3100 in 00:00:16 =  188.6/s Avg:   158 Min:   139 Max:   440 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3761 in 00:00:21 =  176.5/s Avg:   163 Min:   139 Max:   705 Err:     0 (0.00%)

E...... =      1 in 00:00:03 =    0.4/s Avg:   613 Min:   613 Max:   613 Err:     0 (0.00%)

.

======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 64, in test_run_positive_flow

    self.assertLessEqual(

  File "C:\Python310\lib\unittest\case.py", line 1236, in assertLessEqual

    if not a <= b:

TypeError: '<=' not supported between instances of 'method' and 'int'



----------------------------------------------------------------------

Ran 25 tests in 69.870s



FAILED (errors=1)

operator: core/RemoveDecorator, occurrence: 1
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -103,8 +103,6 @@
         def sample_time_mean_milliseconds(self):
             """returns the mean of sample times in milliseconds"""
             return self.java_wrapped_element.overallStats.sampleTime().mean().toMillis()
-
-        @property
         def sample_time_min_milliseconds(self):
             """returns the min of sample times in milliseconds"""
             return self.java_wrapped_element.overallStats.sampleTime().min().toMillis()
Warning: Nashorn engine is planned to be removed from a future JDK release

.00:59:13.616 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =   11.5/s Avg:   186 Min:   186 Max:   186 Err:     0 (0.00%)

...... =      1 in 00:00:01 =    1.6/s Avg:   591 Min:   591 Max:   591 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +     40 in 00:00:01 =   32.7/s Avg:   345 Min:   140 Max:   655 Err:     0 (0.00%) Active: 30 Started: 30 Finished: 0

 +   3799 in 00:00:20 =  190.1/s Avg:   158 Min:   138 Max:   745 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3839 in 00:00:21 =  181.0/s Avg:   160 Min:   138 Max:   745 Err:     0 (0.00%)

E...... =      1 in 00:00:03 =    0.3/s Avg:   764 Min:   764 Max:   764 Err:     0 (0.00%)

.

======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 67, in test_run_positive_flow

    self.assertLessEqual(

  File "C:\Python310\lib\unittest\case.py", line 1236, in assertLessEqual

    if not a <= b:

TypeError: '<=' not supported between instances of 'method' and 'int'



----------------------------------------------------------------------

Ran 25 tests in 59.741s



FAILED (errors=1)

operator: core/RemoveDecorator, occurrence: 2
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -108,8 +108,6 @@
         def sample_time_min_milliseconds(self):
             """returns the min of sample times in milliseconds"""
             return self.java_wrapped_element.overallStats.sampleTime().min().toMillis()
-
-        @property
         def sample_time_median_milliseconds(self):
             """returns the median of sample times in milliseconds"""
             return (
Warning: Nashorn engine is planned to be removed from a future JDK release

.01:00:15.058 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =   14.5/s Avg:   232 Min:   232 Max:   232 Err:     0 (0.00%)

...... =      1 in 00:00:01 =    1.5/s Avg:   611 Min:   611 Max:   611 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +      6 in 00:00:01 =    6.8/s Avg:   641 Min:   597 Max:   704 Err:     0 (0.00%) Active: 26 Started: 26 Finished: 0

 +   3734 in 00:00:20 =  183.6/s Avg:   164 Min:   140 Max:   796 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3740 in 00:00:21 =  176.2/s Avg:   164 Min:   140 Max:   796 Err:     0 (0.00%)

E...... =      1 in 00:00:03 =    0.4/s Avg:   585 Min:   585 Max:   585 Err:     0 (0.00%)

.

======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 67, in test_run_positive_flow

    self.assertLessEqual(

  File "C:\Python310\lib\unittest\case.py", line 1236, in assertLessEqual

    if not a <= b:

TypeError: '<=' not supported between instances of 'int' and 'method'



----------------------------------------------------------------------

Ran 25 tests in 54.935s



FAILED (errors=1)

operator: core/RemoveDecorator, occurrence: 3
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -115,8 +115,6 @@
             return (
                 self.java_wrapped_element.overallStats.sampleTime().median().toMillis()
             )
-
-        @property
         def sample_time_90_percentile_milliseconds(self):
             """returns the 90th percentile of sample times in milliseconds"""
             return (
Warning: Nashorn engine is planned to be removed from a future JDK release

.01:01:12.011 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =   12.0/s Avg:   430 Min:   430 Max:   430 Err:     0 (0.00%)

...... =      1 in 00:00:01 =    1.5/s Avg:   609 Min:   609 Max:   609 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +    537 in 00:00:04 =  136.9/s Avg:   184 Min:   138 Max:   674 Err:     0 (0.00%) Active: 30 Started: 30 Finished: 0

 +   3273 in 00:00:17 =  188.9/s Avg:   158 Min:   138 Max:   549 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3810 in 00:00:21 =  179.3/s Avg:   161 Min:   138 Max:   674 Err:     0 (0.00%)

E...... =      1 in 00:00:03 =    0.4/s Avg:   602 Min:   602 Max:   602 Err:     0 (0.00%)

.

======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 70, in test_run_positive_flow

    self.assertLessEqual(

  File "C:\Python310\lib\unittest\case.py", line 1236, in assertLessEqual

    if not a <= b:

TypeError: '<=' not supported between instances of 'int' and 'method'



----------------------------------------------------------------------

Ran 25 tests in 55.138s



FAILED (errors=1)

operator: core/RemoveDecorator, occurrence: 4
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -122,8 +122,6 @@
             return (
                 self.java_wrapped_element.overallStats.sampleTime().perc90().toMillis()
             )
-
-        @property
         def sample_time_95_percentile_milliseconds(self):
             """returns the 95th percentile of sample times in milliseconds"""
             return (
Warning: Nashorn engine is planned to be removed from a future JDK release

 +      1 in 00:00:02 =    0.7/s Avg:  1053 Min:  1053 Max:  1053 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

.01:02:10.997 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =   11.4/s Avg:   474 Min:   474 Max:   474 Err:     0 (0.00%)

...... =      1 in 00:00:01 =    1.4/s Avg:   643 Min:   643 Max:   643 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +    622 in 00:00:04 =  142.4/s Avg:   179 Min:   139 Max:   663 Err:     0 (0.00%) Active: 30 Started: 30 Finished: 0

 +   3201 in 00:00:17 =  189.9/s Avg:   157 Min:   138 Max:   508 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3823 in 00:00:21 =  180.1/s Avg:   161 Min:   138 Max:   663 Err:     0 (0.00%)

E...... =      1 in 00:00:03 =    0.4/s Avg:   639 Min:   639 Max:   639 Err:     0 (0.00%)

.

======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 74, in test_run_positive_flow

    self.assertLessEqual(

  File "C:\Python310\lib\unittest\case.py", line 1236, in assertLessEqual

    if not a <= b:

TypeError: '<=' not supported between instances of 'int' and 'method'



----------------------------------------------------------------------

Ran 25 tests in 56.010s



FAILED (errors=1)

operator: core/RemoveDecorator, occurrence: 5
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -129,8 +129,6 @@
             return (
                 self.java_wrapped_element.overallStats.sampleTime().perc95().toMillis()
             )
-
-        @property
         def sample_time_99_percentile_milliseconds(self):
             """returns the 99th percentile of sample times in milliseconds"""
             return (
Warning: Nashorn engine is planned to be removed from a future JDK release

 +      1 in 00:00:01 =    0.7/s Avg:  1016 Min:  1016 Max:  1016 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

.01:03:09.756 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =   13.0/s Avg:   455 Min:   455 Max:   455 Err:     0 (0.00%)

...... =      1 in 00:00:01 =    1.5/s Avg:   624 Min:   624 Max:   624 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +    755 in 00:00:05 =  149.6/s Avg:   174 Min:   139 Max:   706 Err:     0 (0.00%) Active: 30 Started: 30 Finished: 0

 +   3074 in 00:00:16 =  189.4/s Avg:   157 Min:   139 Max:   482 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3829 in 00:00:21 =  180.0/s Avg:   160 Min:   139 Max:   706 Err:     0 (0.00%)

E...... =      1 in 00:00:03 =    0.4/s Avg:   625 Min:   625 Max:   625 Err:     0 (0.00%)

.

======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 78, in test_run_positive_flow

    self.assertLessEqual(

  File "C:\Python310\lib\unittest\case.py", line 1236, in assertLessEqual

    if not a <= b:

TypeError: '<=' not supported between instances of 'int' and 'method'



----------------------------------------------------------------------

Ran 25 tests in 56.506s



FAILED (errors=1)

operator: core/RemoveDecorator, occurrence: 6
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -136,8 +136,6 @@
             return (
                 self.java_wrapped_element.overallStats.sampleTime().perc99().toMillis()
             )
-
-        @property
         def sample_time_max_milliseconds(self):
             """returns the max of sample times in milliseconds"""
             return self.java_wrapped_element.overallStats.sampleTime().max().toMillis()
Warning: Nashorn engine is planned to be removed from a future JDK release

 +      1 in 00:00:01 =    0.7/s Avg:  1005 Min:  1005 Max:  1005 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

.01:04:10.269 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 =      1 in 00:00:00 =    9.4/s Avg:    72 Min:    72 Max:    72 Err:     0 (0.00%)

...... =      1 in 00:00:01 =    1.5/s Avg:   615 Min:   615 Max:   615 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +    920 in 00:00:06 =  152.8/s Avg:   175 Min:   139 Max:   670 Err:     0 (0.00%) Active: 30 Started: 30 Finished: 0

 +   2891 in 00:00:15 =  190.1/s Avg:   157 Min:   139 Max:   524 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3811 in 00:00:21 =  179.6/s Avg:   161 Min:   139 Max:   670 Err:     0 (0.00%)

E...... =      1 in 00:00:03 =    0.4/s Avg:   599 Min:   599 Max:   599 Err:     0 (0.00%)

.

======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 64, in test_run_positive_flow

    self.assertLessEqual(

  File "C:\Python310\lib\unittest\case.py", line 1236, in assertLessEqual

    if not a <= b:

TypeError: '<=' not supported between instances of 'int' and 'method'



----------------------------------------------------------------------

Ran 25 tests in 55.986s



FAILED (errors=1)

operator: core/RemoveDecorator, occurrence: 7
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -141,8 +141,6 @@
         def sample_time_max_milliseconds(self):
             """returns the max of sample times in milliseconds"""
             return self.java_wrapped_element.overallStats.sampleTime().max().toMillis()
-
-        @property
         def duration_milliseconds(self):
             """returns the max of sample times in milliseconds"""
             return self.java_wrapped_element.duration().toMillis()
Warning: Nashorn engine is planned to be removed from a future JDK release

 +      1 in 00:00:01 =    0.7/s Avg:   995 Min:   995 Max:   995 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

.01:05:05.332 [Thread Group 1-1] ERROR org.apache.jmeter.extractor.json.jmespath.JMESPathExtractor - Error processing JSON content in JSON JMESPath Extractor, message: Unrecognized token 'hi': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
 at [Source: (String)"hi dummy"; line: 1, column: 3]

 +      1 in 00:00:00 =   11.4/s Avg:   356 Min:   356 Max:   356 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

 =      1 in 00:00:00 =   11.2/s Avg:   356 Min:   356 Max:   356 Err:     0 (0.00%)

...... =      1 in 00:00:01 =    1.4/s Avg:   668 Min:   668 Max:   668 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +   1856 in 00:00:11 =  168.1/s Avg:   167 Min:   140 Max:   676 Err:     0 (0.00%) Active: 30 Started: 30 Finished: 0

 +   1877 in 00:00:10 =  184.7/s Avg:   162 Min:   139 Max:   466 Err:     0 (0.00%) Active: 0 Started: 30 Finished: 30

 =   3733 in 00:00:21 =  176.0/s Avg:   165 Min:   139 Max:   676 Err:     0 (0.00%)

E...... =      1 in 00:00:03 =    0.4/s Avg:   660 Min:   660 Max:   660 Err:     0 (0.00%)

E

======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 63, in test_run_positive_flow

    self.assertGreaterEqual(stats.duration_milliseconds, 20000)

  File "C:\Python310\lib\unittest\case.py", line 1248, in assertGreaterEqual

    if not a >= b:

TypeError: '>=' not supported between instances of 'method' and 'int'



======================================================================

ERROR: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 27, in test_uniform_random_timer

    self.assertGreaterEqual(stats.duration_milliseconds, 2000)

  File "C:\Python310\lib\unittest\case.py", line 1248, in assertGreaterEqual

    if not a >= b:

TypeError: '>=' not supported between instances of 'method' and 'int'



----------------------------------------------------------------------

Ran 25 tests in 53.092s



FAILED (errors=2)

================================================ FILE: docs/Mutation-Testing/27092022.html ================================================ Cosmic Ray Report

Cosmic Ray Report

Date time: 27/09/2022 22:02:08

Total jobs: 35

Complete: 35 (100.00%)

Surviving mutants: 1 (2.86%)

operator: core/ReplaceOrWithAnd, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\reporters.py
+++ bsrc\pymeter\api\reporters.py
@@ -14,7 +14,7 @@
     """reports results to HTML format"""
     def __init__(self, directory: Optional[str] = None) -> None:
 
-        directory = directory or os.path.join(
+        directory = directory and os.path.join(
             "output", f'html-report-{datetime.now().strftime("%m%d%Y%H%M%S")}'
         )
         self._html_reporter_instance = HtmlReporter.jmeter_class.htmlReporter(directory)
timeout
operator: core/ReplaceUnaryOperator_Delete_Not, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -67,7 +67,7 @@
             return self.java_wrapped_element.duration().toMillis()
 
     def __init__(self, *children: TestPlanChildElement) -> None:
-        if not all(isinstance(c, TestPlanChildElement) for c in children):
+        if  all(isinstance(c, TestPlanChildElement) for c in children):
             raise TypeError("only takes children of type `TestPlanChildElement`")
         self._test_plan_instance = BaseConfigElement.jmeter_class.testPlan()
         if children:
EE....E.....EEEEEE.....E

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 24, in test_http_sampler

    test_plan = TestPlan(tg1, html_reporter)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 71, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 20, in test_http_sampler

    tp = TestPlan(tg, html_reporter)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 71, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 16, in test_http_sampler

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 71, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_creation_of_empty_test_plan (utests.test_test_plan.TestTestPlanClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 22, in test_creation_of_empty_test_plan

    python_test_plan_object = TestPlan()

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 71, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_creation_of_test_plan_with_invalid_children (utests.test_test_plan.TestTestPlanClass)

Children must be of type TestPlanChildElement,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 43, in test_creation_of_test_plan_with_invalid_children

    test_plan = TestPlan(1, "aaa")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 75, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 75, in <listcomp>

    *[c.java_wrapped_element for c in children]

AttributeError: 'int' object has no attribute 'java_wrapped_element'



======================================================================

ERROR: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 33, in test_creation_of_test_plan_with_valid_children

    test_plan = TestPlan(tg1, tg2)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 71, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_run_empty_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 90, in test_run_empty_flow

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 71, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 57, in test_run_positive_flow

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 71, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 104, in test_run_validate_order

    test_plan = TestPlan(tg_setup, tg_main, tg_teardown, html_reporter)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 71, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 17, in test_uniform_random_timer

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 71, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



----------------------------------------------------------------------

Ran 24 tests in 0.921s



FAILED (errors=10)

operator: core/ReplaceUnaryOperator_Delete_Not, occurrence: 1
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -89,7 +89,7 @@
     """base class for all thread groups"""
 
     def __init__(self, *children: ThreadGroupChildElement) -> None:
-        if not all(isinstance(c, ThreadGroupChildElement) for c in children):
+        if  all(isinstance(c, ThreadGroupChildElement) for c in children):
             raise TypeError("only takes children of type `ThreadGroupChildElement`")
         super().__init__()
 
EE....E.......EEEEEEEEEE

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 21, in test_http_sampler

    tg1 = ThreadGroupSimple(1, 1, http_sampler, dummy_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 137, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 17, in test_http_sampler

    tg = ThreadGroupWithRampUpAndHold(2, 1, 2, http_sampler, name="Some Name")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 158, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 15, in test_http_sampler

    tg1 = ThreadGroupSimple(1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 137, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 31, in test_creation_of_test_plan_with_valid_children

    tg1 = ThreadGroupWithRampUpAndHold(10, 10, 10)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 158, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_run_empty_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 89, in test_run_empty_flow

    tg1 = ThreadGroupWithRampUpAndHold(1, 1, 1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 158, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 56, in test_run_positive_flow

    tg1 = ThreadGroupWithRampUpAndHold(20, 1, 3, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 158, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 99, in test_run_validate_order

    tg_setup = SetupThreadGroup(dummy_sampler_for_setup)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 102, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_empty_setup_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 22, in test_creation_of_empty_setup_thread_group

    python_thread_group_object = SetupThreadGroup()

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 102, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_empty_teardown_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 30, in test_creation_of_empty_teardown_thread_group

    python_thread_group_object = TeardownThreadGroup()

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 117, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_empty_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 14, in test_creation_of_empty_thread_group

    python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 158, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_thread_group_with_invalid_children (utests.test_thread_group.TestThreadGroupClass)

Children must be of type ThreadGroupChildElement,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 50, in test_creation_of_thread_group_with_invalid_children

    python_thread_group_object = ThreadGroupWithRampUpAndHold(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 171, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 171, in <listcomp>

    *[c.java_wrapped_element for c in children]

AttributeError: 'str' object has no attribute 'java_wrapped_element'



======================================================================

ERROR: test_creation_of_thread_group_with_valid_children (utests.test_thread_group.TestThreadGroupClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 40, in test_creation_of_thread_group_with_valid_children

    python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 158, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 16, in test_uniform_random_timer

    tg1 = ThreadGroupSimple(1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 137, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



----------------------------------------------------------------------

Ran 24 tests in 1.066s



FAILED (errors=13)

operator: core/AddNot, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -67,7 +67,7 @@
             return self.java_wrapped_element.duration().toMillis()
 
     def __init__(self, *children: TestPlanChildElement) -> None:
-        if not all(isinstance(c, TestPlanChildElement) for c in children):
+        if not not all(isinstance(c, TestPlanChildElement) for c in children):
             raise TypeError("only takes children of type `TestPlanChildElement`")
         self._test_plan_instance = BaseConfigElement.jmeter_class.testPlan()
         if children:
EE....E.....EEEEEE.....E

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 24, in test_http_sampler

    test_plan = TestPlan(tg1, html_reporter)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 71, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 20, in test_http_sampler

    tp = TestPlan(tg, html_reporter)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 71, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 16, in test_http_sampler

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 71, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_creation_of_empty_test_plan (utests.test_test_plan.TestTestPlanClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 22, in test_creation_of_empty_test_plan

    python_test_plan_object = TestPlan()

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 71, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_creation_of_test_plan_with_invalid_children (utests.test_test_plan.TestTestPlanClass)

Children must be of type TestPlanChildElement,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 43, in test_creation_of_test_plan_with_invalid_children

    test_plan = TestPlan(1, "aaa")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 75, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 75, in <listcomp>

    *[c.java_wrapped_element for c in children]

AttributeError: 'int' object has no attribute 'java_wrapped_element'



======================================================================

ERROR: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 33, in test_creation_of_test_plan_with_valid_children

    test_plan = TestPlan(tg1, tg2)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 71, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_run_empty_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 90, in test_run_empty_flow

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 71, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 57, in test_run_positive_flow

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 71, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 104, in test_run_validate_order

    test_plan = TestPlan(tg_setup, tg_main, tg_teardown, html_reporter)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 71, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



======================================================================

ERROR: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 17, in test_uniform_random_timer

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 71, in __init__

    raise TypeError("only takes children of type `TestPlanChildElement`")

TypeError: only takes children of type `TestPlanChildElement`



----------------------------------------------------------------------

Ran 24 tests in 1.543s



FAILED (errors=10)

operator: core/AddNot, occurrence: 1
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -70,7 +70,7 @@
         if not all(isinstance(c, TestPlanChildElement) for c in children):
             raise TypeError("only takes children of type `TestPlanChildElement`")
         self._test_plan_instance = BaseConfigElement.jmeter_class.testPlan()
-        if children:
+        if not children:
             self._test_plan_instance.children(
                 *[c.java_wrapped_element for c in children]
             )
Warning: Nashorn engine is planned to be removed from a future JDK release

 =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

E =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

F.... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

F =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

E..... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

F

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 31, in test_http_sampler

    with open(path_to_jtl, "r", encoding="utf-8") as jtl_file:

FileNotFoundError: [Errno 2] No such file or directory: 'output\\e6c377d0-a199-4232-b19b-7e4a75ad2bf1\\report.jtl'



======================================================================

ERROR: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 108, in test_run_validate_order

    with open(path_to_jtl, "r", encoding="utf-8") as jtl_file:

FileNotFoundError: [Errno 2] No such file or directory: 'output\\83d5f47e-0834-43e8-9b34-05a59b134cdb\\report.jtl'



======================================================================

FAIL: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 26, in test_http_sampler

    self.assertTrue(os.path.exists(output_dir))

AssertionError: False is not true



======================================================================

FAIL: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 63, in test_run_positive_flow

    self.assertGreaterEqual(stats.duration_milliseconds, 3000)

AssertionError: 41 not greater than or equal to 3000



======================================================================

FAIL: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 27, in test_uniform_random_timer

    self.assertGreaterEqual(stats.duration_milliseconds, 2000)

AssertionError: 34 not greater than or equal to 2000



----------------------------------------------------------------------

Ran 24 tests in 13.404s



FAILED (failures=3, errors=2)

operator: core/AddNot, occurrence: 2
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -89,7 +89,7 @@
     """base class for all thread groups"""
 
     def __init__(self, *children: ThreadGroupChildElement) -> None:
-        if not all(isinstance(c, ThreadGroupChildElement) for c in children):
+        if not not all(isinstance(c, ThreadGroupChildElement) for c in children):
             raise TypeError("only takes children of type `ThreadGroupChildElement`")
         super().__init__()
 
EE....E.......EEEEEEEEEE

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 21, in test_http_sampler

    tg1 = ThreadGroupSimple(1, 1, http_sampler, dummy_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 137, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 17, in test_http_sampler

    tg = ThreadGroupWithRampUpAndHold(2, 1, 2, http_sampler, name="Some Name")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 158, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 15, in test_http_sampler

    tg1 = ThreadGroupSimple(1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 137, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 31, in test_creation_of_test_plan_with_valid_children

    tg1 = ThreadGroupWithRampUpAndHold(10, 10, 10)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 158, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_run_empty_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 89, in test_run_empty_flow

    tg1 = ThreadGroupWithRampUpAndHold(1, 1, 1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 158, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 56, in test_run_positive_flow

    tg1 = ThreadGroupWithRampUpAndHold(20, 1, 3, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 158, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 99, in test_run_validate_order

    tg_setup = SetupThreadGroup(dummy_sampler_for_setup)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 102, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_empty_setup_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 22, in test_creation_of_empty_setup_thread_group

    python_thread_group_object = SetupThreadGroup()

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 102, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_empty_teardown_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 30, in test_creation_of_empty_teardown_thread_group

    python_thread_group_object = TeardownThreadGroup()

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 117, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_empty_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 14, in test_creation_of_empty_thread_group

    python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 158, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_creation_of_thread_group_with_invalid_children (utests.test_thread_group.TestThreadGroupClass)

Children must be of type ThreadGroupChildElement,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 50, in test_creation_of_thread_group_with_invalid_children

    python_thread_group_object = ThreadGroupWithRampUpAndHold(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 171, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 171, in <listcomp>

    *[c.java_wrapped_element for c in children]

AttributeError: 'str' object has no attribute 'java_wrapped_element'



======================================================================

ERROR: test_creation_of_thread_group_with_valid_children (utests.test_thread_group.TestThreadGroupClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 40, in test_creation_of_thread_group_with_valid_children

    python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 158, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



======================================================================

ERROR: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 16, in test_uniform_random_timer

    tg1 = ThreadGroupSimple(1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 137, in __init__

    super().__init__(*children)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 93, in __init__

    raise TypeError("only takes children of type `ThreadGroupChildElement`")

TypeError: only takes children of type `ThreadGroupChildElement`



----------------------------------------------------------------------

Ran 24 tests in 1.767s



FAILED (errors=13)

operator: core/AddNot, occurrence: 3
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -103,7 +103,7 @@
         self._setup_thread_group_instance = (
             BaseConfigElement.jmeter_class.setupThreadGroup()
         )
-        if children:
+        if not children:
             self._setup_thread_group_instance.children(
                 *[c.java_wrapped_element for c in children]
             )
Warning: Nashorn engine is planned to be removed from a future JDK release

...... =      1 in 00:00:01 =    1.6/s Avg:   594 Min:   594 Max:   594 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. =    368 in 00:00:04 =   85.3/s Avg:   198 Min:   140 Max:   931 Err:     0 (0.00%)

.FE.... =      1 in 00:00:03 =    0.4/s Avg:   629 Min:   629 Max:   629 Err:     0 (0.00%)

.

======================================================================

ERROR: test_creation_of_empty_setup_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 22, in test_creation_of_empty_setup_thread_group

    python_thread_group_object = SetupThreadGroup()

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 107, in __init__

    self._setup_thread_group_instance.children(

  File "jnius\jnius_export_class.pxi", line 1163, in jnius.JavaMultipleMethod.__call__

jnius.JavaException: No methods called children in us/abstracta/jmeter/javadsl/core/threadgroups/DslSetupThreadGroup matching your arguments, requested: (), available: ['([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup;', '([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/DslSimpleThreadGroup;']



======================================================================

FAIL: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 111, in test_run_validate_order

    self.assertListEqual(["dummy_setup", "dummy_main", "dummy_teardown"], lst)

AssertionError: Lists differ: ['dummy_setup', 'dummy_main', 'dummy_teardown'] != ['dummy_main', 'dummy_teardown']



First differing element 0:

'dummy_setup'

'dummy_main'



First list contains 1 additional elements.

First extra element 2:

'dummy_teardown'



- ['dummy_setup', 'dummy_main', 'dummy_teardown']

?  ---------------



+ ['dummy_main', 'dummy_teardown']



----------------------------------------------------------------------

Ran 24 tests in 26.124s



FAILED (failures=1, errors=1)

operator: core/AddNot, occurrence: 4
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -118,7 +118,7 @@
         self._teardown_thread_group_instance = (
             BaseConfigElement.jmeter_class.teardownThreadGroup()
         )
-        if children:
+        if not children:
             self._teardown_thread_group_instance.children(
                 *[c.java_wrapped_element for c in children]
             )
Warning: Nashorn engine is planned to be removed from a future JDK release

 +      1 in 00:00:01 =    0.7/s Avg:   990 Min:   990 Max:   990 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

...... =      1 in 00:00:01 =    1.4/s Avg:   637 Min:   637 Max:   637 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. =    413 in 00:00:04 =   98.4/s Avg:   173 Min:   139 Max:   659 Err:     0 (0.00%)

.F.E... =      1 in 00:00:03 =    0.3/s Avg:   640 Min:   640 Max:   640 Err:     0 (0.00%)

.

======================================================================

ERROR: test_creation_of_empty_teardown_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 30, in test_creation_of_empty_teardown_thread_group

    python_thread_group_object = TeardownThreadGroup()

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 122, in __init__

    self._teardown_thread_group_instance.children(

  File "jnius\jnius_export_class.pxi", line 1163, in jnius.JavaMultipleMethod.__call__

jnius.JavaException: No methods called children in us/abstracta/jmeter/javadsl/core/threadgroups/DslTeardownThreadGroup matching your arguments, requested: (), available: ['([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup;', '([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/DslSimpleThreadGroup;']



======================================================================

FAIL: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 111, in test_run_validate_order

    self.assertListEqual(["dummy_setup", "dummy_main", "dummy_teardown"], lst)

AssertionError: Lists differ: ['dummy_setup', 'dummy_main', 'dummy_teardown'] != ['dummy_setup', 'dummy_main']



First list contains 1 additional elements.

First extra element 2:

'dummy_teardown'



- ['dummy_setup', 'dummy_main', 'dummy_teardown']

?                             ------------------



+ ['dummy_setup', 'dummy_main']



----------------------------------------------------------------------

Ran 24 tests in 25.291s



FAILED (failures=1, errors=1)

operator: core/AddNot, occurrence: 5
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -138,7 +138,7 @@
         self._thread_group_simple_instance = BaseConfigElement.jmeter_class.threadGroup(
             name, number_of_threads, iterations
         )
-        if children:
+        if not children:
             self._thread_group_simple_instance.children(
                 *[c.java_wrapped_element for c in children]
             )
Warning: Nashorn engine is planned to be removed from a future JDK release

F..... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. =    297 in 00:00:04 =   67.3/s Avg:   246 Min:   140 Max:  1153 Err:     0 (0.00%)

.F..... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

F

======================================================================

FAIL: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 33, in test_http_sampler

    self.assertIn("dummy 1", [line.split(",")[2] for line in jtl_file])

AssertionError: 'dummy 1' not found in []



======================================================================

FAIL: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 111, in test_run_validate_order

    self.assertListEqual(["dummy_setup", "dummy_main", "dummy_teardown"], lst)

AssertionError: Lists differ: ['dummy_setup', 'dummy_main', 'dummy_teardown'] != ['dummy_setup', 'dummy_teardown']



First differing element 1:

'dummy_main'

'dummy_teardown'



First list contains 1 additional elements.

First extra element 2:

'dummy_teardown'



- ['dummy_setup', 'dummy_main', 'dummy_teardown']

?                --------------



+ ['dummy_setup', 'dummy_teardown']



======================================================================

FAIL: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 27, in test_uniform_random_timer

    self.assertGreaterEqual(stats.duration_milliseconds, 2000)

AssertionError: 68 not greater than or equal to 2000



----------------------------------------------------------------------

Ran 24 tests in 25.845s



FAILED (failures=3)

operator: core/AddNot, occurrence: 6
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -166,7 +166,7 @@
                 BaseConfigElement.java_duration.ofSeconds(holdup_time_seconds),
             )
         )
-        if children:
+        if not children:
             self._ramp_to_and_hold_instance.children(
                 *[c.java_wrapped_element for c in children]
             )
Warning: Nashorn engine is planned to be removed from a future JDK release

 +      1 in 00:00:01 =    0.7/s Avg:   994 Min:   994 Max:   994 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

.F.... =      1 in 00:00:01 =    1.3/s Avg:   684 Min:   684 Max:   684 Err:     0 (0.00%)

........EE =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

F...E.. =      1 in 00:00:03 =    0.3/s Avg:   622 Min:   622 Max:   622 Err:     0 (0.00%)

.

======================================================================

ERROR: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 31, in test_creation_of_test_plan_with_valid_children

    tg1 = ThreadGroupWithRampUpAndHold(10, 10, 10)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 170, in __init__

    self._ramp_to_and_hold_instance.children(

  File "jnius\jnius_export_class.pxi", line 1163, in jnius.JavaMultipleMethod.__call__

jnius.JavaException: No methods called children in us/abstracta/jmeter/javadsl/core/threadgroups/DslDefaultThreadGroup matching your arguments, requested: (), available: ['([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/DslDefaultThreadGroup;', '([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup;']



======================================================================

ERROR: test_run_empty_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 89, in test_run_empty_flow

    tg1 = ThreadGroupWithRampUpAndHold(1, 1, 1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 170, in __init__

    self._ramp_to_and_hold_instance.children(

  File "jnius\jnius_export_class.pxi", line 1163, in jnius.JavaMultipleMethod.__call__

jnius.JavaException: No methods called children in us/abstracta/jmeter/javadsl/core/threadgroups/DslDefaultThreadGroup matching your arguments, requested: (), available: ['([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/DslDefaultThreadGroup;', '([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup;']



======================================================================

ERROR: test_creation_of_empty_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 14, in test_creation_of_empty_thread_group

    python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 170, in __init__

    self._ramp_to_and_hold_instance.children(

  File "jnius\jnius_export_class.pxi", line 1163, in jnius.JavaMultipleMethod.__call__

jnius.JavaException: No methods called children in us/abstracta/jmeter/javadsl/core/threadgroups/DslDefaultThreadGroup matching your arguments, requested: (), available: ['([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/DslDefaultThreadGroup;', '([Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;)Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup;']



======================================================================

FAIL: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 31, in test_http_sampler

    self.assertTrue(os.path.exists(path_to_json))

AssertionError: False is not true



======================================================================

FAIL: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 63, in test_run_positive_flow

    self.assertGreaterEqual(stats.duration_milliseconds, 3000)

AssertionError: 1007 not greater than or equal to 3000



----------------------------------------------------------------------

Ran 24 tests in 18.303s



FAILED (failures=2, errors=3)

operator: core/ExceptionReplacer, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -80,7 +80,7 @@
         """execute the test plan"""
         try:
             return TestPlan.TestPlanStats(self._test_plan_instance.run())
-        except JavaException as java_exception:
+        except CosmicRayTestingException as java_exception:
             print("\n\t at ".join(java_exception.stacktrace))
             raise java_exception
 
Warning: Nashorn engine is planned to be removed from a future JDK release

...... +      1 in 00:00:01 =    1.4/s Avg:   611 Min:   611 Max:   611 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

 =      1 in 00:00:01 =    1.4/s Avg:   611 Min:   611 Max:   611 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +      1 in 00:00:01 =    1.6/s Avg:   582 Min:   582 Max:   582 Err:     0 (0.00%) Active: 12 Started: 12 Finished: 0

 +    415 in 00:00:04 =  116.0/s Avg:   170 Min:   138 Max:   646 Err:     0 (0.00%) Active: 0 Started: 20 Finished: 20

 =    416 in 00:00:04 =   98.9/s Avg:   171 Min:   138 Max:   646 Err:     0 (0.00%)

....... =      1 in 00:00:03 =    0.4/s Avg:   598 Min:   598 Max:   598 Err:     0 (0.00%)

.

----------------------------------------------------------------------

Ran 24 tests in 25.588s



OK

operator: core/RemoveDecorator, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -17,8 +17,6 @@
         def __init__(self, java_instance) -> None:
             self._test_plan_stats_instance = java_instance
             super().__init__()
-
-        @property
         def sample_time_mean_milliseconds(self):
             """returns the mean of sample times in milliseconds"""
             return self.java_wrapped_element.overallStats.sampleTime().mean().toMillis()
Warning: Nashorn engine is planned to be removed from a future JDK release

...... =      1 in 00:00:01 =    1.5/s Avg:   626 Min:   626 Max:   626 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +      1 in 00:00:01 =    1.5/s Avg:   625 Min:   625 Max:   625 Err:     0 (0.00%) Active: 13 Started: 13 Finished: 0

 +    297 in 00:00:04 =   84.2/s Avg:   239 Min:   141 Max:  1584 Err:     0 (0.00%) Active: 0 Started: 20 Finished: 20

 =    298 in 00:00:04 =   71.1/s Avg:   240 Min:   141 Max:  1584 Err:     0 (0.00%)

E...... =      1 in 00:00:03 =    0.4/s Avg:   669 Min:   669 Max:   669 Err:     0 (0.00%)

.

======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 64, in test_run_positive_flow

    self.assertLessEqual(

  File "C:\Python310\lib\unittest\case.py", line 1236, in assertLessEqual

    if not a <= b:

TypeError: '<=' not supported between instances of 'method' and 'int'



----------------------------------------------------------------------

Ran 24 tests in 24.746s



FAILED (errors=1)

operator: core/RemoveDecorator, occurrence: 1
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -22,8 +22,6 @@
         def sample_time_mean_milliseconds(self):
             """returns the mean of sample times in milliseconds"""
             return self.java_wrapped_element.overallStats.sampleTime().mean().toMillis()
-
-        @property
         def sample_time_min_milliseconds(self):
             """returns the min of sample times in milliseconds"""
             return self.java_wrapped_element.overallStats.sampleTime().min().toMillis()
timeout
operator: core/RemoveDecorator, occurrence: 2
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -27,8 +27,6 @@
         def sample_time_min_milliseconds(self):
             """returns the min of sample times in milliseconds"""
             return self.java_wrapped_element.overallStats.sampleTime().min().toMillis()
-
-        @property
         def sample_time_median_milliseconds(self):
             """returns the median of sample times in milliseconds"""
             return (
timeout
operator: core/RemoveDecorator, occurrence: 3
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -34,8 +34,6 @@
             return (
                 self.java_wrapped_element.overallStats.sampleTime().median().toMillis()
             )
-
-        @property
         def sample_time_90_percentile_milliseconds(self):
             """returns the 90th percentile of sample times in milliseconds"""
             return (
Warning: Nashorn engine is planned to be removed from a future JDK release

...... =      1 in 00:00:01 =    1.5/s Avg:   632 Min:   632 Max:   632 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +      1 in 00:00:01 =    1.4/s Avg:   664 Min:   664 Max:   664 Err:     0 (0.00%) Active: 14 Started: 14 Finished: 0

 +    407 in 00:00:03 =  117.6/s Avg:   174 Min:   139 Max:   642 Err:     0 (0.00%) Active: 0 Started: 20 Finished: 20

 =    408 in 00:00:04 =   97.5/s Avg:   175 Min:   139 Max:   664 Err:     0 (0.00%)

E +      1 in 00:00:00 =  250.0/s Avg:    67 Min:    67 Max:    67 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

...... =      1 in 00:00:03 =    0.4/s Avg:   667 Min:   667 Max:   667 Err:     0 (0.00%)

.

======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 70, in test_run_positive_flow

    self.assertLessEqual(

  File "C:\Python310\lib\unittest\case.py", line 1236, in assertLessEqual

    if not a <= b:

TypeError: '<=' not supported between instances of 'int' and 'method'



----------------------------------------------------------------------

Ran 24 tests in 27.377s



FAILED (errors=1)

operator: core/RemoveDecorator, occurrence: 4
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -41,8 +41,6 @@
             return (
                 self.java_wrapped_element.overallStats.sampleTime().perc90().toMillis()
             )
-
-        @property
         def sample_time_95_percentile_milliseconds(self):
             """returns the 95th percentile of sample times in milliseconds"""
             return (
Warning: Nashorn engine is planned to be removed from a future JDK release

...... =      1 in 00:00:01 =    1.5/s Avg:   620 Min:   620 Max:   620 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +      1 in 00:00:01 =    1.5/s Avg:   644 Min:   644 Max:   644 Err:     0 (0.00%) Active: 13 Started: 13 Finished: 0

 +    324 in 00:00:04 =   86.8/s Avg:   227 Min:   139 Max:  1155 Err:     0 (0.00%) Active: 0 Started: 20 Finished: 20

 =    325 in 00:00:04 =   73.6/s Avg:   229 Min:   139 Max:  1155 Err:     0 (0.00%)

E +      1 in 00:00:00 =   18.5/s Avg:   130 Min:   130 Max:   130 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

...... =      1 in 00:00:03 =    0.4/s Avg:   563 Min:   563 Max:   563 Err:     0 (0.00%)

.

======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 74, in test_run_positive_flow

    self.assertLessEqual(

  File "C:\Python310\lib\unittest\case.py", line 1236, in assertLessEqual

    if not a <= b:

TypeError: '<=' not supported between instances of 'int' and 'method'



----------------------------------------------------------------------

Ran 24 tests in 25.915s



FAILED (errors=1)

operator: core/RemoveDecorator, occurrence: 5
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -48,8 +48,6 @@
             return (
                 self.java_wrapped_element.overallStats.sampleTime().perc95().toMillis()
             )
-
-        @property
         def sample_time_99_percentile_milliseconds(self):
             """returns the 99th percentile of sample times in milliseconds"""
             return (
Warning: Nashorn engine is planned to be removed from a future JDK release

...... =      1 in 00:00:01 =    1.5/s Avg:   624 Min:   624 Max:   624 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. +    317 in 00:00:04 =   90.5/s Avg:   182 Min:   140 Max:   674 Err:     0 (0.00%) Active: 20 Started: 20 Finished: 0

 +     75 in 00:00:01 =   54.0/s Avg:   254 Min:   141 Max:  1336 Err:     0 (0.00%) Active: 0 Started: 20 Finished: 20

 =    392 in 00:00:05 =   80.1/s Avg:   196 Min:   140 Max:  1336 Err:     0 (0.00%)

E +      1 in 00:00:00 = 1000.0/s Avg:   469 Min:   469 Max:   469 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

...... =      1 in 00:00:03 =    0.4/s Avg:   595 Min:   595 Max:   595 Err:     0 (0.00%)

.

======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 78, in test_run_positive_flow

    self.assertLessEqual(

  File "C:\Python310\lib\unittest\case.py", line 1236, in assertLessEqual

    if not a <= b:

TypeError: '<=' not supported between instances of 'int' and 'method'



----------------------------------------------------------------------

Ran 24 tests in 25.295s



FAILED (errors=1)

operator: core/RemoveDecorator, occurrence: 6
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -55,8 +55,6 @@
             return (
                 self.java_wrapped_element.overallStats.sampleTime().perc99().toMillis()
             )
-
-        @property
         def sample_time_max_milliseconds(self):
             """returns the max of sample times in milliseconds"""
             return self.java_wrapped_element.overallStats.sampleTime().max().toMillis()
Warning: Nashorn engine is planned to be removed from a future JDK release

...... =      1 in 00:00:01 =    1.5/s Avg:   595 Min:   595 Max:   595 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. =    341 in 00:00:04 =   78.9/s Avg:   212 Min:   142 Max:  1100 Err:     0 (0.00%)

E...... +      1 in 00:00:03 =    0.4/s Avg:   588 Min:   588 Max:   588 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

 =      1 in 00:00:03 =    0.4/s Avg:   588 Min:   588 Max:   588 Err:     0 (0.00%)

.

======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 64, in test_run_positive_flow

    self.assertLessEqual(

  File "C:\Python310\lib\unittest\case.py", line 1236, in assertLessEqual

    if not a <= b:

TypeError: '<=' not supported between instances of 'int' and 'method'



----------------------------------------------------------------------

Ran 24 tests in 24.561s



FAILED (errors=1)

operator: core/RemoveDecorator, occurrence: 7
--- mutation diff ---
--- asrc\pymeter\api\config.py
+++ bsrc\pymeter\api\config.py
@@ -60,8 +60,6 @@
         def sample_time_max_milliseconds(self):
             """returns the max of sample times in milliseconds"""
             return self.java_wrapped_element.overallStats.sampleTime().max().toMillis()
-
-        @property
         def duration_milliseconds(self):
             """returns the max of sample times in milliseconds"""
             return self.java_wrapped_element.duration().toMillis()
Warning: Nashorn engine is planned to be removed from a future JDK release

...... =      1 in 00:00:01 =    1.5/s Avg:   635 Min:   635 Max:   635 Err:     0 (0.00%)

......... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. =    386 in 00:00:04 =   91.9/s Avg:   186 Min:   139 Max:   761 Err:     0 (0.00%)

E...... =      1 in 00:00:03 =    0.4/s Avg:   602 Min:   602 Max:   602 Err:     0 (0.00%)

E

======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 63, in test_run_positive_flow

    self.assertGreaterEqual(stats.duration_milliseconds, 3000)

  File "C:\Python310\lib\unittest\case.py", line 1248, in assertGreaterEqual

    if not a >= b:

TypeError: '>=' not supported between instances of 'method' and 'int'



======================================================================

ERROR: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 27, in test_uniform_random_timer

    self.assertGreaterEqual(stats.duration_milliseconds, 2000)

  File "C:\Python310\lib\unittest\case.py", line 1248, in assertGreaterEqual

    if not a >= b:

TypeError: '>=' not supported between instances of 'method' and 'int'



----------------------------------------------------------------------

Ran 24 tests in 24.010s



FAILED (errors=2)

operator: core/ReplaceUnaryOperator_Delete_Not, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\samplers.py
+++ bsrc\pymeter\api\samplers.py
@@ -42,7 +42,7 @@
 
         if isinstance(body, (dict, list)):
             body = json.dumps(body)
-        elif not isinstance(body, str):
+        elif  isinstance(body, str):
             raise TypeError(
                 f"Invalid type, expected `list`, 'dict', or 'str'. got {type(body)}"
             )
Warning: Nashorn engine is planned to be removed from a future JDK release

 +      1 in 00:00:01 =    0.7/s Avg:   981 Min:   981 Max:   981 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

...... =      1 in 00:00:01 =    1.5/s Avg:   628 Min:   628 Max:   628 Err:     0 (0.00%)

...E.E... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. =    397 in 00:00:05 =   80.2/s Avg:   197 Min:   140 Max:  1223 Err:     0 (0.00%)

....... =      1 in 00:00:03 =    0.4/s Avg:   619 Min:   619 Max:   619 Err:     0 (0.00%)

.

======================================================================

ERROR: test_post_http_sampler_int_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 62, in test_post_http_sampler_int_input

    ).post(1, ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 50, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

  File "jnius\jnius_export_class.pxi", line 1163, in jnius.JavaMultipleMethod.__call__

jnius.JavaException: No methods called post in us/abstracta/jmeter/javadsl/http/DslHttpSampler matching your arguments, requested: (1, <org.apache.http.entity.ContentType at 0x24fe40c6c50 jclass=org/apache/http/entity/ContentType jself=<LocalRef obj=0x-1e230220 at 0x24fe40664b0>>), available: ['(Ljava/util/function/Function;Lorg/apache/http/entity/ContentType;)Lus/abstracta/jmeter/javadsl/http/DslHttpSampler;', '(Ljava/lang/String;Lorg/apache/http/entity/ContentType;)Lus/abstracta/jmeter/javadsl/http/DslHttpSampler;']



======================================================================

ERROR: test_post_http_sampler_str_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 50, in test_post_http_sampler_str_input

    ).post('{"name": "John Doe"}', ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 46, in post

    raise TypeError(

TypeError: Invalid type, expected `list`, 'dict', or 'str'. got <class 'str'>



----------------------------------------------------------------------

Ran 24 tests in 23.732s



FAILED (errors=2)

operator: core/ReplaceUnaryOperator_Delete_Not, occurrence: 1
--- mutation diff ---
--- asrc\pymeter\api\samplers.py
+++ bsrc\pymeter\api\samplers.py
@@ -54,7 +54,7 @@
 
     def header(self, key: str, value: str) -> Self:
         """append header to request"""
-        if not isinstance(key, str):
+        if  isinstance(key, str):
             raise TypeError("key field must be a string")
         if not isinstance(value, str):
             raise TypeError("value field must be a string")
Warning: Nashorn engine is planned to be removed from a future JDK release

 +      1 in 00:00:01 =    0.7/s Avg:  1086 Min:  1086 Max:  1086 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0

. +      1 in 00:00:01 =    1.5/s Avg:   631 Min:   631 Max:   631 Err:     0 (0.00%) Active: 2 Started: 2 Finished: 0

.EEEF =      1 in 00:00:01 =    1.5/s Avg:   631 Min:   631 Max:   631 Err:     0 (0.00%)

.E....... =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

. =    408 in 00:00:04 =   98.0/s Avg:   174 Min:   140 Max:   642 Err:     0 (0.00%)

....... =      1 in 00:00:03 =    0.4/s Avg:   613 Min:   613 Max:   613 Err:     0 (0.00%)

.

======================================================================

ERROR: test_http_2_headers (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 90, in test_http_2_headers

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 58, in header

    raise TypeError("key field must be a string")

TypeError: key field must be a string



======================================================================

ERROR: test_http_duplicated_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 105, in test_http_duplicated_header

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 58, in header

    raise TypeError("key field must be a string")

TypeError: key field must be a string



======================================================================

ERROR: test_http_invalid_header_key (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 119, in test_http_invalid_header_key

    ).header(1, "aa")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 61, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

  File "jnius\jnius_export_class.pxi", line 1163, in jnius.JavaMultipleMethod.__call__

jnius.JavaException: No methods called header in us/abstracta/jmeter/javadsl/http/DslHttpSampler matching your arguments, requested: (1, 'aa'), available: ['(Ljava/lang/String;Ljava/util/function/Function;)Lus/abstracta/jmeter/javadsl/http/DslBaseHttpSampler;', '(Ljava/lang/String;Ljava/lang/String;)Lus/abstracta/jmeter/javadsl/http/DslBaseHttpSampler;']



======================================================================

ERROR: test_http_valid_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 77, in test_http_valid_header

    ).header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 58, in header

    raise TypeError("key field must be a string")

TypeError: key field must be a string



======================================================================

FAIL: test_http_invalid_header_value (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 140, in test_http_invalid_header_value

    self.assertEqual(

AssertionError: 'key field must be a string' != 'value field must be a string'

- key field must be a string

? ^ -

+ value field must be a string

? ^^^^





----------------------------------------------------------------------

Ran 24 tests in 25.079s



FAILED (failures=1, errors=4)

operator: core/ReplaceUnaryOperator_Delete_Not, occurrence: 2
--- mutation diff ---
--- asrc\pymeter\api\samplers.py
+++ bsrc\pymeter\api\samplers.py
@@ -56,7 +56,7 @@
         """append header to request"""
         if not isinstance(key, str):
             raise TypeError("key field must be a string")
-        if not isinstance(value, str):
+        if  isinstance(value, str):
             raise TypeError("value field must be a string")
         self._http_sampler_instance = self.java_wrapped_element.header(key, value)
         return self
timeout
operator: core/AddNot, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\samplers.py
+++ bsrc\pymeter\api\samplers.py
@@ -40,7 +40,7 @@
     def post(self, body: Union[Dict, List, str], content_type: ContentType) -> Self:
         """create a post request sampler"""
 
-        if isinstance(body, (dict, list)):
+        if not isinstance(body, (dict, list)):
             body = json.dumps(body)
         elif not isinstance(body, str):
             raise TypeError(
timeout
operator: core/AddNot, occurrence: 1
--- mutation diff ---
--- asrc\pymeter\api\samplers.py
+++ bsrc\pymeter\api\samplers.py
@@ -54,7 +54,7 @@
 
     def header(self, key: str, value: str) -> Self:
         """append header to request"""
-        if not isinstance(key, str):
+        if not not isinstance(key, str):
             raise TypeError("key field must be a string")
         if not isinstance(value, str):
             raise TypeError("value field must be a string")
timeout
operator: core/AddNot, occurrence: 2
--- mutation diff ---
--- asrc\pymeter\api\samplers.py
+++ bsrc\pymeter\api\samplers.py
@@ -56,7 +56,7 @@
         """append header to request"""
         if not isinstance(key, str):
             raise TypeError("key field must be a string")
-        if not isinstance(value, str):
+        if not not isinstance(value, str):
             raise TypeError("value field must be a string")
         self._http_sampler_instance = self.java_wrapped_element.header(key, value)
         return self
timeout
operator: core/ExceptionReplacer, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\samplers.py
+++ bsrc\pymeter\api\samplers.py
@@ -5,7 +5,7 @@
 
 try:
     from typing import Self
-except ImportError:
+except CosmicRayTestingException:
     from typing_extensions import Self
 from pymeter.api import ThreadGroupChildElement, ContentType
 
EEEEEE

======================================================================

ERROR: utests.test_postprocessors (unittest.loader._FailedTest)

----------------------------------------------------------------------

ImportError: Failed to import test module: utests.test_postprocessors

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 7, in <module>

    from typing import Self

ImportError: cannot import name 'Self' from 'typing' (C:\Python310\lib\typing.py)



During handling of the above exception, another exception occurred:



Traceback (most recent call last):

  File "C:\Python310\lib\unittest\loader.py", line 436, in _find_test_path

    module = self._get_module_from_name(name)

  File "C:\Python310\lib\unittest\loader.py", line 377, in _get_module_from_name

    __import__(name)

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 8, in <module>

    from pymeter.api.samplers import DummySampler, HttpSampler

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 8, in <module>

    except CosmicRayTestingException:

NameError: name 'CosmicRayTestingException' is not defined





======================================================================

ERROR: utests.test_reporter (unittest.loader._FailedTest)

----------------------------------------------------------------------

ImportError: Failed to import test module: utests.test_reporter

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 7, in <module>

    from typing import Self

ImportError: cannot import name 'Self' from 'typing' (C:\Python310\lib\typing.py)



During handling of the above exception, another exception occurred:



Traceback (most recent call last):

  File "C:\Python310\lib\unittest\loader.py", line 436, in _find_test_path

    module = self._get_module_from_name(name)

  File "C:\Python310\lib\unittest\loader.py", line 377, in _get_module_from_name

    __import__(name)

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 8, in <module>

    from pymeter.api.samplers import HttpSampler

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 8, in <module>

    except CosmicRayTestingException:

NameError: name 'CosmicRayTestingException' is not defined





======================================================================

ERROR: utests.test_sampler (unittest.loader._FailedTest)

----------------------------------------------------------------------

ImportError: Failed to import test module: utests.test_sampler

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 7, in <module>

    from typing import Self

ImportError: cannot import name 'Self' from 'typing' (C:\Python310\lib\typing.py)



During handling of the above exception, another exception occurred:



Traceback (most recent call last):

  File "C:\Python310\lib\unittest\loader.py", line 436, in _find_test_path

    module = self._get_module_from_name(name)

  File "C:\Python310\lib\unittest\loader.py", line 377, in _get_module_from_name

    __import__(name)

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 5, in <module>

    from pymeter.api.samplers import HttpSampler

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 8, in <module>

    except CosmicRayTestingException:

NameError: name 'CosmicRayTestingException' is not defined





======================================================================

ERROR: utests.test_test_plan (unittest.loader._FailedTest)

----------------------------------------------------------------------

ImportError: Failed to import test module: utests.test_test_plan

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 7, in <module>

    from typing import Self

ImportError: cannot import name 'Self' from 'typing' (C:\Python310\lib\typing.py)



During handling of the above exception, another exception occurred:



Traceback (most recent call last):

  File "C:\Python310\lib\unittest\loader.py", line 436, in _find_test_path

    module = self._get_module_from_name(name)

  File "C:\Python310\lib\unittest\loader.py", line 377, in _get_module_from_name

    __import__(name)

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 14, in <module>

    from pymeter.api.samplers import DummySampler, HttpSampler

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 8, in <module>

    except CosmicRayTestingException:

NameError: name 'CosmicRayTestingException' is not defined





======================================================================

ERROR: utests.test_thread_group (unittest.loader._FailedTest)

----------------------------------------------------------------------

ImportError: Failed to import test module: utests.test_thread_group

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 7, in <module>

    from typing import Self

ImportError: cannot import name 'Self' from 'typing' (C:\Python310\lib\typing.py)



During handling of the above exception, another exception occurred:



Traceback (most recent call last):

  File "C:\Python310\lib\unittest\loader.py", line 436, in _find_test_path

    module = self._get_module_from_name(name)

  File "C:\Python310\lib\unittest\loader.py", line 377, in _get_module_from_name

    __import__(name)

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 6, in <module>

    from pymeter.api.samplers import HttpSampler

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 8, in <module>

    except CosmicRayTestingException:

NameError: name 'CosmicRayTestingException' is not defined





======================================================================

ERROR: utests.test_timers (unittest.loader._FailedTest)

----------------------------------------------------------------------

ImportError: Failed to import test module: utests.test_timers

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 7, in <module>

    from typing import Self

ImportError: cannot import name 'Self' from 'typing' (C:\Python310\lib\typing.py)



During handling of the above exception, another exception occurred:



Traceback (most recent call last):

  File "C:\Python310\lib\unittest\loader.py", line 436, in _find_test_path

    module = self._get_module_from_name(name)

  File "C:\Python310\lib\unittest\loader.py", line 377, in _get_module_from_name

    __import__(name)

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 4, in <module>

    from pymeter.api.samplers import HttpSampler

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 8, in <module>

    except CosmicRayTestingException:

NameError: name 'CosmicRayTestingException' is not defined





----------------------------------------------------------------------

Ran 6 tests in 0.002s



FAILED (errors=6)

operator: core/ReplaceUnaryOperator_Delete_Not, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\__init__.py
+++ bsrc\pymeter\api\__init__.py
@@ -239,7 +239,7 @@
     @property
     def java_wrapped_element(self):
         """retrieves the java element wrapped in the python object by class name"""
-        if not self.__class__.wrapped_instance_name:
+        if  self.__class__.wrapped_instance_name:
             self.__class__.wrapped_instance_name = BaseJMeterClass.pattern.sub(
                 "_", self.__class__.__name__
             ).lower()
EEEE..EEE.EEE.EEEEEEE.EE

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 17, in test_http_sampler

    http_sampler = HttpSampler(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 36, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 36, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'JsonExtractor' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 17, in test_http_sampler

    tg = ThreadGroupWithRampUpAndHold(2, 1, 2, http_sampler, name="Some Name")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 171, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 171, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_2_headers (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 90, in test_http_2_headers

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 61, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_duplicated_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 105, in test_http_duplicated_header

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 61, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 15, in test_http_sampler

    tg1 = ThreadGroupSimple(1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 143, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 143, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_valid_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 77, in test_http_valid_header

    ).header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 61, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_post_http_sampler_dict_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 28, in test_post_http_sampler_dict_input

    ).post({"var1": 1}, ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 50, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_post_http_sampler_list_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 39, in test_post_http_sampler_list_input

    ).post([1, 2, 3, 4], ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 50, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_post_http_sampler_str_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 50, in test_post_http_sampler_str_input

    ).post('{"name": "John Doe"}', ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 50, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_empty_test_plan (utests.test_test_plan.TestTestPlanClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 24, in test_creation_of_empty_test_plan

    python_test_plan_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'TestPlan' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 33, in test_creation_of_test_plan_with_valid_children

    test_plan = TestPlan(tg1, tg2)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 75, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 75, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'ThreadGroupWithRampUpAndHold' object has no attribute '_None_instance'



======================================================================

ERROR: test_run_empty_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 90, in test_run_empty_flow

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 75, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 75, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'ThreadGroupWithRampUpAndHold' object has no attribute '_None_instance'



======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 56, in test_run_positive_flow

    tg1 = ThreadGroupWithRampUpAndHold(20, 1, 3, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 171, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 171, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 99, in test_run_validate_order

    tg_setup = SetupThreadGroup(dummy_sampler_for_setup)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 108, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 108, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'DummySampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_empty_setup_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 24, in test_creation_of_empty_setup_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'SetupThreadGroup' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_empty_teardown_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 32, in test_creation_of_empty_teardown_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'TeardownThreadGroup' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_empty_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 16, in test_creation_of_empty_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'ThreadGroupWithRampUpAndHold' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_thread_group_with_valid_children (utests.test_thread_group.TestThreadGroupClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 40, in test_creation_of_thread_group_with_valid_children

    python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 171, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 171, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 15, in test_uniform_random_timer

    http_sampler = HttpSampler("Echo", "https://postman-echo.com/get?var=1", timer)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 36, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 36, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'UniformRandomTimer' object has no attribute '_None_instance'



----------------------------------------------------------------------

Ran 24 tests in 2.383s



FAILED (errors=19)

operator: core/AddNot, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\__init__.py
+++ bsrc\pymeter\api\__init__.py
@@ -239,7 +239,7 @@
     @property
     def java_wrapped_element(self):
         """retrieves the java element wrapped in the python object by class name"""
-        if not self.__class__.wrapped_instance_name:
+        if not not self.__class__.wrapped_instance_name:
             self.__class__.wrapped_instance_name = BaseJMeterClass.pattern.sub(
                 "_", self.__class__.__name__
             ).lower()
EEEE..EEE.EEE.EEEEEEE.EE

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 17, in test_http_sampler

    http_sampler = HttpSampler(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 36, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 36, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'JsonExtractor' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 17, in test_http_sampler

    tg = ThreadGroupWithRampUpAndHold(2, 1, 2, http_sampler, name="Some Name")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 171, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 171, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_2_headers (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 90, in test_http_2_headers

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 61, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_duplicated_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 105, in test_http_duplicated_header

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 61, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 15, in test_http_sampler

    tg1 = ThreadGroupSimple(1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 143, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 143, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_http_valid_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 77, in test_http_valid_header

    ).header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 61, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_post_http_sampler_dict_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 28, in test_post_http_sampler_dict_input

    ).post({"var1": 1}, ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 50, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_post_http_sampler_list_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 39, in test_post_http_sampler_list_input

    ).post([1, 2, 3, 4], ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 50, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_post_http_sampler_str_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 50, in test_post_http_sampler_str_input

    ).post('{"name": "John Doe"}', ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 50, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_empty_test_plan (utests.test_test_plan.TestTestPlanClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 24, in test_creation_of_empty_test_plan

    python_test_plan_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'TestPlan' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 33, in test_creation_of_test_plan_with_valid_children

    test_plan = TestPlan(tg1, tg2)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 75, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 75, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'ThreadGroupWithRampUpAndHold' object has no attribute '_None_instance'



======================================================================

ERROR: test_run_empty_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 90, in test_run_empty_flow

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 75, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 75, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'ThreadGroupWithRampUpAndHold' object has no attribute '_None_instance'



======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 56, in test_run_positive_flow

    tg1 = ThreadGroupWithRampUpAndHold(20, 1, 3, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 171, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 171, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 99, in test_run_validate_order

    tg_setup = SetupThreadGroup(dummy_sampler_for_setup)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 108, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 108, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'DummySampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_empty_setup_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 24, in test_creation_of_empty_setup_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'SetupThreadGroup' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_empty_teardown_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 32, in test_creation_of_empty_teardown_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'TeardownThreadGroup' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_empty_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 16, in test_creation_of_empty_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'ThreadGroupWithRampUpAndHold' object has no attribute '_None_instance'



======================================================================

ERROR: test_creation_of_thread_group_with_valid_children (utests.test_thread_group.TestThreadGroupClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 40, in test_creation_of_thread_group_with_valid_children

    python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 171, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 171, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'HttpSampler' object has no attribute '_None_instance'



======================================================================

ERROR: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 15, in test_uniform_random_timer

    http_sampler = HttpSampler("Echo", "https://postman-echo.com/get?var=1", timer)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 36, in __init__

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 36, in <listcomp>

    *[c.java_wrapped_element for c in children]

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 247, in java_wrapped_element

    return object.__getattribute__(

AttributeError: 'UniformRandomTimer' object has no attribute '_None_instance'



----------------------------------------------------------------------

Ran 24 tests in 2.012s



FAILED (errors=19)

operator: core/NumberReplacer, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\__init__.py
+++ bsrc\pymeter\api\__init__.py
@@ -230,7 +230,7 @@
 
         return (
             str(type(self.java_wrapped_element))
-            .split("class ")[1]
+            .split("class ")[ 2]
             .split("'jnius.reflect.")[1]
             .split("'")[0]
             .strip()
timeout
operator: core/NumberReplacer, occurrence: 1
--- mutation diff ---
--- asrc\pymeter\api\__init__.py
+++ bsrc\pymeter\api\__init__.py
@@ -230,7 +230,7 @@
 
         return (
             str(type(self.java_wrapped_element))
-            .split("class ")[1]
+            .split("class ")[ 0]
             .split("'jnius.reflect.")[1]
             .split("'")[0]
             .strip()
timeout
operator: core/NumberReplacer, occurrence: 2
--- mutation diff ---
--- asrc\pymeter\api\__init__.py
+++ bsrc\pymeter\api\__init__.py
@@ -231,7 +231,7 @@
         return (
             str(type(self.java_wrapped_element))
             .split("class ")[1]
-            .split("'jnius.reflect.")[1]
+            .split("'jnius.reflect.")[ 2]
             .split("'")[0]
             .strip()
         )
timeout
operator: core/NumberReplacer, occurrence: 3
--- mutation diff ---
--- asrc\pymeter\api\__init__.py
+++ bsrc\pymeter\api\__init__.py
@@ -231,7 +231,7 @@
         return (
             str(type(self.java_wrapped_element))
             .split("class ")[1]
-            .split("'jnius.reflect.")[1]
+            .split("'jnius.reflect.")[ 0]
             .split("'")[0]
             .strip()
         )
timeout
operator: core/NumberReplacer, occurrence: 4
--- mutation diff ---
--- asrc\pymeter\api\__init__.py
+++ bsrc\pymeter\api\__init__.py
@@ -232,7 +232,7 @@
             str(type(self.java_wrapped_element))
             .split("class ")[1]
             .split("'jnius.reflect.")[1]
-            .split("'")[0]
+            .split("'")[ 1]
             .strip()
         )
 
timeout
operator: core/NumberReplacer, occurrence: 5
--- mutation diff ---
--- asrc\pymeter\api\__init__.py
+++ bsrc\pymeter\api\__init__.py
@@ -232,7 +232,7 @@
             str(type(self.java_wrapped_element))
             .split("class ")[1]
             .split("'jnius.reflect.")[1]
-            .split("'")[0]
+            .split("'")[ -1]
             .strip()
         )
 
timeout
operator: core/RemoveDecorator, occurrence: 0
--- mutation diff ---
--- asrc\pymeter\api\__init__.py
+++ bsrc\pymeter\api\__init__.py
@@ -235,8 +235,6 @@
             .split("'")[0]
             .strip()
         )
-
-    @property
     def java_wrapped_element(self):
         """retrieves the java element wrapped in the python object by class name"""
         if not self.__class__.wrapped_instance_name:
EEEE..EEE.EEE.EEEEEEE.EE

======================================================================

ERROR: test_http_sampler (utests.test_postprocessors.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_postprocessors.py", line 17, in test_http_sampler

    http_sampler = HttpSampler(

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 35, in __init__

    self._http_sampler_instance.children(

  File "jnius\jnius_export_class.pxi", line 879, in jnius.JavaMethod.__call__

  File "jnius\jnius_conversion.pxi", line 158, in jnius.populate_args

  File "jnius\jnius_conversion.pxi", line 815, in jnius.convert_pyarray_to_java

jnius.JavaException: Invalid variable (<bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.postprocessors.JsonExtractor object at 0x0000022D0472CBE0>>,) used for L array 'Lus/abstracta/jmeter/javadsl/core/samplers/BaseSampler$SamplerChild;'



======================================================================

ERROR: test_http_sampler (utests.test_reporter.TestReporter)

create an HTML report

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_reporter.py", line 17, in test_http_sampler

    tg = ThreadGroupWithRampUpAndHold(2, 1, 2, http_sampler, name="Some Name")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 170, in __init__

    self._ramp_to_and_hold_instance.children(

  File "jnius\jnius_export_class.pxi", line 1177, in jnius.JavaMultipleMethod.__call__

  File "jnius\jnius_export_class.pxi", line 879, in jnius.JavaMethod.__call__

  File "jnius\jnius_conversion.pxi", line 158, in jnius.populate_args

  File "jnius\jnius_conversion.pxi", line 815, in jnius.convert_pyarray_to_java

jnius.JavaException: Invalid variable (<bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.samplers.HttpSampler object at 0x0000022D01BD7D60>>,) used for L array 'Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;'



======================================================================

ERROR: test_http_2_headers (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 90, in test_http_2_headers

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 61, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

AttributeError: 'function' object has no attribute 'header'



======================================================================

ERROR: test_http_duplicated_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 105, in test_http_duplicated_header

    .header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 61, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

AttributeError: 'function' object has no attribute 'header'



======================================================================

ERROR: test_http_sampler (utests.test_sampler.TestSampler)

send request to postman echo

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 15, in test_http_sampler

    tg1 = ThreadGroupSimple(1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 142, in __init__

    self._thread_group_simple_instance.children(

  File "jnius\jnius_export_class.pxi", line 1177, in jnius.JavaMultipleMethod.__call__

  File "jnius\jnius_export_class.pxi", line 879, in jnius.JavaMethod.__call__

  File "jnius\jnius_conversion.pxi", line 158, in jnius.populate_args

  File "jnius\jnius_conversion.pxi", line 815, in jnius.convert_pyarray_to_java

jnius.JavaException: Invalid variable (<bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.samplers.HttpSampler object at 0x0000022D04721630>>,) used for L array 'Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;'



======================================================================

ERROR: test_http_valid_header (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 77, in test_http_valid_header

    ).header("key1", "val1")

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 61, in header

    self._http_sampler_instance = self.java_wrapped_element.header(key, value)

AttributeError: 'function' object has no attribute 'header'



======================================================================

ERROR: test_post_http_sampler_dict_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 28, in test_post_http_sampler_dict_input

    ).post({"var1": 1}, ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 50, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

AttributeError: 'function' object has no attribute 'post'



======================================================================

ERROR: test_post_http_sampler_list_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 39, in test_post_http_sampler_list_input

    ).post([1, 2, 3, 4], ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 50, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

AttributeError: 'function' object has no attribute 'post'



======================================================================

ERROR: test_post_http_sampler_str_input (utests.test_sampler.TestSampler)

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_sampler.py", line 50, in test_post_http_sampler_str_input

    ).post('{"name": "John Doe"}', ContentType.APPLICATION_JSON)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 50, in post

    self._http_sampler_instance = self.java_wrapped_element.post(

AttributeError: 'function' object has no attribute 'post'



======================================================================

ERROR: test_creation_of_empty_test_plan (utests.test_test_plan.TestTestPlanClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 24, in test_creation_of_empty_test_plan

    python_test_plan_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_test_plan_with_valid_children (utests.test_test_plan.TestTestPlanClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 33, in test_creation_of_test_plan_with_valid_children

    test_plan = TestPlan(tg1, tg2)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 74, in __init__

    self._test_plan_instance.children(

  File "jnius\jnius_export_class.pxi", line 879, in jnius.JavaMethod.__call__

  File "jnius\jnius_conversion.pxi", line 158, in jnius.populate_args

  File "jnius\jnius_conversion.pxi", line 815, in jnius.convert_pyarray_to_java

jnius.JavaException: Invalid variable (<bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.config.ThreadGroupWithRampUpAndHold object at 0x0000022D04721630>>, <bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.config.ThreadGroupWithRampUpAndHold object at 0x0000022D04745810>>) used for L array 'Lus/abstracta/jmeter/javadsl/core/DslTestPlan$TestPlanChild;'



======================================================================

ERROR: test_run_empty_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 90, in test_run_empty_flow

    test_plan = TestPlan(tg1)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 74, in __init__

    self._test_plan_instance.children(

  File "jnius\jnius_export_class.pxi", line 879, in jnius.JavaMethod.__call__

  File "jnius\jnius_conversion.pxi", line 158, in jnius.populate_args

  File "jnius\jnius_conversion.pxi", line 815, in jnius.convert_pyarray_to_java

jnius.JavaException: Invalid variable (<bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.config.ThreadGroupWithRampUpAndHold object at 0x0000022D0471A470>>,) used for L array 'Lus/abstracta/jmeter/javadsl/core/DslTestPlan$TestPlanChild;'



======================================================================

ERROR: test_run_positive_flow (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 56, in test_run_positive_flow

    tg1 = ThreadGroupWithRampUpAndHold(20, 1, 3, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 170, in __init__

    self._ramp_to_and_hold_instance.children(

  File "jnius\jnius_export_class.pxi", line 1177, in jnius.JavaMultipleMethod.__call__

  File "jnius\jnius_export_class.pxi", line 879, in jnius.JavaMethod.__call__

  File "jnius\jnius_conversion.pxi", line 158, in jnius.populate_args

  File "jnius\jnius_conversion.pxi", line 815, in jnius.convert_pyarray_to_java

jnius.JavaException: Invalid variable (<bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.samplers.HttpSampler object at 0x0000022D0471A470>>,) used for L array 'Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;'



======================================================================

ERROR: test_run_validate_order (utests.test_test_plan.TestTestPlanClass)

should run test flow with no exceptions

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_test_plan.py", line 99, in test_run_validate_order

    tg_setup = SetupThreadGroup(dummy_sampler_for_setup)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 107, in __init__

    self._setup_thread_group_instance.children(

  File "jnius\jnius_export_class.pxi", line 1177, in jnius.JavaMultipleMethod.__call__

  File "jnius\jnius_export_class.pxi", line 879, in jnius.JavaMethod.__call__

  File "jnius\jnius_conversion.pxi", line 158, in jnius.populate_args

  File "jnius\jnius_conversion.pxi", line 815, in jnius.convert_pyarray_to_java

jnius.JavaException: Invalid variable (<bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.samplers.DummySampler object at 0x0000022D0471A470>>,) used for L array 'Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;'



======================================================================

ERROR: test_creation_of_empty_setup_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 24, in test_creation_of_empty_setup_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_empty_teardown_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 32, in test_creation_of_empty_teardown_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_empty_thread_group (utests.test_thread_group.TestThreadGroupClass)

when creating the python class, it should wrap around the correct java class

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 16, in test_creation_of_empty_thread_group

    python_thread_group_object.get_java_class_name(),

  File "C:\workspace-vscode\pymeter\src\pymeter\api\__init__.py", line 232, in get_java_class_name

    str(type(self.java_wrapped_element))

IndexError: list index out of range



======================================================================

ERROR: test_creation_of_thread_group_with_valid_children (utests.test_thread_group.TestThreadGroupClass)

When children are passed through,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_thread_group.py", line 40, in test_creation_of_thread_group_with_valid_children

    python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1, http_sampler)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\config.py", line 170, in __init__

    self._ramp_to_and_hold_instance.children(

  File "jnius\jnius_export_class.pxi", line 1177, in jnius.JavaMultipleMethod.__call__

  File "jnius\jnius_export_class.pxi", line 879, in jnius.JavaMethod.__call__

  File "jnius\jnius_conversion.pxi", line 158, in jnius.populate_args

  File "jnius\jnius_conversion.pxi", line 815, in jnius.convert_pyarray_to_java

jnius.JavaException: Invalid variable (<bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.samplers.HttpSampler object at 0x0000022D025268F0>>,) used for L array 'Lus/abstracta/jmeter/javadsl/core/threadgroups/BaseThreadGroup$ThreadGroupChild;'



======================================================================

ERROR: test_uniform_random_timer (utests.test_timers.TestTimer)

When the minimal time is 5000 milliseconds,

----------------------------------------------------------------------

Traceback (most recent call last):

  File "C:\workspace-vscode\pymeter\utests\test_timers.py", line 15, in test_uniform_random_timer

    http_sampler = HttpSampler("Echo", "https://postman-echo.com/get?var=1", timer)

  File "C:\workspace-vscode\pymeter\src\pymeter\api\samplers.py", line 35, in __init__

    self._http_sampler_instance.children(

  File "jnius\jnius_export_class.pxi", line 879, in jnius.JavaMethod.__call__

  File "jnius\jnius_conversion.pxi", line 158, in jnius.populate_args

  File "jnius\jnius_conversion.pxi", line 815, in jnius.convert_pyarray_to_java

jnius.JavaException: Invalid variable (<bound method BaseJMeterClass.java_wrapped_element of <pymeter.api.timers.UniformRandomTimer object at 0x0000022D0472FC40>>,) used for L array 'Lus/abstracta/jmeter/javadsl/core/samplers/BaseSampler$SamplerChild;'



----------------------------------------------------------------------

Ran 24 tests in 1.071s



FAILED (errors=19)

================================================ FILE: docs/requirements.txt ================================================ Sphinx == 5.2.2 sphinxcontrib-log-cabinet == 1.0.1 Pallets-Sphinx-Themes == 2.0.2 sphinx-issues == 3.0.1 sphinx-tabs == 3.4.1 typing_extensions==4.3.0 ================================================ FILE: docs/user-guide/Makefile ================================================ # Minimal makefile for Sphinx documentation # # You can set these variables from the command line, and also # from the environment for the first two. SPHINXOPTS ?= SPHINXBUILD ?= sphinx-build SOURCEDIR = source BUILDDIR = build # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) ================================================ FILE: docs/user-guide/make.bat ================================================ @ECHO OFF pushd %~dp0 REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set SOURCEDIR=source set BUILDDIR=build %SPHINXBUILD% >NUL 2>NUL if errorlevel 9009 ( echo. echo.The 'sphinx-build' command was not found. Make sure you have Sphinx echo.installed, then set the SPHINXBUILD environment variable to point echo.to the full path of the 'sphinx-build' executable. Alternatively you echo.may add the Sphinx directory to PATH. echo. echo.If you don't have Sphinx installed, grab it from echo.https://www.sphinx-doc.org/ exit /b 1 ) if "%1" == "" goto help %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% goto end :help %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% :end popd ================================================ FILE: docs/user-guide/source/api.rst ================================================ Api Documentation ================= In this section we will get into the details of the each of the features included in pymeter. The api allows you more controll over the different aspects of the load testing script. .. toctree:: :maxdepth: 1 config samplers timers reporters postprocessors assertions ================================================ FILE: docs/user-guide/source/assertions.rst ================================================ assertions --------------- .. automodule:: pymeter.api.assertions :members: :undoc-members: :show-inheritance: :exclude-members: BaseAssertions ================================================ FILE: docs/user-guide/source/conf.py ================================================ import packaging.version from pallets_sphinx_themes import get_version from pallets_sphinx_themes import ProjectLink # Project -------------------------------------------------------------- project = "pymeter" copyright = "2010 Eldad Uzman" author = "Eldad Uzman" release, version = get_version("pymeter") # General -------------------------------------------------------------- master_doc = "index" extensions = [ "sphinx.ext.autodoc", "sphinx.ext.intersphinx", "sphinxcontrib.log_cabinet", "pallets_sphinx_themes", "sphinx_issues", "sphinx_tabs.tabs", ] autodoc_typehints = "description" intersphinx_mapping = { "python": ("https://docs.python.org/3/", None), } issues_github_path = "eldaduzman/pymeter" # HTML ----------------------------------------------------------------- html_theme = "flask" html_theme_options = {"index_sidebar_logo": False} html_context = { "project_links": [ ProjectLink("PyPI Releases", "https://pypi.org/project/pymeter/"), ProjectLink("Source Code", "https://github.com/eldaduzman/pymeter"), ProjectLink("Issue Tracker", "https://github.com/eldaduzman/pymeter/issues/"), # : ("https://abstracta.github.io/jmeter-java-dsl/", None), # pyjnius: ("https://github.com/kivy/pyjnius", None), ] } html_sidebars = { "index": ["project.html", "localtoc.html", "searchbox.html", "ethicalads.html"], "**": ["localtoc.html", "relations.html", "searchbox.html", "ethicalads.html"], } singlehtml_sidebars = {"index": ["project.html", "localtoc.html", "ethicalads.html"]} html_static_path = ["_static"] html_favicon = "https://raw.githubusercontent.com/eldaduzman/pymeter/main/docs/user-guide/source/_static/pymeter-logo.png" html_logo = "https://raw.githubusercontent.com/eldaduzman/pymeter/main/docs/user-guide/source/_static/pymeter-logo.png" html_title = f"pymeter Documentation ({version})" html_show_sourcelink = False # LaTeX ---------------------------------------------------------------- latex_documents = [(master_doc, f"pymeter-{version}.tex", html_title, author, "manual")] # Local Extensions ----------------------------------------------------- def github_link(name, rawtext, text, lineno, inliner, options=None, content=None): app = inliner.document.settings.env.app release = app.config.release base_url = "https://github.com/eldaduzman/pymeter/tree/" if text.endswith(">"): words, text = text[:-1].rsplit("<", 1) words = words.strip() else: words = None if packaging.version.parse(release).is_devrelease: url = f"{base_url}main/{text}" else: url = f"{base_url}{release}/{text}" if words is None: words = url from docutils.nodes import reference from docutils.parsers.rst.roles import set_classes options = options or {} set_classes(options) node = reference(rawtext, words, refuri=url, **options) return [node], [] def setup(app): app.add_role("gh", github_link) ================================================ FILE: docs/user-guide/source/config.rst ================================================ config ============ .. automodule:: pymeter.api.config :members: :undoc-members: :show-inheritance: :exclude-members: BaseThreadGroup, BaseConfigElement, TestPlanStats ================================================ FILE: docs/user-guide/source/index.rst ================================================ .. pymeter documentation master file, created by sphinx-quickstart on Wed Sep 28 11:52:18 2022. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. Welcome to pymeter's documentation! =================================== .. image:: _static/pymeter-logo.png :align: center In this document, you can get all the information you need to get started. Pymeter delivers the ability to script and execute JMeter load test using python based on the java package `JMeter Dsl `_ .. toctree:: :maxdepth: 1 installation quickstart api Index ===== * :ref:`genindex` * :ref:`modindex` * :ref:`search` ================================================ FILE: docs/user-guide/source/installation.rst ================================================ Installation ============ Prerequisites -------------- .. list-table:: :widths: 2 10 40 50 :header-rows: 1 * - # - Item - Distribution - Link * - * - Python - CPython version 3.9 or higher - https://www.python.org/ * - * - Java - OpenJdk temurin versions 8 and 11 - https://adoptium.net/temurin/releases * - * - OS - Windows, Linux, MACOS - JAVA_HOME environment variable ------------------------------- Make sure that the `JAVA_HOME` environment variable is set correctly `read `_ .. tabs:: .. group-tab:: macOS/Linux .. code-block:: text $ echo $JAVA_HOME .. group-tab:: Windows .. code-block:: text > echo %JAVA_HOME% .. _install-activate-env: Install from pip ------------------------------- .. code-block:: text > pip install pymeter Now you can open a python shell .. code-block:: text > python >>> import pymeter You are good to go! 👍 ================================================ FILE: docs/user-guide/source/postprocessors.rst ================================================ postprocessors --------------- .. automodule:: pymeter.api.postprocessors :members: :undoc-members: :show-inheritance: :exclude-members: BasePostProcessors ================================================ FILE: docs/user-guide/source/quickstart.rst ================================================ Quickstart ============ simple example -------------- .. code-block:: python from pymeter.api.config import TestPlan, ThreadGroupSimple from pymeter.api.samplers import HttpSampler # create HTTP sampler, sends a get request to the given url http_sampler = HttpSampler("echo_get_request", "https://postman-echo.com/get?var=1") # create a thread group with 10 threads that runs for 1 iterations, give it the http sampler as a child input thread_group = ThreadGroupSimple(10, 1, http_sampler) # create a test plan with the required thread group test_plan = TestPlan(thread_group) # run the test plan and take the results stats = test_plan.run() # Assert that the 99th percentile of response time is less than 2000 milliseconds. assert ( stats.sample_time_99_percentile_milliseconds <= 2000 ), f"99th precentile should be less than 2000 milliseconds, got {stats.sample_time_99_percentile_milliseconds}" For more options, please read the `api documentation `_. ================================================ FILE: docs/user-guide/source/reporters.rst ================================================ reporters --------------- .. automodule:: pymeter.api.reporters :members: :undoc-members: :show-inheritance: :exclude-members: BaseReporter ================================================ FILE: docs/user-guide/source/samplers.rst ================================================ samplers --------------- .. automodule:: pymeter.api.samplers :members: :undoc-members: :show-inheritance: :exclude-members: BaseSampler ================================================ FILE: docs/user-guide/source/timers.rst ================================================ timers --------------- .. automodule:: pymeter.api.timers :members: :undoc-members: :show-inheritance: :exclude-members: BaseTimer ================================================ FILE: java-dependencies/pom.xml ================================================ 4.0.0 us.abstracta.jmeter java-dependecies 1.0-SNAPSHOT java-dependecies http://www.example.com UTF-8 1.7 1.7 junit junit 4.13.1 test us.abstracta.jmeter jmeter-java-dsl 1.23.3 test maven-clean-plugin 3.1.0 maven-resources-plugin 3.0.2 maven-compiler-plugin 3.8.0 maven-surefire-plugin 2.22.1 maven-jar-plugin 3.0.2 maven-install-plugin 2.5.2 maven-deploy-plugin 2.8.2 maven-site-plugin 3.7.1 maven-project-info-reports-plugin 3.0.0 ================================================ FILE: java-dependencies/src/main/java/us/abstracta/jmeter/App.java ================================================ package us.abstracta.jmeter; /** * Hello world! * */ public class App { public static void main( String[] args ) { System.out.println( "Hello World!" ); } } ================================================ FILE: java-dependencies/src/test/java/us/abstracta/jmeter/AppTest.java ================================================ package us.abstracta.jmeter; import static org.junit.Assert.assertTrue; import org.junit.Test; /** * Unit test for simple App. */ public class AppTest { /** * Rigorous Test :-) */ @Test public void shouldAnswerWithTrue() { assertTrue( true ); } } ================================================ FILE: pyproject.toml ================================================ [tool.poetry] name = "pymeter" version = "1.3.0" description = "Simple JMeter performance tests API for python" authors = ["Eldad Uzman "] license = "Apache License 2.0" readme = "README.md" packages = [ { include = "pymeter", from = "src" } ] include = [ { path = "src/pymeter/resources/jars/*.jar" } ] repository = "https://github.com/eldaduzman/pymeter" keywords = ["loadtesting", "qa", "JMeter", "automation", "performance", "performanetesting"] [tool.poetry.dependencies] python = "^3.8" pyjnius = "1.6.1" typing-extensions = "^4.3.0" [tool.poetry.group.dev.dependencies] pylint = "^2.15.3" mypy = "^0.971" black = "^22.8.0" perflint = "^0.7.3" coverage = "^6.4.4" cosmic-ray = "^8.3.5" tox = "^3.26.0" Sphinx = "^5.2.2" sphinxcontrib-log-cabinet = "^1.0.1" Pallets-Sphinx-Themes = "^2.0.2" sphinx-issues = "^3.0.1" sphinx-tabs = "^3.4.1" parameterized = "^0.8.1" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" ================================================ FILE: src/pymeter/__init__.py ================================================ """ Welcome to pymeter's documentation. """ import os import pathlib import jnius_config jars = os.path.join(pathlib.Path(__file__).parent.resolve(), "resources", "jars", "*") jnius_config.set_classpath(".", jars) ================================================ FILE: src/pymeter/api/__init__.py ================================================ """ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ import re from enum import Enum from jnius import autoclass content_type_java_enum = autoclass("org.apache.http.entity.ContentType") class ContentType(Enum): """http content types""" APPLICATION_JSON = content_type_java_enum.APPLICATION_JSON APPLICATION_ATOM_XML = content_type_java_enum.APPLICATION_ATOM_XML APPLICATION_FORM_URLENCODED = content_type_java_enum.APPLICATION_FORM_URLENCODED APPLICATION_OCTET_STREAM = content_type_java_enum.APPLICATION_OCTET_STREAM APPLICATION_SVG_XML = content_type_java_enum.APPLICATION_SVG_XML APPLICATION_XHTML_XML = content_type_java_enum.APPLICATION_XHTML_XML APPLICATION_XML = content_type_java_enum.APPLICATION_XML MULTIPART_FORM_DATA = content_type_java_enum.MULTIPART_FORM_DATA TEXT_HTML = content_type_java_enum.TEXT_HTML TEXT_PLAIN = content_type_java_enum.TEXT_PLAIN TEXT_XML = content_type_java_enum.TEXT_XML WILDCARD = content_type_java_enum.WILDCARD def get_mime_type(self) -> str: """this method is for unittests only""" if self.name == "APPLICATION_FORM_URLENCODED": return 'application/x-www-form-urlencoded' if self.name == "WILDCARD": return "*/*" arr = self.name.lower().split("_") if 'xml' in arr: return f"{arr[0]}/{'+'.join(arr[1:])}" return f"{arr[0]}/{'-'.join(arr[1:])}" class BaseJMeterClass: """base class for all JMeter elements""" pattern = re.compile(r"(? None: self._response_assertion_instance = ( ResponseAssertion.jmeter_class.responseAssertion() ) super().__init__() def contains_substrings(self, *strings_to_look): """assert that the response contains string the given strings""" self._response_assertion_instance = ( self._response_assertion_instance.containsSubstrings(*strings_to_look) ) return self ================================================ FILE: src/pymeter/api/config.py ================================================ """ The config module contain classes that define the overall structure of the test script. Here we will define the overall plan, the setup and teardown processes and the load shapes that the test script generate. example - 1: -------------- In this example we use the standard python unittest module with setup and teardown, The test case it self will rump up 10 threads in 1 second and hold the load for additional 10 seconds. Note that the setup and teardown code is executed outside of JMeter's context in this example. .. code-block:: python from unittest import TestCase, main from pymeter.api.config import TestPlan, ThreadGroupWithRampUpAndHold from pymeter.api.samplers import HttpSampler class TestTestPlanClass(TestCase): @classmethod def setUpClass(cls): print("setUpClass") def test_case_1(self): # create HTTP sampler, sends a get request to the given url http_sampler = HttpSampler("echo_get_request", "https://postman-echo.com/get?var=1") # create a thread group that will rump up 10 threads in 1 second and # hold the load for additional 10 seconds, give it the http sampler as a child input thread_group_main = ThreadGroupWithRampUpAndHold(10, 1, 10, http_sampler) # create a test plan with the required thread group test_plan = TestPlan(thread_group_main) # run the test plan and take the results stats = test_plan.run() self.assertLess(stats.sample_time_99_percentile_milliseconds, 2000) @classmethod def tearDownClass(cls): print("tearDownClass") example - 2: -------------- If for some reason it is needed for you to run the setup and teardown code from with in the JMeter context, here's how you can do it: .. code-block:: python from pymeter.api.config import TestPlan, ThreadGroupWithRampUpAndHold, SetupThreadGroup, TeardownThreadGroup from pymeter.api.samplers import HttpSampler # create HTTP sampler, sends a get request to the given url http_sampler1 = HttpSampler("echo_get_request", "https://postman-echo.com/get?var=1") http_sampler2 = HttpSampler("echo_get_request", "https://postman-echo.com/get?var=2") http_sampler3 = HttpSampler("echo_get_request", "https://postman-echo.com/get?var=3") # create a setup thread group thread_group_setup = SetupThreadGroup(http_sampler1) # create a thread group that will rump up 10 threads in 1 second and # hold the load for additional 10 seconds, give it the http sampler as a child input thread_group_main = ThreadGroupWithRampUpAndHold(10, 1,10, http_sampler2) # create a teardown thread group thread_group_setup = TeardownThreadGroup(http_sampler3) # create a test plan with the required thread group test_plan = TestPlan(thread_group_setup, thread_group_main, thread_group_setup) # run the test plan and take the results stats = test_plan.run() # Assert that the 99th percentile of response time is less than 2000 milliseconds. assert ( stats.sample_time_99_percentile_milliseconds <= 2000 ), f"99th precentile should be less than 2000 milliseconds, got {stats.sample_time_99_percentile_milliseconds}" example - 3: -------------- We can use a `CsvDataset` to append a unique dataset to our test elements, In this example, we will generate unique data for our entire test plan: .. code-block:: python from pymeter.api.config import TestPlan, ThreadGroupSimple, CsvDataset from pymeter.api.samplers import HttpSampler from pymeter.api.timers import ConstantTimer timer = ConstantTimer(2000) csv_data_set = CsvDataset("playground/file.csv") http_sampler1 = HttpSampler( "Echo_${id}", "https://postman-echo.com/get?var=${id}", timer ) thread_group1 = ThreadGroupSimple(3, 1) thread_group1.children(http_sampler1) http_sampler2 = HttpSampler("Echo_${id}", "https://postman-echo.com/get?var=do", timer) thread_group2 = ThreadGroupSimple(3, 1, http_sampler2) test_plan = TestPlan(thread_group1, thread_group2, csv_data_set) stats = test_plan.run() example - 4: -------------- We can create vars from with in JMeters context using the `Vars` class .. code-block:: python from pymeter.api.config import TestPlan, ThreadGroupSimple, Vars from pymeter.api.samplers import HttpSampler from pymeter.api.timers import ConstantTimer from pymeter.api.reporters import HtmlReporter jmeter_variables = Vars(id1="value1", id2="value2") html_reporter = HtmlReporter() timer = ConstantTimer(2000) http_sampler1 = HttpSampler( "Echo_${id1}", "https://postman-echo.com/get?var=${id1}", timer ) thread_group1 = ThreadGroupSimple(3, 1) thread_group1.children(http_sampler1) http_sampler2 = HttpSampler("Echo_${id2}", "https://postman-echo.com/get?var=do", timer) thread_group2 = ThreadGroupSimple(3, 1, http_sampler2) test_plan = TestPlan(thread_group1, thread_group2, html_reporter, jmeter_variables) stats = test_plan.run() We can also set a single variable using the `set` method .. code-block:: python from pymeter.api.config import Vars jmeter_variables = Vars(id1="value1", id2="value2") jmeter_variables.set("id1", "v2") example - 5: -------------- We Can also generate data for each thread group: .. code-block:: python from pymeter.api.config import TestPlan, ThreadGroupSimple, CsvDataset from pymeter.api.samplers import HttpSampler from pymeter.api.timers import ConstantTimer timer = ConstantTimer(2000) csv_data_set1 = CsvDataset("playground/file1.csv") csv_data_set2 = CsvDataset("playground/file2.csv") http_sampler1 = HttpSampler( "Echo_${id}", "https://postman-echo.com/get?var=${id}", timer ) thread_group1 = ThreadGroupSimple(3, 1) thread_group1.children(http_sampler1, csv_data_set1) http_sampler2 = HttpSampler("Echo_${id}", "https://postman-echo.com/get?var=do", timer) thread_group2 = ThreadGroupSimple(3, 1, http_sampler2, csv_data_set2) test_plan = TestPlan(thread_group1, thread_group2) stats = test_plan.run() Classes ------------- """ import os from jnius import JavaException from pymeter.api import ( ChildrenAreNotAllowed, TestPlanChildElement, ThreadGroupChildElement, ) class BaseConfigElement(TestPlanChildElement): """base class for all config elements""" class Vars(TestPlanChildElement): """Vars are key value pairs""" def __init__(self, **variables) -> None: self._vars_instance = TestPlanChildElement.jmeter_class.vars() for key, value in variables.items(): self.set(key, value) super().__init__() def children(self, *children): raise ChildrenAreNotAllowed("Cant append children to vars") def set(self, key: str, value: str): """Sets a single key value pair""" if not isinstance(key, str): raise TypeError("Keys must be strings") self._vars_instance.set(key, str(value)) return self class CsvDataset(TestPlanChildElement, ThreadGroupChildElement): """ csv data set allows you to append unique data set to samplers """ def __init__(self, csv_file: str) -> None: if not os.path.exists(csv_file): raise FileNotFoundError(f"Couldn't find file {csv_file}") self._csv_dataset_instance = TestPlanChildElement.jmeter_class.csvDataSet( csv_file ) super().__init__() def children(self, *children): raise ChildrenAreNotAllowed("Cant append children to a csv_data_set") class TestPlan(BaseConfigElement): """ This is the object that will call on the invocation of the test in the JMeter engine. """ class TestPlanStats(BaseConfigElement): """test stats""" def __init__(self, java_instance) -> None: self._test_plan_stats_instance = java_instance super().__init__() @property def sample_time_mean_milliseconds(self): """returns the mean of sample times in milliseconds""" return self.java_wrapped_element.overallStats.sampleTime().mean().toMillis() @property def sample_time_min_milliseconds(self): """returns the min of sample times in milliseconds""" return self.java_wrapped_element.overallStats.sampleTime().min().toMillis() @property def sample_time_median_milliseconds(self): """returns the median of sample times in milliseconds""" return ( self.java_wrapped_element.overallStats.sampleTime().median().toMillis() ) @property def sample_time_90_percentile_milliseconds(self): """returns the 90th percentile of sample times in milliseconds""" return ( self.java_wrapped_element.overallStats.sampleTime().perc90().toMillis() ) @property def sample_time_95_percentile_milliseconds(self): """returns the 95th percentile of sample times in milliseconds""" return ( self.java_wrapped_element.overallStats.sampleTime().perc95().toMillis() ) @property def sample_time_99_percentile_milliseconds(self): """returns the 99th percentile of sample times in milliseconds""" return ( self.java_wrapped_element.overallStats.sampleTime().perc99().toMillis() ) @property def sample_time_max_milliseconds(self): """returns the max of sample times in milliseconds""" return self.java_wrapped_element.overallStats.sampleTime().max().toMillis() @property def duration_milliseconds(self): """returns the max of sample times in milliseconds""" return self.java_wrapped_element.duration().toMillis() def __init__(self, *children: TestPlanChildElement) -> None: self._test_plan_instance = BaseConfigElement.jmeter_class.testPlan() self.children(*children) super().__init__() def children(self, *children): if not all(isinstance(c, TestPlanChildElement) for c in children): raise TypeError("only takes children of type `TestPlanChildElement`") return super().children(*children) def run(self): """ *run()* will execute the test plan code and return an object with aggregated results. This method is **blocking** and therefore the entire program will hang until the method is completed. By default, run prints stats to the stdio, for other reporting options please do check the `reporters `_ page """ try: return TestPlan.TestPlanStats(self._test_plan_instance.run()) except JavaException as java_exception: print("\n\t at ".join(java_exception.stacktrace)) raise java_exception class BaseThreadGroup(BaseConfigElement): """base class for all thread groups""" def __init__(self, *children: ThreadGroupChildElement) -> None: self.children(*children) super().__init__() def children(self, *children): if not all(isinstance(c, ThreadGroupChildElement) for c in children): raise TypeError("only takes children of type `ThreadGroupChildElement`") return super().children(*children) class SetupThreadGroup(BaseThreadGroup): """thread group for setting up test from within the context of JMeter""" def __init__(self, *children: ThreadGroupChildElement) -> None: self._setup_thread_group_instance = ( BaseConfigElement.jmeter_class.setupThreadGroup() ) super().__init__(*children) class TeardownThreadGroup(BaseThreadGroup): """thread group for tearing down test from within the context of JMeter""" def __init__(self, *children: ThreadGroupChildElement) -> None: self._teardown_thread_group_instance = ( BaseConfigElement.jmeter_class.teardownThreadGroup() ) super().__init__(*children) class ThreadGroupSimple(BaseThreadGroup): """ Thread group defined by number of threads and number of iterations """ def __init__( self, number_of_threads: int, iterations: int, *children: ThreadGroupChildElement, name: str = "Thread Group", ) -> None: self._thread_group_simple_instance = BaseConfigElement.jmeter_class.threadGroup( name, number_of_threads, iterations ) super().__init__(*children) class ThreadGroupWithRampUpAndHold(BaseThreadGroup): """Thread group that rumps up a number of thread in a given number of seconds and then holds the load for a given number of seconds.""" def __init__( self, number_of_threads: int, rampup_time_seconds: float, holdup_time_seconds: float, *children, name: str = "Thread Group", ) -> None: self._thread_group_with_ramp_up_and_hold_instance = ( BaseConfigElement.jmeter_class.threadGroup(name) ) self._ramp_to_and_hold_instance = ( self._thread_group_with_ramp_up_and_hold_instance.rampToAndHold( number_of_threads, BaseConfigElement.java_duration.ofSeconds(rampup_time_seconds), BaseConfigElement.java_duration.ofSeconds(holdup_time_seconds), ) ) super().__init__(*children) ================================================ FILE: src/pymeter/api/postprocessors.py ================================================ """ Post processors are attached to samplers and are executed after the parent sampler gets executed. The most common use case for a post-processor is to add value on the response coming from the sampler. example - 1: -------------- *Correlation* is when the response (or some parts of it) of one sampler is used in subsequent samplers. Lets look at an example to how we can do that with the JsonExtractor post-processor .. code-block:: python # Json extractor will take the value stored in the json paht args->var and place it in a variable called `variable` json_extractor = JsonExtractor("variable", "args.var") http_sampler = HttpSampler( "Echo", "https://postman-echo.com/get?var=1", json_extractor ) # The extracted value is now used to define the name of the dummy sampler. dummy_sampler = DummySampler("dummy ${variable}", "hi dummy") thread_group = ThreadGroupSimple(1, 1, http_sampler, dummy_sampler) test_plan = TestPlan(thread_group) test_plan.run() """ from pymeter.api import ChildrenAreNotAllowed, ThreadGroupChildElement class BasePostProcessors(ThreadGroupChildElement): """base class for all post processors""" def children(self, *children): raise ChildrenAreNotAllowed("Cant append children to a post processor") class JsonExtractor(BasePostProcessors): """ Extracts a value from a json response using a json path. Read more about json path `here `_ """ def __init__(self, variable_name: str, jmes_path: str) -> None: self._json_extractor_instance = BasePostProcessors.jmeter_class.jsonExtractor( variable_name, jmes_path ) super().__init__() ================================================ FILE: src/pymeter/api/reporters.py ================================================ """ Reporters represent measurements about the samplers for testers to analyze. example - 1: -------------- HTML reporter creates a JMeter html dashboard You can read more about JMeter's dashboard `here `_ By default, resulting dashboard will be saved at output/html-report-{current-date %m%d%Y%H%M%S} .. code-block:: python from pymeter.api.config import TestPlan, ThreadGroupWithRampUpAndHold from pymeter.api.reporters import HtmlReporter from pymeter.api.samplers import HttpSampler http_sampler = HttpSampler("Echo", "https://postman-echo.com/get?var=1") thread_group = ThreadGroupWithRampUpAndHold(2, 1, 2, http_sampler) html_reporter = HtmlReporter() test_plan = TestPlan(thread_group, html_reporter) test_plan.run() example - 2: -------------- You can override the directory in the object's constructor. By default, resulting dashboard will be saved at output/html-report-{current-date %m%d%Y%H%M%S} .. code-block:: python html_reporter = HtmlReporter("somefolder") """ import os from datetime import datetime from typing import Optional from pymeter.api import ChildrenAreNotAllowed, TestPlanChildElement class BaseReporter(TestPlanChildElement): """base class for all reporters""" def children(self, *children): raise ChildrenAreNotAllowed("Cant append children to a reporter") class HtmlReporter(BaseReporter): """Reports results to HTML format""" def __init__(self, directory: Optional[str] = None) -> None: if directory: path_parts = os.path.split(directory) self._html_reporter_instance = HtmlReporter.jmeter_class.htmlReporter( os.path.join(*path_parts[0 : len(path_parts) - 1]), path_parts[-1] ) else: self._html_reporter_instance = HtmlReporter.jmeter_class.htmlReporter( "output", f'html-report-{datetime.now().strftime("%m%d%Y%H%M%S")}' ) super().__init__() ================================================ FILE: src/pymeter/api/samplers.py ================================================ """ Samplers are the basic test script steps. They perform a specific action (eg, send an HTTP request) and report their time of completion, in other words, they are the subject which our test measure. example - 1: -------------- The most commonly used sampler is the HTTP sampler, lets take a look at a trivial example: In this example, our http sampler generates a get request to the postman echo server .. code-block:: python from pymeter.api.samplers import HttpSampler http_sampler = HttpSampler("echo_get_request", "https://postman-echo.com/get?var=1") example - 2: -------------- Lets add a header to the request: Here the headers name is `SomeKey` and it's value is `some_value` .. code-block:: python from pymeter.api.samplers import HttpSampler http_sampler = HttpSampler("echo_get_request", "https://postman-echo.com/get?var=1").header("SomeKey", "some_value") example - 3: -------------- Now lets send a post request: This post request has an application-json as a content type, and the body has a single value with `var1` being the key and 1 being the value .. code-block:: python from pymeter.api import ContentType from pymeter.api.samplers import HttpSampler http_sampler = ( HttpSampler("echo_get_request", "https://postman-echo.com/get?var=1") .header("SomeKey", "some_value") .post({"var1": 1}, ContentType.APPLICATION_JSON) ) example - 4: -------------- The Dummy Sampler in JMeter simulates requests to the server without actually running the requests, serving as a placeholder. .. code-block:: python from pymeter.api.samplers import DummySampler dummy_sampler = DummySampler("dummy_sampler", "hi dummy") example - 5: -------------- Lets send a post request with multipart/form-data: This post request has a multipart/form-data as a content type, and the body has a single file with `name` being the key and `path/to/file.ext` being the file_path .. code-block:: python from pymeter.api import ContentType from pymeter.api.samplers import HttpSampler http_sampler = ( HttpSampler("echo_get_request", "http://httpbin.org/post") .post_multipart_formdata("name", "path/to/file.ext", ContentType.MULTIPART_FORM_DATA) ) """ import json import os from typing import Dict, List, Union try: from typing import Self except ImportError: from typing_extensions import Self from pymeter.api import ThreadGroupChildElement, ContentType from pymeter.api.config import BaseThreadGroup class BaseSampler(ThreadGroupChildElement, BaseThreadGroup): """base class for all samplers""" class DummySampler(BaseSampler): """ The Dummy Sampler in JMeter simulates requests to the server without actually running the requests, serving as a placeholder. """ def __init__(self, name: str, response_body: str, *children) -> None: self._dummy_sampler_instance = BaseSampler.jmeter_class.dummySampler( name, response_body ) super().__init__(*children) class HttpSampler(BaseSampler): """ Http sampler sends an http requests to a target server side By default it sends HTTP get request """ def __init__(self, name: str, url: str, *children) -> None: """ Args: name (str): name to be displayed in reports url (str): Full http\\s url (e.g - https://postman-echo.com/get) """ self._http_sampler_instance = BaseSampler.jmeter_class.httpSampler(name, url) super().__init__(*children) def post(self, body: Union[Dict, List, str], content_type: ContentType) -> Self: """Create a post request sampler Args: body (Union[Dict, List, str]): body of the request content_type (ContentType): the content type of the request Returns: Self: a new sampler instance """ if isinstance(body, (dict, list)): body = json.dumps(body) elif not isinstance(body, str): raise TypeError( f"Invalid type, expected `list`, 'dict', or 'str'. got {type(body)}" ) self._http_sampler_instance = self.java_wrapped_element.post( body, content_type.value ) return self def header(self, key: str, value: str) -> Self: """Append a header to request Args: key (str): Headers name value (str): Headers value Returns: Self: a new sampler instance """ if not isinstance(key, str): raise TypeError("key field must be a string") if not isinstance(value, str): raise TypeError("value field must be a string") self._http_sampler_instance = self.java_wrapped_element.header(key, value) return self def post_multipart_formdata(self, name: str, file_path: str, content_type: ContentType) -> Self: """Create a post request sampler Args: name: the name to be assigned to the file part. file_path: path to the file to be sent in the multipart form body. content_type (ContentType): the content type of the request Returns: Self: a new sampler instance """ if not os.path.exists(file_path): raise FileNotFoundError(file_path) self._http_sampler_instance = self.java_wrapped_element.bodyFilePart( name, file_path, content_type.value ).method("POST") return self ================================================ FILE: src/pymeter/api/timers.py ================================================ """ Timers are used to pause the thread for a given amount of time. The goal is to emulate either a user think time or any other time related aspect of the test script. .. note:: Timers apply to all samplers in their scope. .. note:: Note that timers are processed before each sampler in the scope in which they are found; if there are several timers in the same scope, all the timers will be processed before each sampler. Timers are only processed in conjunction with a sampler. A timer which is not in the same scope as a sampler will not be processed at all. example - 1: -------------- This uniform random timer is used for each HTTP request in this test script .. code-block:: python from pymeter.api.config import TestPlan, ThreadGroupSimple from pymeter.api.samplers import HttpSampler from pymeter.api.timers import UniformRandomTimer timer = UniformRandomTimer(2000, 5000) http_sampler = HttpSampler("Echo", "https://postman-echo.com/get?var=1", timer) thread_group = ThreadGroupSimple(1, 1, http_sampler) test_plan = TestPlan(thread_group) stats = test_plan.run() example - 2: -------------- This uniform random timer is used for the entire thread group .. code-block:: python from pymeter.api.config import TestPlan, ThreadGroupSimple from pymeter.api.samplers import HttpSampler from pymeter.api.timers import UniformRandomTimer timer = UniformRandomTimer(2000, 5000) http_sampler = HttpSampler("Echo", "https://postman-echo.com/get?var=1") thread_group = ThreadGroupSimple(1, 1, http_sampler, timer) test_plan = TestPlan(thread_group) stats = test_plan.run() example - 3: -------------- Constant timer imposes a constant wait time. .. code-block:: python from pymeter.api.config import TestPlan, ThreadGroupSimple from pymeter.api.samplers import HttpSampler from pymeter.api.timers import ConstantTimer timer = ConstantTimer(2000) http_sampler = HttpSampler("Echo", "https://postman-echo.com/get?var=1") thread_group = ThreadGroupSimple(1, 1, http_sampler, timer) test_plan = TestPlan(thread_group) stats = test_plan.run() """ from pymeter.api import ChildrenAreNotAllowed, ThreadGroupChildElement class BaseTimer(ThreadGroupChildElement): "base class for all timers" def children(self, *children): raise ChildrenAreNotAllowed("Cant append children to a timer") class ConstantTimer(BaseTimer): """ Imposes a constant wait time. """ def __init__(self, time_milliseconds: int) -> None: self._constant_timer_instance = UniformRandomTimer.jmeter_class.constantTimer( BaseTimer.java_duration.ofMillis(time_milliseconds) ) super().__init__() class UniformRandomTimer(BaseTimer): """ Randomizes wait times with uniform distribution .. note:: UniformRandomTimer minimum and maximum parameters differ from the ones used by JMeter Uniform Random Timer element, to make it simpler for users with no JMeter background. """ def __init__(self, bottom_milliseconds: int, top_milliseconds: int) -> None: self._uniform_random_timer_instance = ( UniformRandomTimer.jmeter_class.uniformRandomTimer( BaseTimer.java_duration.ofMillis(bottom_milliseconds), BaseTimer.java_duration.ofMillis(top_milliseconds), ) ) super().__init__() ================================================ FILE: tox.ini ================================================ [tox] skipsdist = true envlist = py38,py39,py310,py311 [gh-actions] python = 3.8:py38 3.9:py39 3.10:py310 3.11:py311 [testenv] whitelist_externals = poetry allowlist_externals = poetry commands = poetry install -v poetry run coverage run -m unittest discover coverage report ================================================ FILE: utests/__init__.py ================================================ ================================================ FILE: utests/resources/test_data.csv ================================================ id 1 2 3 ================================================ FILE: utests/test_assertions.py ================================================ """unittest module""" import json import os from unittest import TestCase, main import uuid from pymeter.api import ChildrenAreNotAllowed from pymeter.api.config import TestPlan, ThreadGroupSimple from pymeter.api.postprocessors import JsonExtractor from pymeter.api.reporters import HtmlReporter from pymeter.api.samplers import DummySampler, HttpSampler from pymeter.api.assertions import ResponseAssertion class TestAssertions(TestCase): def test_assertion_object_creation(self): response_assertion = ResponseAssertion() self.assertEqual( response_assertion.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.assertions.DslResponseAssertion", ) def test_assertion_children(self): with self.assertRaises(ChildrenAreNotAllowed) as exp: ResponseAssertion().children() self.assertEqual( str(exp.exception), "Cant append children to assertion", ) def test_assertion_object_creation_with_contains_substrings(self): response_assertion = ResponseAssertion().contains_substrings("var", "args") self.assertEqual( response_assertion.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.assertions.DslResponseAssertion", ) def test_assertion_object_should_pass(self): response_assertion = ResponseAssertion().contains_substrings("var", "args") output_dir = os.path.join("output", str(uuid.uuid4())) html_reporter = HtmlReporter(output_dir) http_sampler = HttpSampler( "Echo", "https://postman-echo.com/get?var=1", response_assertion ) thread_group = ThreadGroupSimple(1, 1) thread_group.children(http_sampler) test_plan = TestPlan(thread_group, html_reporter) test_plan.run() path_to_stats = os.path.join(output_dir, "statistics.json") with open(path_to_stats, "r", encoding="utf-8") as stats_file: self.assertEqual(0, json.loads(stats_file.read())["Total"]["errorCount"]) def test_assertion_object_should_fail(self): response_assertion = ResponseAssertion().contains_substrings("notfound") output_dir = os.path.join("output", str(uuid.uuid4())) html_reporter = HtmlReporter(output_dir) http_sampler = HttpSampler( "Echo", "https://postman-echo.com/get?var=1", response_assertion ) thread_group = ThreadGroupSimple(1, 3) thread_group.children(http_sampler) test_plan = TestPlan(thread_group, html_reporter) test_plan.run() path_to_stats = os.path.join(output_dir, "statistics.json") with open(path_to_stats, "r", encoding="utf-8") as stats_file: self.assertEqual(3, json.loads(stats_file.read())["Total"]["errorCount"]) if __name__ == "__main__": main() ================================================ FILE: utests/test_csv_data_set.py ================================================ """unittest module""" import os import uuid from unittest import TestCase, main from collections import Counter from pymeter.api import ChildrenAreNotAllowed from pymeter.api.config import ( TestPlan, ThreadGroupSimple, CsvDataset, ) from pymeter.api.reporters import HtmlReporter from pymeter.api.samplers import HttpSampler CSV_FILE_PATH = "utests/resources/test_data.csv" class TestCsvDataSet(TestCase): """Testing csv data sets""" def test_csv_data_set_children(self): with self.assertRaises(ChildrenAreNotAllowed) as exp: CsvDataset(CSV_FILE_PATH).children() self.assertEqual( str(exp.exception), "Cant append children to a csv_data_set", ) def test_csv_data_set_file_not_found(self): with self.assertRaises(FileNotFoundError) as exp: CsvDataset("dosntexist.csv").children() self.assertEqual( str(exp.exception), "Couldn't find file dosntexist.csv", ) def test_data_set_for_entire_test_plan(self): output_dir = os.path.join("output", str(uuid.uuid4())) html_reporter = HtmlReporter(output_dir) csv_data_set = CsvDataset(CSV_FILE_PATH) http_sampler1 = HttpSampler( "Echo_${id}", "https://postman-echo.com/get?var=${id}" ) thread_group1 = ThreadGroupSimple(3, 1) thread_group1.children(http_sampler1) http_sampler2 = HttpSampler("Echo_${id}", "https://postman-echo.com/get?var=do") thread_group2 = ThreadGroupSimple(3, 1, http_sampler2) test_plan = TestPlan(thread_group1, thread_group2, html_reporter, csv_data_set) test_plan.run() self.assertTrue(os.path.exists(output_dir)) path_to_jtl = os.path.join(output_dir, "report.jtl") with open(path_to_jtl, "r", encoding="utf-8") as jtl_file: next(jtl_file) all_samplers = [line.split(",")[2] for line in jtl_file] cntr = Counter(all_samplers) self.assertDictEqual({"Echo_2": 2, "Echo_3": 2, "Echo_1": 2}, cntr) def test_data_set_for_only_one_thread_group(self): output_dir = os.path.join("output", str(uuid.uuid4())) html_reporter = HtmlReporter(output_dir) csv_data_set = CsvDataset(CSV_FILE_PATH) http_sampler1 = HttpSampler( "Echo_${id}", "https://postman-echo.com/get?var=${id}" ) thread_group1 = ThreadGroupSimple(3, 1) thread_group1.children(http_sampler1, csv_data_set) http_sampler2 = HttpSampler("Echo_${id}", "https://postman-echo.com/get?var=do") thread_group2 = ThreadGroupSimple(3, 1, http_sampler2) test_plan = TestPlan(thread_group1, thread_group2, html_reporter) test_plan.run() self.assertTrue(os.path.exists(output_dir)) path_to_jtl = os.path.join(output_dir, "report.jtl") with open(path_to_jtl, "r", encoding="utf-8") as jtl_file: next(jtl_file) all_samplers = [line.split(",")[2] for line in jtl_file] cntr = Counter(all_samplers) self.assertDictEqual( {"Echo_${id}": 3, "Echo_2": 1, "Echo_3": 1, "Echo_1": 1}, cntr ) def test_data_set_too_small(self): output_dir = os.path.join("output", str(uuid.uuid4())) html_reporter = HtmlReporter(output_dir) csv_data_set = CsvDataset(CSV_FILE_PATH) http_sampler1 = HttpSampler( "Echo_${id}", "https://postman-echo.com/get?var=${id}" ) thread_group = ThreadGroupSimple(6, 1) thread_group.children(http_sampler1, csv_data_set) test_plan = TestPlan(thread_group, html_reporter) test_plan.run() self.assertTrue(os.path.exists(output_dir)) path_to_jtl = os.path.join(output_dir, "report.jtl") with open(path_to_jtl, "r", encoding="utf-8") as jtl_file: next(jtl_file) all_samplers = [line.split(",")[2] for line in jtl_file] cntr = Counter(all_samplers) self.assertDictEqual( {'Echo_3': 2, 'Echo_1': 2, 'Echo_2': 2}, cntr ) def test_data_set_too_big(self): output_dir = os.path.join("output", str(uuid.uuid4())) html_reporter = HtmlReporter(output_dir) csv_data_set = CsvDataset(CSV_FILE_PATH) http_sampler1 = HttpSampler( "Echo_${id}", "https://postman-echo.com/get?var=${id}" ) thread_group = ThreadGroupSimple(2, 1) thread_group.children(http_sampler1) test_plan = TestPlan(thread_group, html_reporter, csv_data_set) test_plan.run() self.assertTrue(os.path.exists(output_dir)) path_to_jtl = os.path.join(output_dir, "report.jtl") with open(path_to_jtl, "r", encoding="utf-8") as jtl_file: next(jtl_file) all_samplers = [line.split(",")[2] for line in jtl_file] cntr = Counter(all_samplers) self.assertDictEqual( {'Echo_1': 1, 'Echo_2': 1}, cntr ) if __name__ == "__main__": main() ================================================ FILE: utests/test_postprocessors.py ================================================ """unittest module""" import os from unittest import TestCase, main import uuid from pymeter.api import ChildrenAreNotAllowed from pymeter.api.config import TestPlan, ThreadGroupSimple from pymeter.api.postprocessors import JsonExtractor from pymeter.api.reporters import HtmlReporter from pymeter.api.samplers import DummySampler, HttpSampler class TestSampler(TestCase): """Testing creation of a http sampler object""" def test_http_sampler(self): """send request to postman echo""" json_extractor = JsonExtractor("variable", "args.var") http_sampler = HttpSampler( "Echo", "https://postman-echo.com/get?var=1", json_extractor ) dummy_sampler = DummySampler("dummy ${variable}", "hi dummy") tg1 = ThreadGroupSimple(1, 1, http_sampler, dummy_sampler) output_dir = os.path.join("output", str(uuid.uuid4())) html_reporter = HtmlReporter(output_dir) test_plan = TestPlan(tg1, html_reporter) test_plan.run() self.assertEqual( json_extractor.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.postprocessors.DslJsonExtractor", ) path_to_jtl = os.path.join(output_dir, "report.jtl") with open(path_to_jtl, "r", encoding="utf-8") as jtl_file: next(jtl_file) self.assertIn("dummy 1", [line.split(",")[2] for line in jtl_file]) def test_postprocessor_children(self): with self.assertRaises(ChildrenAreNotAllowed) as exp: JsonExtractor("variable", "args.var").children() self.assertEqual( str(exp.exception), "Cant append children to a post processor", ) def test_postprocessor_on_thread_group(self): json_extractor = JsonExtractor("variable", "args.var") dummy_sampler = DummySampler("dummy", "hi dummy") tg1 = ThreadGroupSimple(1, 1, dummy_sampler, json_extractor) test_plan = TestPlan(tg1) test_plan.run() if __name__ == "__main__": main() ================================================ FILE: utests/test_reporter.py ================================================ """unittest module""" import os import uuid from unittest import TestCase, main from pymeter.api import ChildrenAreNotAllowed from pymeter.api.config import TestPlan, ThreadGroupWithRampUpAndHold from pymeter.api.reporters import HtmlReporter from pymeter.api.samplers import HttpSampler class TestReporter(TestCase): """Testing creation of a http sampler object""" def test_reporter_children(self): with self.assertRaises(ChildrenAreNotAllowed) as exp: HtmlReporter().children() self.assertEqual( str(exp.exception), "Cant append children to a reporter", ) def test_http_sampler(self): """create an HTML report""" http_sampler = HttpSampler("Echo", "https://postman-echo.com/get?var=1") tg = ThreadGroupWithRampUpAndHold(2, 1, 2, http_sampler, name="Some Name") output_dir = os.path.join("output", str(uuid.uuid4())) html_reporter = HtmlReporter(output_dir) tp = TestPlan(tg, html_reporter) tp.run() self.assertEqual( html_reporter.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.listeners.HtmlReporter", ) self.assertTrue(os.path.exists(output_dir)) path_to_jtl = os.path.join(output_dir, "report.jtl") path_to_json = os.path.join(output_dir, "statistics.json") path_to_html = os.path.join(output_dir, "index.html") self.assertTrue(os.path.exists(path_to_jtl)) self.assertTrue(os.path.exists(path_to_json)) self.assertTrue(os.path.exists(path_to_html)) if __name__ == "__main__": main() ================================================ FILE: utests/test_sampler.py ================================================ """unittest module""" from unittest import TestCase, main from parameterized import parameterized from pymeter.api import ContentType from pymeter.api.config import TestPlan, ThreadGroupSimple from pymeter.api.samplers import HttpSampler from pymeter.api.timers import ConstantTimer class TestSampler(TestCase): """Testing creation of a http sampler object""" def test_http_sampler(self): # TODO: implement a way to extract output """send request to postman echo""" http_sampler = HttpSampler("Echo", "https://postman-echo.com/get?var=1") tg1 = ThreadGroupSimple(1, 1, http_sampler) test_plan = TestPlan(tg1) test_plan.run() self.assertEqual( http_sampler.get_java_class_name(), "us.abstracta.jmeter.javadsl.http.DslHttpSampler", ) def test_http_sampler_with_valid_children(self): """send request to postman echo""" timer = ConstantTimer(1000) http_sampler = HttpSampler("Echo", "https://postman-echo.com/get?var=1", timer) self.assertEqual( http_sampler.get_java_class_name(), "us.abstracta.jmeter.javadsl.http.DslHttpSampler", ) def test_http_sampler_with_valid_children_out_of_constructor(self): """send request to postman echo""" timer = ConstantTimer(1000) http_sampler = HttpSampler("Echo", "https://postman-echo.com/get?var=1") http_sampler.children(timer) self.assertEqual( http_sampler.get_java_class_name(), "us.abstracta.jmeter.javadsl.http.DslHttpSampler", ) @parameterized.expand([(e.name,) for e in ContentType]) def test_post_http_sampler_dict_input(self, content_type_name): content_type_parameter = getattr(ContentType, content_type_name) http_sampler = HttpSampler( "Echo", "https://jsonplaceholder.typicode.com/posts", ).post({"var1": 1}, content_type_parameter) self.assertEqual( http_sampler.get_java_class_name(), "us.abstracta.jmeter.javadsl.http.DslHttpSampler", ) self.assertEqual( content_type_parameter.value.__class__.__name__, "org.apache.http.entity.ContentType", ) self.assertEqual( content_type_parameter.get_mime_type(), content_type_parameter.value.getMimeType(), ) def test_post_http_sampler_list_input(self): http_sampler = HttpSampler( "Echo", "https://jsonplaceholder.typicode.com/posts", ).post([1, 2, 3, 4], ContentType.APPLICATION_JSON) self.assertEqual( http_sampler.get_java_class_name(), "us.abstracta.jmeter.javadsl.http.DslHttpSampler", ) def test_post_http_sampler_str_input(self): http_sampler = HttpSampler( "Echo", "https://jsonplaceholder.typicode.com/posts", ).post('{"name": "John Doe"}', ContentType.APPLICATION_JSON) self.assertEqual( http_sampler.get_java_class_name(), "us.abstracta.jmeter.javadsl.http.DslHttpSampler", ) def test_post_http_sampler_int_input(self): with self.assertRaises(TypeError) as exp: http_sampler = HttpSampler( "Echo", "https://jsonplaceholder.typicode.com/posts", ).post(1, ContentType.APPLICATION_JSON) self.assertEqual( http_sampler.get_java_class_name(), "us.abstracta.jmeter.javadsl.http.DslHttpSampler", ) self.assertEqual( str(exp.exception), "Invalid type, expected `list`, 'dict', or 'str'. got ", ) def test_http_valid_header(self): http_sampler = HttpSampler( "Echo", "https://jsonplaceholder.typicode.com/posts", ).header("key1", "val1") self.assertEqual( http_sampler.get_java_class_name(), "us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler", ) def test_http_2_headers(self): http_sampler = ( HttpSampler( "Echo", "https://jsonplaceholder.typicode.com/posts", ) .header("key1", "val1") .header("key2", "val2") ) self.assertEqual( http_sampler.get_java_class_name(), "us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler", ) def test_http_duplicated_header(self): http_sampler = ( HttpSampler( "Echo", "https://jsonplaceholder.typicode.com/posts", ) .header("key1", "val1") .header("key1", "val2") ) self.assertEqual( http_sampler.get_java_class_name(), "us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler", ) def test_http_invalid_header_key(self): with self.assertRaises(TypeError) as exp: http_sampler = HttpSampler( "Echo", "https://jsonplaceholder.typicode.com/posts", ).header(1, "aa") self.assertEqual( http_sampler.get_java_class_name(), "us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler", ) self.assertEqual( str(exp.exception), "key field must be a string", ) def test_http_invalid_header_value(self): with self.assertRaises(TypeError) as exp: http_sampler = HttpSampler( "Echo", "https://jsonplaceholder.typicode.com/posts", ).header("key1", 1) self.assertEqual( http_sampler.get_java_class_name(), "us.abstracta.jmeter.javadsl.http.DslBaseHttpSampler", ) self.assertEqual( str(exp.exception), "value field must be a string", ) def test_http_multipart_body_file_not_found(self): with self.assertRaises(FileNotFoundError) as exp: http_sampler = HttpSampler( "Echo", "https://jsonplaceholder.typicode.com/posts", ).post_multipart_formdata( "name", "path/to/file.ext", ContentType.MULTIPART_FORM_DATA ) self.assertEqual( http_sampler.get_java_class_name(), "us.abstracta.jmeter.javadsl.http.DslHttpSampler", ) self.assertEqual( str(exp.exception), "path/to/file.ext", ) def test_http_multipart_body_file_found(self): http_sampler = HttpSampler( "Echo", "https://jsonplaceholder.typicode.com/posts", ).post_multipart_formdata( "name", "utests/resources/test_data.csv", ContentType.MULTIPART_FORM_DATA ) self.assertEqual( http_sampler.get_java_class_name(), "us.abstracta.jmeter.javadsl.http.DslHttpSampler", ) if __name__ == "__main__": main() ================================================ FILE: utests/test_test_plan.py ================================================ """unittest module""" import os import uuid from unittest import TestCase, main from pymeter.api.config import ( SetupThreadGroup, TeardownThreadGroup, TestPlan, ThreadGroupSimple, ThreadGroupWithRampUpAndHold, ) from pymeter.api.reporters import HtmlReporter from pymeter.api.samplers import DummySampler, HttpSampler class TestTestPlanClass(TestCase): """Testing creation of a test plan object""" def test_creation_of_empty_test_plan(self): """when creating the python class, it should wrap around the correct java class""" python_test_plan_object = TestPlan() self.assertEqual( python_test_plan_object.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.DslTestPlan", ) def test_creation_of_test_plan_with_valid_children(self): """When children are passed through, result should still be a dsl test plan class""" tg1 = ThreadGroupWithRampUpAndHold(10, 10, 10) tg2 = ThreadGroupWithRampUpAndHold(10, 10, 10) test_plan = TestPlan(tg1, tg2) self.assertEqual( test_plan.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.DslTestPlan", ) def test_creation_of_test_plan_with_valid_children_out_of_constructor(self): """When children are passed through, result should still be a dsl test plan class""" tg1 = ThreadGroupWithRampUpAndHold(10, 10, 10) tg2 = ThreadGroupWithRampUpAndHold(10, 10, 10) test_plan = TestPlan() test_plan.children(tg1, tg2) self.assertEqual( test_plan.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.DslTestPlan", ) def test_creation_of_test_plan_with_invalid_children(self): """Children must be of type TestPlanChildElement, in any other case, should through `TypeError`""" with self.assertRaises(TypeError) as exp: test_plan = TestPlan(1, "aaa") self.assertEqual( test_plan.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.DslTestPlan", ) self.assertEqual( str(exp.exception), "only takes children of type `TestPlanChildElement`", ) def test_creation_of_test_plan_with_invalid_children_out_of_constructor(self): """Children must be of type TestPlanChildElement, in any other case, should through `TypeError`""" with self.assertRaises(TypeError) as exp: test_plan = TestPlan() test_plan.children(1,2,"aa") self.assertEqual( test_plan.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.DslTestPlan", ) self.assertEqual( str(exp.exception), "only takes children of type `TestPlanChildElement`", ) def test_run_positive_flow(self): """should run test flow with no exceptions""" http_sampler = HttpSampler("Echo", "https://postman-echo.com/get?var=1") tg1 = ThreadGroupWithRampUpAndHold(10, 1, 5, http_sampler) test_plan = TestPlan(tg1) stats = test_plan.run() self.assertEqual( test_plan.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.DslTestPlan", ) self.assertGreaterEqual(stats.duration_milliseconds, 5000) self.assertLessEqual( stats.sample_time_mean_milliseconds, stats.sample_time_max_milliseconds ) self.assertLessEqual( stats.sample_time_min_milliseconds, stats.sample_time_median_milliseconds ) self.assertLessEqual( stats.sample_time_median_milliseconds, stats.sample_time_90_percentile_milliseconds, ) # self.assertLessEqual( # stats.sample_time_90_percentile_milliseconds, # stats.sample_time_95_percentile_milliseconds, # ) # self.assertLessEqual( # stats.sample_time_95_percentile_milliseconds, # stats.sample_time_99_percentile_milliseconds, # ) self.assertLessEqual( stats.sample_time_99_percentile_milliseconds, stats.sample_time_max_milliseconds, ) def test_run_empty_flow(self): """should run test flow with no exceptions""" tg1 = ThreadGroupWithRampUpAndHold(1, 1, 1) test_plan = TestPlan(tg1) test_plan.run() def test_run_validate_order(self): """should run test flow with no exceptions""" dummy_sampler_for_setup = DummySampler("dummy_setup", "hi dummy") dummy_sampler_for_main = DummySampler("dummy_main", "hi dummy") dummy_sampler_for_teardown = DummySampler("dummy_teardown", "hi dummy") tg_setup = SetupThreadGroup(dummy_sampler_for_setup) tg_main = ThreadGroupSimple(1, 1, dummy_sampler_for_main) tg_teardown = TeardownThreadGroup(dummy_sampler_for_teardown) output_dir = os.path.join("output", str(uuid.uuid4())) html_reporter = HtmlReporter(output_dir) test_plan = TestPlan(tg_setup, tg_main, tg_teardown, html_reporter) test_plan.run() path_to_jtl = os.path.join(output_dir, "report.jtl") with open(path_to_jtl, "r", encoding="utf-8") as jtl_file: next(jtl_file) lst = [line.split(",")[2] for line in jtl_file] self.assertListEqual(["dummy_setup", "dummy_main", "dummy_teardown"], lst) if __name__ == "__main__": main() ================================================ FILE: utests/test_thread_group.py ================================================ """unittest module""" from unittest import TestCase, main from pymeter.api.config import ( SetupThreadGroup, TeardownThreadGroup, ThreadGroupWithRampUpAndHold, ) from pymeter.api.samplers import HttpSampler class TestThreadGroupClass(TestCase): """Testing creation of a thread group object""" def test_creation_of_empty_thread_group(self): """when creating the python class, it should wrap around the correct java class""" python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1) self.assertEqual( python_thread_group_object.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.threadgroups.DslDefaultThreadGroup", ) def test_creation_of_empty_setup_thread_group(self): """when creating the python class, it should wrap around the correct java class""" python_thread_group_object = SetupThreadGroup() self.assertEqual( python_thread_group_object.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.threadgroups.DslSetupThreadGroup", ) def test_creation_of_empty_teardown_thread_group(self): """when creating the python class, it should wrap around the correct java class""" python_thread_group_object = TeardownThreadGroup() self.assertEqual( python_thread_group_object.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.threadgroups.DslTeardownThreadGroup", ) def test_creation_of_thread_group_with_valid_children(self): """When children are passed through, result should still be a dsl test plan class""" http_sampler = HttpSampler("sampler", "") python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1, http_sampler) self.assertEqual( python_thread_group_object.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.threadgroups.DslDefaultThreadGroup", ) def test_creation_of_thread_group_with_valid_children_out_of_constructor(self): """When children are passed through, result should still be a dsl test plan class""" http_sampler = HttpSampler("sampler", "") python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1) python_thread_group_object.children(http_sampler) self.assertEqual( python_thread_group_object.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.threadgroups.DslDefaultThreadGroup", ) def test_creation_of_thread_group_with_invalid_children_out_of_constructor(self): """When children are passed through, result should still be a dsl test plan class""" python_thread_group_object = ThreadGroupWithRampUpAndHold(1, 1, 1) with self.assertRaises(TypeError) as exp: python_thread_group_object.children(1, 2, 3, "aa") self.assertEqual( python_thread_group_object.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.threadgroups.DslDefaultThreadGroup", ) self.assertEqual( str(exp.exception), "only takes children of type `ThreadGroupChildElement`", ) def test_creation_of_thread_group_with_invalid_children(self): """Children must be of type ThreadGroupChildElement, in any other case, should through `TypeError`""" with self.assertRaises(TypeError) as exp: python_thread_group_object = ThreadGroupWithRampUpAndHold( 1, 1, 1, "http_sampler" ) self.assertEqual( python_thread_group_object.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.threadgroups.DslDefaultThreadGroup", ) self.assertEqual( str(exp.exception), "only takes children of type `ThreadGroupChildElement`", ) if __name__ == "__main__": main() ================================================ FILE: utests/test_timers.py ================================================ """unittest module""" from unittest import TestCase, main from pymeter.api import ChildrenAreNotAllowed from pymeter.api.config import TestPlan, ThreadGroupSimple from pymeter.api.samplers import HttpSampler from pymeter.api.timers import UniformRandomTimer, ConstantTimer class TestTimer(TestCase): """Testing creation of a uniform random timer object""" def test_timer_children(self): with self.assertRaises(ChildrenAreNotAllowed) as exp: UniformRandomTimer(2000, 2200).children() self.assertEqual( str(exp.exception), "Cant append children to a timer", ) def test_uniform_random_timer(self): """When the minimal time is 5000 milliseconds, the total test duration is expected to be at least that.""" timer = UniformRandomTimer(2000, 2200) http_sampler = HttpSampler("Echo", "https://postman-echo.com/get?var=1", timer) tg1 = ThreadGroupSimple(1, 1, http_sampler) test_plan = TestPlan(tg1) stats = test_plan.run() self.assertEqual( timer.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.timers.DslUniformRandomTimer", ) self.assertEqual( stats.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.TestPlanStats", ) self.assertGreaterEqual(stats.duration_milliseconds, 2000) def test_constant_timer(self): """When the minimal time is 5000 milliseconds, the total test duration is expected to be at least that.""" timer = ConstantTimer(2000) http_sampler = HttpSampler("Echo", "https://postman-echo.com/get?var=1", timer) tg1 = ThreadGroupSimple(1, 1, http_sampler) test_plan = TestPlan(tg1) stats = test_plan.run() self.assertEqual( timer.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.timers.DslConstantTimer", ) self.assertEqual( stats.get_java_class_name(), "us.abstracta.jmeter.javadsl.core.TestPlanStats", ) self.assertGreaterEqual(stats.duration_milliseconds, 2000) if __name__ == "__main__": main() ================================================ FILE: utests/test_vars.py ================================================ """unittest module""" import os import uuid from unittest import TestCase, main from collections import Counter from pymeter.api import ChildrenAreNotAllowed from pymeter.api.config import ( TestPlan, ThreadGroupSimple, Vars, ) from pymeter.api.reporters import HtmlReporter from pymeter.api.samplers import HttpSampler class TestVars(TestCase): """Testing vars""" def test_vars_children(self): with self.assertRaises(ChildrenAreNotAllowed) as exp: Vars().children() self.assertEqual( str(exp.exception), "Cant append children to vars", ) def test_vars_set_from_constructor(self): output_dir = os.path.join("output", str(uuid.uuid4())) html_reporter = HtmlReporter(output_dir) variables = Vars(my_id="value1") http_sampler1 = HttpSampler( "Echo_${my_id}", "https://postman-echo.com/get?var=${my_id}" ) thread_group = ThreadGroupSimple(2, 1) thread_group.children(http_sampler1) test_plan = TestPlan(thread_group, html_reporter, variables) test_plan.run() self.assertTrue(os.path.exists(output_dir)) path_to_jtl = os.path.join(output_dir, "report.jtl") with open(path_to_jtl, "r", encoding="utf-8") as jtl_file: next(jtl_file) all_samplers = [line.split(",")[2] for line in jtl_file] cntr = Counter(all_samplers) self.assertDictEqual({"Echo_value1": 2}, cntr) def test_vars_set_from_set_method(self): output_dir = os.path.join("output", str(uuid.uuid4())) html_reporter = HtmlReporter(output_dir) variables = Vars() variables.set("my_id", "value1") http_sampler1 = HttpSampler( "Echo_${my_id}", "https://postman-echo.com/get?var=${my_id}" ) thread_group = ThreadGroupSimple(2, 1) thread_group.children(http_sampler1) test_plan = TestPlan(thread_group, html_reporter, variables) test_plan.run() self.assertTrue(os.path.exists(output_dir)) path_to_jtl = os.path.join(output_dir, "report.jtl") with open(path_to_jtl, "r", encoding="utf-8") as jtl_file: next(jtl_file) all_samplers = [line.split(",")[2] for line in jtl_file] cntr = Counter(all_samplers) self.assertDictEqual({"Echo_value1": 2}, cntr) def test_vars_value_is_int(self): output_dir = os.path.join("output", str(uuid.uuid4())) html_reporter = HtmlReporter(output_dir) variables = Vars() variables.set("my_id", 1) http_sampler1 = HttpSampler( "Echo_${my_id}", "https://postman-echo.com/get?var=${my_id}" ) thread_group = ThreadGroupSimple(2, 1) thread_group.children(http_sampler1) test_plan = TestPlan(thread_group, html_reporter, variables) test_plan.run() self.assertTrue(os.path.exists(output_dir)) path_to_jtl = os.path.join(output_dir, "report.jtl") with open(path_to_jtl, "r", encoding="utf-8") as jtl_file: next(jtl_file) all_samplers = [line.split(",")[2] for line in jtl_file] cntr = Counter(all_samplers) self.assertDictEqual({"Echo_1": 2}, cntr) def test_vars_value_is_stringable_class(self): class C: def __repr__(self) -> str: return "hello" output_dir = os.path.join("output", str(uuid.uuid4())) html_reporter = HtmlReporter(output_dir) variables = Vars() variables.set("my_id", C()) http_sampler1 = HttpSampler( "Echo_${my_id}", "https://postman-echo.com/get?var=${my_id}" ) thread_group = ThreadGroupSimple(2, 1) thread_group.children(http_sampler1) test_plan = TestPlan(thread_group, html_reporter, variables) test_plan.run() self.assertTrue(os.path.exists(output_dir)) path_to_jtl = os.path.join(output_dir, "report.jtl") with open(path_to_jtl, "r", encoding="utf-8") as jtl_file: next(jtl_file) all_samplers = [line.split(",")[2] for line in jtl_file] cntr = Counter(all_samplers) self.assertDictEqual({"Echo_hello": 2}, cntr) def test_vars_illegal_key_type(self): with self.assertRaises(TypeError) as exp: variables = Vars() variables.set(1, "value1") self.assertEqual(str(exp.exception), "Keys must be strings") if __name__ == "__main__": main()