Skip to content

Commit 7eedb0b

Browse files
authored
Fix e2e tests (#675)
* fix: E2E tests regression
1 parent 7b74390 commit 7eedb0b

10 files changed

+3402
-36580
lines changed

azure-quantum/azure/quantum/cirq/targets/quantinuum.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
# Copyright (c) Microsoft Corporation.
33
# Licensed under the MIT License.
44
##
5+
import json
56
import numpy as np
67

78
from typing import TYPE_CHECKING, Any, Dict, Sequence
@@ -97,7 +98,7 @@ def submit(
9798
metadata = {
9899
"qubits": len(program.all_qubits()),
99100
"repetitions": repetitions,
100-
"measurement_dict": self._measurement_dict(program)
101+
"measurement_dict": json.dumps(self._measurement_dict(program))
101102
}
102103
# Override metadata with value from kwargs
103104
metadata.update(kwargs.get("metadata", {}))

azure-quantum/azure/quantum/qiskit/backends/ionq.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
if TYPE_CHECKING:
2828
from azure.quantum.qiskit import AzureQuantumProvider
2929

30+
import json
31+
3032
import logging
3133

3234
logger = logging.getLogger(__name__)
@@ -244,7 +246,7 @@ def _prepare_job_metadata(self, circuit, **kwargs):
244246
_, _, meas_map = qiskit_circ_to_ionq_circ(circuit, gateset=self.gateset())
245247

246248
metadata = super()._prepare_job_metadata(circuit, **kwargs)
247-
metadata["meas_map"] = meas_map
249+
metadata["meas_map"] = json.dumps(meas_map)
248250

249251
return metadata
250252

azure-quantum/tests/unit/common.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ class RegexScrubbingPatterns:
6969
URL_QUERY_AUTH_CLAIMS = r"claims=[\w\%\-\.]+"
7070
URL_QUERY_AUTH_CODE_VERIFIER = r"code_verifier=[\w\%\-\.]+"
7171
URL_QUERY_AUTH_CODE = r"code=[\w\%\-\.]+"
72+
URL_QUERY_KEY_CODE = r"key=[\w\%\-\.]+"
7273
URL_HTTP = r"http://" # Devskim: ignore DS137138
7374

7475
class QuantumTestBase(ReplayableTest):
@@ -180,6 +181,8 @@ def __init__(self, method_name):
180181
"code_verifier=PLACEHOLDER")
181182
self._regex_replacer.register_scrubbing(RegexScrubbingPatterns.URL_QUERY_AUTH_CODE,
182183
"code=PLACEHOLDER")
184+
self._regex_replacer.register_scrubbing(RegexScrubbingPatterns.URL_QUERY_KEY_CODE,
185+
"key=PLACEHOLDER")
183186
self._regex_replacer.register_scrubbing(RegexScrubbingPatterns.URL_HTTP, "https://")
184187

185188
self._regex_replacer.register_scrubbing(
@@ -318,14 +321,14 @@ def create_echo_target(
318321
**kwargs
319322
) -> Target:
320323
"""
321-
Create a `Microsoft.Test.echo-target` Target for simple job submission tests.
324+
Create a `Microsoft.Test.FirstParty.echo-target` Target for simple job submission tests.
322325
Uses the Workspace returned from `create_workspace()` method.
323326
"""
324327
workspace = self.create_workspace(credential=credential, **kwargs)
325328
target = Target(
326329
workspace=workspace,
327330
name="echo-output",
328-
provider_id="Microsoft.Test",
331+
provider_id="Microsoft.Test.FirstParty",
329332
input_data_format = "microsoft.quantum-log.v1",
330333
output_data_format = "microsoft.quantum-log.v1"
331334
)

azure-quantum/tests/unit/recordings/test_dft_failure_algorithm_produces_output.yaml

Lines changed: 1105 additions & 386 deletions
Large diffs are not rendered by default.

azure-quantum/tests/unit/recordings/test_dft_failure_invalid_input.yaml

Lines changed: 1490 additions & 218 deletions
Large diffs are not rendered by default.

azure-quantum/tests/unit/recordings/test_dft_success.yaml

Lines changed: 476 additions & 382 deletions
Large diffs are not rendered by default.

azure-quantum/tests/unit/recordings/test_workspace_auth_connection_string_api_key.yaml

Lines changed: 305 additions & 35556 deletions
Large diffs are not rendered by default.

azure-quantum/tests/unit/test_authentication.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ def test_workspace_auth_connection_string_api_key(self):
341341
token = self._get_rp_credential()
342342
workspace = self._get_workspace(token)
343343
self._enable_workspace_api_keys(token, workspace, True)
344+
time.sleep(10)
344345
connection_string = self._get_current_primary_connection_string(token)
345346
self.resume_recording()
346347
# Sleep 1 min for cache to be cleared
@@ -351,8 +352,8 @@ def test_workspace_auth_connection_string_api_key(self):
351352
workspace = Workspace.from_connection_string(
352353
connection_string=connection_string,
353354
)
354-
jobs = workspace.list_jobs()
355-
assert len(jobs) >= 0
355+
jobs_paged = workspace.list_jobs_paginated()
356+
assert jobs_paged.next() is not None
356357

357358
if not self.is_playback:
358359
self.pause_recording()
@@ -369,6 +370,6 @@ def test_workspace_auth_connection_string_api_key(self):
369370
connection_string=connection_string,
370371
)
371372
with self.assertRaises(Exception) as context:
372-
workspace.list_jobs()
373+
workspace.list_jobs_paginated().next()
373374

374375
self.assertIn("Unauthorized", context.exception.message)

azure-quantum/tests/unit/test_microsoft_elements_dft.py

Lines changed: 10 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,8 @@ class TestMicrosoftElementsDftJob(QuantumTestBase):
1616
@pytest.mark.microsoft_elements_dft
1717
def test_dft_success(self):
1818
dft_input_params = {
19-
"tasks": [
20-
{
21-
"taskType": "spe",
22-
"basisSet": { "name": "def2-svp", "cartesian": False },
23-
"xcFunctional": { "name": "m06-2x", "gridLevel": 4 },
24-
"scf": { "method": "rks", "maxSteps": 100, "convergeThreshold": 1e-8 }
25-
}
26-
]
19+
"driver": "energy",
20+
"model": {"method": "m06-2x", "basis": "def2-svp"},
2721
}
2822

2923
job = self._run_job(dft_input_params)
@@ -37,14 +31,8 @@ def test_dft_success(self):
3731
@pytest.mark.microsoft_elements_dft
3832
def test_dft_failure_invalid_input(self):
3933
dft_input_params = {
40-
"tasks": [
41-
{
42-
"taskType": "invlidTask",
43-
"basisSet": { "name": "def2-svp", "cartesian": False },
44-
"xcFunctional": { "name": "m06-2x", "gridLevel": 4 },
45-
"scf": { "method": "rks", "maxSteps": 100, "convergeThreshold": 1e-8 }
46-
}
47-
]
34+
"driver": "energy",
35+
"model": {"method": "m06-2x", "basis": "invalidBasis"},
4836
}
4937

5038
job = self._run_job(dft_input_params)
@@ -58,14 +46,8 @@ def test_dft_failure_invalid_input(self):
5846
@pytest.mark.microsoft_elements_dft
5947
def test_dft_failure_algorithm_produces_output(self):
6048
dft_input_params = {
61-
"tasks": [
62-
{
63-
"taskType": "spe",
64-
"basisSet": { "name": "def2-svp", "cartesian": False },
65-
"xcFunctional": { "name": "m06-2x", "gridLevel": 4 },
66-
"scf": { "method": "rks", "maxSteps": 1, "convergeThreshold": 1e-8 }
67-
}
68-
]
49+
"driver": "energy",
50+
"model": {"method": "m06-2x", "basis": "invalidBasis"},
6951
}
7052

7153
job = self._run_job(dft_input_params)
@@ -82,12 +64,11 @@ def _run_job(self, input_params) -> Job:
8264
target = workspace.get_targets("microsoft.dft")
8365
dir_path = os.path.dirname(os.path.realpath(__file__))
8466

85-
with open(f"{dir_path}/molecule.xyz", "r") as file:
86-
job = target.submit(input_data=file.read(), input_params=input_params)
87-
job.wait_until_completed(timeout_secs=DEFAULT_TIMEOUT_SECS)
88-
job.refresh()
67+
job = target.submit(input_data=[f"{dir_path}/molecule.xyz"], input_params=input_params)
68+
job.wait_until_completed(timeout_secs=DEFAULT_TIMEOUT_SECS)
69+
job.refresh()
8970

90-
return job
71+
return job
9172

9273
test_xyz_file = Path(__file__).parent / "molecule.xyz"
9374

azure-quantum/tests/unit/test_qiskit.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -940,7 +940,7 @@ def test_qiskit_get_ionq_native_gateset(self):
940940
self.assertEqual("native", payload["gateset"])
941941
# We also expect the metadata to be produced correctly for native circuits
942942
metadata = backend._prepare_job_metadata(native_circuit)
943-
self.assertEqual(2, len(metadata["meas_map"]))
943+
self.assertEqual(2,len(json.loads(metadata["meas_map"])))
944944

945945
# should also be available with the qpu target
946946
backend = provider.get_backend("ionq.qpu.aria-1", gateset="native")
@@ -950,7 +950,7 @@ def test_qiskit_get_ionq_native_gateset(self):
950950
payload = json.loads(payload.decode("utf-8"))
951951
self.assertEqual("ms", payload["circuit"][0]["gate"])
952952
metadata = backend._prepare_job_metadata(native_circuit)
953-
self.assertEqual(2, len(metadata["meas_map"]))
953+
self.assertEqual(2, len(json.loads(metadata["meas_map"])))
954954

955955
@pytest.mark.ionq
956956
@pytest.mark.live_test

0 commit comments

Comments
 (0)