forked from p15670423/monkey
BB performance tests: update the outdated README.md and other small improvements
This commit is contained in:
parent
294ec0d546
commit
568a97e5a5
|
@ -85,7 +85,7 @@ MonkeyZoo/*
|
||||||
monkey/logs
|
monkey/logs
|
||||||
|
|
||||||
# Exported monkey telemetries
|
# Exported monkey telemetries
|
||||||
/monkey/telem_sample/
|
/envs/monkey_zoo/blackbox/tests/performance/telemetry_sample/
|
||||||
|
|
||||||
# Profiling logs
|
# Profiling logs
|
||||||
profiler_logs/
|
profiler_logs/
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
logs/
|
logs/
|
||||||
/blackbox/tests/performance/telem_sample
|
/blackbox/tests/performance/telemetry_sample
|
||||||
|
|
|
@ -32,19 +32,20 @@ directory `monkey\envs\monkey_zoo\blackbox`.
|
||||||
**Before running performance test make sure browser is not sending requests to island!**
|
**Before running performance test make sure browser is not sending requests to island!**
|
||||||
|
|
||||||
To run telemetry performance test follow these steps:
|
To run telemetry performance test follow these steps:
|
||||||
0. Set `server_config.json` to "standard" (no password protection) setting.
|
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.
|
||||||
1. Gather monkey telemetries.
|
1. Gather monkey telemetries.
|
||||||
1. Enable "Export monkey telemetries" in Configuration -> Internal -> Tests if you don't have
|
1. Enable "Export monkey telemetries" in Configuration -> Internal -> Tests if you don't have
|
||||||
exported telemetries already.
|
exported telemetries already.
|
||||||
2. Run monkey and wait until infection is done.
|
2. Run monkey and wait until infection is done.
|
||||||
3. All telemetries are gathered in `monkey/telem_sample`
|
3. All telemetries are gathered in `monkey/telem_sample`. If not, restart the island process.
|
||||||
2. Run telemetry performance test.
|
2. Run telemetry performance test.
|
||||||
1. Move directory `monkey/test_telems` to `envs/monkey_zoo/blackbox/tests/performance/test_telems`
|
1. Move directory `monkey/telem_sample` to `envs/monkey_zoo/blackbox/tests/performance/telemetry_sample`
|
||||||
2. (Optional) Use `envs/monkey_zoo/blackbox/tests/performance/utils/telem_parser.py` to multiply
|
2. (Optional) Use `envs/monkey_zoo/blackbox/tests/performance/telem_sample_parsing/sample_multiplier/sample_multiplier.py` to multiply
|
||||||
telemetries gathered.
|
telemetries gathered.
|
||||||
1. Run `telem_parser.py` script with working directory set to `monkey\envs\monkey_zoo\blackbox`
|
1. Run `sample_multiplier.py` script with working directory set to `monkey\envs\monkey_zoo\blackbox`
|
||||||
2. Pass integer to indicate the multiplier. For example running `telem_parser.py 4` will replicate
|
2. Pass integer to indicate the multiplier. For example running `telem_parser.py 4` will replicate
|
||||||
telemetries 4 times.
|
telemetries 4 times.
|
||||||
3. If you're using pycharm check "Emulate terminal in output console" on debug/run configuraion.
|
3. If you're using pycharm check "Emulate terminal in output console" on debug/run configuration.
|
||||||
3. Performance test will run as part of BlackBox tests or you can run it separately by adding
|
3. Add a `--run-performance-tests` flag to blackbox scripts to run performance tests as part of BlackBox tests.
|
||||||
`-k 'test_telem_performance'` option.
|
You can run a single test separately by adding `-k 'test_telem_performance'` option.
|
||||||
|
|
|
@ -62,6 +62,10 @@ class MonkeyIslandClient(object):
|
||||||
LOGGER.error("Failed to reset the environment.")
|
LOGGER.error("Failed to reset the environment.")
|
||||||
assert False
|
assert False
|
||||||
|
|
||||||
|
@avoid_race_condition
|
||||||
|
def set_scenario(self, scenario):
|
||||||
|
self.requests.post_json("api/island-mode", {"mode": scenario})
|
||||||
|
|
||||||
def find_monkeys_in_db(self, query):
|
def find_monkeys_in_db(self, query):
|
||||||
if query is None:
|
if query is None:
|
||||||
raise TypeError
|
raise TypeError
|
||||||
|
|
|
@ -39,6 +39,7 @@ from envs.monkey_zoo.blackbox.tests.performance.telemetry_performance_test impor
|
||||||
TelemetryPerformanceTest,
|
TelemetryPerformanceTest,
|
||||||
)
|
)
|
||||||
from envs.monkey_zoo.blackbox.utils import gcp_machine_handlers
|
from envs.monkey_zoo.blackbox.utils import gcp_machine_handlers
|
||||||
|
from monkey_island.cc.services.mode.mode_enum import IslandModeEnum
|
||||||
|
|
||||||
DEFAULT_TIMEOUT_SECONDS = 5 * 60
|
DEFAULT_TIMEOUT_SECONDS = 5 * 60
|
||||||
MACHINE_BOOTUP_WAIT_SECONDS = 30
|
MACHINE_BOOTUP_WAIT_SECONDS = 30
|
||||||
|
@ -109,6 +110,7 @@ def island_client(island, quick_performance_tests):
|
||||||
pytest.exit("BB tests couldn't establish communication to the island.")
|
pytest.exit("BB tests couldn't establish communication to the island.")
|
||||||
if not quick_performance_tests:
|
if not quick_performance_tests:
|
||||||
island_client_object.reset_env()
|
island_client_object.reset_env()
|
||||||
|
island_client_object.set_scenario(IslandModeEnum.ADVANCED.value)
|
||||||
yield island_client_object
|
yield island_client_object
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ from typing import Dict, List
|
||||||
|
|
||||||
from tqdm import tqdm
|
from tqdm import tqdm
|
||||||
|
|
||||||
TELEM_DIR_PATH = "./tests/performance/telem_sample"
|
TELEM_DIR_PATH = "../envs/monkey_zoo/blackbox/tests/performance/telemetry_sample"
|
||||||
MAX_SAME_TYPE_TELEM_FILES = 10000
|
MAX_SAME_TYPE_TELEM_FILES = 10000
|
||||||
LOGGER = logging.getLogger(__name__)
|
LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,6 @@ from envs.monkey_zoo.blackbox.tests.performance.telem_sample_parsing.sample_mult
|
||||||
FakeMonkey,
|
FakeMonkey,
|
||||||
)
|
)
|
||||||
|
|
||||||
TELEM_DIR_PATH = "./tests/performance/telemetry_sample"
|
|
||||||
LOGGER = logging.getLogger(__name__)
|
LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,6 @@ import json
|
||||||
import logging
|
import logging
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
|
||||||
from tqdm import tqdm
|
|
||||||
|
|
||||||
from envs.monkey_zoo.blackbox.analyzers.performance_analyzer import PerformanceAnalyzer
|
from envs.monkey_zoo.blackbox.analyzers.performance_analyzer import PerformanceAnalyzer
|
||||||
from envs.monkey_zoo.blackbox.island_client.monkey_island_client import MonkeyIslandClient
|
from envs.monkey_zoo.blackbox.island_client.monkey_island_client import MonkeyIslandClient
|
||||||
from envs.monkey_zoo.blackbox.island_client.supported_request_method import SupportedRequestMethod
|
from envs.monkey_zoo.blackbox.island_client.supported_request_method import SupportedRequestMethod
|
||||||
|
@ -35,11 +33,12 @@ class TelemetryPerformanceTest:
|
||||||
LOGGER.info("Telemetries imported successfully.")
|
LOGGER.info("Telemetries imported successfully.")
|
||||||
all_telemetries.sort(key=lambda telem: telem["time"]["$date"])
|
all_telemetries.sort(key=lambda telem: telem["time"]["$date"])
|
||||||
telemetry_parse_times = {}
|
telemetry_parse_times = {}
|
||||||
for telemetry in tqdm(
|
for i in range(len(all_telemetries)):
|
||||||
all_telemetries, total=len(all_telemetries), ascii=True, desc="Telemetries sent"
|
telemetry_endpoint = TelemetryPerformanceTest.get_verbose_telemetry_endpoint(
|
||||||
):
|
all_telemetries[i]
|
||||||
telemetry_endpoint = TelemetryPerformanceTest.get_verbose_telemetry_endpoint(telemetry)
|
)
|
||||||
telemetry_parse_times[telemetry_endpoint] = self.get_telemetry_time(telemetry)
|
telemetry_parse_times[telemetry_endpoint] = self.get_telemetry_time(all_telemetries[i])
|
||||||
|
LOGGER.info(f"Telemetry Nr.{i} sent out of {len(all_telemetries)} total.")
|
||||||
test_config = PerformanceTestConfig(
|
test_config = PerformanceTestConfig(
|
||||||
MAX_ALLOWED_SINGLE_TELEM_PARSE_TIME, MAX_ALLOWED_TOTAL_TIME
|
MAX_ALLOWED_SINGLE_TELEM_PARSE_TIME, MAX_ALLOWED_TOTAL_TIME
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue