Skip to content
This repository has been archived by the owner on Sep 1, 2024. It is now read-only.

Commit

Permalink
combine tests and remove logs
Browse files Browse the repository at this point in the history
  • Loading branch information
kaylarizi committed Feb 1, 2024
1 parent 2ec6fbe commit ca912c3
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 66 deletions.
1 change: 0 additions & 1 deletion api/src/services/analyze_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ def __run(algorithm, iterations, message_size):

def __validate_response(response):
response_json = response.json()
logging.error(response_json)
if response.status_code < 200 or response.status_code > 299:
return Status.FAILED, json.dumps(response_json), 0
else:
Expand Down
3 changes: 0 additions & 3 deletions api/src/services/metrics_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,6 @@ def __save_resource_metrics(cpu_metric_name, memory_metric_name, metrics, test_r

def __save_throughput_metrics(requests_metric_name, bytes_metric_name, start_time, end_time, data_bytes, test_run):
requests_throughput, bytes_throughput = __calculate_throughput(test_run.iterations, start_time, end_time, data_bytes)
logging.error('__save_throughput_metrics')
logging.error(requests_throughput)
logging.error(bytes_throughput)
__save_metric_to_db(test_run, requests_metric_name, requests_throughput)
__save_metric_to_db(test_run, bytes_metric_name, bytes_throughput)

Expand Down
103 changes: 41 additions & 62 deletions api/tests/test_analyze_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
client_metrics = {str(datetime.now() + timedelta(seconds=30)) + "123Z":{"cpu":3.6, "memory":254}, str(datetime.now() + timedelta(seconds=36))+ "123Z":{"cpu":3.8, "memory":234}}
server_metrics = {str(datetime.now() + timedelta(seconds=30))+ "123Z":{"cpu":2.3, "memory":154}, str(datetime.now() + timedelta(seconds=36))+ "123Z":{"cpu":2.7, "memory":156}}
metrics = [client_metrics, server_metrics]


@patch('src.utils.metrics_collection_manager.start_collecting', return_value=None)
@patch('src.utils.metrics_collection_manager.stop_collecting', return_value=None)
@patch('src.utils.metrics_collection_manager.get_metrics', return_value=metrics)
Expand All @@ -33,8 +35,8 @@ def setUp(self):
load_config(self.app)
self.app.database_manager = Mock(spec=DatabaseManager)


def test_analyze(self, mock_start_collecting, mock_stop_collecting, mock_get_metrics):
@patch('src.services.metrics_service.parser.parse', side_effect=lambda x: datetime.fromisoformat(x))
def test_analyze(self, mock_parser, mock_start_collecting, mock_stop_collecting, mock_get_metrics):
input_data = {
"algorithms": ["kyber512"],
"iterationsCount": [1000, 2000],
Expand All @@ -48,33 +50,46 @@ def test_analyze(self, mock_start_collecting, mock_stop_collecting, mock_get_met
mock_get.return_value.status_code = 200
mock_get.return_value.json.return_value = {}
mock_post.return_value = MagicMock(status_code=200, json=lambda: {'result': 'success', 'totalRequestSize': 10000})
with patch('src.services.analyze_service.datetime') as mock_datetime:
mock_datetime.now.side_effect = [
datetime(2024, 1, 1, 10, 0, 0),# test suite start time
datetime(2024, 1, 1, 10, 0, 0),# first test run start time
datetime(2024, 1, 1, 10, 2, 0),# first test run end time
datetime(2024, 1, 1, 10, 2, 0),# second test run start time
datetime(2024, 1, 1, 10, 3, 0),# second test run end time
datetime(2024, 1, 1, 10, 3, 0)# test suite end time
]

response = self.client.post(PATH,
data=json.dumps(input_data),
content_type=CONTENT_TYPE)
response = self.client.post(PATH,
data=json.dumps(input_data),
content_type=CONTENT_TYPE)


self.assertEqual(self.app.database_manager.create.call_count, 15)# 1 for the test suite, and 2 for test runs and 6*2(12) for test run metrics
db_call = self.app.database_manager.create.call_args_list
self.assertEqual(db_call[2].args[0].metric_name, Metric.CLIENT_AVERAGE_CPU)
self.assertEqual(db_call[2].args[0].value, 3.7)
self.assertEqual(db_call[3].args[0].metric_name, Metric.CLIENT_AVERAGE_MEMORY)
self.assertEqual(db_call[3].args[0].value, 244.0)
self.assertEqual(db_call[4].args[0].metric_name, Metric.SERVER_AVERAGE_CPU)
self.assertEqual(db_call[4].args[0].value, 2.5)
self.assertEqual(db_call[5].args[0].metric_name, Metric.SERVER_AVERAGE_MEMORY)
self.assertEqual(db_call[5].args[0].value, 155.0)
self.assertEqual(db_call[6].args[0].metric_name, Metric.MESSAGES_THROUGHPUT_PER_SECOND)
self.assertEqual(db_call[6].args[0].value, 0) # test ran 0 secs throughput metrics are 0
self.assertEqual(db_call[7].args[0].metric_name, Metric.BYTES_THROUGHPUT_PER_SECOND)
self.assertEqual(db_call[7].args[0].value, 0)

self.assertEqual(response.status_code, 200)
# Check the response content
response_data = json.loads(response.data)
self.assertIn('test_suite_id', response_data)
self.assertEqual(mock_start_collecting.call_count, 2)
self.assertEqual(mock_stop_collecting.call_count, 2)
self.assertEqual(self.app.database_manager.create.call_count, 15)# 1 for the test suite, and 2 for test runs and 6*2(12) for test run metrics
db_call = self.app.database_manager.create.call_args_list
self.assertEqual(db_call[2].args[0].metric_name, Metric.CLIENT_AVERAGE_CPU)
self.assertEqual(db_call[2].args[0].value, 3.7)
self.assertEqual(db_call[3].args[0].metric_name, Metric.CLIENT_AVERAGE_MEMORY)
self.assertEqual(db_call[3].args[0].value, 244.0)
self.assertEqual(db_call[4].args[0].metric_name, Metric.SERVER_AVERAGE_CPU)
self.assertEqual(db_call[4].args[0].value, 2.5)
self.assertEqual(db_call[5].args[0].metric_name, Metric.SERVER_AVERAGE_MEMORY)
self.assertEqual(db_call[5].args[0].value, 155.0)
self.assertEqual(db_call[6].args[0].metric_name, Metric.MESSAGES_THROUGHPUT_PER_SECOND)
self.assertEqual(db_call[6].args[0].value, 8.0)
self.assertEqual(db_call[7].args[0].metric_name, Metric.BYTES_THROUGHPUT_PER_SECOND)
self.assertEqual(db_call[7].args[0].value, 83.0)
self.assertEqual(db_call[13].args[0].metric_name, Metric.MESSAGES_THROUGHPUT_PER_SECOND)
self.assertEqual(db_call[13].args[0].value, 33.0)
self.assertEqual(db_call[14].args[0].metric_name, Metric.BYTES_THROUGHPUT_PER_SECOND)
self.assertEqual(db_call[14].args[0].value, 167.0)

self.assertEqual(response.status_code, 200)
# Check the response content
response_data = json.loads(response.data)
self.assertIn('test_suite_id', response_data)
self.assertEqual(mock_start_collecting.call_count, 2)
self.assertEqual(mock_stop_collecting.call_count, 2)



Expand Down Expand Up @@ -250,41 +265,5 @@ def test_analyze_sleep_between_tests(self, mock_start_collecting, mock_stop_coll
self.assertGreaterEqual(time_difference.seconds, 15)


@patch('src.services.metrics_service.parser.parse', side_effect=lambda x: datetime.fromisoformat(x))
def test_analyze_duration_of_2_minutes(self, mock_start_collecting, mock_stop_collecting, mock_get_metrics, mock_parser_parse):
input_data = {
"algorithms": ["kyber512"],
"iterationsCount": [1000],
"experimentName": "name",
"description": "name",
"messageSizes": [100]
}

with patch(POST_REQUEST) as mock_post:
with patch(GET_REQUEST) as mock_get:
mock_get.return_value.status_code = 200
mock_get.return_value.json.return_value = {}
with patch('src.services.analyze_service.datetime') as mock_datetime:
mock_datetime.now.side_effect = [
datetime(2024, 1, 1, 10, 0, 0),# test suite start time
datetime(2024, 1, 1, 10, 0, 0),# test run start time
datetime(2024, 1, 1, 10, 2, 0),# test run end time
datetime(2024, 1, 1, 10, 2, 0)# test suite end time
]

mock_post.return_value = MagicMock(status_code=200, json=lambda: {'result': 'success', 'totalRequestSize': 10000})

self.client.post(PATH,
data=json.dumps(input_data),
content_type=CONTENT_TYPE)

self.assertEqual(self.app.database_manager.create.call_count, 8) # 1 for test suite, 1 for test run + 6 metrics
db_call = self.app.database_manager.create.call_args_list
self.assertEqual(db_call[6].args[0].metric_name, Metric.MESSAGES_THROUGHPUT_PER_SECOND)
self.assertEqual(db_call[6].args[0].value, 8.0)
self.assertEqual(db_call[7].args[0].metric_name, Metric.BYTES_THROUGHPUT_PER_SECOND)
self.assertEqual(db_call[7].args[0].value, 83.0)


if __name__ == '__main__':
unittest.main()

0 comments on commit ca912c3

Please sign in to comment.