Skip to content
Snippets Groups Projects
Commit e3de0603 authored by Charlotte Hausman's avatar Charlotte Hausman
Browse files

updated ws_metrics script and tests

parent 9e1c4eb0
No related branches found
No related tags found
1 merge request!159updated ws_metrics script and tests
Pipeline #1102 passed
......@@ -19,6 +19,12 @@ result_b = 4
args_c = argparse.Namespace(between=None, capability='null')
result_c = 10
args_rd = argparse.Namespace(requestdatasize=['1'], datasize=None)
result_rd = 10
args_d = argparse.Namespace(requestdatasize=None, datasize=['2021-03-30T00:00:00', '2021-03-30T23:59:59'])
result_d = 100
def mock_leu(args: argparse.Namespace) -> LifeUniverseEverything:
with patch("psycopg2.connect") as mock_connect:
......@@ -27,6 +33,8 @@ def mock_leu(args: argparse.Namespace) -> LifeUniverseEverything:
mock_leu_b = mock_leu(args_b)
mock_leu_c = mock_leu(args_c)
mock_leu_rd = mock_leu(args_rd)
mock_leu_d = mock_leu(args_d)
class TestWSMetrics:
......@@ -46,3 +54,17 @@ class TestWSMetrics:
args_b.between[1],
args_b.between[2])
assert value == result_b
def test_get_total_data_volume(self):
mock_leu_d.conn.cursor.return_value.fetchone.return_value = result_d
assert args_d.datasize[0] == '2021-03-30T00:00:00'
assert args_d.datasize[1] == '2021-03-30T23:59:59'
value = mock_leu_d.get_total_data_volume(args_d.datasize[0],
args_d.datasize[1])
assert value == result_d
def test_get_request_data_volume(self):
mock_leu_rd.conn.cursor.return_value.fetchone.return_value = result_rd
assert args_rd.requestdatasize[0] == '1'
value = mock_leu_rd.get_request_data_volume('1')
assert value == result_rd
......@@ -48,6 +48,25 @@ class LifeUniverseEverything:
print("SQL query used: " + sql)
return total_number
def get_request_data_volume(self, request_id: str):
sql = "SELECT sum(datasize) FROM download_metrics WHERE request_id = " + request_id +\
" AND state = \'Complete\' GROUP BY request_id"
cursor = self.conn.cursor()
cursor.execute(sql)
data_volume = cursor.fetchone()
print("SQL query used: " + sql)
return data_volume
def get_total_data_volume(self,
beginning_date: datetime,
end_date: datetime):
sql = "SELECT sum(datasize) FROM download_metrics WHERE state = \'Complete\'"
cursor = self.conn.cursor()
cursor.execute(sql)
data_volume = cursor.fetchone()
print("SQL query used: " + sql)
return data_volume
def run_metrics(self, args: argparse.Namespace):
if args.capability:
result = self.get_total_cap_executions(args.capability)
......@@ -57,6 +76,21 @@ class LifeUniverseEverything:
print("\nTotal number of " + args.between[0] +
" executions between " + args.between[1] +
" and " + args.between[2] + ": " + str(result[0]) + "\n")
if args.requestdatasize:
result = self.get_request_data_volume(args.requestdatasize[0])
print(result)
if result is not None:
print("\nDownload data size for request #" + args.requestdatasize[0] + " : " + str(result[0]))
else:
print("Request #" + args.requestdatasize[0] + " not found!")
if args.datasize:
result = self.get_total_data_volume(args.datasize[0], args.datasize[1])
print(result)
if result[0] is not None:
print("\nTotal volume of downloaded data for range " + args.datasize[0] + " to " +
args.datasize[1] + ": " + str(result[0]))
else:
print("Error: No download capability requests were found!")
def parser() -> argparse.ArgumentParser:
......@@ -85,6 +119,22 @@ def parser() -> argparse.ArgumentParser:
required=False,
help="report the number of times a capability has executed between two user provided timestamps."
)
parser.add_argument(
"-rd",
"--requestdatasize",
nargs=1,
action="store",
required=False,
help="reports the volume of data downloaded for this request in kilobytes."
)
parser.add_argument(
"-d",
"--datasize",
nargs=2,
action="store",
required=False,
help="reports the total volume of data downloaded via the workspaces system over a specified period of time."
)
return parser
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment