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() 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 create_proxy_mock( 38 job_results=RESULT_GET_TESTJOB_RESULTS, 39 testsuite_results=[generate_testsuite_result()], 40 **kwargs 41 ): 42 proxy_mock = MagicMock() 43 proxy_submit_mock = proxy_mock.scheduler.jobs.submit 44 proxy_submit_mock.return_value = "1234" 45 46 proxy_results_mock = proxy_mock.results.get_testjob_results_yaml 47 proxy_results_mock.return_value = yaml.safe_dump(job_results) 48 49 proxy_test_suites_mock = proxy_mock.results.get_testsuite_results_yaml 50 proxy_test_suites_mock.return_value = yaml.safe_dump(testsuite_results) 51 52 proxy_logs_mock = proxy_mock.scheduler.jobs.logs 53 proxy_logs_mock.return_value = jobs_logs_response() 54 55 proxy_job_state = proxy_mock.scheduler.job_state 56 proxy_job_state.return_value = {"job_state": "Running"} 57 proxy_job_state.side_effect = frozen_time.tick(1) 58 59 proxy_show_mock = proxy_mock.scheduler.jobs.show 60 proxy_show_mock.return_value = defaultdict( 61 str, 62 { 63 "device_type": "test_device", 64 "device": "test_device-cbg-1", 65 "state": "created", 66 }, 67 ) 68 69 for key, value in kwargs.items(): 70 setattr(proxy_logs_mock, key, value) 71 72 return proxy_mock 73 74 yield create_proxy_mock 75