From 24860ed53fcc1b921a9b6bef58be1151215c340c Mon Sep 17 00:00:00 2001 From: psainics Date: Tue, 17 Dec 2024 14:44:49 +0530 Subject: [PATCH] Add CloudSQLMySQLErrorDetailsProvider --- .../sink/CloudMySqlRunTimeMacro.feature | 4 +++ .../features/source/CloudMySqlRunTime.feature | 2 ++ .../CloudSQLMySQLErrorDetailsProvider.java | 31 +++++++++++++++++++ .../cloudsql/mysql/CloudSQLMySQLSink.java | 5 +++ .../cloudsql/mysql/CloudSQLMySQLSource.java | 5 +++ 5 files changed, 47 insertions(+) create mode 100644 cloudsql-mysql-plugin/src/main/java/io/cdap/plugin/cloudsql/mysql/CloudSQLMySQLErrorDetailsProvider.java diff --git a/cloudsql-mysql-plugin/src/e2e-test/features/sink/CloudMySqlRunTimeMacro.feature b/cloudsql-mysql-plugin/src/e2e-test/features/sink/CloudMySqlRunTimeMacro.feature index 717f9dcf5..5ab8b4727 100644 --- a/cloudsql-mysql-plugin/src/e2e-test/features/sink/CloudMySqlRunTimeMacro.feature +++ b/cloudsql-mysql-plugin/src/e2e-test/features/sink/CloudMySqlRunTimeMacro.feature @@ -142,7 +142,9 @@ Feature: CloudMySql Sink - Run time scenarios (macro) Then Enter runtime argument value "invalidTablename" for key "invalidTablename" Then Run the Pipeline in Runtime with runtime arguments Then Wait till pipeline is in running state + And Open and capture logs And Verify the pipeline status is "Failed" + And Close the pipeline logs Then Open Pipeline logs and verify Log entries having below listed Level and Message: | Level | Message | | ERROR | errorLogsMessageInvalidTableName | @@ -181,7 +183,9 @@ Feature: CloudMySql Sink - Run time scenarios (macro) Then Enter runtime argument value "invalidPassword" for key "Password" Then Run the Pipeline in Runtime with runtime arguments Then Wait till pipeline is in running state + And Open and capture logs And Verify the pipeline status is "Failed" + And Close the pipeline logs Then Open Pipeline logs and verify Log entries having below listed Level and Message: | Level | Message | | ERROR | errorLogsMessageInvalidCredentials | diff --git a/cloudsql-mysql-plugin/src/e2e-test/features/source/CloudMySqlRunTime.feature b/cloudsql-mysql-plugin/src/e2e-test/features/source/CloudMySqlRunTime.feature index b884fa7fa..242e53d5d 100644 --- a/cloudsql-mysql-plugin/src/e2e-test/features/source/CloudMySqlRunTime.feature +++ b/cloudsql-mysql-plugin/src/e2e-test/features/source/CloudMySqlRunTime.feature @@ -224,7 +224,9 @@ Feature: CloudMySql Source - Run time scenarios Then Deploy the pipeline Then Run the Pipeline in Runtime Then Wait till pipeline is in running state + And Open and capture logs And Verify the pipeline status is "Failed" + And Close the pipeline logs Then Open Pipeline logs and verify Log entries having below listed Level and Message: | Level | Message | | ERROR | errorLogsMessageInvalidBoundingQuery | diff --git a/cloudsql-mysql-plugin/src/main/java/io/cdap/plugin/cloudsql/mysql/CloudSQLMySQLErrorDetailsProvider.java b/cloudsql-mysql-plugin/src/main/java/io/cdap/plugin/cloudsql/mysql/CloudSQLMySQLErrorDetailsProvider.java new file mode 100644 index 000000000..87f5ed2ec --- /dev/null +++ b/cloudsql-mysql-plugin/src/main/java/io/cdap/plugin/cloudsql/mysql/CloudSQLMySQLErrorDetailsProvider.java @@ -0,0 +1,31 @@ +/* + * Copyright © 2024 Cask Data, Inc. + * + * Licensed 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. + */ + +package io.cdap.plugin.cloudsql.mysql; + + +import io.cdap.plugin.mysql.MysqlErrorDetailsProvider; + +/** + * A custom ErrorDetailsProvider for CloudSQL MySQL plugins. + */ +public class CloudSQLMySQLErrorDetailsProvider extends MysqlErrorDetailsProvider { + + @Override + protected String getExternalDocumentationLink() { + return "https://cloud.google.com/sql/docs/mysql/error-messages"; + } +} diff --git a/cloudsql-mysql-plugin/src/main/java/io/cdap/plugin/cloudsql/mysql/CloudSQLMySQLSink.java b/cloudsql-mysql-plugin/src/main/java/io/cdap/plugin/cloudsql/mysql/CloudSQLMySQLSink.java index 6149c114b..86a8e6f52 100644 --- a/cloudsql-mysql-plugin/src/main/java/io/cdap/plugin/cloudsql/mysql/CloudSQLMySQLSink.java +++ b/cloudsql-mysql-plugin/src/main/java/io/cdap/plugin/cloudsql/mysql/CloudSQLMySQLSink.java @@ -103,6 +103,11 @@ String getDbColumns() { return dbColumns; } + @Override + protected String getErrorDetailsProviderClassName() { + return CloudSQLMySQLErrorDetailsProvider.class.getName(); + } + @Override protected LineageRecorder getLineageRecorder(BatchSinkContext context) { String host; diff --git a/cloudsql-mysql-plugin/src/main/java/io/cdap/plugin/cloudsql/mysql/CloudSQLMySQLSource.java b/cloudsql-mysql-plugin/src/main/java/io/cdap/plugin/cloudsql/mysql/CloudSQLMySQLSource.java index b0bea9e7a..aad074ba4 100644 --- a/cloudsql-mysql-plugin/src/main/java/io/cdap/plugin/cloudsql/mysql/CloudSQLMySQLSource.java +++ b/cloudsql-mysql-plugin/src/main/java/io/cdap/plugin/cloudsql/mysql/CloudSQLMySQLSource.java @@ -127,6 +127,11 @@ protected SchemaReader getSchemaReader() { return new MysqlSchemaReader(null, cloudsqlMysqlSourceConfig.getConnectionArguments()); } + @Override + protected String getErrorDetailsProviderClassName() { + return CloudSQLMySQLErrorDetailsProvider.class.getName(); + } + /** CloudSQL MySQL source config. */ public static class CloudSQLMySQLSourceConfig extends AbstractDBSpecificSourceConfig {