2019-08-27 23:12:14 +08:00
|
|
|
# Automatic blackbox tests
|
|
|
|
### Prerequisites
|
|
|
|
1. Download google sdk: https://cloud.google.com/sdk/docs/
|
2021-05-13 14:14:50 +08:00
|
|
|
2. Download service account key for MonkeyZoo project (if you deployed MonkeyZoo via terraform scripts then you already have it).
|
2020-07-30 17:41:25 +08:00
|
|
|
GCP console -> IAM -> service accounts(you can use the same key used to authenticate terraform scripts).
|
|
|
|
Place the key in `envs/monkey_zoo/gcp_keys/gcp_key.json`.
|
2021-05-13 14:14:50 +08:00
|
|
|
3. Deploy the relevant branch + complied executables to the Island machine on GCP.
|
2019-10-06 20:05:34 +08:00
|
|
|
|
|
|
|
### Running the tests
|
2021-05-13 14:14:50 +08:00
|
|
|
In order to execute the entire test suite, you must know the external IP of the Island machine on GCP. You can find
|
|
|
|
this information in the GCP Console `Compute Engine/VM Instances` under _External IP_.
|
2019-10-06 20:05:34 +08:00
|
|
|
|
|
|
|
#### Running in command line
|
2021-05-13 14:14:50 +08:00
|
|
|
Either run pytest from `/monkey` directory or set `PYTHONPATH` environment variable to
|
2021-05-17 19:39:30 +08:00
|
|
|
`/monkey` directory so that blackbox tests can import other monkey code.
|
2020-05-13 15:44:04 +08:00
|
|
|
Blackbox tests have following parameters:
|
|
|
|
- `--island=IP` Sets island's IP
|
|
|
|
- `--no-gcp` (Optional) Use for no interaction with the cloud (local test).
|
2021-05-13 14:14:50 +08:00
|
|
|
- `--quick-performance-tests` (Optional) If enabled performance tests won't reset island and won't send telemetries,
|
2020-05-13 15:44:04 +08:00
|
|
|
instead will just test performance of endpoints in already present island state.
|
|
|
|
|
|
|
|
Example run command:
|
2019-10-06 20:05:34 +08:00
|
|
|
|
2021-03-08 22:47:16 +08:00
|
|
|
`monkey\monkey>python -m pytest -s --island=35.207.152.72:5000 ..\envs\monkey_zoo\blackbox\test_blackbox.py`
|
2019-10-06 20:05:34 +08:00
|
|
|
|
|
|
|
#### Running in PyCharm
|
2021-03-08 21:54:15 +08:00
|
|
|
Configure a PyTest configuration with the additional arguments `-s --island=35.207.152.72:5000`, and to run from
|
2020-07-30 17:41:25 +08:00
|
|
|
directory `monkey\envs\monkey_zoo\blackbox`.
|
2020-04-24 00:44:24 +08:00
|
|
|
|
|
|
|
### Running telemetry performance test
|
2020-05-23 02:22:29 +08:00
|
|
|
|
2021-05-13 14:14:50 +08:00
|
|
|
**Before running performance test make sure browser is not sending requests to island!**
|
2020-05-23 02:22:29 +08:00
|
|
|
|
2020-04-24 00:44:24 +08:00
|
|
|
To run telemetry performance test follow these steps:
|
2021-07-30 21:54:15 +08:00
|
|
|
0. Set no password protection on the island.
|
|
|
|
Make sure the island parameter is an IP address(not localhost) as the name resolution will increase the time for requests.
|
2020-04-24 00:44:24 +08:00
|
|
|
1. Gather monkey telemetries.
|
2021-05-13 14:14:50 +08:00
|
|
|
1. Enable "Export monkey telemetries" in Configuration -> Internal -> Tests if you don't have
|
2020-04-24 00:44:24 +08:00
|
|
|
exported telemetries already.
|
|
|
|
2. Run monkey and wait until infection is done.
|
2021-07-30 21:54:15 +08:00
|
|
|
3. All telemetries are gathered in `monkey/telem_sample`. If not, restart the island process.
|
2020-04-24 00:44:24 +08:00
|
|
|
2. Run telemetry performance test.
|
2021-07-30 21:54:15 +08:00
|
|
|
1. Move directory `monkey/telem_sample` to `envs/monkey_zoo/blackbox/tests/performance/telemetry_sample`
|
|
|
|
2. (Optional) Use `envs/monkey_zoo/blackbox/tests/performance/telem_sample_parsing/sample_multiplier/sample_multiplier.py` to multiply
|
2020-04-24 00:44:24 +08:00
|
|
|
telemetries gathered.
|
2021-07-30 21:54:15 +08:00
|
|
|
1. Run `sample_multiplier.py` script with working directory set to `monkey\envs\monkey_zoo\blackbox`
|
2020-04-24 00:44:24 +08:00
|
|
|
2. Pass integer to indicate the multiplier. For example running `telem_parser.py 4` will replicate
|
|
|
|
telemetries 4 times.
|
2021-07-30 21:54:15 +08:00
|
|
|
3. If you're using pycharm check "Emulate terminal in output console" on debug/run configuration.
|
|
|
|
3. Add a `--run-performance-tests` flag to blackbox scripts to run performance tests as part of BlackBox tests.
|
|
|
|
You can run a single test separately by adding `-k 'test_telem_performance'` option.
|