1bf215546Sopenharmony_cifrom unittest.mock import MagicMock, patch
2bf215546Sopenharmony_ci
3bf215546Sopenharmony_ciimport pytest
4bf215546Sopenharmony_ciimport yaml
5bf215546Sopenharmony_cifrom freezegun import freeze_time
6bf215546Sopenharmony_ci
7bf215546Sopenharmony_cifrom .lava.helpers import generate_testsuite_result, jobs_logs_response
8bf215546Sopenharmony_ci
9bf215546Sopenharmony_ci
10bf215546Sopenharmony_cidef pytest_configure(config):
11bf215546Sopenharmony_ci    config.addinivalue_line(
12bf215546Sopenharmony_ci        "markers", "slow: marks tests as slow (deselect with '-m \"not slow\"')"
13bf215546Sopenharmony_ci    )
14bf215546Sopenharmony_ci
15bf215546Sopenharmony_ci@pytest.fixture
16bf215546Sopenharmony_cidef mock_sleep():
17bf215546Sopenharmony_ci    """Mock time.sleep to make test faster"""
18bf215546Sopenharmony_ci    with patch("time.sleep", return_value=None):
19bf215546Sopenharmony_ci        yield
20bf215546Sopenharmony_ci
21bf215546Sopenharmony_ci
22bf215546Sopenharmony_ci@pytest.fixture
23bf215546Sopenharmony_cidef frozen_time(mock_sleep):
24bf215546Sopenharmony_ci    with freeze_time() as frozen_time:
25bf215546Sopenharmony_ci        yield frozen_time
26bf215546Sopenharmony_ci
27bf215546Sopenharmony_ci
28bf215546Sopenharmony_ciRESULT_GET_TESTJOB_RESULTS = [{"metadata": {"result": "test"}}]
29bf215546Sopenharmony_ci
30bf215546Sopenharmony_ci
31bf215546Sopenharmony_ci@pytest.fixture
32bf215546Sopenharmony_cidef mock_proxy():
33bf215546Sopenharmony_ci    def create_proxy_mock(
34bf215546Sopenharmony_ci        job_results=RESULT_GET_TESTJOB_RESULTS,
35bf215546Sopenharmony_ci        testsuite_results=[generate_testsuite_result()],
36bf215546Sopenharmony_ci        **kwargs
37bf215546Sopenharmony_ci    ):
38bf215546Sopenharmony_ci        proxy_mock = MagicMock()
39bf215546Sopenharmony_ci        proxy_submit_mock = proxy_mock.scheduler.jobs.submit
40bf215546Sopenharmony_ci        proxy_submit_mock.return_value = "1234"
41bf215546Sopenharmony_ci
42bf215546Sopenharmony_ci        proxy_results_mock = proxy_mock.results.get_testjob_results_yaml
43bf215546Sopenharmony_ci        proxy_results_mock.return_value = yaml.safe_dump(job_results)
44bf215546Sopenharmony_ci
45bf215546Sopenharmony_ci        proxy_test_suites_mock = proxy_mock.results.get_testsuite_results_yaml
46bf215546Sopenharmony_ci        proxy_test_suites_mock.return_value = yaml.safe_dump(testsuite_results)
47bf215546Sopenharmony_ci
48bf215546Sopenharmony_ci        proxy_logs_mock = proxy_mock.scheduler.jobs.logs
49bf215546Sopenharmony_ci        proxy_logs_mock.return_value = jobs_logs_response()
50bf215546Sopenharmony_ci
51bf215546Sopenharmony_ci        for key, value in kwargs.items():
52bf215546Sopenharmony_ci            setattr(proxy_logs_mock, key, value)
53bf215546Sopenharmony_ci
54bf215546Sopenharmony_ci        return proxy_mock
55bf215546Sopenharmony_ci
56bf215546Sopenharmony_ci    yield create_proxy_mock
57