2021-03-05 22:50:11 +00:00
|
|
|
# Requirements
|
|
|
|
1. Python 3.7 or later with packages in the given `requirements.txt`
|
|
|
|
- E.g. with conda:
|
|
|
|
- `conda create -n component-tests python=3.7`
|
|
|
|
- `conda activate component-tests`
|
|
|
|
- `pip3 install -r requirements.txt`
|
|
|
|
|
2021-03-08 14:09:10 +00:00
|
|
|
2. Create a config yaml file, for example:
|
|
|
|
```
|
|
|
|
cloudflared_binary: "cloudflared"
|
|
|
|
tunnel: "3d539f97-cd3a-4d8e-c33b-65e9099c7a8d"
|
|
|
|
credentials_file: "/Users/tunnel/.cloudflared/3d539f97-cd3a-4d8e-c33b-65e9099c7a8d.json"
|
|
|
|
classic_hostname: "classic-tunnel-component-tests.example.com"
|
|
|
|
origincert: "/Users/tunnel/.cloudflared/cert.pem"
|
2021-03-08 15:42:49 +00:00
|
|
|
ingress:
|
|
|
|
- hostname: named-tunnel-component-tests.example.com
|
2022-03-02 15:56:32 +00:00
|
|
|
service: hello_world
|
2021-03-08 15:42:49 +00:00
|
|
|
- service: http_status:404
|
2021-03-08 14:09:10 +00:00
|
|
|
```
|
|
|
|
|
2021-03-08 15:42:49 +00:00
|
|
|
3. Route hostname to the tunnel. For the example config above, we can do that via
|
|
|
|
```
|
|
|
|
cloudflared tunnel route dns 3d539f97-cd3a-4d8e-c33b-65e9099c7a8d named-tunnel-component-tests.example.com
|
|
|
|
```
|
|
|
|
|
|
|
|
4. Turn on linter
|
|
|
|
If you are using Visual Studio, follow https://code.visualstudio.com/docs/python/linting to turn on linter.
|
|
|
|
|
|
|
|
5. Turn on formatter
|
|
|
|
If you are using Visual Studio, follow https://code.visualstudio.com/docs/python/editing#_formatting
|
|
|
|
to turn on formatter and https://marketplace.visualstudio.com/items?itemName=cbrevik.toggle-format-on-save
|
|
|
|
to turn on format on save.
|
|
|
|
|
2021-03-12 13:37:53 +00:00
|
|
|
6. If you have cloudflared running as a service on your machine, you can either stop the service or ignore the service tests
|
|
|
|
via `--ignore test_service.py`
|
|
|
|
|
2021-03-05 22:50:11 +00:00
|
|
|
# How to run
|
2021-03-08 14:09:10 +00:00
|
|
|
Specify path to config file via env var `COMPONENT_TESTS_CONFIG`. This is required.
|
2021-03-05 22:50:11 +00:00
|
|
|
## All tests
|
|
|
|
Run `pytest` inside this(component-tests) folder
|
|
|
|
|
|
|
|
## Specific files
|
|
|
|
Run `pytest <file 1 name>.py <file 2 name>.py`
|
|
|
|
|
|
|
|
## Specific tests
|
|
|
|
Run `pytest file.py -k <test 1 name> -k <test 2 name>`
|
|
|
|
|
|
|
|
## Live Logging
|
|
|
|
Running with `-o log_cli=true` outputs logging to CLI as the tests are. By default the log level is WARN.
|
|
|
|
`--log-cli-level` control logging level.
|
|
|
|
For example, to log at info level, run `pytest -o log_cli=true --log-cli-level=INFO`.
|
|
|
|
See https://docs.pytest.org/en/latest/logging.html#live-logs for more documentation on logging.
|