2020-05-15 17:37:51 +03:00
# Steeltoe Sample Application Tests
## Using the `behave` Wrappers
The Samples tests are run using [behave][behave_url], a Cucumber-style BDD framework written in Python.
This project's `behave` implementation requires Python 3. See [Installing Python 3 ](#installing-python-3 ) for platform-specific instructions.
Two helper scripts, [behave.ps1 ](behave.ps1 ) and [behave.sh ](behave.sh ), are provided to simplify the setup and invocation of `behave` .
These wrappers:
2022-10-11 21:40:58 +03:00
2020-05-15 17:37:51 +03:00
1. install `pipenv` into the user's Python package install directory
1. create a Python virtual environment for the project using `pipenv`
1. install needed Python packages into the virtual environment
1. invoke `behave` in the virtual environment
Steps 1-3 are only run if necessary (typically the first run). To force the wrapper scripts to re-run steps 1-3, create an empty file named `reinit` in the project root and rerun the wrapper.
Any arguments and parameters passed to a wrapper are subsequently passed to `behave` .
As an example, the following displays the help for `behave` :
```dos
C:> .\behave.ps1 -h
```
Running with no arguments will run every sample for every framework/runtime combination.
```dos
C:> .\behave.ps1
```
To run a specific sample, pass the path to the sample:
```dos
2020-05-15 17:38:52 +03:00
C:> .\behave.ps1 Connectors\src\RabbitMQ
2020-05-15 17:37:51 +03:00
```
To run only a specific framework/runtime combination, use the `--tags` or `-t` parameter:
```dos
2020-05-15 17:38:52 +03:00
C:> .\behave.ps1 Connectors\src\RabbitMQ -t netcoreapp2.1 -t ubuntu.16.04-x64
2020-05-15 17:37:51 +03:00
```
## Configuring
Create a `user.ini` file in the project root directory.
An example file, [`user.ini.example` ](user.ini.example ), is provided as a convenience.
```dos
C:> copy user.ini.example user.ini
```
The example file's options are commented with descriptions.
One option you might want to enable is `windowed = yes` .
2022-10-11 21:40:58 +03:00
Setting this option will run background processes in their own dedicated windows, making it easier to follow a test's progress.
2020-05-15 17:37:51 +03:00
### Cloud Foundry
2022-10-11 21:40:58 +03:00
If you don't specify Cloud Foundry credentials, it is assumed you are already logged in to a Cloud Foundry endpoint.
2020-05-15 17:37:51 +03:00
You can configure credentials by setting the following options in `user.ini` :
* `cf_apiurl`
* `cf_username`
* `cf_password`
* `cf_org`
Sample:
2022-10-11 21:40:58 +03:00
```text
2020-05-15 17:37:51 +03:00
[behave.userdata]
cf_apiurl = https://api.run.pcfone.io
cf_username = myuser
cf_password = mypass
cf_org = p-steeltoe
```
It is expected that a Cloud Foundry space named `development` exists for the configured credentials.
The `development` space will be used as the target from which to create additional spaces for running tests.
By default, each sample will use a dedicated space for its applications and services.
The space is named `{feature}-{sample}-{os}` where:
2022-10-11 21:40:58 +03:00
2020-05-15 17:37:51 +03:00
* `{feature}` is the feature name (the top directory node of the sample path)
* `{sample}` is the sample name (the bottom directory node of the sample path)
* `{os}` is one of: `windows` , `osx` , `linux` depending on the platform on which the tests are run
2020-05-15 17:38:52 +03:00
As an example, if running the sample `Connectors\src\RabbitMQ` on Windows, it will use the space `connectors-rabbitmq-windows` .
2020-05-15 17:37:51 +03:00
You can override this behavior by setting the `cf_space` option.
2022-10-11 21:40:58 +03:00
```text
2020-05-15 17:37:51 +03:00
cf_space = myspace
```
## Installing Python 3
Running the Samples tests requires Python 3 and its corresponding `pip` package manager.
### Windows
Install [Chocolatey][choco_url].
Start a PowerShell as Administrator and run:
2022-10-11 21:40:58 +03:00
2020-05-15 17:37:51 +03:00
```dos
C:> choco install -y python3
```
### OS X
Install [Homebrew][brew_url].
Start a terminal and run:
2022-10-11 21:40:58 +03:00
2020-05-15 17:37:51 +03:00
```sh
$ brew install python3
```
### Ubuntu
Start a terminal and run:
2022-10-11 21:40:58 +03:00
```sh
sudo apt install -y python3 python3-pip
2020-05-15 17:37:51 +03:00
```
[choco_url]: https://chocolatey.org/
[brew_url]: https://brew.sh/
[behave_url]: https://github.com/behave/behave