• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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