add test for datasource client (#1796)
diff --git a/linkis-public-enhancements/linkis-datasource/linkis-datasource-client/src/main/scala/org/apache/linkis/datasource/client/request/PublishDataSourceVersionAction.scala b/linkis-public-enhancements/linkis-datasource/linkis-datasource-client/src/main/scala/org/apache/linkis/datasource/client/request/PublishDataSourceVersionAction.scala
index 404abd5..59b8652 100644
--- a/linkis-public-enhancements/linkis-datasource/linkis-datasource-client/src/main/scala/org/apache/linkis/datasource/client/request/PublishDataSourceVersionAction.scala
+++ b/linkis-public-enhancements/linkis-datasource/linkis-datasource-client/src/main/scala/org/apache/linkis/datasource/client/request/PublishDataSourceVersionAction.scala
@@ -27,13 +27,13 @@
override def getRequestPayload: String = DWSHttpClient.jacksonJson.writeValueAsString(getRequestPayloads)
private var user: String = _
private var dataSourceId: Long = _
- private var versionId: String = _
+ private var versionId: Long = _
override def setUser(user: String): Unit = this.user = user
override def getUser: String = this.user
- override def suffixURLs: Array[String] = Array(DATA_SOURCE_SERVICE_MODULE.getValue, "publish", dataSourceId.toString, versionId)
+ override def suffixURLs: Array[String] = Array(DATA_SOURCE_SERVICE_MODULE.getValue, "publish", dataSourceId.toString, versionId.toString)
}
object PublishDataSourceVersionAction {
def builder(): Builder = new Builder
@@ -41,7 +41,7 @@
class Builder private[PublishDataSourceVersionAction]() {
private var user: String = _
private var dataSourceId: Long = _
- private var versionId: String = _
+ private var versionId: Long = _
def setUser(user: String): Builder = {
this.user = user
@@ -53,7 +53,7 @@
this
}
- def setVersion(versionId: String): Builder = {
+ def setVersion(versionId: Long): Builder = {
this.versionId = versionId
this
}
diff --git a/linkis-public-enhancements/linkis-datasource/linkis-datasource-client/src/test/java/org/apache/linkis/datasource/client/TestHiveClient.scala b/linkis-public-enhancements/linkis-datasource/linkis-datasource-client/src/test/java/org/apache/linkis/datasource/client/TestHiveClient.scala
new file mode 100644
index 0000000..c677f73
--- /dev/null
+++ b/linkis-public-enhancements/linkis-datasource/linkis-datasource-client/src/test/java/org/apache/linkis/datasource/client/TestHiveClient.scala
@@ -0,0 +1,143 @@
+/*
+ * 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.
+ */
+
+package org.apache.linkis.datasource.client
+
+import java.util
+import java.util.concurrent.TimeUnit
+
+import org.apache.linkis.common.utils.JsonUtils
+import org.apache.linkis.datasource.client.impl.{LinkisDataSourceRemoteClient, LinkisMetaDataRemoteClient}
+import org.apache.linkis.datasource.client.request._
+import org.apache.linkis.datasource.client.response._
+import org.apache.linkis.datasourcemanager.common.domain.DataSource
+import org.apache.linkis.httpclient.dws.authentication.StaticAuthenticationStrategy
+import org.apache.linkis.httpclient.dws.config.DWSClientConfigBuilder
+import org.junit.jupiter.api.{Disabled, Test}
+
+object TestHiveClient {
+ val gatewayUrl = "http://127.0.0.1:9001"
+ val clientConfig = DWSClientConfigBuilder.newBuilder
+ .addServerUrl(gatewayUrl)
+ .connectionTimeout(30000)
+ .discoveryEnabled(false)
+ .discoveryFrequency(1, TimeUnit.MINUTES)
+ .loadbalancerEnabled(true)
+ .maxConnectionSize(1)
+ .retryEnabled(false)
+ .readTimeout(30000)
+ .setAuthenticationStrategy(new StaticAuthenticationStrategy)
+ .setAuthTokenKey("hadoop")
+ .setAuthTokenValue("xxxxx")
+ .setDWSVersion("v1")
+
+ val dataSourceclient = new LinkisDataSourceRemoteClient(clientConfig.build())
+
+ val clientConfig2 = DWSClientConfigBuilder.newBuilder
+ .addServerUrl(gatewayUrl)
+ .connectionTimeout(30000)
+ .discoveryEnabled(false)
+ .discoveryFrequency(1, TimeUnit.MINUTES)
+ .loadbalancerEnabled(true)
+ .maxConnectionSize(1)
+ .retryEnabled(false)
+ .readTimeout(30000)
+ .setAuthenticationStrategy(new StaticAuthenticationStrategy)
+ .setAuthTokenKey("hadoop")
+ .setAuthTokenValue("xxxxx")
+ .setDWSVersion("v1")
+
+ val metaDataClient = new LinkisMetaDataRemoteClient(clientConfig2.build())
+
+
+ @Test
+ @Disabled
+ def testCreateDataSourceMysql: Unit = {
+ val user = "hadoop"
+ val system = "Linkis"
+ val dataSource = new DataSource();
+ dataSource.setDataSourceName("for-hive-test")
+ dataSource.setDataSourceDesc("this is for hive test")
+ dataSource.setCreateSystem(system)
+ dataSource.setDataSourceTypeId(4L)
+
+ val map = JsonUtils.jackson.readValue(JsonUtils.jackson.writeValueAsString(dataSource), new util.HashMap[String, Any]().getClass)
+ val createDataSourceAction: CreateDataSourceAction = CreateDataSourceAction.builder()
+ .setUser(user)
+ .addRequestPayloads(map)
+ .build()
+ val createDataSourceResult: CreateDataSourceResult = dataSourceclient.createDataSource(createDataSourceAction)
+ val dataSourceId = createDataSourceResult.getInsertId
+
+ //set connectParams
+ val params = new util.HashMap[String, Any]
+ val connectParams = new util.HashMap[String, Any]
+ connectParams.put("envId", "3")
+ params.put("connectParams", connectParams)
+ params.put("comment", "init")
+
+ val updateParameterAction: UpdateDataSourceParameterAction = UpdateDataSourceParameterAction.builder()
+ .setUser(user)
+ .setDataSourceId(dataSourceId)
+ .addRequestPayloads(params)
+ .build()
+ val updateParameterResult: UpdateDataSourceParameterResult = dataSourceclient.updateDataSourceParameter(updateParameterAction)
+
+ val version: Long = updateParameterResult.getVersion
+
+ //publist dataSource version
+ dataSourceclient.publishDataSourceVersion(
+ PublishDataSourceVersionAction.builder()
+ .setDataSourceId(dataSourceId)
+ .setUser(user)
+ .setVersion(version)
+ .build())
+
+ //example of use
+ val metadataGetDatabasesAction: MetadataGetDatabasesAction = MetadataGetDatabasesAction.builder()
+ .setUser(user)
+ .setDataSourceId(dataSourceId)
+ .setSystem(system)
+ .build()
+ val metadataGetDatabasesResult: MetadataGetDatabasesResult = metaDataClient.getDatabases(metadataGetDatabasesAction)
+
+ val metadataGetTablesAction: MetadataGetTablesAction = MetadataGetTablesAction.builder()
+ .setUser(user)
+ .setDataSourceId(dataSourceId)
+ .setDatabase("linkis_test_ind")
+ .setSystem(system)
+ .build()
+ val metadataGetTablesResult: MetadataGetTablesResult = metaDataClient.getTables(metadataGetTablesAction)
+
+
+
+ val metadataGetColumnsAction = MetadataGetColumnsAction.builder()
+ .setUser(user)
+ .setDataSourceId(dataSourceId)
+ .setDatabase("linkis_test_ind")
+ .setSystem(system)
+ .setTable("test")
+ .build()
+ val metadataGetColumnsResult: MetadataGetColumnsResult = metaDataClient.getColumns(metadataGetColumnsAction)
+
+
+ }
+}
+
+
+
+
diff --git a/linkis-public-enhancements/linkis-datasource/linkis-datasource-client/src/test/java/org/apache/linkis/datasource/client/TestMysqlClient.scala b/linkis-public-enhancements/linkis-datasource/linkis-datasource-client/src/test/java/org/apache/linkis/datasource/client/TestMysqlClient.scala
new file mode 100644
index 0000000..7f9a81d
--- /dev/null
+++ b/linkis-public-enhancements/linkis-datasource/linkis-datasource-client/src/test/java/org/apache/linkis/datasource/client/TestMysqlClient.scala
@@ -0,0 +1,149 @@
+/*
+ * 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.
+ */
+
+package org.apache.linkis.datasource.client
+import java.util
+import java.util.concurrent.TimeUnit
+
+import org.apache.linkis.common.utils.JsonUtils
+import org.apache.linkis.datasource.client.impl.{LinkisDataSourceRemoteClient, LinkisMetaDataRemoteClient}
+import org.apache.linkis.datasource.client.request._
+import org.apache.linkis.datasource.client.response._
+import org.apache.linkis.datasourcemanager.common.domain.DataSource
+import org.apache.linkis.httpclient.dws.authentication.StaticAuthenticationStrategy
+import org.apache.linkis.httpclient.dws.config.DWSClientConfigBuilder
+import org.junit.jupiter.api.{Disabled, Test}
+
+object TestMysqlClient {
+
+ val gatewayUrl = "http://127.0.0.1:9001"
+ val clientConfig = DWSClientConfigBuilder.newBuilder
+ .addServerUrl(gatewayUrl)
+ .connectionTimeout(30000)
+ .discoveryEnabled(false)
+ .discoveryFrequency(1, TimeUnit.MINUTES)
+ .loadbalancerEnabled(true)
+ .maxConnectionSize(1)
+ .retryEnabled(false)
+ .readTimeout(30000)
+ .setAuthenticationStrategy(new StaticAuthenticationStrategy)
+ .setAuthTokenKey("hadoop")
+ .setAuthTokenValue("xxxxx")
+ .setDWSVersion("v1")
+
+ val dataSourceclient = new LinkisDataSourceRemoteClient(clientConfig.build())
+
+ val clientConfig2 = DWSClientConfigBuilder.newBuilder
+ .addServerUrl(gatewayUrl)
+ .connectionTimeout(30000)
+ .discoveryEnabled(false)
+ .discoveryFrequency(1, TimeUnit.MINUTES)
+ .loadbalancerEnabled(true)
+ .maxConnectionSize(1)
+ .retryEnabled(false)
+ .readTimeout(30000)
+ .setAuthenticationStrategy(new StaticAuthenticationStrategy)
+ .setAuthTokenKey("hadoop")
+ .setAuthTokenValue("xxxxx")
+ .setDWSVersion("v1")
+
+ val metaDataClient = new LinkisMetaDataRemoteClient(clientConfig2.build())
+
+ @Test
+ @Disabled
+ def testCreateDataSourceMysql: Unit = {
+ val user = "hadoop"
+ val system = "Linkis"
+ val dataSource = new DataSource();
+ dataSource.setDataSourceName("for-mysql-test")
+ dataSource.setDataSourceDesc("this is for mysql test")
+ dataSource.setCreateSystem(system)
+ dataSource.setDataSourceTypeId(1L)
+
+ val map = JsonUtils.jackson.readValue(JsonUtils.jackson.writeValueAsString(dataSource), new util.HashMap[String, Any]().getClass)
+ val createDataSourceAction: CreateDataSourceAction = CreateDataSourceAction.builder()
+ .setUser(user)
+ .addRequestPayloads(map)
+ .build()
+ val createDataSourceResult: CreateDataSourceResult = dataSourceclient.createDataSource(createDataSourceAction)
+ val dataSourceId = createDataSourceResult.getInsertId
+
+
+ //set connectParams
+ val params = new util.HashMap[String, Any]
+
+ val connectParams = new util.HashMap[String, Any]
+ connectParams.put("host", "127.0.0.1")
+ connectParams.put("port", "36000")
+ connectParams.put("username", "db username")
+ connectParams.put("password", "db password")
+
+ params.put("connectParams", connectParams)
+ params.put("comment", "init")
+
+ val updateParameterAction: UpdateDataSourceParameterAction = UpdateDataSourceParameterAction.builder()
+ .setUser(user)
+ .setDataSourceId(dataSourceId)
+ .addRequestPayloads(params)
+ .build()
+ val updateParameterResult: UpdateDataSourceParameterResult = dataSourceclient.updateDataSourceParameter(updateParameterAction)
+
+ val version: Long = updateParameterResult.getVersion
+
+ //publist dataSource version
+ dataSourceclient.publishDataSourceVersion(
+ PublishDataSourceVersionAction.builder()
+ .setDataSourceId(dataSourceId)
+ .setUser(user)
+ .setVersion(version)
+ .build())
+
+ //example of use
+ val metadataGetDatabasesAction: MetadataGetDatabasesAction = MetadataGetDatabasesAction.builder()
+ .setUser(user)
+ .setDataSourceId(dataSourceId)
+ .setSystem(system)
+ .build()
+ val metadataGetDatabasesResult: MetadataGetDatabasesResult = metaDataClient.getDatabases(metadataGetDatabasesAction)
+
+
+ val metadataGetTablesAction: MetadataGetTablesAction = MetadataGetTablesAction.builder()
+ .setUser(user)
+ .setDataSourceId(dataSourceId)
+ .setDatabase("linkis")
+ .setSystem(system)
+ .build()
+ val metadataGetTablesResult: MetadataGetTablesResult = metaDataClient.getTables(metadataGetTablesAction)
+
+
+
+ val metadataGetColumnsAction = MetadataGetColumnsAction.builder()
+ .setUser(user)
+ .setDataSourceId(dataSourceId)
+ .setDatabase("linkis")
+ .setSystem(system)
+ .setTable("linkis_datasource")
+ .build()
+ val metadataGetColumnsResult: MetadataGetColumnsResult = metaDataClient.getColumns(metadataGetColumnsAction)
+
+
+ }
+}
+
+
+
+
diff --git a/web/src/apps/linkis/i18n/common/en.json b/web/src/apps/linkis/i18n/common/en.json
index 8f671a8..bef9fe9 100644
--- a/web/src/apps/linkis/i18n/common/en.json
+++ b/web/src/apps/linkis/i18n/common/en.json
@@ -253,6 +253,7 @@
"versionList": "Version list",
"dataSourceName": "Data source name",
"dataSourceType": "Data source type",
+ "createSystem": "Create system",
"dataSourceEnv": "Available Space",
"status": "Status",
"permissions": "Permissions",
@@ -276,4 +277,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/web/src/apps/linkis/i18n/common/zh.json b/web/src/apps/linkis/i18n/common/zh.json
index 3b8f724..8b93bd6 100644
--- a/web/src/apps/linkis/i18n/common/zh.json
+++ b/web/src/apps/linkis/i18n/common/zh.json
@@ -256,6 +256,7 @@
"versionList": "版本列表",
"dataSourceName": "数据源名称",
"dataSourceType": "数据源类型",
+ "createSystem": "创建系统",
"dataSourceEnv": "可用集群",
"status": "状态",
"permissions": "权限",
@@ -279,4 +280,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/web/src/apps/linkis/module/datasource/index.vue b/web/src/apps/linkis/module/datasource/index.vue
index b9d35a4..f976dab 100644
--- a/web/src/apps/linkis/module/datasource/index.vue
+++ b/web/src/apps/linkis/module/datasource/index.vue
@@ -266,6 +266,13 @@
},
tableColumnNum: [
{
+ title: "Id",
+ key: 'id',
+ minWidth: 10,
+ tooltip: true,
+ align: 'center',
+ },
+ {
title: this.$t('message.linkis.datasource.dataSourceName'),
key: 'dataSourceName',
minWidth: 120,
@@ -275,7 +282,7 @@
{
title: this.$t('message.linkis.datasource.dataSourceType'),
key: 'dataSourceTypeId',
- minWidth: 100,
+ minWidth: 60,
render: (h, params) => {
let result = {}
if (this.typeList) {
@@ -303,6 +310,13 @@
// align: 'center'
// },
{
+ title: this.$t('message.linkis.datasource.createSystem'),
+ key: 'createSystem',
+ minWidth: 50,
+ tooltip: true,
+ align: 'center',
+ },
+ {
title: this.$t('message.linkis.datasource.status'),
key: 'status',
tooltip: true,