This commit is contained in:
Shay Nehmad 2020-02-25 14:57:50 +02:00
parent e815ac53da
commit afbc13a06b
3 changed files with 28 additions and 13 deletions

View File

@ -7,6 +7,14 @@ from envs.monkey_zoo.blackbox.island_client.monkey_island_client import MonkeyIs
MAX_ALLOWED_SINGLE_PAGE_TIME = timedelta(seconds=2) MAX_ALLOWED_SINGLE_PAGE_TIME = timedelta(seconds=2)
MAX_ALLOWED_TOTAL_TIME = timedelta(seconds=5) MAX_ALLOWED_TOTAL_TIME = timedelta(seconds=5)
REPORT_URLS = [
"api/report/security",
"api/attack/report",
"api/report/zero_trust/findings",
"api/report/zero_trust/principles",
"api/report/zero_trust/pillars"
]
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -18,12 +26,17 @@ class PerformanceAnalyzer(Analyzer):
def analyze_test_results(self) -> bool: def analyze_test_results(self) -> bool:
if not self.island_client.is_all_monkeys_dead(): if not self.island_client.is_all_monkeys_dead():
logger.info("Can't test report times since not all Monkeys have died.") raise RuntimeError("Can't test report times since not all Monkeys have died.")
return False
total_time = timedelta() total_time = timedelta()
self.island_client.clear_caches() self.island_client.clear_caches()
report_resource_to_response_time = {}
for url in REPORT_URLS:
report_resource_to_response_time[url] = self.island_client.get_elapsed_for_get_request(url)
timings = self.island_client.time_all_report_pages() timings = self.island_client.time_all_report_pages()
single_page_time_less_then_max = True single_page_time_less_then_max = True

View File

@ -113,13 +113,16 @@ class MonkeyIslandClient(object):
report_resource_to_response_time = {} report_resource_to_response_time = {}
for url in REPORT_URLS: for url in REPORT_URLS:
response = self.requests.get(url) report_resource_to_response_time[url] = self.get_elapsed_for_get_request(url)
if response.ok:
LOGGER.debug(f"Got ok for {url} content peek:\n{response.content[:120].strip()}")
report_resource_to_response_time[url] = response.elapsed
else:
LOGGER.error(f"Trying to get {url} but got unexpected {str(response)}")
# instead of raising for status, mark failed responses as maxtime
report_resource_to_response_time[url] = timedelta.max()
return report_resource_to_response_time return report_resource_to_response_time
def get_elapsed_for_get_request(self, url):
response = self.requests.get(url)
if response.ok:
LOGGER.debug(f"Got ok for {url} content peek:\n{response.content[:120].strip()}")
return response.elapsed
else:
LOGGER.error(f"Trying to get {url} but got unexpected {str(response)}")
# instead of raising for status, mark failed responses as maxtime
return timedelta.max()

View File

@ -13,7 +13,6 @@ from envs.monkey_zoo.blackbox.tests.basic_test import BasicTest
from envs.monkey_zoo.blackbox.log_handlers.test_logs_handler import TestLogsHandler from envs.monkey_zoo.blackbox.log_handlers.test_logs_handler import TestLogsHandler
DEFAULT_TIMEOUT_SECONDS = 5*60 DEFAULT_TIMEOUT_SECONDS = 5*60
PERFORMANCE_TIMEOUT_SECONDS = 10*60
MACHINE_BOOTUP_WAIT_SECONDS = 30 MACHINE_BOOTUP_WAIT_SECONDS = 30
GCP_TEST_MACHINE_LIST = ['sshkeys-11', 'sshkeys-12', 'elastic-4', 'elastic-5', 'hadoop-2', 'hadoop-3', 'mssql-16', GCP_TEST_MACHINE_LIST = ['sshkeys-11', 'sshkeys-12', 'elastic-4', 'elastic-5', 'hadoop-2', 'hadoop-3', 'mssql-16',
'mimikatz-14', 'mimikatz-15', 'struts2-23', 'struts2-24', 'tunneling-9', 'tunneling-10', 'mimikatz-14', 'mimikatz-15', 'struts2-23', 'struts2-24', 'tunneling-9', 'tunneling-10',
@ -70,7 +69,7 @@ class TestMonkeyBlackbox(object):
log_handler=log_handler).run() log_handler=log_handler).run()
@staticmethod @staticmethod
def run_performance_test(island_client, conf_filename, test_name, timeout_in_seconds=DEFAULT_TIMEOUT_SECONDS): def run_performance_test(island_client, conf_filename, test_name, timeout_in_seconds):
config_parser = IslandConfigParser(conf_filename) config_parser = IslandConfigParser(conf_filename)
log_handler = TestLogsHandler(test_name, island_client, TestMonkeyBlackbox.get_log_dir_path()) log_handler = TestLogsHandler(test_name, island_client, TestMonkeyBlackbox.get_log_dir_path())
BasicTest( BasicTest(
@ -141,4 +140,4 @@ class TestMonkeyBlackbox(object):
island_client, island_client,
"PERFORMANCE.conf", "PERFORMANCE.conf",
"test_report_performance", "test_report_performance",
timeout_in_seconds=PERFORMANCE_TIMEOUT_SECONDS) timeout_in_seconds=10*60)