Skip to content

Commit b91f506

Browse files
authored
Fix job's get results when status is completed (#707)
1 parent 5aa2937 commit b91f506

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

azure-quantum/azure/quantum/job/job.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ def get_results(self, timeout_secs: float = DEFAULT_TIMEOUT):
125125
if not self.has_completed():
126126
self.wait_until_completed(timeout_secs=timeout_secs)
127127

128-
if not self.details.status == "Succeeded" or self.details.status == "Completed":
128+
if not self.details.status == "Succeeded" and not self.details.status == "Completed":
129129
if self.details.status == "Failed" and self._allow_failure_results():
130130
job_blob_properties = self.download_blob_properties(self.details.output_data_uri)
131131
if job_blob_properties.size > 0:

azure-quantum/tests/unit/test_job_results.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,11 +258,45 @@ def test_job_for_microsoft_quantum_results_shots_v2_wrong_type_raises_exception(
258258
except:
259259
self.assertTrue(True)
260260

261+
def test_job_get_results_with_succeeded_status(self):
262+
"""Test that get_results works correctly when job status is 'Succeeded'"""
263+
job_results = self._get_job_results_with_status("Succeeded", "microsoft.quantum-results.v1", "{\"Histogram\": [\"[0]\", 0.50, \"[1]\", 0.50]}")
264+
self.assertTrue(len(job_results.keys()) == 2)
265+
self.assertEqual(job_results["[0]"], 0.50)
266+
self.assertEqual(job_results["[1]"], 0.50)
267+
268+
def test_job_get_results_with_completed_status(self):
269+
"""Test that get_results works correctly when job status is 'Completed'"""
270+
job_results = self._get_job_results_with_status("Completed", "microsoft.quantum-results.v1", "{\"Histogram\": [\"[0]\", 0.50, \"[1]\", 0.50]}")
271+
self.assertTrue(len(job_results.keys()) == 2)
272+
self.assertEqual(job_results["[0]"], 0.50)
273+
self.assertEqual(job_results["[1]"], 0.50)
274+
275+
def test_job_get_results_with_failed_status_raises_runtime_error(self):
276+
"""Test that get_results raises RuntimeError when job status is 'Failed'"""
277+
with self.assertRaises(RuntimeError) as context:
278+
self._get_job_results_with_status("Failed", "microsoft.quantum-results.v1", "{\"Histogram\": [\"[0]\", 0.50, \"[1]\", 0.50]}")
279+
self.assertIn("Cannot retrieve results as job execution failed", str(context.exception))
280+
self.assertIn("FAILED", str(context.exception))
281+
282+
def test_job_get_results_with_cancelled_status_raises_runtime_error(self):
283+
"""Test that get_results raises RuntimeError when job status is 'Cancelled'"""
284+
with self.assertRaises(RuntimeError) as context:
285+
self._get_job_results_with_status("Cancelled", "microsoft.quantum-results.v1", "{\"Histogram\": [\"[0]\", 0.50, \"[1]\", 0.50]}")
286+
self.assertIn("Cannot retrieve results as job execution failed", str(context.exception))
287+
self.assertIn("CANCELLED", str(context.exception))
288+
261289
def _get_job_results(self, output_data_format, results_as_json_str):
262290
job = self._mock_job(output_data_format, results_as_json_str)
263291

264292
return job.get_results()
265293

294+
def _get_job_results_with_status(self, status, output_data_format, results_as_json_str):
295+
job = self._mock_job(output_data_format, results_as_json_str)
296+
job.details.status = status
297+
298+
return job.get_results()
299+
266300
def _get_job_results_histogram(self, output_data_format, results_as_json_str):
267301
job = self._mock_job(output_data_format, results_as_json_str)
268302

0 commit comments

Comments
 (0)