Exemplo n.º 1
0
def test_create_existing_job(mock_dir, mock_prepare_job, aws_session):
    mock_dir.return_value = True
    mock_prepare_job.return_value = {
        "jobName": "Test-Job-Name",
        "algorithmSpecification": {
            "containerImage": {
                "uri": "file://test-URI"
            }
        },
        "checkpointConfig": {
            "localPath": "test/local/path/"
        },
    }
    dir_already_exists = (
        "A local directory called Test-Job-Name already exists. Please use a different job name."
    )
    with pytest.raises(ValueError, match=dir_already_exists):
        LocalQuantumJob.create(
            device=Mock(),
            source_module=Mock(),
            entry_point=Mock(),
            image_uri=Mock(),
            job_name=Mock(),
            code_location=Mock(),
            role_arn=Mock(),
            hyperparameters=Mock(),
            input_data=Mock(),
            output_data_config=Mock(),
            checkpoint_config=Mock(),
            aws_session=aws_session,
        )
Exemplo n.º 2
0
def test_create_invalid_arg():
    unexpected_kwarg = "create\\(\\) got an unexpected keyword argument 'wait_until_complete'"
    with pytest.raises(TypeError, match=unexpected_kwarg):
        LocalQuantumJob.create(
            device="device",
            source_module="source",
            wait_until_complete=True,
        )
Exemplo n.º 3
0
def test_create(
    mock_dir,
    mock_container,
    mock_setup,
    mock_retrieve_image,
    mock_prepare_job,
    aws_session,
    creation_kwargs,
    run_result,
    job_results,
    test_envs,
):
    with patch("builtins.open", mock_open()) as file_open:
        mock_dir.side_effect = [False, True]
        mock_prepare_job.return_value = creation_kwargs

        mock_container_open = mock_container.return_value.__enter__.return_value
        mock_container_open.run_result = run_result
        file_read = file_open()
        file_read.read.return_value = json.dumps(job_results)
        mock_setup.return_value = test_envs

        job = LocalQuantumJob.create(
            device=Mock(),
            source_module=Mock(),
            entry_point=Mock(),
            image_uri=Mock(),
            job_name=Mock(),
            code_location=Mock(),
            role_arn=Mock(),
            hyperparameters=Mock(),
            input_data=Mock(),
            output_data_config=Mock(),
            checkpoint_config=Mock(),
            aws_session=aws_session,
        )
        assert job.name == "Test-Job-Name"
        assert job.arn == "local:job/Test-Job-Name"
        assert job.state() == "COMPLETED"
        assert job.metadata() is None
        assert job.cancel() is None
        assert job.download_result() is None
        assert job.logs() is None
        assert job.result() == job_results["dataDictionary"]
        mock_setup.assert_called_with(mock_container_open, aws_session,
                                      **creation_kwargs)
        mock_container_open.run_local_job.assert_called_with(test_envs)
        if isinstance(run_result, Exception):
            assert file_read.write.call_count == 2
            file_read.write.assert_called_with(run_result)
        elif run_result.stdout or run_result.stderr:
            assert file_read.write.call_count == 3
            file_read.write.assert_any_call("Test Output")
            file_read.write.assert_any_call("Test Error")
        else:
            file_read.write.assert_not_called()
Exemplo n.º 4
0
def test_create(
    mock_dir,
    mock_container,
    mock_setup,
    mock_retrieve_image,
    mock_prepare_job,
    aws_session,
    creation_kwargs,
    job_results,
    run_log,
    test_envs,
):
    with patch("builtins.open", mock_open()) as file_open:
        mock_dir.return_value = False
        mock_prepare_job.return_value = creation_kwargs

        mock_container_open = mock_container.return_value.__enter__.return_value
        mock_container_open.run_log = run_log
        file_read = file_open()
        file_read.read.return_value = json.dumps(job_results)
        mock_setup.return_value = test_envs

        job = LocalQuantumJob.create(
            device=Mock(),
            source_module=Mock(),
            entry_point=Mock(),
            image_uri=Mock(),
            job_name=Mock(),
            code_location=Mock(),
            role_arn=Mock(),
            hyperparameters=Mock(),
            input_data=Mock(),
            output_data_config=Mock(),
            checkpoint_config=Mock(),
            aws_session=aws_session,
        )
        assert job.name == "Test-Job-Name"
        assert job.arn == "local:job/Test-Job-Name"
        assert job.state() == "COMPLETED"
        assert job.run_log == run_log
        assert job.metadata() is None
        assert job.cancel() is None
        assert job.download_result() is None
        assert job.logs() is None
        assert job.result() == job_results["dataDictionary"]
        assert job.metrics() == {
            "Cost": [-4.034, -3.957],
            "iteration_number": [0.0, 1.0],
            "timestamp": [1633027264.5406773, 1633027288.6284382],
        }
        mock_setup.assert_called_with(mock_container_open, aws_session,
                                      **creation_kwargs)
        mock_container_open.run_local_job.assert_called_with(test_envs)