From afa3061f647718099cb48e2b23dac4604b8eca98 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Wed, 4 Oct 2023 11:48:07 +0200 Subject: [PATCH 01/12] Update test_genericJob.py --- tests/job/test_genericJob.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/job/test_genericJob.py b/tests/job/test_genericJob.py index 916735c2c..716d35c32 100644 --- a/tests/job/test_genericJob.py +++ b/tests/job/test_genericJob.py @@ -521,7 +521,7 @@ def test_job_executor_cancel(self): exe = ProcessPoolExecutor() j.server.executor = exe self.assertTrue(j.server.run_mode.executor) - exe.submit(sleep, 1) # This part is a bit hacky, but it basically simulates other jobs on the same executor + exe.submit(sleep, 5) # This part is a bit hacky, but it basically simulates other jobs on the same executor j.run() j.server.future.cancel() j.refresh_job_status() From d6678ebb627db9fa19fe199d85d3ef3f962e4fd9 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Wed, 4 Oct 2023 11:52:43 +0200 Subject: [PATCH 02/12] Update test_genericJob.py --- tests/job/test_genericJob.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/job/test_genericJob.py b/tests/job/test_genericJob.py index 716d35c32..21cc0c7d8 100644 --- a/tests/job/test_genericJob.py +++ b/tests/job/test_genericJob.py @@ -525,6 +525,7 @@ def test_job_executor_cancel(self): j.run() j.server.future.cancel() j.refresh_job_status() + self.assertEqual(j.status, "done") self.assertTrue(j.status.aborted) def test_job_executor_wait(self): From 7b609f67e19d65ed09e9ee636a7822c6b5b1c3e0 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Wed, 4 Oct 2023 11:56:34 +0200 Subject: [PATCH 03/12] Update test_genericJob.py --- tests/job/test_genericJob.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/job/test_genericJob.py b/tests/job/test_genericJob.py index 21cc0c7d8..1806f483e 100644 --- a/tests/job/test_genericJob.py +++ b/tests/job/test_genericJob.py @@ -524,8 +524,8 @@ def test_job_executor_cancel(self): exe.submit(sleep, 5) # This part is a bit hacky, but it basically simulates other jobs on the same executor j.run() j.server.future.cancel() + sleep(1) j.refresh_job_status() - self.assertEqual(j.status, "done") self.assertTrue(j.status.aborted) def test_job_executor_wait(self): From d4bbe905d3df8d7f2e165230206a3c3e20773424 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Wed, 4 Oct 2023 12:05:13 +0200 Subject: [PATCH 04/12] Update test_genericJob.py --- tests/job/test_genericJob.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/job/test_genericJob.py b/tests/job/test_genericJob.py index 1806f483e..863896c69 100644 --- a/tests/job/test_genericJob.py +++ b/tests/job/test_genericJob.py @@ -521,11 +521,14 @@ def test_job_executor_cancel(self): exe = ProcessPoolExecutor() j.server.executor = exe self.assertTrue(j.server.run_mode.executor) - exe.submit(sleep, 5) # This part is a bit hacky, but it basically simulates other jobs on the same executor + exe.submit(sleep, 1) # This part is a bit hacky, but it basically simulates other jobs on the same executor j.run() j.server.future.cancel() - sleep(1) j.refresh_job_status() + self.assertEqual(j.project.db.get_job_status(j.job_id), "submitted") + sleep(1) + self.assertEqual(j.project.db.get_job_status(j.job_id), "aborted") + self.assertEqual(j.status, "aborted") self.assertTrue(j.status.aborted) def test_job_executor_wait(self): From 19619920c8ff0cbe04ef223c3205caa3e1eff37f Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Wed, 4 Oct 2023 12:08:22 +0200 Subject: [PATCH 05/12] Update test_genericJob.py --- tests/job/test_genericJob.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/job/test_genericJob.py b/tests/job/test_genericJob.py index 863896c69..64960a14c 100644 --- a/tests/job/test_genericJob.py +++ b/tests/job/test_genericJob.py @@ -525,7 +525,6 @@ def test_job_executor_cancel(self): j.run() j.server.future.cancel() j.refresh_job_status() - self.assertEqual(j.project.db.get_job_status(j.job_id), "submitted") sleep(1) self.assertEqual(j.project.db.get_job_status(j.job_id), "aborted") self.assertEqual(j.status, "aborted") From c325af6cc7e9793a5f3155cc1f78893609519e58 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Wed, 4 Oct 2023 12:11:36 +0200 Subject: [PATCH 06/12] Update test_genericJob.py --- tests/job/test_genericJob.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/job/test_genericJob.py b/tests/job/test_genericJob.py index 64960a14c..51c8ace1a 100644 --- a/tests/job/test_genericJob.py +++ b/tests/job/test_genericJob.py @@ -521,7 +521,7 @@ def test_job_executor_cancel(self): exe = ProcessPoolExecutor() j.server.executor = exe self.assertTrue(j.server.run_mode.executor) - exe.submit(sleep, 1) # This part is a bit hacky, but it basically simulates other jobs on the same executor + exe.submit(sleep, 5) # This part is a bit hacky, but it basically simulates other jobs on the same executor j.run() j.server.future.cancel() j.refresh_job_status() From 73ddb3367ea8572ee7b4f9cb8f6e17c9cc9f00da Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Wed, 4 Oct 2023 16:58:52 +0200 Subject: [PATCH 07/12] Update test_genericJob.py --- tests/job/test_genericJob.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/job/test_genericJob.py b/tests/job/test_genericJob.py index 51c8ace1a..d133ffb8e 100644 --- a/tests/job/test_genericJob.py +++ b/tests/job/test_genericJob.py @@ -525,7 +525,6 @@ def test_job_executor_cancel(self): j.run() j.server.future.cancel() j.refresh_job_status() - sleep(1) self.assertEqual(j.project.db.get_job_status(j.job_id), "aborted") self.assertEqual(j.status, "aborted") self.assertTrue(j.status.aborted) From 361aafd8e7f34d447179c573930f792a92f8fb71 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Thu, 5 Oct 2023 10:35:38 +0200 Subject: [PATCH 08/12] more debugging --- tests/job/test_genericJob.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/job/test_genericJob.py b/tests/job/test_genericJob.py index d133ffb8e..24c57a873 100644 --- a/tests/job/test_genericJob.py +++ b/tests/job/test_genericJob.py @@ -6,6 +6,7 @@ import os from time import sleep from concurrent.futures import Future, ProcessPoolExecutor +from pyiron_base.state import state from pyiron_base.storage.parameters import GenericParameters from pyiron_base.jobs.job.generic import GenericJob from pyiron_base.jobs.job.runfunction import _generate_flux_execute_string @@ -525,6 +526,9 @@ def test_job_executor_cancel(self): j.run() j.server.future.cancel() j.refresh_job_status() + self.assertFalse(state.database.database_is_disabled) + self.assertTrue(j.server.future.done()) + self.assertTrue(j.server.future.cancelled()) self.assertEqual(j.project.db.get_job_status(j.job_id), "aborted") self.assertEqual(j.status, "aborted") self.assertTrue(j.status.aborted) From 28366606b854dcef9f65f168bf0def20d362690f Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Thu, 5 Oct 2023 10:46:53 +0200 Subject: [PATCH 09/12] enforce sleep until future is done --- tests/job/test_genericJob.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tests/job/test_genericJob.py b/tests/job/test_genericJob.py index 24c57a873..f32e47859 100644 --- a/tests/job/test_genericJob.py +++ b/tests/job/test_genericJob.py @@ -522,14 +522,12 @@ def test_job_executor_cancel(self): exe = ProcessPoolExecutor() j.server.executor = exe self.assertTrue(j.server.run_mode.executor) - exe.submit(sleep, 5) # This part is a bit hacky, but it basically simulates other jobs on the same executor + exe.submit(sleep, 1) # This part is a bit hacky, but it basically simulates other jobs on the same executor j.run() j.server.future.cancel() j.refresh_job_status() - self.assertFalse(state.database.database_is_disabled) - self.assertTrue(j.server.future.done()) - self.assertTrue(j.server.future.cancelled()) - self.assertEqual(j.project.db.get_job_status(j.job_id), "aborted") + while not j.server.future.done(): + sleep(0.1) self.assertEqual(j.status, "aborted") self.assertTrue(j.status.aborted) From b69a2242ce50fa0024e12e5c14abe4381a02c79e Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Thu, 5 Oct 2023 10:50:55 +0200 Subject: [PATCH 10/12] enforce single worker --- tests/job/test_genericJob.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/job/test_genericJob.py b/tests/job/test_genericJob.py index f32e47859..b02282277 100644 --- a/tests/job/test_genericJob.py +++ b/tests/job/test_genericJob.py @@ -519,7 +519,7 @@ def test_job_executor_run(self): def test_job_executor_cancel(self): j = self.project.create_job(ReturnCodeJob, "job_with_executor_cancel") j.input["accepted_codes"] = [1] - exe = ProcessPoolExecutor() + exe = ProcessPoolExecutor(max_workers=1) j.server.executor = exe self.assertTrue(j.server.run_mode.executor) exe.submit(sleep, 1) # This part is a bit hacky, but it basically simulates other jobs on the same executor From 7f94f4a16269144151cdb71acefaaa4877b5da70 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Thu, 5 Oct 2023 10:55:18 +0200 Subject: [PATCH 11/12] increase sleep --- tests/job/test_genericJob.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/job/test_genericJob.py b/tests/job/test_genericJob.py index b02282277..12d94b04c 100644 --- a/tests/job/test_genericJob.py +++ b/tests/job/test_genericJob.py @@ -522,7 +522,7 @@ def test_job_executor_cancel(self): exe = ProcessPoolExecutor(max_workers=1) j.server.executor = exe self.assertTrue(j.server.run_mode.executor) - exe.submit(sleep, 1) # This part is a bit hacky, but it basically simulates other jobs on the same executor + exe.submit(sleep, 5) # This part is a bit hacky, but it basically simulates other jobs on the same executor j.run() j.server.future.cancel() j.refresh_job_status() From 44995b1b3ce478f3bffb49c5c307660ba17539c7 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Thu, 5 Oct 2023 11:01:02 +0200 Subject: [PATCH 12/12] just set an empty future --- tests/job/test_genericJob.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tests/job/test_genericJob.py b/tests/job/test_genericJob.py index 12d94b04c..5d62a325c 100644 --- a/tests/job/test_genericJob.py +++ b/tests/job/test_genericJob.py @@ -6,7 +6,6 @@ import os from time import sleep from concurrent.futures import Future, ProcessPoolExecutor -from pyiron_base.state import state from pyiron_base.storage.parameters import GenericParameters from pyiron_base.jobs.job.generic import GenericJob from pyiron_base.jobs.job.runfunction import _generate_flux_execute_string @@ -522,12 +521,9 @@ def test_job_executor_cancel(self): exe = ProcessPoolExecutor(max_workers=1) j.server.executor = exe self.assertTrue(j.server.run_mode.executor) - exe.submit(sleep, 5) # This part is a bit hacky, but it basically simulates other jobs on the same executor - j.run() + j.server.future = Future() j.server.future.cancel() j.refresh_job_status() - while not j.server.future.done(): - sleep(0.1) self.assertEqual(j.status, "aborted") self.assertTrue(j.status.aborted)