Add typed Arrow execution backend boundary
This commit is contained in:
@@ -18,6 +18,7 @@ from govoplan_core.core.datasources import (
|
||||
DatasourcePublicationResult,
|
||||
)
|
||||
from govoplan_core.db.base import Base
|
||||
from govoplan_dataflow.backend.backends.duckdb import DuckDbExecutionBackend
|
||||
from govoplan_dataflow.backend.db.models import (
|
||||
DataflowPipeline,
|
||||
DataflowPipelineRevision,
|
||||
@@ -320,6 +321,37 @@ class DataflowServiceTests(unittest.TestCase):
|
||||
self.session.scalar(select(func.count()).select_from(DataflowRun)),
|
||||
)
|
||||
|
||||
@unittest.skipUnless(
|
||||
DuckDbExecutionBackend().available(),
|
||||
"analytics extra is not installed",
|
||||
)
|
||||
def test_saved_preview_can_use_isolated_duckdb_backend(self) -> None:
|
||||
pipeline = self._create()
|
||||
|
||||
response = preview_pipeline(
|
||||
self.session,
|
||||
tenant_id="tenant-1",
|
||||
actor_id="user-1",
|
||||
payload=PipelinePreviewRequest(
|
||||
pipeline_id=pipeline.id,
|
||||
execution_backend="duckdb",
|
||||
),
|
||||
principal=principal(),
|
||||
)
|
||||
self.session.commit()
|
||||
|
||||
run = self.session.get(DataflowRun, response.run_id)
|
||||
self.assertEqual("succeeded", response.status)
|
||||
self.assertEqual(
|
||||
[{"id": 2, "amount": 15}, {"id": 3, "amount": 25}],
|
||||
response.rows,
|
||||
)
|
||||
self.assertEqual(2, response.total_rows)
|
||||
self.assertFalse(response.truncated)
|
||||
self.assertEqual(3, response.input_row_count)
|
||||
self.assertTrue(response.executor_version.startswith("duckdb-isolated-v1"))
|
||||
self.assertEqual(response.executor_version, run.executor_version)
|
||||
|
||||
def test_failed_preview_keeps_upstream_lineage_and_failed_node_diagnostic(self) -> None:
|
||||
graph = sample_graph()
|
||||
graph.nodes[0].config["rows"] = [{"id": 1, "amount": "not-a-number"}]
|
||||
|
||||
Reference in New Issue
Block a user