.. what_is_appian_locust-inclusion-begin-do-not-remove
#######################################
What is Appian Locust?
#######################################
Appian Locust is a wrapper library around Locust <https://locust.io>
__ for load testing Appian.
This library is intended to be used as an alternative to tools such as Jmeter and Load Runner.
Appian Locust capabilities
- Logging in and logging out
- Form interactions (filling/submitting)
- Finding and interacting with basic components on a SAIL interface
- Navigating to records/reports/sites
.. what_is_appian_locust-inclusion-end-do-not-remove
For full documentation, visit the docs page <https://appian-locust.readthedocs.io/en/latest/>
__.
.. disclaimer-inclusion-begin-do-not-remove
Disclaimer:
This library is continuously evolving.
Currently the main focus is supporting essential use-cases.
We are happy to accept contributions to further extend functionality, address bug fixes and improve usability.
Please see the Contributing <contributing.html>
__ section and feel free to reach out.
.. disclaimer-inclusion-end-do-not-remove
.. quick_start-inclusion-begin-do-not-remove
Quick Installation Guide
This is a quick guide to getting up and running with the appian-locust library. You will need Python 3.10 installed on your machine before proceeding.
Setup
- Install appian-locust using
pip
, for more comprehensive projects we recommend using pipenv
.
.. code-block:: bash
pip install appian-locust
If using pipenv
, simply start from the following Pipfile
:
.. code-block:: toml
[packages]
appian-locust = {version = "*"}
[requires]
python_version = "3.10"
[pipenv]
allow_prereleases = true
2. Download the sample test example_locustfile.py <https://gitlab.com/appian-oss/appian-locust/-/blob/main/examples/example_locustfile.py>
_ from the Appian Locust repo and run it.
.. code-block:: bash
locust -f example_locustfile.py
If everything is set up correctly, you should see a link to the Locust web interface <https://docs.locust.io/en/stable/quickstart.html#locust-s-web-interface>
_, which you can use to start test runs and view results.
- For more information about how to build the workflow for your locust test, see the
How to Write a Locust Test <how_to_write_locust_tests.html>
__ section. - For more information on running locust tests, see the
How to Run Locust <how_to_run_locust.html>
__ section.
Build from source
Clone the repository:
.. code-block:: bash
git clone -o prod git@gitlab.com:appian-oss/appian-locust.git
Install the library globally:
.. code-block:: bash
pip install -e appian-locust
If you’re using a virtualenv or a dependency management tool (e.g. pipenv
), you can do the same type of install, but you will want to be in the context of the virtualenv (i.e. source the virtualenv), and you’ll need to pass the path to the repository you cloned.
Note: It’s highly recommended that you use a virtual environment when installing python artifacts. You can follow the instructions here <https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/>
__ to install virtualenv and pip.
If you have issues installing, make sure you have the proper prerequisites installed for Locust and its dependencies.
If you're having trouble on Windows, check here <https://github.com/locustio/locust/issues/1208#issuecomment-569693439>
__
Troubleshooting
-
Do not have permissions to clone appian-locust
- Ensure you have added you ssh key to your profile. See
here <https://docs.gitlab.com/ee/user/ssh.html#add-an-ssh-key-to-your-gitlab-account>
__ for how to do this.
-
"locust is not available"
- Verify that you ran
pip install -e appian-locust
-
"Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known"
- check that
host_address
is specified correctly in your locust test file.
-
"Login unsuccessful, no multipart cookie found...make sure credentials are correct"
- check that
auth
specifies a valid username and password combination for the site you're testing on in your locust test file.
-
"General request and response debugging"
- Add
self.client.record_mode = True
to your HttpUser
subclass. Files will be placed in /record_responses
where the runner is executed.
.. quick_start-inclusion-end-do-not-remove