mirror of
https://github.com/deepset-ai/haystack.git
synced 2025-12-16 17:48:19 +00:00
test: attempt to avoid HF API Embedders errors, fail fast when unavoidable (#9766)
* test: better retry configurations for HF API Embedders integration tests * shorter delay, test only on Ubunt * try different settings * fail fast via timeout
This commit is contained in:
parent
329bcbb71c
commit
ed8649743d
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import random
|
import random
|
||||||
|
import sys
|
||||||
from unittest.mock import MagicMock, patch
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
@ -376,7 +377,8 @@ class TestHuggingFaceAPIDocumentEmbedder:
|
|||||||
not os.environ.get("HF_API_TOKEN", None),
|
not os.environ.get("HF_API_TOKEN", None),
|
||||||
reason="Export an env var called HF_API_TOKEN containing the Hugging Face token to run this test.",
|
reason="Export an env var called HF_API_TOKEN containing the Hugging Face token to run this test.",
|
||||||
)
|
)
|
||||||
@pytest.mark.flaky(reruns=2, reruns_delay=10)
|
@pytest.mark.flaky(reruns=3, reruns_delay=10)
|
||||||
|
@pytest.mark.skipif(sys.platform != "linux", reason="We only test on Linux to avoid overloading the HF server")
|
||||||
def test_live_run_serverless(self):
|
def test_live_run_serverless(self):
|
||||||
docs = [
|
docs = [
|
||||||
Document(content="I love cheese", meta={"topic": "Cuisine"}),
|
Document(content="I love cheese", meta={"topic": "Cuisine"}),
|
||||||
@ -389,6 +391,7 @@ class TestHuggingFaceAPIDocumentEmbedder:
|
|||||||
meta_fields_to_embed=["topic"],
|
meta_fields_to_embed=["topic"],
|
||||||
embedding_separator=" | ",
|
embedding_separator=" | ",
|
||||||
)
|
)
|
||||||
|
embedder._client.timeout = 10 # we want to fail fast if the server is not responding
|
||||||
result = embedder.run(documents=docs)
|
result = embedder.run(documents=docs)
|
||||||
documents_with_embeddings = result["documents"]
|
documents_with_embeddings = result["documents"]
|
||||||
|
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import random
|
import random
|
||||||
|
import sys
|
||||||
from unittest.mock import MagicMock, patch
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
@ -216,16 +217,18 @@ class TestHuggingFaceAPITextEmbedder:
|
|||||||
|
|
||||||
@pytest.mark.integration
|
@pytest.mark.integration
|
||||||
@pytest.mark.slow
|
@pytest.mark.slow
|
||||||
@pytest.mark.flaky(reruns=2, reruns_delay=10)
|
@pytest.mark.flaky(reruns=3, reruns_delay=10)
|
||||||
@pytest.mark.skipif(
|
@pytest.mark.skipif(
|
||||||
not os.environ.get("HF_API_TOKEN", None),
|
not os.environ.get("HF_API_TOKEN", None),
|
||||||
reason="Export an env var called HF_API_TOKEN containing the Hugging Face token to run this test.",
|
reason="Export an env var called HF_API_TOKEN containing the Hugging Face token to run this test.",
|
||||||
)
|
)
|
||||||
|
@pytest.mark.skipif(sys.platform != "linux", reason="We only test on Linux to avoid overloading the HF server")
|
||||||
def test_live_run_serverless(self):
|
def test_live_run_serverless(self):
|
||||||
embedder = HuggingFaceAPITextEmbedder(
|
embedder = HuggingFaceAPITextEmbedder(
|
||||||
api_type=HFEmbeddingAPIType.SERVERLESS_INFERENCE_API,
|
api_type=HFEmbeddingAPIType.SERVERLESS_INFERENCE_API,
|
||||||
api_params={"model": "sentence-transformers/all-MiniLM-L6-v2"},
|
api_params={"model": "sentence-transformers/all-MiniLM-L6-v2"},
|
||||||
)
|
)
|
||||||
|
embedder._client.timeout = 10 # we want to fail fast if the server is not responding
|
||||||
result = embedder.run(text="The food was delicious")
|
result = embedder.run(text="The food was delicious")
|
||||||
|
|
||||||
assert len(result["embedding"]) == 384
|
assert len(result["embedding"]) == 384
|
||||||
@ -234,14 +237,16 @@ class TestHuggingFaceAPITextEmbedder:
|
|||||||
@pytest.mark.integration
|
@pytest.mark.integration
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
@pytest.mark.slow
|
@pytest.mark.slow
|
||||||
@pytest.mark.flaky(reruns=2, reruns_delay=10)
|
@pytest.mark.flaky(reruns=3, reruns_delay=10)
|
||||||
@pytest.mark.skipif(os.environ.get("HF_API_TOKEN", "") == "", reason="HF_API_TOKEN is not set")
|
@pytest.mark.skipif(os.environ.get("HF_API_TOKEN", "") == "", reason="HF_API_TOKEN is not set")
|
||||||
|
@pytest.mark.skipif(sys.platform != "linux", reason="We only test on Linux to avoid overloading the HF server")
|
||||||
async def test_live_run_async_serverless(self):
|
async def test_live_run_async_serverless(self):
|
||||||
model_name = "sentence-transformers/all-MiniLM-L6-v2"
|
model_name = "sentence-transformers/all-MiniLM-L6-v2"
|
||||||
|
|
||||||
embedder = HuggingFaceAPITextEmbedder(
|
embedder = HuggingFaceAPITextEmbedder(
|
||||||
api_type=HFEmbeddingAPIType.SERVERLESS_INFERENCE_API, api_params={"model": model_name}
|
api_type=HFEmbeddingAPIType.SERVERLESS_INFERENCE_API, api_params={"model": model_name}
|
||||||
)
|
)
|
||||||
|
embedder._client.timeout = 10 # we want to fail fast if the server is not responding
|
||||||
|
|
||||||
text = "This is a test sentence for embedding."
|
text = "This is a test sentence for embedding."
|
||||||
result = await embedder.run_async(text=text)
|
result = await embedder.run_async(text=text)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user