Files
doris/extension/dbt-doris/test/functional/adapter/test_basic.py
catpineapple 45dbd4d872 [fix](dbt)fix dbt incremental #16840
fix dbt incremental :new ideas for no rollback and support incremental data rerun .
add snapshot
use 'mysql-connector-python' mysql driver to replace 'MysqlDb' driver
2023-02-18 20:40:56 +08:00

116 lines
4.6 KiB
Python

#!/usr/bin/env python
# encoding: utf-8
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import pytest
from dbt.tests.adapter.basic.test_base import BaseSimpleMaterializations
from dbt.tests.adapter.basic.test_singular_tests import BaseSingularTests
from dbt.tests.adapter.basic.test_singular_tests_ephemeral import (
BaseSingularTestsEphemeral
)
from dbt.tests.util import run_dbt, check_relations_equal,check_result_nodes_by_name,relation_from_name,check_relation_types
from dbt.tests.adapter.basic.test_empty import BaseEmpty
from dbt.tests.adapter.basic.test_ephemeral import BaseEphemeral
from dbt.tests.adapter.basic.test_incremental import BaseIncremental
from dbt.tests.adapter.basic.test_generic_tests import BaseGenericTests
from dbt.tests.adapter.basic.test_snapshot_check_cols import BaseSnapshotCheckCols
from dbt.tests.adapter.basic.test_snapshot_timestamp import BaseSnapshotTimestamp
from dbt.tests.adapter.basic.test_adapter_methods import BaseAdapterMethod
class TestSimpleMaterializationsdoris(BaseSimpleMaterializations):
def test_base(self, project):
results = run_dbt(["seed"])
assert len(results) == 1
results = run_dbt()
assert len(results) == 3
check_result_nodes_by_name(results, ["view_model", "table_model", "swappable"])
expected = {
"base": "table",
"view_model": "view",
"table_model": "table",
"swappable": "table",
}
check_relation_types(project.adapter, expected)
relation = relation_from_name(project.adapter, "base")
result = project.run_sql(f"select count(*) as num_rows from {relation}", fetch="one")
assert result[0] == 10
check_relations_equal(project.adapter, ["base", "view_model", "table_model", "swappable"])
class TestSingularTestsdoris(BaseSingularTests):
pass
class TestSingularTestsEphemeraldoris(BaseSingularTestsEphemeral):
pass
class TestEmptydoris(BaseEmpty):
pass
class TestEphemeraldoris(BaseEphemeral):
def test_ephemeral(self, project):
results = run_dbt(["seed"])
assert len(results) == 1
check_result_nodes_by_name(results, ["base"])
results = run_dbt(["run"])
assert len(results) == 2
check_result_nodes_by_name(results, ["view_model", "table_model"])
relation = relation_from_name(project.adapter, "base")
result = project.run_sql(f"select count(*) as num_rows from {relation}", fetch="one")
assert result[0] == 10
check_relations_equal(project.adapter, ["base", "view_model", "table_model"])
@pytest.mark.skip(reason="Incremental for doris table model bust be 'unique' ")
class TestIncrementaldoris(BaseIncremental):
def test_incremental(self, project):
results = run_dbt(["seed"])
assert len(results) == 2
relation = relation_from_name(project.adapter, "base")
result = project.run_sql(f"select count(*) as num_rows from {relation}", fetch="one")
assert result[0] == 10
relation = relation_from_name(project.adapter, "added")
result = project.run_sql(f"select count(*) as num_rows from {relation}", fetch="one")
assert result[0] == 20
results = run_dbt(["run", "--vars", "seed_name: base"])
assert len(results) == 1
check_relations_equal(project.adapter, ["base", "incremental"])
class TestGenericTestsdoris(BaseGenericTests):
pass
@pytest.mark.skip(reason="Snapshot for doris table model bust be 'unique'")
class TestSnapshotCheckColsdoris(BaseSnapshotCheckCols):
pass
@pytest.mark.skip(reason="Snapshot for doris table model bust be 'unique'")
class TestSnapshotTimestampdoris(BaseSnapshotTimestamp):
pass
class TestBaseAdapterMethoddoris(BaseAdapterMethod):
def test_adapter_methods(self, project, equal_tables):
result = run_dbt()
assert len(result) == 3
check_relations_equal(project.adapter, equal_tables)