def test_kubernetes_get_job_status(k8s_phase, k8s_container_state, expected_reana_status, app, kubernetes_job_pod): """Test retrieval of job status.""" with mock.patch("reana_job_controller.job_monitor.threading"): job_monitor_k8s = JobMonitorKubernetes(app=app) job_pod = kubernetes_job_pod(k8s_phase, k8s_container_state) assert job_monitor_k8s.get_job_status(job_pod) == expected_reana_status
def test_if_singelton(app, mocked_job_managers): """Test if job monitor classes are singelton.""" with mock.patch("reana_job_controller.job_monitor.threading"): first_k8s_instance = JobMonitorKubernetes(app=app) second_k8s_instance = JobMonitorKubernetes(app=app) assert first_k8s_instance is second_k8s_instance first_htc_instance = JobMonitorHTCondorCERN(app=app) second_htc_instance = JobMonitorHTCondorCERN(app=app) assert first_htc_instance is second_htc_instance
def test_if_singelton(): """Test if job monitor classes are singelton.""" with mock.patch("reana_job_controller.job_monitor." "threading") as threading: first_k8s_instance = JobMonitorKubernetes() second_k8s_instance = JobMonitorKubernetes() assert first_k8s_instance is second_k8s_instance first_htc_instance = JobMonitorHTCondorCERN() second_htc_instance = JobMonitorHTCondorCERN() assert first_htc_instance is second_htc_instance
def test_kubernetes_get_job_logs(k8s_phase, k8s_container_state, k8s_logs, pod_logs, app, kubernetes_job_pod): """Test retrieval of job logs.""" k8s_corev1_api_client = mock.MagicMock() k8s_corev1_api_client.read_namespaced_pod_log = lambda **kwargs: pod_logs with mock.patch.multiple( "reana_job_controller.job_monitor", current_k8s_corev1_api_client=k8s_corev1_api_client, threading=mock.DEFAULT, ): job_monitor_k8s = JobMonitorKubernetes(app=app) job_pod = kubernetes_job_pod(k8s_phase, k8s_container_state) assert (k8s_logs or pod_logs) in job_monitor_k8s.get_job_logs(job_pod)
def test_kubernetes_clean_job(app, mocked_job_managers): """Test clean jobs in the Kubernetes compute backend.""" with mock.patch("reana_job_controller.job_monitor." "threading"): job_monitor_k8s = JobMonitorKubernetes(app=app) job_id = str(uuid.uuid4()) job_metadata = { "deleted": False, "compute_backend": "kubernetes", "status": "finished", "backend_job_id": str(uuid.uuid4()), } job_monitor_k8s.job_db = {job_id: job_metadata} job_monitor_k8s.clean_job(job_metadata["backend_job_id"]) kubernetes_job_manager = mocked_job_managers["kubernetes"]() assert kubernetes_job_manager.stop.called_once() assert job_monitor_k8s.job_db[job_id]["deleted"] is True
def test_kubernetes_should_process_job( app, compute_backend, deleted, should_process, kubernetes_job_pod ): """Test should process job.""" with mock.patch("reana_job_controller.job_monitor." "threading"): job_monitor_k8s = JobMonitorKubernetes(app=app) job_id = str(uuid.uuid4()) backend_job_id = str(uuid.uuid4()) job_metadata = { "deleted": deleted, "compute_backend": compute_backend, "status": "finished", "backend_job_id": backend_job_id, } job_monitor_k8s.job_db = {job_id: job_metadata} job_pod = kubernetes_job_pod("Succeeded", "Completed", job_id=backend_job_id) assert bool(job_monitor_k8s.should_process_job(job_pod)) == should_process
def test_initialisation(app): """Test initialisation of HTCondor job monitor.""" with mock.patch("reana_job_controller.job_monitor.threading"): JobMonitorHTCondorCERN(app=app) JobMonitorKubernetes(app=app) JobMonitorSlurmCERN(app=app)