import pickle
import pytest
from qcs_sdk.qpu.translation import translate
from qcs_sdk.qpu.api import (
ConnectionStrategy,
ExecutionOptions,
retrieve_results,
submit,
)
@pytest.mark.qcs_execution
def test_submit_retrieve(quantum_processor_id: str, execution_options: ExecutionOptions):
program = "DECLARE theta REAL; RZ(theta) 0"
memory = {"theta": [0.5]}
translated = translate(program, 1, quantum_processor_id)
job_id = submit(program=translated.program, patch_values=memory, quantum_processor_id=quantum_processor_id)
results = retrieve_results(
job_id=job_id,
quantum_processor_id=quantum_processor_id,
execution_options=execution_options,
)
assert results is not None
class TestPickle:
@pytest.mark.parametrize(
"strategy",
[
ConnectionStrategy.Gateway(),
ConnectionStrategy.DirectAccess(),
ConnectionStrategy.EndpointId("endpoint_id"),
ConnectionStrategy.EndpointAddress("http://localhost:8080"),
],
)
def test_connection_strategy(self, strategy: ConnectionStrategy):
pickled = pickle.dumps(strategy)
unpickled = pickle.loads(pickled)
assert unpickled == strategy
def test_execution_options(self):
options = ExecutionOptions.default()
pickled = pickle.dumps(options)
unpickled = pickle.loads(pickled)
assert unpickled == options