Skip to content

Commit f8a21e8

Browse files
authored
Merge pull request #23 from GDATASoftwareAG/add-tracing-in-python-sdk
Add file_size to tracing, fixes, tests
2 parents db30534 + 266e23b commit f8a21e8

4 files changed

Lines changed: 22 additions & 14 deletions

File tree

python/.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
test-reports/
2-
*.egg-info
2+
*.egg-info
3+
eicar.txt

python/src/vaas/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
:mod:`vaas` is a Python library for the VaaS-API."""
44

55
__version__ = "0.0.1"
6-
__all__ = ["Vaas"]
6+
__all__ = ["Vaas", "VaasTracing"]
77

88
__author__ = "G DATA CyberDefense AG <oem@gdata.de>"
99

10-
from .vaas import Vaas
10+
from .vaas import Vaas, VaasTracing

python/src/vaas/vaas.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class VaasTracing:
1919
def trace_hash_request(self, elapsed_in_seconds):
2020
"""Trace hash request in seconds"""
2121

22-
def trace_upload_request(self, elapsed_in_seconds):
22+
def trace_upload_request(self, elapsed_in_seconds, file_size):
2323
"""Trace upload request in seconds"""
2424

2525

@@ -83,10 +83,9 @@ async def __for_sha256(self, sha256):
8383
}
8484
response_message = self.__response_message_for_guid(guid)
8585
await self.websocket.send(json.dumps(verdict_request))
86-
response_message.add_done_callback(
87-
lambda _: self.tracing.trace_hash_request(time.time() - start)
88-
)
89-
return await response_message
86+
result = await response_message
87+
self.tracing.trace_hash_request(time.time() - start)
88+
return result
9089

9190
def __response_message_for_guid(self, guid):
9291
result = Future()
@@ -116,9 +115,7 @@ async def for_buffer(self, buffer):
116115
response_message = self.__response_message_for_guid(guid)
117116
self.__upload(token, url, buffer)
118117
verdict = (await response_message).get("verdict")
119-
response_message.add_done_callback(
120-
lambda _: self.tracing.trace_upload_request(time.time() - start)
121-
)
118+
self.tracing.trace_upload_request(time.time() - start, len(buffer))
122119

123120
return verdict
124121

python/tests/test_vaas.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22
import base64
33
import os
44
import unittest
5+
from unittest.mock import MagicMock, ANY
56
from dotenv import load_dotenv
6-
7-
from src.vaas import Vaas
8-
7+
from src.vaas import Vaas, VaasTracing
98

109
load_dotenv()
1110

@@ -62,6 +61,17 @@ async def test_for_file_returns_verdict(self):
6261
verdict = await vaas.for_file("eicar.txt")
6362
self.assertEqual(verdict, "Malicious")
6463

64+
async def test_for_buffer_traces(self):
65+
tracing = VaasTracing()
66+
tracing.trace_hash_request = MagicMock()
67+
tracing.trace_upload_request = MagicMock()
68+
async with Vaas(tracing=tracing) as vaas:
69+
await vaas.connect(TOKEN)
70+
buffer = os.urandom(1024)
71+
verdict = await vaas.for_buffer(buffer)
72+
self.assertEqual(verdict, "Clean")
73+
tracing.trace_hash_request.assert_called_with(ANY)
74+
tracing.trace_upload_request.assert_called_with(ANY, 1024)
6575

6676
if __name__ == "__main__":
6777
unittest.main()

0 commit comments

Comments
 (0)