示例#1
0
def test_build_and_run_instance(ebnt: Ebonite, regression_and_data,
                                container_name, mock_env):
    reg, data = regression_and_data
    mock_env = ebnt.meta_repo.create_environment(mock_env)
    check_ebonite_port_free()

    model = ebnt.create_model(reg, data, 'test_model')

    p = mock_env.params
    with p.builder.build_image.called_within_context(
    ), p.runner.run.called_within_context():
        instance = ebnt.build_and_run_instance(model,
                                               container_name,
                                               environment=mock_env)

    assert ebnt.get_environment(
        instance.environment.name) == instance.environment
    assert ebnt.get_image(instance.image.name,
                          instance.image.task) == instance.image
    assert ebnt.get_instance(instance.name, instance.image,
                             instance.environment) == instance

    with pytest.raises(ImageWithInstancesError):
        ebnt.delete_image(instance.image)

    with pytest.raises(EnvironmentWithInstancesError):
        ebnt.delete_environment(instance.environment)

    with p.runner.stop.called_within_context(
    ), p.runner.remove_instance.called_within_context():
        ebnt.delete_instance(instance)
示例#2
0
def test_delete_image__not_only_meta_ok(ebnt: Ebonite, image_to_delete: Image,
                                        mock_env_params):
    assert ebnt.meta_repo.get_image_by_id(image_to_delete.id) is not None
    assert image_to_delete.builder == mock_env_params.builder
    with mock_env_params.builder.delete_image.called_within_context(times=1):
        ebnt.delete_image(image_to_delete, False)
    assert ebnt.meta_repo.get_image_by_id(image_to_delete.id) is None
示例#3
0
def test_delete_image__only_meta_ok(ebnt: Ebonite, image_to_delete: Image,
                                    instance: RuntimeInstance,
                                    mock_env_params):
    assert ebnt.meta_repo.get_image_by_id(image_to_delete.id) is not None
    instance.image = image_to_delete
    instance.environment = image_to_delete.environment
    ebnt.meta_repo.save_instance(instance)
    with mock_env_params.builder.delete_image.called_within_context(times=0):
        ebnt.delete_image(image_to_delete, True, True)
    assert ebnt.meta_repo.get_image_by_id(image_to_delete.id) is None
示例#4
0
def delete_image_ok(ebnt: Ebonite, model: Model):
    task = ebnt.get_or_create_task('Project', 'Task')
    model = ebnt.push_model(model, task)
    image = Image(task_id=task.id, name='Image', source=BuildableMock())
    image = ebnt.meta_repo.create_image(image)

    assert ebnt.meta_repo.get_task_by_id(task.id) is not None
    assert ebnt.meta_repo.get_model_by_id(model.id) is not None
    assert ebnt.meta_repo.get_image_by_id(image.id) is not None
    ebnt.delete_image(image)

    assert ebnt.meta_repo.get_image_by_id(image.id) is None
示例#5
0
def test_delete_image__with_repo_ok(ebnt: Ebonite, image_to_delete: Image):
    assert ebnt.meta_repo.get_image_by_id(image_to_delete.id) is not None
    env = ebnt.get_default_environment()
    env.params = MockEnvironmentParams()
    ebnt.delete_image(image_to_delete, env, False)
    assert ebnt.meta_repo.get_image_by_id(image_to_delete.id) is None