Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update forked repository. #1

Merged
merged 106 commits into from
May 27, 2020
Merged

Conversation

DavidKatz-il
Copy link
Owner

No description provided.

helloworld and others added 30 commits May 18, 2020 11:59
Summary:
Example output:

```
{"__class__": "ExecutePipelineStartMessage"}
{"__class__": "DagsterEvent", "event_specific_data": null, "event_type_value": "PIPELINE_START", "logging_tags": {}, "message": "Started execution of pipeline \"test_pipeline\".", "pipeline_name": "test_pipeline", "solid_handle": null, "step_key": null, "step_kind_value": null}
{"__class__": "DagsterEvent", "event_specific_data": {"__class__": "EngineEventData", "error": null, "marker_end": null, "marker_start": null, "metadata_entries": [{"__class__": "EventMetadataEntry", "description": null, "entry_data": {"__class__": "TextMetadataEntryData", "text": "35573"}, "label": "pid"}, {"__class__": "EventMetadataEntry", "description": null, "entry_data": {"__class__": "TextMetadataEntryData", "text": "['test_solid.compute']"}, "label": "step_keys"}]}, "event_type_value": "ENGINE_EVENT", "logging_tags": {}, "message": "Executing steps in process (pid: 35573)", "pipeline_name": "test_pipeline", "solid_handle": null, "step_key": null, "step_kind_value": null}
{"__class__": "DagsterEvent", "event_specific_data": null, "event_type_value": "STEP_START", "logging_tags": {"pipeline": "test_pipeline", "solid": "test_solid", "solid_definition": "test_solid", "step_key": "test_solid.compute"}, "message": "Started execution of step \"test_solid.compute\".", "pipeline_name": "test_pipeline", "solid_handle": {"__class__": "SolidHandle", "name": "test_solid", "parent": null}, "step_key": "test_solid.compute", "step_kind_value": "COMPUTE"}
{"__class__": "DagsterEvent", "event_specific_data": {"__class__": "StepOutputData", "intermediate_materialization": null, "step_output_handle": {"__class__": "StepOutputHandle", "output_name": "result", "step_key": "test_solid.compute"}, "type_check_data": {"__class__": "TypeCheckData", "description": null, "label": "result", "metadata_entries": [], "success": true}}, "event_type_value": "STEP_OUTPUT", "logging_tags": {"pipeline": "test_pipeline", "solid": "test_solid", "solid_definition": "test_solid", "step_key": "test_solid.compute"}, "message": "Yielded output \"result\" of type \"Any\". (Type check passed).", "pipeline_name": "test_pipeline", "solid_handle": {"__class__": "SolidHandle", "name": "test_solid", "parent": null}, "step_key": "test_solid.compute", "step_kind_value": "COMPUTE"}
{"__class__": "DagsterEvent", "event_specific_data": {"__class__": "StepSuccessData", "duration_ms": 6.887455000000209}, "event_type_value": "STEP_SUCCESS", "logging_tags": {"pipeline": "test_pipeline", "solid": "test_solid", "solid_definition": "test_solid", "step_key": "test_solid.compute"}, "message": "Finished execution of step \"test_solid.compute\" in 6.89ms.", "pipeline_name": "test_pipeline", "solid_handle": {"__class__": "SolidHandle", "name": "test_solid", "parent": null}, "step_key": "test_solid.compute", "step_kind_value": "COMPUTE"}
{"__class__": "DagsterEvent", "event_specific_data": {"__class__": "EngineEventData", "error": null, "marker_end": null, "marker_start": null, "metadata_entries": [{"__class__": "EventMetadataEntry", "description": null, "entry_data": {"__class__": "TextMetadataEntryData", "text": "35573"}, "label": "pid"}, {"__class__": "EventMetadataEntry", "description": null, "entry_data": {"__class__": "TextMetadataEntryData", "text": "['test_solid.compute']"}, "label": "step_keys"}]}, "event_type_value": "ENGINE_EVENT", "logging_tags": {}, "message": "Finished steps in process (pid: 35573) in 23ms", "pipeline_name": "test_pipeline", "solid_handle": null, "step_key": null, "step_kind_value": null}
{"__class__": "DagsterEvent", "event_specific_data": null, "event_type_value": "PIPELINE_SUCCESS", "logging_tags": {}, "message": "Finished execution of pipeline \"test_pipeline\".", "pipeline_name": "test_pipeline", "solid_handle": null, "step_key": null, "step_kind_value": null}
{"__class__": "ExecutePipelineEndMessage"}
```

Example output in case of framework error:

```
{"__class__": "ExecutePipelineStartMessage"}
{"__class__": "SerializableErrorInfo", "cause": null, "cls_name": "TypeError", "message": "TypeError: the JSON object must be str, bytes or bytearray, not NoneType\n", "stack": ["  File \"/Users/sashankthupukari/projects/dagster/python_modules/dagster/dagster/cli/api.py\", line 106, in execute_pipeline_command\n    environment_dict = json.loads(environment_dict)\n", "  File \"/Users/sashankthupukari/.pyenv/versions/3.7.5/lib/python3.7/json/__init__.py\", line 341, in loads\n    raise TypeError(f'the JSON object must be str, bytes or bytearray, '\n"]}
{"__class__": "ExecutePipelineEndMessage"}
```

Test Plan: unit

Reviewers: prha, schrockn, alangenfeld

Reviewed By: schrockn

Differential Revision: https://dagster.phacility.com/D2806
Test Plan: manual

Reviewers: schrockn

Differential Revision: https://dagster.phacility.com/D2970
Test Plan: unit

Reviewers: schrockn

Differential Revision: https://dagster.phacility.com/D2971
Summary: Spell checker continuing to pay dividends

Test Plan: BK

Reviewers: max, alangenfeld, sashank

Reviewed By: sashank

Differential Revision: https://dagster.phacility.com/D2975
Summary:
This diff removes the repository definition from the schedule execution context. This was initially added as a hack for the backfilling scheduler, but is unecessary because schedule definitions and repository definitions are co-located now.

This lets use remove a few more calls to `get_repository_definition()` in `dagster-graphql`

Test Plan: unit

Reviewers: schrockn, alangenfeld

Reviewed By: schrockn

Differential Revision: https://dagster.phacility.com/D2972
…ository

Summary: Simply getting rid of a few more calls to `get_repository_definition` where it is unecessary

Test Plan: unit

Reviewers: schrockn, alangenfeld

Reviewed By: schrockn

Differential Revision: https://dagster.phacility.com/D2973
Summary: This is to support run group-oriented UI

Test Plan: Unit

Reviewers: yuhan, alangenfeld, prha, bengotow

Reviewed By: yuhan

Subscribers: bengotow, prha

Differential Revision: https://dagster.phacility.com/D2444
Summary: Stacked on D2444

Test Plan: Unit

Reviewers: prha, bengotow, alangenfeld, schrockn, yuhan

Reviewed By: schrockn

Differential Revision: https://dagster.phacility.com/D2470
Summary:
Inform the user when a run cannot be reexecuted because the pipeline is not present in the current repository.
{F140800}

Test Plan: Manual

Reviewers: yuhan, prha

Reviewed By: yuhan, prha

Differential Revision: https://dagster.phacility.com/D2969
Summary: A lot of these were referring to the wrong issue number

Test Plan: BK

Reviewers: sashank

Reviewed By: sashank

Differential Revision: https://dagster.phacility.com/D2977
Summary:
#2453

a few changes
- untie the step selection from log filter
  * code-wise, `ReexecuteWithData` now owns
     - `selectedSteps`  which was previously generated from `Run`'s state `logsFilter`
     - `query` which was previously owned by `GaantChart`. We lifted it up b/c click event on single step will also update query now.
  * behavior-wise, click on a step will 1) select a step, 2) filter the log of this step, and 3) update the selector query. Removing the filter won't deselect the step.
- click a selected step will deselect it, remove it from log filter, and clear the selector query
- the "type a step subset" input will now change the `selectedSteps` therefore enable multi-step re-execution
  * the step selector no longer hide unselected steps by default. we now have a checkbox to give users the option to show/hide unselected steps

single step selection via single-click

{F139989}

arbitrary step subset selection via selector syntax

{F139980}

Test Plan:
click around dagit
- playground
- run

Reviewers: bengotow, schrockn, max

Reviewed By: schrockn

Differential Revision: https://dagster.phacility.com/D2959
Summary: #2471

Test Plan:
bk

{F140971}

Reviewers: max, bengotow

Reviewed By: max

Differential Revision: https://dagster.phacility.com/D2981
Summary: Fixes broken tests on windows

Test Plan: unit

Reviewers: max, prha, alangenfeld

Reviewed By: alangenfeld

Subscribers: alangenfeld

Differential Revision: https://dagster.phacility.com/D2983
Summary: Spelling mistakes are bad. Also for avoiding keyword collisions standard practice is to append underscores

Test Plan: BK

Reviewers: alangenfeld, max, sashank

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D2985
Summary: Remove back compat support for old schedules and paritions loading scheme. To be landed for 0.8.0 release

Test Plan: bk

Reviewers: prha, sashank

Reviewed By: sashank

Subscribers: schrockn

Differential Revision: https://dagster.phacility.com/D2709
… dagster cli as api

Summary:
This adds a place to collect calls over the dagster cli api. Adapts test code
written to test as a top level API. Dagster-graphql and other host processes invoke
these directly.

This would also be the layer where we replace the implementation with grpc (or similar)
when that becomes appropriate.

Test Plan: BK

Reviewers: max, sashank, alangenfeld

Reviewed By: sashank

Differential Revision: https://dagster.phacility.com/D2978
Summary:
We need this in order for a host process and a user process to share instance information

This PR also adds an error message to the IPC channel. I had difficultly
debugging a JSON parsing error and being able to send an error object
across with a custom message was much easier that the bare serializable
error info. This also distinguishes between "user" errors and protocol
errors in this layer.

Depends on D2978

Test Plan: BK

Reviewers: max, alangenfeld, sashank

Reviewed By: sashank

Differential Revision: https://dagster.phacility.com/D2980
…er.core.codepointer

Summary:
I want to refer to these classes in ExternalRepository, so it can remember
where it came from and marshal that information back and forth to user processes. I
do not want the data structures in dagster.core.host_representation to directly
container anything in dagster.core.definitions, so moving this.

Test Plan: BK

Reviewers: max, alangenfeld

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D2987
Summary: Pipeline CLI instructions were missing group (ie 'pipeline')

Test Plan: ran locally.

Reviewers: prha

Reviewed By: prha

Differential Revision: https://dagster.phacility.com/D2966
Summary:
Restructure `DagsterGraphQLContext` to be aware of 1. the instance and 2. a collection of `DagsterEnvironment`s

`DagsterEnvironment` is an interface that will allow us to move user code invocations out of the `dagster-graphql` process in to a separate `dagster` process. During migration we maintain `InProcessDagsterEnvironment` for satisfying the API with user code in process.

Since single env single repo -> multi env multi repo is a fundamental change for dagster-graphql & dagit to handle - we introduce back compatability with a collection of `legacy_` prefixed apis that assume one in process environment and one repo in that environment.

The stack of diffs above this will slowly remove all of the `legacy_` functions and push the env & repo selection upwards til eventually `dagit` is aware and the single-repo assumption is gone.

{F141108}

Test Plan: buildkite

Reviewers: schrockn, max, sashank

Reviewed By: schrockn

Differential Revision: https://dagster.phacility.com/D2988
Summary: 🤦 left a `console.log` in D2959

Test Plan: bk

Reviewers: max, schrockn

Reviewed By: schrockn

Differential Revision: https://dagster.phacility.com/D2982
Summary:
This diff replaces the Dagit sidebar with one that clearly separates "instance"-scoped concepts (assets, schedules) from "environment" scoped pipelines and solids. The new design is also more pipeline-centric and shows the environments pipelines directly in the sidebar. We may end up collapsing this back into a "narrow" bar or having it slide out on hover, etc., but we wanted to establish the new design first and then revisit whether it'd be possible to shrink.

This is the first of a couple major changes we want to make to the Dagit UI to reflect the new pipeline focus - the plan is to swap out the "Definition / Playground" options in the sidebar (sort of a sub-selection right now) for a set of top tabs, but that change involves updating a lot of routes / URLs and I think it'll be easier to review separately.

Todo Soon:
- Where should environment name come from? Need a small GraphQL API for this until we have multi-env support? (OR: is there an agreeable default we can use for now?)

Lower priority improvements up for grabs:
- Implement keyboard up/down + enter in the inline search box
- Make the left nav column resizable by dragging the right edge
- Unify the empty states of the Runs / Schedules / Assets pages
    + Runs has header, schedules doesn't
    + Assets background is a different color, centered content is further down

{F140554}

Test Plan: Update snapshot tests

Reviewers: alangenfeld, schrockn, prha

Reviewed By: prha

Differential Revision: https://dagster.phacility.com/D2967
Summary:
Handle the possibility of concurrent RunStorage add_run() by trying to fetch the run again after DagsterRunAlreadyExists

#2412

Test Plan: todo

Reviewers: max, schrockn, sashank

Reviewed By: schrockn

Subscribers: schrockn, sashank, max

Differential Revision: https://dagster.phacility.com/D2719
Summary:
good night sweet prince

Completes the deprecation process for `ExecutionSelector` and introduces a `dagster-graphql` only concept of `PipelineSelector`

Test Plan: buildkite

Reviewers: max, prha, schrockn

Reviewed By: schrockn

Differential Revision: https://dagster.phacility.com/D2995
Test Plan: Rendered run action menu on runs page

Reviewers: max, yuhan

Reviewed By: yuhan

Differential Revision: https://dagster.phacility.com/D2998
Summary:
I will likely be adding new storage for run-process lookup
table and I didn't want to copy-paste this.

Test Plan: BK

Reviewers: max, alangenfeld

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D2992
Summary: As we write more small examples like `dep_dsl`, We will eventually deprecate `dagster_examples`

Test Plan:
Ran the gitpod task command
```
cd examples/$EXAMPLE
pip3 install -r requirements.txt
[ -e README.md ] && gp open README.md
clear && dagit
```

Reviewers: sashank, schrockn

Reviewed By: schrockn

Differential Revision: https://dagster.phacility.com/D3002
Summary: Adds a simple command to scaffold out an example

Test Plan: Run `python bin/create_example.py`

Reviewers: alangenfeld, schrockn, yuhan

Reviewed By: yuhan

Differential Revision: https://dagster.phacility.com/D3005
Summary: {F141658}

Test Plan: bk

Reviewers: sashank, schrockn

Reviewed By: sashank

Differential Revision: https://dagster.phacility.com/D3001
Summary: Same diff, but for master

Test Plan: unit

Reviewers: alangenfeld, schrockn

Reviewed By: schrockn

Subscribers: schrockn

Differential Revision: https://dagster.phacility.com/D2991
schrockn and others added 28 commits May 26, 2020 10:49
Summary:
Personal preference, but if there is enough graphql in the file
the autoindent goes haywire.

Test Plan: BK

Reviewers: alangenfeld, max

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3073
Summary:
This diff adds graphql_context_test_suite.py and its workhorse function make_graphql_context_test_suite.
It should serve as a nice base to drive our large architectural migration leading
up to 0.8.0, as well as foundation for an entire suite of acceptance tests for
different deployments of the system.

This test suite has a number of overall goals:

  - Have the ability to specify tests that run against multiple instances of the graphql contexts.
  - Specify which graphql contexts are created in the test file, not a centralized fixture file.
  - Manage the lifecycle of those graphql contexts and their constituent components (e.g. DagsterInstance, DagsterEnvironment, and so forth)
  - Have “off-the-shelf” contexts and sets of contexts for common configurations, but with the ability to provide test-specific ones as well.
  - Organize all the tests in dagster-graphql by providing sensible markers to all the common configurations, so we can easily say “run all the tests that use Sqlite” or “run all the tests that use the synchronous execution manager” or “run all the tests are are purely in-memory”. With this diff you can now run `pytest python_modules/dagster-graphql/dagster_graphql_tests/ -m in_memory` and run only the tests governed by this test suite that have been automatically marked as in_meory. This will allow us to manage this better during local development (faster tests) as well as chop up this test suite into many parallel CI runs.
  - Provide a straightforward path to run these tests against other deployment configurations, e.g. against a postgres database or running on a k8s cluster. We should build this towards being an acceptance test suite for different deployments of dagster.

All tests managed by this suite are marked with graphql_context_test_suite. This will make it straightforward
to run all tests not managed by this suite when we start chopping up this test suite for CI.

For an example of creating a custom variant, see https://dagster.phacility.com/D3091

Specifically this was designed to help manage our major re-architecture leading up to 0.8.0. They are as follows

  1) Launch-Start Consolidation
  2) Dagit as Host Process
  3) Replacement of PipelineExecutionManager with CliApiRunLauncher (related to 1)
  4) User code container

This new test suite structure allows these different re-architectures to be largely parallelized.
As someone is implementing one of those workstreams, they add a new GraphQLContextVariant type to tests one-by-one.

1) Launch Start Consolidation: We are unifying launch and start. In order
   to do this we are implementing a synchronous in memory launcher. This
   will also allow us to have a "fast path" for tests that touch disk
   infrequently and launch no processes. This works by having the run
   launch declare that it is "hijacking" the start process.
   The diff sets up this work stream: https://dagster.phacility.com/D3080

2) Dagit as Host Process: This changes dagit to load repository metadata
   from the cli api, as opposed to loading definitions directly. This diff
   sets up that workstream:  https://dagster.phacility.com/D3083

3) SubprocessExecutionManager to CliApiRunLauncher: This moves tests that
   used to use the SubprocessExecutionManager to instead go through the
   launch codepaths and use the new CliApiRunLauncer. One this and the
   "Dagit as Host Process" workstream is the complete we will be able
   to use dagit as a host process exclusively. And once 1, 2, and 3
   are complete it should be completely safe to delete the start codepaths
   all the way down to dagit. Diff that sets up this workstream:
   https://dagster.phacility.com/D3081

4) User Code in a container. Not set up yet, but this would involve
   creating a new DagsterEnvironment type that knows how to talk to
   container. Challenges here are getting a reliable channel
   between the container and the host process (the
   OutOfProcessDagsterEnviroment just uses the filesystem)

Depends on D3073

Test Plan: BK

Reviewers: max, alangenfeld, prha, sashank

Reviewed By: alangenfeld

Subscribers: alangenfeld

Differential Revision: https://dagster.phacility.com/D3074
Summary: Prep for multirepo world

Test Plan: Unit

Reviewers: alangenfeld, schrockn

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3059
Summary:
This currently implements type system support for scalar types on inputs and outputs. This also adds a dependency on a metaprogramming library called forge, that feels a bit out of date. However, this will get us to a demo faster I believe.

This executes multi-step DAGs in Flyte successfully and captures the inputs and output results.

{F145645}

{F145652}

Test Plan:
First, run Flyte

  1. $ cd python_modules/libraries/dagster-flyte/examples
  2. $ make docker_build
  3. $ docker run --network host -e FLYTE_PLATFORM_URL='127.0.0.1:30081' {{ your docker image }} pyflyte -p dagstertest -d development -c sandbox.config register workflows

Reviewers: schrockn, nate, alangenfeld

Reviewed By: schrockn

Differential Revision: https://dagster.phacility.com/D2901
…aphql context test suite

Summary:
This provides an example of a test that only makes sense
with an asynchronous execution manager, so it takes a different context
variants than the previous diffs

Depends on D3075

Test Plan: BK

Reviewers: alangenfeld, max, prha

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3076
…peline to be a graphql context test suite

Summary:
This makes it so that these tests are run on three legacy
context variants (legacy being defined by use of the legacy execution
manager).

Depends on D3076

Test Plan: BK

Reviewers: max, alangenfeld, prha

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3077
Summary:
We are going to use this to consolidate the start and launch
code paths, and to have an in-memory implementation of a launch
for fast tests.

Depends on D3077

Test Plan: BK

Reviewers: alangenfeld, max, prha

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3078
Summary:
This is necessary for start and launch to share implementations. The
start codepath will branch and call do_launch if the run launcher
is configured to "hijack" the start process.

This actually has a slight meaningful change (throwing UserFacingGraphQLError)
so put in its own diff.

Depends on D3078

Test Plan: BK

Reviewers: max, alangenfeld, prha

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3079
…start with in-memory launcher

Summary:
Use the new synchronous in memory run launcher to start fleshing
out the new codepath for doing launch only.

This will allow us to flush out many of the bugs between start and
launcher in a manner that is decoupled from the migration
from PipelineExecutionSubprocessManager to the CliApiRunLauncher

Depends on D3079

Test Plan: BK

Reviewers: max, prha, alangenfeld

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3080
…uncher and use in graphql_context_test_suite

Summary:
This sets up the work stream to move from the usage of
SubprocessPipelineExecutionManager to CliApiRunLauncher

Depends on D3080

Test Plan: BK

Reviewers: max, alangenfeld, prha

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3081
…t to be None

Summary:
This will ensure that cases where we are hijacking we do not accidentally
call execute_pipeline. We can configure context variants to not have an
execution_manager at all this way.

Depends on D3081

Test Plan: BK

Reviewers: prha, max, alangenfeld

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3082
Summary:
In code where you are aware/know absolutely that you are executing
in a hosted process that happens to have user code in process, it is
often necessary to go back and forth between user process
representations of dagster artifacts and hosted process
representations. This is a bit tedious, but it should also
not be supported by those abstractions natively, as it is
often the wrong thing todo.

Examples where this is appropriate is in testing contexts, as well
as in classes like InProcessDagsterEnvironment in dagster-graphql,
which is utilized when we load user code in dagit directly.

To help, this adds a module dagster.utils.test.hosted_user_process
to assist with these transformations.

Implicitly this also adds a term "hosted user process" to describe
the state where the user code is loaded directly into the host
process.

Depends on D3082

Test Plan: BK

Reviewers: alangenfeld, max

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3086
…d use it in test

Summary:
This adds an OutOfProcessDagsterEnvironment that knows how to
interact with a user process through the dagster api cli. This has
limited capabilities for now but enough to test simple test cases
that only query metadata on full pipelines.

Depends on D3086

Test Plan: BK

Reviewers: max, alangenfeld

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3083
…. Found a bug

Summary:
This diff is a good demonstration of why both duplicated code paths are bad
and why APIs like create_run are way too low level and should not exist. One should
be forced to have a higher level API where you must pass an ExternalPipeline rather
than force duplicated logic at every callsite.

Depends on D3083

Test Plan: BK

Reviewers: alangenfeld, max

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3087
…cking codepath

Summary:
Continuing to move code over to the hijacking codepath. Found some weirdness
in that we are using check to commmunicate graphql domain errors.

Tracking here #2507

Depends on D3087

Test Plan: BK

Reviewers: alangenfeld, max

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3088
… only and move a couple tests over

Summary:
It turns out that this test suite has only historically been run against the sync
execution manager so by just also testing against the subprocess execution manager we are finding
more bugs. These two tests can be moved without change but the next one requires a fix.

Depends on D3088

Test Plan: BK

Reviewers: alangenfeld, max

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3089
…ypes, test_execute_pipeline and test_execute_schedule to gql test suite

Summary:
Move test_compute_logs.py, test_config_types.py, test_execute_pipeline.py, test_execute_schedule.py
to new test suite format. No behavior change. Only tests the single
context variant that it was testing behavior. This just makes that
explicit

Depends on D3089

Test Plan: BK

Reviewers: alangenfeld, max

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3090
…xecution manager

Summary:
This moves a test that tests a disabled execution manager to the new test
infrastructure. It also serves as a useful example of defining a custom graphql
variant that we don't want to defined in base test file.

Depends on D3090

Test Plan: BK

Reviewers: alangenfeld, max

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3091
Summary:
This adds a new variant that is backed by a sqlite instance
and does a synchronous hijack. We will spread this through the test suite
to ferret out all differences between the start and launch codepaths
that can be detected by our test suite.

Depends on D3091

Test Plan: BK

Reviewers: alangenfeld, max

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3092
…line_execution_for_created_run

Summary:
We are going to use this function to hijack start_pipeline_execution_for_created_run codepath.

Had to change the code to throw a UserFacingGraphQLError rather than
just return it.

Depends on D3092

Test Plan: BK

Reviewers: alangenfeld, max

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3093
…d a test.

Summary:
Enable in-memory hijacking for the entire test_execute_pipeline
set suite.

Depends on D3093

Test Plan: BK

Reviewers: alangenfeld, max

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3094
…suite

Summary:
With the sync cli api launcher available we can use that to do these
types of tests.

Depends on D3094

Test Plan: BK

Reviewers: alangenfeld, max

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3095
Summary:
Move tests in test_rexecution to a proper graphql context test suite.

This allows the elimination of the InMemoryRunLauncher (at this point duplicative)
and sets up hijacking for the re-execution code path.

Depends on D3095

Test Plan: BK

Reviewers: alangenfeld, max

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3096
Summary:
Make all test_reexecution.py tests work on applicable variants, including
start hijacking variants.

Depends on D3096

Test Plan: BK

Reviewers: alangenfeld, max

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3097
Summary:
This should be no behavior change. This just encodes the identical
previous behavior using the context variants.

Test Plan: BK

Reviewers: alangenfeld, max

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3098
Summary:
Adds the the first hijacking run launcher to test_retry_execution.py to test that code path.

Depends on D3098

Test Plan: BK

Reviewers: alangenfeld, max

Reviewed By: alangenfeld

Differential Revision: https://dagster.phacility.com/D3099
Summary:
More recent pylint checks more stuff, and specifically it doesn't seem to understand `six.with_metaclass(ABCMeta)` so we need to disable those checks for now.

I don't move pylint to 2.5.2 until D3109, because of pylint-dev/pylint#3648 - the long list of args to pylint seems to trigger a newly-introduced pylint bug in 2.5.x; the refactor in D3109 means we no longer trigger that bug.

Test Plan: buildkite

Reviewers: alangenfeld, sandyryza, max

Reviewed By: sandyryza

Subscribers: schrockn

Differential Revision: https://dagster.phacility.com/D3114
Summary:
fix `!(tag.key in ["dagster/is_resume_retry", "dagster/step_selection"])` in D3065
it would always be false

Test Plan:
`dagster/step_selection` doesn't get passed to a child run e.g. a full pipeline run
{F146367}

Reviewers: max, bengotow, prha

Reviewed By: prha

Differential Revision: https://dagster.phacility.com/D3102
@DavidKatz-il DavidKatz-il merged commit 23bccea into DavidKatz-il:master May 27, 2020
DavidKatz-il pushed a commit that referenced this pull request Jun 16, 2020
* Add dagster-azure package with various storage components

This adds the following components based on Azure Data Lake Storage
Gen2 (and Azure Blob Storage where appropriate):

- ADLS2FileCache and adls2_file_cache
- ADLS2FileManager
- ADLS2IntermediateStore
- ADLS2ObjectStore
- the adls2_resource providing direct access to Azure Data Lake Storage
- the adls2_system_storage system storage

This is pretty similar to the S3 implementation, the main difference
being configuration: Azure's SDK requires credentials to be passed
explicitly, so the credential is expected in configuration.

Tests currently require an access key to complete any tests marked
'nettest'.

* Rename Fake Azure classes and modules to more English-friendly names

* Add ADLS2Resource to wrap ADLS2/Blob clients

* Fix import order in dagster-azure

* Add dagster-azure to install_dev_python_modules make target

* Include azure-storage-blob in dagster-azure requirements

* Remove unused variable in tests

* Don't install dagster-azure as part of install_dev_python_modules make target

* Remove accidentally committed Azure Blob object/intermediate store implementations

These work but have no immediate use case and no tests, so seem like an
unnecessary maintenance burden. This commit can be reverted if they're needed!

* Wrap potentially incompatible imports to add a custom warning

This centralizes the various azure-storage/azure-core imports and wraps them,
plus the snowflake-connector import, in a try/except block, adding a custom
warning with a suggested solution if the import fails.

* Add README to dagster-azure and note about incompatibility to dagster-snowflake's README

* Isort

* Set buildkite container for dagster-azure tests

* Env variables in buildkite for Azure

* Add dagster-azure package with various storage components

Summary:
This adds the following components based on Azure Data Lake Storage
Gen2 (and Azure Blob Storage where appropriate):

- ADLS2FileCache and adls2_file_cache
- ADLS2FileManager
- ADLS2IntermediateStore
- ADLS2ObjectStore
- the adls2_resource providing direct access to Azure Data Lake Storage
- the adls2_system_storage system storage

This is pretty similar to the S3 implementation, the main difference
being configuration: Azure's SDK requires credentials to be passed
explicitly, so the credential is expected in configuration.

Tests currently require an access key to complete any tests marked
'nettest'.

Rename Fake Azure classes and modules to more English-friendly names

Add ADLS2Resource to wrap ADLS2/Blob clients

Fix import order in dagster-azure

Add dagster-azure to install_dev_python_modules make target

Include azure-storage-blob in dagster-azure requirements

Remove unused variable in tests

Don't install dagster-azure as part of install_dev_python_modules make target

Remove accidentally committed Azure Blob object/intermediate store implementations

These work but have no immediate use case and no tests, so seem like an
unnecessary maintenance burden. This commit can be reverted if they're needed!

Wrap potentially incompatible imports to add a custom warning

This centralizes the various azure-storage/azure-core imports and wraps them,
plus the snowflake-connector import, in a try/except block, adding a custom
warning with a suggested solution if the import fails.

Add README to dagster-azure and note about incompatibility to dagster-snowflake's README

Isort

Set buildkite container for dagster-azure tests

Merge pull request #1 from dagster-io/dagster-azure

Set buildkite container for dagster-azure tests

Env variables in buildkite for Azure

Test Plan: bk

Differential Revision: https://dagster.phacility.com/D3238

* more buildkite

* tox

* Run black on dagster_snowflake

* Add pylint to dagster-azure tox.ini

* Explicitly specify __all__ for dagster_azure utils modules

* Fix black issues

Co-authored-by: Sandy Ryza <[email protected]>
Co-authored-by: Sandy Ryza <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants