test_oceanbase.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. from unittest.mock import MagicMock, patch
  2. import pytest
  3. from core.rag.datasource.vdb.oceanbase.oceanbase_vector import (
  4. OceanBaseVector,
  5. OceanBaseVectorConfig,
  6. )
  7. from tests.integration_tests.vdb.__mock.tcvectordb import setup_tcvectordb_mock
  8. from tests.integration_tests.vdb.test_vector_store import (
  9. AbstractVectorTest,
  10. get_example_text,
  11. setup_mock_redis,
  12. )
  13. @pytest.fixture
  14. def oceanbase_vector():
  15. return OceanBaseVector(
  16. "dify_test_collection",
  17. config=OceanBaseVectorConfig(
  18. host="127.0.0.1",
  19. port="2881",
  20. user="root@test",
  21. database="test",
  22. password="test",
  23. ),
  24. )
  25. class OceanBaseVectorTest(AbstractVectorTest):
  26. def __init__(self, vector: OceanBaseVector):
  27. super().__init__()
  28. self.vector = vector
  29. def search_by_vector(self):
  30. hits_by_vector = self.vector.search_by_vector(query_vector=self.example_embedding)
  31. assert len(hits_by_vector) == 0
  32. def search_by_full_text(self):
  33. hits_by_full_text = self.vector.search_by_full_text(query=get_example_text())
  34. assert len(hits_by_full_text) == 0
  35. def text_exists(self):
  36. exist = self.vector.text_exists(self.example_doc_id)
  37. assert exist == True
  38. def get_ids_by_metadata_field(self):
  39. ids = self.vector.get_ids_by_metadata_field(key="document_id", value=self.example_doc_id)
  40. assert len(ids) == 0
  41. @pytest.fixture
  42. def setup_mock_oceanbase_client():
  43. with patch("core.rag.datasource.vdb.oceanbase.oceanbase_vector.ObVecClient", new_callable=MagicMock) as mock_client:
  44. yield mock_client
  45. @pytest.fixture
  46. def setup_mock_oceanbase_vector(oceanbase_vector):
  47. with patch.object(oceanbase_vector, "_client"):
  48. yield oceanbase_vector
  49. def test_oceanbase_vector(
  50. setup_mock_redis,
  51. setup_mock_oceanbase_client,
  52. setup_mock_oceanbase_vector,
  53. oceanbase_vector,
  54. ):
  55. OceanBaseVectorTest(oceanbase_vector).run_all_tests()