1from collections import defaultdict 2from unittest.mock import MagicMock, patch 3 4import pytest 5import yaml 6from freezegun import freeze_time 7from hypothesis import settings 8 9from .lava.helpers import generate_testsuite_result, jobs_logs_response 10 11settings.register_profile("ci", max_examples=1000, derandomize=True) 12settings.load_profile("ci") 13 14def pytest_configure(config): 15 config.addinivalue_line( 16 "markers", "slow: marks tests as slow (deselect with '-m \"not slow\"')" 17 ) 18 19@pytest.fixture 20def mock_sleep(): 21 """Mock time.sleep to make test faster""" 22 with patch("time.sleep", return_value=None): 23 yield 24 25 26@pytest.fixture 27def frozen_time(mock_sleep): 28 with freeze_time("2024-01-01") as frozen_time: 29 yield frozen_time 30 31 32RESULT_GET_TESTJOB_RESULTS = [{"metadata": {"result": "test"}}] 33 34 35@pytest.fixture 36def mock_proxy(frozen_time): 37 def mock_job_state(jid) -> dict[str, str]: 38 frozen_time.tick(1) 39 return {"job_state": "Running"} 40 41 def create_proxy_mock( 42 job_results=RESULT_GET_TESTJOB_RESULTS, 43 testsuite_results=[generate_testsuite_result()], 44 **kwargs 45 ): 46 proxy_mock = MagicMock() 47 proxy_submit_mock = proxy_mock.scheduler.jobs.submit 48 proxy_submit_mock.return_value = "1234" 49 50 proxy_results_mock = proxy_mock.results.get_testjob_results_yaml 51 proxy_results_mock.return_value = yaml.safe_dump(job_results) 52 53 proxy_test_suites_mock = proxy_mock.results.get_testsuite_results_yaml 54 proxy_test_suites_mock.return_value = yaml.safe_dump(testsuite_results) 55 56 proxy_logs_mock = proxy_mock.scheduler.jobs.logs 57 proxy_logs_mock.return_value = jobs_logs_response() 58 59 proxy_job_state = proxy_mock.scheduler.job_state 60 proxy_job_state.side_effect = mock_job_state 61 62 proxy_show_mock = proxy_mock.scheduler.jobs.show 63 proxy_show_mock.return_value = defaultdict( 64 str, 65 { 66 "device_type": "test_device", 67 "device": "test_device-cbg-1", 68 "state": "created", 69 }, 70 ) 71 72 for key, value in kwargs.items(): 73 setattr(proxy_logs_mock, key, value) 74 75 return proxy_mock 76 77 yield create_proxy_mock 78