Beispiel #1
0
def test_dupe_solid_repo_definition():
    @lambda_solid(name='same')
    def noop():
        pass

    @lambda_solid(name='same')
    def noop2():
        pass

    repo = RepositoryDefinition(
        'error_repo',
        pipeline_dict={
            'first': lambda: PipelineDefinition(name='first', solids=[noop]),
            'second':
            lambda: PipelineDefinition(name='second', solids=[noop2]),
        },
    )

    with pytest.raises(DagsterInvalidDefinitionError) as exc_info:
        repo.get_all_pipelines()

    assert str(exc_info.value) == (
        'You have defined two solids named "same" in repository "error_repo". '
        'Solid names must be unique within a repository. The solid has been defined '
        'in pipeline "first" and it has been defined again in pipeline "second."'
    )
def test_dupe_solid_repo_definition():
    @lambda_solid(name='same')
    def noop():
        pass

    @lambda_solid(name='same')
    def noop2():
        pass

    repo = RepositoryDefinition(
        'error_repo',
        pipeline_dict={
            'first': lambda: PipelineDefinition(name='first', solids=[noop]),
            'second':
            lambda: PipelineDefinition(name='second', solids=[noop2]),
        },
    )

    with pytest.raises(DagsterInvalidDefinitionError):
        repo.get_all_pipelines()
def test_repo_definition():
    called = defaultdict(int)
    repo = RepositoryDefinition(
        name='some_repo',
        pipeline_dict={
            'foo': lambda: create_single_node_pipeline('foo', called),
            'bar': lambda: create_single_node_pipeline('bar', called),
        },
    )

    foo_pipeline = repo.get_pipeline('foo')
    assert isinstance(foo_pipeline, PipelineDefinition)
    assert foo_pipeline.name == 'foo'

    assert 'foo' in called
    assert called['foo'] == 1
    assert 'bar' not in called

    bar_pipeline = repo.get_pipeline('bar')
    assert isinstance(bar_pipeline, PipelineDefinition)
    assert bar_pipeline.name == 'bar'

    assert 'foo' in called
    assert called['foo'] == 1
    assert 'bar' in called
    assert called['bar'] == 1

    foo_pipeline = repo.get_pipeline('foo')
    assert isinstance(foo_pipeline, PipelineDefinition)
    assert foo_pipeline.name == 'foo'

    assert 'foo' in called
    assert called['foo'] == 1

    pipelines = repo.get_all_pipelines()

    assert set(['foo',
                'bar']) == set([pipeline.name for pipeline in pipelines])

    assert repo.get_solid_def('foo_solid').name == 'foo_solid'
    assert repo.get_solid_def('bar_solid').name == 'bar_solid'
def test_dupe_solid_repo_definition_unforced():
    @lambda_solid(name='same')
    def noop():
        pass

    @lambda_solid(name='same')
    def noop2():
        pass

    repo = RepositoryDefinition(
        'error_repo',
        pipeline_dict={
            'first': lambda: PipelineDefinition(name='first', solids=[noop]),
            'second':
            lambda: PipelineDefinition(name='second', solids=[noop2]),
        },
        enforce_uniqueness=False,
    )

    assert repo.get_all_pipelines()

    with pytest.raises(DagsterInvariantViolationError):
        repo.get_solid_def('first')