Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions tests/client/client_common.py
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,16 @@ def test_delete_image__not_only_meta_ok(ebnt: Ebonite, image_to_delete: Image, m
assert ebnt.meta_repo.get_image_by_id(image_to_delete.id) is None


def test_get_default_environment(ebnt: Ebonite):
ebnt.default_env = 'Pseudo_env'
env = ebnt.get_default_environment()
assert env == 'Pseudo_env'

ebnt.default_env = None
ebnt.get_default_environment()
assert ebnt.get_environment('docker_localhost') is not None


@docker_test
def test_build_and_run_instance(ebnt: Ebonite, regression_and_data, container_name, mock_env):
reg, data = regression_and_data
Expand Down
58 changes: 56 additions & 2 deletions tests/core/objects/test_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@
from pyjackson import deserialize, serialize
from pyjackson.core import Unserializable

from ebonite.core.errors import (EboniteError, MetadataError, NonExistingModelError, NonExistingTaskError,
from ebonite.core.errors import (EboniteError, MetadataError, NonExistingEnvironmentError, NonExistingModelError,
NonExistingPipelineError, NonExistingProjectError, NonExistingTaskError,
UnboundObjectError)
from ebonite.core.objects import ModelWrapper
from ebonite.core.objects.artifacts import Blobs, InMemoryBlob
from ebonite.core.objects.core import Model, Pipeline, Project, Task, _WrapperMethodAccessor
from ebonite.core.objects.core import (Model, Pipeline, PipelineStep, Project, RuntimeEnvironment, Task,
_WrapperMethodAccessor)
from ebonite.core.objects.dataset_source import DatasetSource
from ebonite.core.objects.metric import Metric
from ebonite.core.objects.requirements import InstallableRequirement, Requirement, Requirements
Expand Down Expand Up @@ -93,6 +95,18 @@ def test_project_serde(project_saved):
serde_and_compare(project_saved)


def test_task_wo_project(task_saved):
task_saved.project_id = 666
with pytest.raises(NonExistingProjectError):
task_saved.project


def test_task_delete_nonexistant_pipe(task_saved):
pipe = Pipeline(id=666, name='pipe', steps=[PipelineStep('a', 'b'), ], input_data=str, output_data=str)
with pytest.raises(NonExistingPipelineError):
task_saved.delete_pipeline(pipe)


def test_task__project_property(project_saved_art, task):
assert project_saved_art.has_artifact_repo
assert project_saved_art.has_meta_repo
Expand Down Expand Up @@ -179,6 +193,9 @@ def test_task__delete_model_with_artifacts(task_saved, model, artifact_repo):
assert model.id is None
assert model.task_id is None

task_saved.unbind_artifact_repo()
assert task_saved.has_artifact_repo is False


def test_task__delete_model__nonexistent(task_factory, model):
model_task = task_factory(True)
Expand Down Expand Up @@ -239,6 +256,8 @@ def test_task__delete_metric_non_existing(task_saved):


def test_task__add_dataset(task_saved, dataset):
assert task_saved.has_dataset_repo is True

task_saved.add_dataset('data', dataset)
assert 'data' in task_saved.datasets
assert isinstance(task_saved.datasets['data'], DatasetSource)
Expand All @@ -250,6 +269,9 @@ def test_task__add_dataset(task_saved, dataset):
assert isinstance(task.datasets['data'], DatasetSource)
assert not isinstance(task.datasets['data'], Unserializable)

task_saved.unbind_dataset_repo()
assert task_saved.has_dataset_repo is False


def test_task__add_dataset_exists(task_saved, dataset):
task_saved.add_dataset('data', dataset)
Expand Down Expand Up @@ -449,6 +471,15 @@ def f2(a):
return model


def test_pipeline_wo_task(meta, len_model, task_saved):
pipeline = len_model.as_pipeline()
pipeline.task_id = task_saved.id
pipeline = meta.create_pipeline(pipeline)
pipeline.task_id = 666
with pytest.raises(NonExistingTaskError):
pipeline.task


def test_pipeline__append(double_model, len_model):
p1 = double_model.as_pipeline()
p2 = p1.append(len_model)
Expand Down Expand Up @@ -548,6 +579,29 @@ def test_task__delete_pipeline(task_factory, pipeline_factory):


# ################IMAGES###########
def test_image_wo_task(meta, image_factory, task_saved):
image = image_factory()
image.task_id = task_saved.id
image = meta.create_image(image)
image.task_id = 666
with pytest.raises(NonExistingTaskError):
image.task

with pytest.raises(UnboundObjectError):
image.environment

env = RuntimeEnvironment('env')
env = meta.create_environment(env)

image_2 = image_factory()
image_2.task_id = task_saved.id
image_2.environment_id = env.id
image_2 = meta.create_image(image_2)
image_2.environment_id = 666
with pytest.raises(NonExistingEnvironmentError):
image_2.environment


def test_task__no_images(task_factory):
task = task_factory(True)

Expand Down