mirror of
https://github.com/lancedb/lancedb.git
synced 2025-12-23 13:29:57 +00:00
Co-authored-by: Lance Release <lance-dev@lancedb.com> Co-authored-by: Rob Meng <rob.xu.meng@gmail.com> Co-authored-by: Will Jones <willjones127@gmail.com> Co-authored-by: Chang She <759245+changhiskhan@users.noreply.github.com> Co-authored-by: rmeng <rob@lancedb.com> Co-authored-by: Chang She <chang@lancedb.com> Co-authored-by: Rok Mihevc <rok@mihevc.org>
61 lines
1.9 KiB
Python
61 lines
1.9 KiB
Python
import json
|
|
|
|
import pytest
|
|
|
|
import lancedb
|
|
from lancedb.utils.events import _Events
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def request_log_path(tmp_path):
|
|
return tmp_path / "request.json"
|
|
|
|
|
|
def mock_register_event(name: str, **kwargs):
|
|
if _Events._instance is None:
|
|
_Events._instance = _Events()
|
|
|
|
_Events._instance.enabled = True
|
|
_Events._instance.rate_limit = 0
|
|
_Events._instance(name, **kwargs)
|
|
|
|
|
|
def test_event_reporting(monkeypatch, request_log_path, tmp_path) -> None:
|
|
def mock_request(**kwargs):
|
|
json_data = kwargs.get("json", {})
|
|
with open(request_log_path, "w") as f:
|
|
json.dump(json_data, f)
|
|
|
|
monkeypatch.setattr(
|
|
lancedb.table, "register_event", mock_register_event
|
|
) # Force enable registering events and strip exception handling
|
|
monkeypatch.setattr(lancedb.utils.events, "threaded_request", mock_request)
|
|
|
|
db = lancedb.connect(tmp_path)
|
|
db.create_table(
|
|
"test",
|
|
data=[
|
|
{"vector": [3.1, 4.1], "item": "foo", "price": 10.0},
|
|
{"vector": [5.9, 26.5], "item": "bar", "price": 20.0},
|
|
],
|
|
mode="overwrite",
|
|
)
|
|
|
|
assert request_log_path.exists() # test if event was registered
|
|
|
|
with open(request_log_path, "r") as f:
|
|
json_data = json.load(f)
|
|
|
|
# TODO: don't hardcode these here. Instead create a module level json scehma in lancedb.utils.events for better evolvability
|
|
batch_keys = ["api_key", "distinct_id", "batch"]
|
|
event_keys = ["event", "properties", "timestamp", "distinct_id"]
|
|
property_keys = ["cli", "install", "platforms", "version", "session_id"]
|
|
|
|
assert all([key in json_data for key in batch_keys])
|
|
assert all([key in json_data["batch"][0] for key in event_keys])
|
|
assert all([key in json_data["batch"][0]["properties"] for key in property_keys])
|
|
|
|
# cleanup & reset
|
|
monkeypatch.undo()
|
|
_Events._instance = None
|