Пример #1
0
def test_get_schedule():
    with seven.TemporaryDirectory() as temp_dir:
        instance = DagsterInstance(
            instance_type=InstanceType.EPHEMERAL,
            local_artifact_storage=LocalArtifactStorage(temp_dir),
            run_storage=InMemoryRunStorage(),
            event_storage=InMemoryEventLogStorage(),
            compute_log_manager=NoOpComputeLogManager(),
            schedule_storage=SqliteScheduleStorage.from_local(temp_dir),
            scheduler=FilesystemTestScheduler(temp_dir),
            run_launcher=SyncInMemoryRunLauncher(),
        )

        context = define_test_context(instance)
        # Initialize scheduler
        repository = context.legacy_get_repository_definition()
        instance.reconcile_scheduler_state(
            repository=repository,
            python_path='/path/to/python',
            repository_path='/path/to/repository',
        )

        result = execute_dagster_graphql(
            context,
            GET_SCHEDULE,
            variables={'scheduleName': 'partition_based_multi_mode_decorator'},
        )

        assert result.data
        assert result.data['scheduleOrError']['__typename'] == 'RunningSchedule'
        assert result.data['scheduleOrError']['scheduleDefinition']['partitionSet']
Пример #2
0
def test_get_all_schedules():

    with seven.TemporaryDirectory() as temp_dir:
        instance = DagsterInstance(
            instance_type=InstanceType.EPHEMERAL,
            local_artifact_storage=LocalArtifactStorage(temp_dir),
            run_storage=InMemoryRunStorage(),
            event_storage=InMemoryEventLogStorage(),
            compute_log_manager=NoOpComputeLogManager(),
            schedule_storage=SqliteScheduleStorage.from_local(temp_dir),
            scheduler=FilesystemTestScheduler(temp_dir),
            run_launcher=SyncInMemoryRunLauncher(),
        )

        context = define_context_for_repository_yaml(
            path=file_relative_path(__file__, '../repository.yaml'), instance=instance
        )

        # Initialize scheduler
        repository = context.legacy_get_repository_definition()
        instance.reconcile_scheduler_state(
            repository=repository,
            python_path='/path/to/python',
            repository_path='/path/to/repository',
        )

        # Start schedule
        schedule = instance.start_schedule_and_update_storage_state(
            repository.name, "no_config_pipeline_hourly_schedule"
        )

        # Query Scheduler + all Schedules
        scheduler_result = execute_dagster_graphql(context, GET_SCHEDULES_QUERY)

        # These schedules are defined in dagster_graphql_tests/graphql/setup_scheduler.py
        # If you add a schedule there, be sure to update the number of schedules below
        assert scheduler_result.data
        assert scheduler_result.data['scheduler']
        assert scheduler_result.data['scheduler']['runningSchedules']
        assert len(scheduler_result.data['scheduler']['runningSchedules']) == 18

        for schedule in scheduler_result.data['scheduler']['runningSchedules']:
            if schedule['scheduleDefinition']['name'] == 'no_config_pipeline_hourly_schedule':
                assert schedule['status'] == 'RUNNING'

            if schedule['scheduleDefinition']['name'] == 'environment_dict_error_schedule':
                assert schedule['scheduleDefinition']['runConfigYaml'] is None
            elif schedule['scheduleDefinition']['name'] == 'invalid_config_schedule':
                assert (
                    schedule['scheduleDefinition']['runConfigYaml']
                    == 'solids:\n  takes_an_enum:\n    config: invalid\n'
                )
            else:
                assert (
                    schedule['scheduleDefinition']['runConfigYaml']
                    == 'storage:\n  filesystem: {}\n'
                )
Пример #3
0
def test_start_stop_schedule():

    with seven.TemporaryDirectory() as temp_dir:
        instance = DagsterInstance(
            instance_type=InstanceType.EPHEMERAL,
            local_artifact_storage=LocalArtifactStorage(temp_dir),
            run_storage=InMemoryRunStorage(),
            event_storage=InMemoryEventLogStorage(),
            compute_log_manager=NoOpComputeLogManager(),
            schedule_storage=SqliteScheduleStorage.from_local(temp_dir),
            scheduler=FilesystemTestScheduler(temp_dir),
            run_launcher=SyncInMemoryRunLauncher(),
        )

        context = define_context_for_repository_yaml(
            path=file_relative_path(__file__, '../repository.yaml'), instance=instance
        )

        # Initialize scheduler
        repository = context.legacy_get_repository_definition()
        instance.reconcile_scheduler_state(
            python_path=sys.executable, repository_path="", repository=repository,
        )

        # Start schedule
        start_result = execute_dagster_graphql(
            context,
            START_SCHEDULES_QUERY,
            variables={'scheduleName': 'no_config_pipeline_hourly_schedule'},
        )
        assert start_result.data['startSchedule']['schedule']['status'] == 'RUNNING'

        # Stop schedule
        stop_result = execute_dagster_graphql(
            context,
            STOP_SCHEDULES_QUERY,
            variables={'scheduleName': 'no_config_pipeline_hourly_schedule'},
        )
        assert stop_result.data['stopRunningSchedule']['schedule']['status'] == 'STOPPED'