Exemplo n.º 1
0
def test_description(get_job):
    job = cg.EngineJob('a',
                       'b',
                       'steve',
                       EngineContext(),
                       _job=quantum.QuantumJob(description='hello'))
    assert job.description() == 'hello'
    get_job.return_value = quantum.QuantumJob(description='hello')
    assert cg.EngineJob('a', 'b', 'steve',
                        EngineContext()).description() == 'hello'
    get_job.assert_called_once_with('a', 'b', 'steve', False)
Exemplo n.º 2
0
def test_add_labels(add_job_labels):
    job = cg.EngineJob('a',
                       'b',
                       'steve',
                       EngineContext(),
                       _job=qtypes.QuantumJob(labels={}))
    assert job.labels() == {}

    add_job_labels.return_value = qtypes.QuantumJob(labels={
        'a': '1',
    })
    assert job.add_labels({'a': '1'}).labels() == {'a': '1'}
    add_job_labels.assert_called_with('a', 'b', 'steve', {'a': '1'})

    add_job_labels.return_value = qtypes.QuantumJob(labels={
        'a': '2',
        'b': '1'
    })
    assert job.add_labels({
        'a': '2',
        'b': '1'
    }).labels() == {
        'a': '2',
        'b': '1'
    }
    add_job_labels.assert_called_with('a', 'b', 'steve', {'a': '2', 'b': '1'})
Exemplo n.º 3
0
def test_get_calibration(get_calibration):
    qjob = quantum.QuantumJob(execution_status=quantum.ExecutionStatus(
        calibration_name='projects/a/processors/p/calibrations/123'))
    calibration = quantum.QuantumCalibration(data=util.pack_any(
        Merge(
            """
    timestamp_ms: 123000,
    metrics: [{
        name: 'xeb',
        targets: ['0_0', '0_1'],
        values: [{
            double_val: .9999
        }]
    }, {
        name: 't1',
        targets: ['0_0'],
        values: [{
            double_val: 321
        }]
    }, {
        name: 'globalMetric',
        values: [{
            int32_val: 12300
        }]
    }]
""",
            v2.metrics_pb2.MetricsSnapshot(),
        )))
    get_calibration.return_value = calibration

    job = cg.EngineJob('a', 'b', 'steve', EngineContext(), _job=qjob)
    assert list(job.get_calibration()) == ['xeb', 't1', 'globalMetric']
    get_calibration.assert_called_once_with('a', 'p', 123)
Exemplo n.º 4
0
def test_results_len(get_job_results):
    qjob = qtypes.QuantumJob(execution_status=qtypes.ExecutionStatus(
        state=qtypes.ExecutionStatus.State.SUCCESS))
    get_job_results.return_value = RESULTS

    job = cg.EngineJob('a', 'b', 'steve', EngineContext(), _job=qjob)
    assert len(job) == 2
Exemplo n.º 5
0
def test_timeout(patched_time_sleep, get_job):
    qjob = qtypes.QuantumJob(execution_status=qtypes.ExecutionStatus(
        state=qtypes.ExecutionStatus.State.RUNNING))
    get_job.return_value = qjob
    job = cg.EngineJob('a', 'b', 'steve', EngineContext(timeout=500))
    with pytest.raises(RuntimeError, match='Timed out'):
        job.results()
Exemplo n.º 6
0
def test_batched_results(get_job_results):
    qjob = quantum.QuantumJob(
        execution_status=quantum.ExecutionStatus(
            state=quantum.ExecutionStatus.State.SUCCESS),
        update_time=UPDATE_TIME,
    )
    get_job_results.return_value = BATCH_RESULTS

    job = cg.EngineJob('a', 'b', 'steve', EngineContext(), _job=qjob)
    data = job.results()
    assert len(data) == 4
    assert str(data[0]) == 'q=011'
    assert str(data[1]) == 'q=111'
    assert str(data[2]) == 'q=1101'
    assert str(data[3]) == 'q=1001'
    get_job_results.assert_called_once_with('a', 'b', 'steve')

    data = job.batched_results()
    assert len(data) == 2
    assert len(data[0]) == 2
    assert len(data[1]) == 2
    assert str(data[0][0]) == 'q=011'
    assert str(data[0][1]) == 'q=111'
    assert str(data[1][0]) == 'q=1101'
    assert str(data[1][1]) == 'q=1001'
Exemplo n.º 7
0
def test_calibration_results_not_a_calibration(get_job_results):
    qjob = qtypes.QuantumJob(execution_status=qtypes.ExecutionStatus(
        state=qtypes.ExecutionStatus.State.SUCCESS))
    get_job_results.return_value = RESULTS
    job = cg.EngineJob('a', 'b', 'steve', EngineContext(), _job=qjob)
    with pytest.raises(ValueError, match='calibration results'):
        job.calibration_results()
Exemplo n.º 8
0
def test_get_repetitions_and_sweeps_v1(get_job):
    job = cg.EngineJob('a', 'b', 'steve', EngineContext())
    get_job.return_value = quantum.QuantumJob(run_context=util.pack_any(
        v1.program_pb2.RunContext(
            parameter_sweeps=[v1.params_pb2.ParameterSweep(repetitions=10)])))
    with pytest.raises(ValueError, match='v1 RunContext is not supported'):
        job.get_repetitions_and_sweeps()
Exemplo n.º 9
0
def test_labels():
    job = cg.EngineJob('a',
                       'b',
                       'steve',
                       EngineContext(),
                       _job=quantum.QuantumJob(labels={'t': '1'}))
    assert job.labels() == {'t': '1'}
Exemplo n.º 10
0
def test_get_repetitions_and_sweeps_unsupported(get_job):
    job = cg.EngineJob('a', 'b', 'steve', EngineContext())
    get_job.return_value = quantum.QuantumJob(run_context=any_pb2.Any(
        type_url='type.googleapis.com/unknown.proto'))
    with pytest.raises(ValueError,
                       match='unsupported run_context type: unknown.proto'):
        job.get_repetitions_and_sweeps()
Exemplo n.º 11
0
def test_status(get_job):
    qjob = qtypes.QuantumJob(execution_status=qtypes.ExecutionStatus(
        state=qtypes.ExecutionStatus.State.RUNNING))
    get_job.return_value = qjob

    job = cg.EngineJob('a', 'b', 'steve', EngineContext())
    assert job.status() == 'RUNNING'
    get_job.assert_called_once()
Exemplo n.º 12
0
def test_get_repetitions_and_sweeps(get_job):
    job = cg.EngineJob('a', 'b', 'steve', EngineContext())
    get_job.return_value = quantum.QuantumJob(run_context=util.pack_any(
        v2.run_context_pb2.RunContext(parameter_sweeps=[
            v2.run_context_pb2.ParameterSweep(repetitions=10)
        ])))
    assert job.get_repetitions_and_sweeps() == (10, [cirq.UnitSweep])
    get_job.assert_called_once_with('a', 'b', 'steve', True)
Exemplo n.º 13
0
def test_set_description(set_job_description):
    job = cg.EngineJob('a', 'b', 'steve', EngineContext())
    set_job_description.return_value = quantum.QuantumJob(description='world')
    assert job.set_description('world').description() == 'world'
    set_job_description.assert_called_with('a', 'b', 'steve', 'world')

    set_job_description.return_value = quantum.QuantumJob(description='')
    assert job.set_description('').description() == ''
    set_job_description.assert_called_with('a', 'b', 'steve', '')
Exemplo n.º 14
0
def test_results_getitem(get_job_results):
    qjob = qtypes.QuantumJob(execution_status=qtypes.ExecutionStatus(
        state=qtypes.ExecutionStatus.State.SUCCESS))
    get_job_results.return_value = RESULTS

    job = cg.EngineJob('a', 'b', 'steve', EngineContext(), _job=qjob)
    assert str(job[0]) == 'q=0110'
    assert str(job[1]) == 'q=1010'
    with pytest.raises(IndexError):
        _ = job[2]
Exemplo n.º 15
0
def test_create_time():
    job = cg.EngineJob(
        'a',
        'b',
        'steve',
        EngineContext(),
        _job=qtypes.QuantumJob(create_time=qtypes.timestamp_pb2.Timestamp(
            seconds=1581515101)),
    )
    assert job.create_time() == datetime.datetime(2020, 2, 12, 13, 45, 1)
Exemplo n.º 16
0
def test_failure_with_no_error():
    job = cg.EngineJob(
        'a',
        'b',
        'steve',
        EngineContext(),
        _job=quantum.QuantumJob(execution_status=quantum.ExecutionStatus(
            state=quantum.ExecutionStatus.State.SUCCESS)),
    )
    assert not job.failure()
Exemplo n.º 17
0
def test_results_iter(get_job_results):
    qjob = qtypes.QuantumJob(execution_status=qtypes.ExecutionStatus(
        state=qtypes.ExecutionStatus.State.SUCCESS))
    get_job_results.return_value = RESULTS

    job = cg.EngineJob('a', 'b', 'steve', EngineContext(), _job=qjob)
    results = [str(r) for r in job]
    assert len(results) == 2
    assert results[0] == 'q=0110'
    assert results[1] == 'q=1010'
Exemplo n.º 18
0
def test_timeout(get_job):
    qjob = quantum.QuantumJob(
        execution_status=quantum.ExecutionStatus(
            state=quantum.ExecutionStatus.State.RUNNING),
        update_time=UPDATE_TIME,
    )
    get_job.return_value = qjob
    job = cg.EngineJob('a', 'b', 'steve', EngineContext(timeout=0.1))
    with pytest.raises(TimeoutError):
        job.results()
Exemplo n.º 19
0
def test_id():
    job = cg.EngineJob(
        'a',
        'b',
        'steve',
        EngineContext(),
        _job=quantum.QuantumJob(create_time=timestamp_pb2.Timestamp(
            seconds=1581515101)),
    )
    assert job.id() == 'steve'
Exemplo n.º 20
0
def test_batched_results_not_a_batch(get_job_results):
    qjob = quantum.QuantumJob(
        execution_status=quantum.ExecutionStatus(
            state=quantum.ExecutionStatus.State.SUCCESS),
        update_time=UPDATE_TIME,
    )
    get_job_results.return_value = RESULTS
    job = cg.EngineJob('a', 'b', 'steve', EngineContext(), _job=qjob)
    with pytest.raises(ValueError, match='batched_results'):
        job.batched_results()
Exemplo n.º 21
0
def test_processor_ids():
    job = cg.EngineJob(
        'a',
        'b',
        'steve',
        EngineContext(),
        _job=quantum.QuantumJob(scheduling_config=quantum.SchedulingConfig(
            processor_selector=quantum.SchedulingConfig.ProcessorSelector(
                processor_names=['projects/a/processors/p']))),
    )
    assert job.processor_ids() == ['p']
Exemplo n.º 22
0
def test_results(get_job_results):
    qjob = qtypes.QuantumJob(execution_status=qtypes.ExecutionStatus(
        state=qtypes.ExecutionStatus.State.SUCCESS))
    get_job_results.return_value = RESULTS

    job = cg.EngineJob('a', 'b', 'steve', EngineContext(), _job=qjob)
    data = job.results()
    assert len(data) == 2
    assert str(data[0]) == 'q=0110'
    assert str(data[1]) == 'q=1010'
    get_job_results.assert_called_once_with('a', 'b', 'steve')
Exemplo n.º 23
0
def test_update_time(get_job):
    job = cg.EngineJob('a', 'b', 'steve', EngineContext())
    get_job.return_value = quantum.QuantumJob(
        update_time=timestamp_pb2.Timestamp(seconds=1581515101))
    assert job.update_time() == datetime.datetime(2020,
                                                  2,
                                                  12,
                                                  13,
                                                  45,
                                                  1,
                                                  tzinfo=datetime.timezone.utc)
    get_job.assert_called_once_with('a', 'b', 'steve', False)
Exemplo n.º 24
0
def test_calibration__with_no_calibration(get_calibration):
    job = cg.EngineJob(
        'a',
        'b',
        'steve',
        EngineContext(),
        _job=quantum.QuantumJob(
            name='projects/project-id/programs/test/jobs/test',
            execution_status={'state': 'SUCCESS'},
        ),
    )
    calibration = job.get_calibration()
    assert not calibration
    assert not get_calibration.called
Exemplo n.º 25
0
def test_failure():
    job = cg.EngineJob(
        'a',
        'b',
        'steve',
        EngineContext(),
        _job=quantum.QuantumJob(execution_status=quantum.ExecutionStatus(
            state=quantum.ExecutionStatus.State.FAILURE,
            failure=quantum.ExecutionStatus.Failure(
                error_code=quantum.ExecutionStatus.Failure.Code.SYSTEM_ERROR,
                error_message='boom',
            ),
        )),
    )
    assert job.failure() == ('SYSTEM_ERROR', 'boom')
Exemplo n.º 26
0
def test_calibration_defaults(get_job_results):
    qjob = qtypes.QuantumJob(execution_status=qtypes.ExecutionStatus(
        state=qtypes.ExecutionStatus.State.SUCCESS))
    result = v2.calibration_pb2.FocusedCalibrationResult()
    result.results.add()
    get_job_results.return_value = qtypes.QuantumResult(result=_to_any(result))
    job = cg.EngineJob('a', 'b', 'steve', EngineContext(), _job=qjob)
    data = job.calibration_results()
    get_job_results.assert_called_once_with('a', 'b', 'steve')
    assert len(data) == 1
    assert data[0].code == v2.calibration_pb2.CALIBRATION_RESULT_UNSPECIFIED
    assert data[0].error_message is None
    assert data[0].token is None
    assert data[0].valid_until is None
    assert len(data[0].metrics) == 0
Exemplo n.º 27
0
def test_calibration_results(get_job_results):
    qjob = qtypes.QuantumJob(execution_status=qtypes.ExecutionStatus(
        state=qtypes.ExecutionStatus.State.SUCCESS))
    get_job_results.return_value = CALIBRATION_RESULT
    job = cg.EngineJob('a', 'b', 'steve', EngineContext(), _job=qjob)
    data = job.calibration_results()
    get_job_results.assert_called_once_with('a', 'b', 'steve')
    assert len(data) == 1
    assert data[0].code == v2.calibration_pb2.ERROR_CALIBRATION_FAILED
    assert data[0].error_message == 'uh oh'
    assert data[0].token == 'abc'
    assert data[0].valid_until.timestamp() == 1234567891
    assert len(data[0].metrics)
    assert data[0].metrics['theta'] == {
        (cirq.GridQubit(0, 0), cirq.GridQubit(0, 1)): [0.9999]
    }
Exemplo n.º 28
0
def test_set_labels(set_job_labels):
    job = cg.EngineJob('a', 'b', 'steve', EngineContext())
    set_job_labels.return_value = quantum.QuantumJob(labels={
        'a': '1',
        'b': '1'
    })
    assert job.set_labels({
        'a': '1',
        'b': '1'
    }).labels() == {
        'a': '1',
        'b': '1'
    }
    set_job_labels.assert_called_with('a', 'b', 'steve', {'a': '1', 'b': '1'})

    set_job_labels.return_value = quantum.QuantumJob()
    assert job.set_labels({}).labels() == {}
    set_job_labels.assert_called_with('a', 'b', 'steve', {})
Exemplo n.º 29
0
def test_remove_labels(remove_job_labels):
    job = cg.EngineJob('a',
                       'b',
                       'steve',
                       EngineContext(),
                       _job=quantum.QuantumJob(labels={
                           'a': '1',
                           'b': '1'
                       }))
    assert job.labels() == {'a': '1', 'b': '1'}

    remove_job_labels.return_value = quantum.QuantumJob(labels={'b': '1'})
    assert job.remove_labels(['a']).labels() == {'b': '1'}
    remove_job_labels.assert_called_with('a', 'b', 'steve', ['a'])

    remove_job_labels.return_value = quantum.QuantumJob(labels={})
    assert job.remove_labels(['a', 'b', 'c']).labels() == {}
    remove_job_labels.assert_called_with('a', 'b', 'steve', ['a', 'b', 'c'])
Exemplo n.º 30
0
def test_str():
    job = cg.EngineJob('a', 'b', 'steve', EngineContext())
    assert str(
        job
    ) == 'EngineJob(project_id=\'a\', program_id=\'b\', job_id=\'steve\')'