Skip to content

Commit 7450aa9

Browse files
committed
Update telemetry unit test.
1 parent b0600c8 commit 7450aa9

File tree

1 file changed

+41
-31
lines changed

1 file changed

+41
-31
lines changed
Lines changed: 41 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,69 @@
11
#!/usr/bin/env python
2-
# -*- coding: utf-8 -*-
32
# Copyright (c) 2024 Oracle and/or its affiliates.
43
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
4+
from unittest.mock import patch
55

6-
7-
from unittest.mock import patch, PropertyMock
6+
import oci
87

98
from ads.telemetry.client import TelemetryClient
109

11-
class TestTelemetryClient:
12-
"""Contains unittests for TelemetryClient."""
10+
TEST_CONFIG = {
11+
"tenancy": "ocid1.tenancy.oc1..unique_ocid",
12+
"user": "ocid1.user.oc1..unique_ocid",
13+
"fingerprint": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00",
14+
"key_file": "<path>/<to>/<key_file>",
15+
"region": "test_region",
16+
}
1317

14-
endpoint = "https://objectstorage.us-ashburn-1.oraclecloud.com"
18+
EXPECTED_ENDPOINT = "https://objectstorage.test_region.oraclecloud.com"
1519

16-
def mocked_requests_head(*args, **kwargs):
17-
class MockResponse:
18-
def __init__(self, status_code):
19-
self.status_code = status_code
2020

21-
return MockResponse(200)
21+
class TestTelemetryClient:
22+
"""Contains unittests for TelemetryClient."""
2223

23-
@patch('requests.head', side_effect=mocked_requests_head)
24-
@patch('ads.telemetry.client.TelemetryClient.service_endpoint', new_callable=PropertyMock,
25-
return_value=endpoint)
26-
def test_telemetry_client_record_event(self, mock_endpoint, mock_head):
27-
"""Tests TelemetryClient.record_event() with category/action and path, respectively.
28-
"""
24+
@patch("oci.base_client.BaseClient.request")
25+
@patch("oci.signer.Signer")
26+
def test_telemetry_client_record_event(self, signer, request_call):
27+
"""Tests TelemetryClient.record_event() with category/action and path, respectively."""
2928
data = {
3029
"cmd": "ads aqua model list",
3130
"category": "aqua/service/model",
3231
"action": "list",
3332
"bucket": "test_bucket",
3433
"namespace": "test_namespace",
35-
"value": {
36-
"keyword": "test_service_model_name_or_id"
37-
}
34+
"value": {"keyword": "test_service_model_name_or_id"},
3835
}
3936
category = data["category"]
4037
action = data["action"]
4138
bucket = data["bucket"]
4239
namespace = data["namespace"]
4340
value = data["value"]
44-
expected_endpoint = f"{self.endpoint}/n/{namespace}/b/{bucket}/o/telemetry/{category}/{action}"
4541

46-
telemetry = TelemetryClient(bucket=bucket, namespace=namespace)
42+
with patch("oci.config.from_file", return_value=TEST_CONFIG):
43+
telemetry = TelemetryClient(bucket=bucket, namespace=namespace)
4744
telemetry.record_event(category=category, action=action)
4845
telemetry.record_event(category=category, action=action, **value)
4946

50-
expected_headers = [
51-
{'User-Agent': ''},
52-
{'User-Agent': 'keyword=test_service_model_name_or_id'}
47+
expected_agent_headers = [
48+
"",
49+
"keyword=test_service_model_name_or_id",
5350
]
54-
i = 0
55-
for call_args in mock_head.call_args_list:
56-
args, kwargs = call_args
57-
assert all(endpoint == expected_endpoint for endpoint in args)
58-
assert kwargs['headers'] == expected_headers[i]
59-
i += 1
51+
52+
assert len(request_call.call_args_list) == 2
53+
expected_url = f"{EXPECTED_ENDPOINT}/n/{namespace}/b/{bucket}/o/telemetry/{category}/{action}"
54+
55+
# Event #1, no user-agent
56+
args, _ = request_call.call_args_list[0]
57+
request: oci.request.Request = args[0]
58+
operation = args[2]
59+
assert request.url == expected_url
60+
assert operation == "head_object"
61+
assert request.header_params["user-agent"] == expected_agent_headers[0]
62+
63+
# Event #2, with user-agent
64+
args, _ = request_call.call_args_list[1]
65+
request: oci.request.Request = args[0]
66+
operation = args[2]
67+
assert request.url == expected_url
68+
assert operation == "head_object"
69+
assert request.header_params["user-agent"] == expected_agent_headers[1]

0 commit comments

Comments
 (0)