コード例 #1
0
    def test_run_raises_on_create_materialization_sync(self, mock_mql_client):
        error_msg = "Error while creating sync materialization!"

        class MockMQLClient:
            def materialize(
                materialization_name: str,
                start_time: Optional[str] = None,
                end_time: Optional[str] = None,
                model_key_id: Optional[int] = None,
                output_table: Optional[str] = None,
                force: bool = False,
                timeout: Optional[int] = None,
            ):
                raise QueryRuntimeException(query_id="xyz", msg=error_msg)

        mock_mql_client.return_value = MockMQLClient
        transform_task = TransformCreateMaterialization()

        msg_match = (
            f"Transform materialization sync creation failed! Error is: {error_msg}"
        )
        with pytest.raises(FAIL, match=msg_match):
            transform_task.run(api_key="key",
                               mql_server_url="url",
                               materialization_name="mt_name")
コード例 #2
0
    def test_run_raises_on_connection_exception(self):
        transform_task = TransformCreateMaterialization()

        msg_match = "Cannot connect to Transform server!"
        with pytest.raises(FAIL, match=msg_match):
            transform_task.run(api_key="key",
                               mql_server_url="url",
                               materialization_name="mt_name")
コード例 #3
0
    def test_run_raises_with_missing_mql_server_url_and_env_var_not_found(
            self):
        transform_task = TransformCreateMaterialization()

        msg_match = "`mql_server_url` is missing and `mql_server_url_env_var` not found in env vars."
        with pytest.raises(ValueError, match=msg_match):
            transform_task.run(api_key="key",
                               mql_server_url_env_var="mql_server_url_env_var")
コード例 #4
0
    def test_construction_with_values(self):
        transform_task = TransformCreateMaterialization(
            api_key="key",
            api_key_env_var="key_env_var",
            mql_server_url="url",
            mql_server_url_env_var="url_env_var",
            model_key_id=1,
            materialization_name="mt_name",
            start_time="1900-01-01",
            end_time="1900-01-01",
            output_table="out_table",
            force=True,
            wait_for_creation=False,
        )

        assert transform_task.api_key == "key"
        assert transform_task.api_key_env_var == "key_env_var"
        assert transform_task.mql_server_url == "url"
        assert transform_task.mql_server_url_env_var == "url_env_var"
        assert transform_task.model_key_id == 1
        assert transform_task.materialization_name == "mt_name"
        assert transform_task.start_time == "1900-01-01"
        assert transform_task.end_time == "1900-01-01"
        assert transform_task.output_table == "out_table"
        assert transform_task.force is True
        assert transform_task.wait_for_creation is False
コード例 #5
0
    def test_run_on_create_materialization_sync(self, mock_mql_client):
        class MockMQLClient:
            def materialize(
                materialization_name: str,
                start_time: Optional[str] = None,
                end_time: Optional[str] = None,
                model_key_id: Optional[int] = None,
                output_table: Optional[str] = None,
                force: bool = False,
                timeout: Optional[int] = None,
            ):
                return MqlMaterializeResp(schema="schema",
                                          table="table",
                                          query_id="xyz")

        mock_mql_client.return_value = MockMQLClient
        transform_task = TransformCreateMaterialization()

        response = transform_task.run(api_key="key",
                                      mql_server_url="url",
                                      materialization_name="mt_name")

        assert response.fully_qualified_name == "schema.table"
コード例 #6
0
    def test_construction_without_values(self):
        transform_task = TransformCreateMaterialization()

        assert transform_task.api_key is None
        assert transform_task.api_key_env_var is None
        assert transform_task.mql_server_url is None
        assert transform_task.mql_server_url_env_var is None
        assert transform_task.model_key_id is None
        assert transform_task.materialization_name is None
        assert transform_task.start_time is None
        assert transform_task.end_time is None
        assert transform_task.output_table is None
        assert transform_task.force is False
        assert transform_task.wait_for_creation is True
コード例 #7
0
    def test_run_raises_on_create_materialization_async(self, mock_mql_client):
        error_msg = "Error while creating async materialization!"

        class MockMQLClient:
            def create_materialization(
                materialization_name: str,
                start_time: Optional[str] = None,
                end_time: Optional[str] = None,
                model_key_id: Optional[int] = None,
                output_table: Optional[str] = None,
                force: bool = False,
            ):
                return MqlQueryStatusResp(
                    query_id="xyz",
                    status=MqlQueryStatus.FAILED,
                    sql="sql_query",
                    error=error_msg,
                    chart_value_max=None,
                    chart_value_min=None,
                    result=None,
                    result_primary_time_granularity=None,
                    result_source=None,
                )

        mock_mql_client.return_value = MockMQLClient
        transform_task = TransformCreateMaterialization()

        msg_match = (
            f"Transform materialization async creation failed! Error is: {error_msg}"
        )
        with pytest.raises(FAIL, match=msg_match):
            transform_task.run(
                api_key="key",
                mql_server_url="url",
                materialization_name="mt_name",
                wait_for_creation=False,
            )
コード例 #8
0
    def test_run_on_create_materialization_async_running_status(
            self, mock_mql_client):
        class MockMQLClient:
            def create_materialization(
                materialization_name: str,
                start_time: Optional[str] = None,
                end_time: Optional[str] = None,
                model_key_id: Optional[int] = None,
                output_table: Optional[str] = None,
                force: bool = False,
            ):
                return MqlQueryStatusResp(
                    query_id="xyz",
                    status=MqlQueryStatus.RUNNING,
                    sql="sql_query",
                    error=None,
                    chart_value_max=None,
                    chart_value_min=None,
                    result=None,
                    result_primary_time_granularity=None,
                    result_source=None,
                )

        mock_mql_client.return_value = MockMQLClient
        transform_task = TransformCreateMaterialization()

        response = transform_task.run(
            api_key="key",
            mql_server_url="url",
            materialization_name="mt_name",
            wait_for_creation=False,
        )

        assert response.is_complete is False
        assert response.is_successful is False
        assert response.is_failed is False
コード例 #9
0
    def test_run_raises_with_missing_materialization_name(self):
        transform_task = TransformCreateMaterialization()

        msg_match = "`materialization_name` is missing."
        with pytest.raises(ValueError, match=msg_match):
            transform_task.run(api_key="key", mql_server_url="url")
コード例 #10
0
    def test_run_raises_with_missing_mql_server_url_and_env_var(self):
        transform_task = TransformCreateMaterialization()

        msg_match = "Both `mql_server_url` and `mql_server_url_env_var` are missing."
        with pytest.raises(ValueError, match=msg_match):
            transform_task.run(api_key="key")
コード例 #11
0
    def test_run_raises_with_missing_api_key_and_env_var(self):
        transform_task = TransformCreateMaterialization()

        msg_match = "Both `api_key` and `api_key_env_var` are missing."
        with pytest.raises(ValueError, match=msg_match):
            transform_task.run()