Handle YouTube test ConnectionErrors (#13133)

Co-authored-by: UltralyticsAssistant <web@ultralytics.com>
pull/13149/head
Glenn Jocher 10 months ago committed by GitHub
parent 722ae9af37
commit c371c953d5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 1
      .gitignore
  2. 3
      tests/test_cli.py
  3. 7
      tests/test_cuda.py
  4. 3
      tests/test_engine.py
  5. 2
      tests/test_exports.py
  6. 3
      tests/test_integrations.py
  7. 20
      tests/test_python.py

1
.gitignore vendored

@ -141,7 +141,6 @@ dmypy.json
datasets/
runs/
wandb/
tests/
.DS_Store
# Neural Network weights -----------------------------------------------------------------------------------------------

@ -4,11 +4,10 @@ import subprocess
import pytest
from tests import CUDA_DEVICE_COUNT, CUDA_IS_AVAILABLE
from ultralytics.cfg import TASK2DATA, TASK2MODEL, TASKS
from ultralytics.utils import ASSETS, WEIGHTS_DIR, checks
from tests import CUDA_DEVICE_COUNT, CUDA_IS_AVAILABLE
# Constants
TASK_MODEL_DATA = [(task, WEIGHTS_DIR / TASK2MODEL[task], TASK2DATA[task]) for task in TASKS]
MODELS = [WEIGHTS_DIR / TASK2MODEL[task] for task in TASKS]

@ -1,16 +1,15 @@
# Ultralytics YOLO 🚀, AGPL-3.0 license
from pathlib import Path
from itertools import product
from pathlib import Path
import pytest
import torch
from tests import CUDA_DEVICE_COUNT, CUDA_IS_AVAILABLE, MODEL, SOURCE
from ultralytics import YOLO
from ultralytics.utils import ASSETS, WEIGHTS_DIR
from ultralytics.cfg import TASK2DATA, TASK2MODEL, TASKS
from tests import CUDA_DEVICE_COUNT, CUDA_IS_AVAILABLE, MODEL, SOURCE
from ultralytics.utils import ASSETS, WEIGHTS_DIR
def test_checks():

@ -3,14 +3,13 @@
import sys
from unittest import mock
from tests import MODEL
from ultralytics import YOLO
from ultralytics.cfg import get_cfg
from ultralytics.engine.exporter import Exporter
from ultralytics.models.yolo import classify, detect, segment
from ultralytics.utils import ASSETS, DEFAULT_CFG, WEIGHTS_DIR
from tests import MODEL
def test_func(*args): # noqa
"""Test function callback."""

@ -7,6 +7,7 @@ from pathlib import Path
import pytest
from tests import MODEL, SOURCE
from ultralytics import YOLO
from ultralytics.cfg import TASK2DATA, TASK2MODEL, TASKS
from ultralytics.utils import (
@ -18,7 +19,6 @@ from ultralytics.utils import (
checks,
)
from ultralytics.utils.torch_utils import TORCH_1_9, TORCH_1_13
from tests import MODEL, SOURCE
def test_export_torchscript():

@ -8,12 +8,11 @@ from pathlib import Path
import pytest
from tests import MODEL, SOURCE, TMP
from ultralytics import YOLO, download
from ultralytics.utils import DATASETS_DIR, SETTINGS
from ultralytics.utils.checks import check_requirements
from tests import MODEL, SOURCE, TMP
@pytest.mark.skipif(not check_requirements("ray", install=False), reason="ray[tune] not installed")
def test_model_ray_tune():

@ -7,27 +7,28 @@ from pathlib import Path
import cv2
import numpy as np
import pytest
import requests
import torch
import yaml
from PIL import Image
from tests import CFG, IS_TMP_WRITEABLE, MODEL, SOURCE, TMP
from ultralytics import RTDETR, YOLO
from ultralytics.cfg import MODELS, TASKS, TASK2DATA
from ultralytics.cfg import MODELS, TASK2DATA, TASKS
from ultralytics.data.build import load_inference_source
from ultralytics.utils import (
ASSETS,
DEFAULT_CFG,
DEFAULT_CFG_PATH,
LOGGER,
ONLINE,
ROOT,
WEIGHTS_DIR,
WINDOWS,
Retry,
checks,
)
from ultralytics.utils.downloads import download, is_url
from ultralytics.utils.downloads import download
from ultralytics.utils.torch_utils import TORCH_1_9
from tests import CFG, IS_TMP_WRITEABLE, MODEL, SOURCE, TMP
def test_model_forward():
@ -130,16 +131,19 @@ def test_predict_grey_and_4ch():
@pytest.mark.slow
@pytest.mark.skipif(not ONLINE, reason="environment is offline")
@pytest.mark.skipif(not is_url("https://youtu.be/G17sBkb38XQ"), reason="YouTube URL issue")
@Retry(times=3, delay=10)
def test_youtube():
"""
Test YouTube inference.
Marked --slow to reduce YouTube API rate limits risk.
Note: YouTube connection errors frequently occur during this test due to
the nature of network instability or YouTube server availability issues.
These errors are caught and logged to avoid test failures caused by external factors.
"""
model = YOLO(MODEL)
model.predict("https://youtu.be/G17sBkb38XQ", imgsz=96, save=True)
try:
model.predict("https://youtu.be/G17sBkb38XQ", imgsz=96, save=True)
except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as e:
LOGGER.warning(f"YouTube connection error: {e}")
@pytest.mark.skipif(not ONLINE, reason="environment is offline")

Loading…
Cancel
Save