You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by sm...@apache.org on 2024/01/29 10:22:08 UTC

(knox) branch master updated: KNOX-3004 - Building a valid JDBC URL for Impala (#837)

This is an automated email from the ASF dual-hosted git repository.

smolnar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/knox.git


The following commit(s) were added to refs/heads/master by this push:
     new b855e0f4b KNOX-3004 - Building a valid JDBC URL for Impala (#837)
b855e0f4b is described below

commit b855e0f4bbe58724ffb0358edd246d5b52ed94fe
Author: Sandor Molnar <sm...@apache.org>
AuthorDate: Mon Jan 29 11:22:03 2024 +0100

    KNOX-3004 - Building a valid JDBC URL for Impala (#837)
---
 .../knox/gateway/service/metadata/ServiceModel.java     |  4 ++++
 .../knox/gateway/service/metadata/ServiceModelTest.java | 17 +++++++++++++++++
 2 files changed, 21 insertions(+)

diff --git a/gateway-service-metadata/src/main/java/org/apache/knox/gateway/service/metadata/ServiceModel.java b/gateway-service-metadata/src/main/java/org/apache/knox/gateway/service/metadata/ServiceModel.java
index d4b08d088..5e35d27ff 100644
--- a/gateway-service-metadata/src/main/java/org/apache/knox/gateway/service/metadata/ServiceModel.java
+++ b/gateway-service-metadata/src/main/java/org/apache/knox/gateway/service/metadata/ServiceModel.java
@@ -48,6 +48,8 @@ public class ServiceModel implements Comparable<ServiceModel> {
   static final String CURL_SAMPLE_TEMPLATE = "curl -iv -X %s \"%s%s\"";
   static final String HIVE_SERVICE_NAME = "HIVE";
   static final String HIVE_SERVICE_URL_TEMPLATE = "jdbc:hive2://%s:%d/;ssl=true;transportMode=http;httpPath=%s/%s/hive";
+  static final String IMPALA_SERVICE_NAME = "IMPALA";
+  static final String IMPALA_SERVICE_URL_TEMPLATE = "jdbc:impala://%s:%d/;ssl=1;transportMode=http;httpPath=%s/%s/impala;AuthMech=3";
 
   public enum Type {
     API, UI, API_AND_UI, UNKNOWN
@@ -127,6 +129,8 @@ public class ServiceModel implements Comparable<ServiceModel> {
     String context = getContext();
     if (HIVE_SERVICE_NAME.equals(getServiceName())) {
       return String.format(Locale.ROOT, HIVE_SERVICE_URL_TEMPLATE, request.getServerName(), request.getServerPort(), gatewayPath, topologyName);
+    } else if (IMPALA_SERVICE_NAME.equals(getServiceName())) {
+      return String.format(Locale.ROOT, IMPALA_SERVICE_URL_TEMPLATE, request.getServerName(), request.getServerPort(), gatewayPath, topologyName);
     } else {
       return getServiceUrl(context);
     }
diff --git a/gateway-service-metadata/src/test/java/org/apache/knox/gateway/service/metadata/ServiceModelTest.java b/gateway-service-metadata/src/test/java/org/apache/knox/gateway/service/metadata/ServiceModelTest.java
index 4058ee2f6..77ff7c3e2 100644
--- a/gateway-service-metadata/src/test/java/org/apache/knox/gateway/service/metadata/ServiceModelTest.java
+++ b/gateway-service-metadata/src/test/java/org/apache/knox/gateway/service/metadata/ServiceModelTest.java
@@ -19,6 +19,8 @@ package org.apache.knox.gateway.service.metadata;
 
 import static org.apache.knox.gateway.service.metadata.ServiceModel.HIVE_SERVICE_NAME;
 import static org.apache.knox.gateway.service.metadata.ServiceModel.HIVE_SERVICE_URL_TEMPLATE;
+import static org.apache.knox.gateway.service.metadata.ServiceModel.IMPALA_SERVICE_NAME;
+import static org.apache.knox.gateway.service.metadata.ServiceModel.IMPALA_SERVICE_URL_TEMPLATE;
 import static org.apache.knox.gateway.service.metadata.ServiceModel.SERVICE_URL_TEMPLATE;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -159,6 +161,21 @@ public class ServiceModelTest {
     assertEquals(String.format(Locale.ROOT, HIVE_SERVICE_URL_TEMPLATE, SERVER_NAME, SERVER_PORT, gatewayPath, topologyName), serviceModel.getServiceUrl());
   }
 
+  @Test
+  public void shouldReturnProperImpalaServiceUrl() throws Exception {
+    final ServiceModel serviceModel = new ServiceModel();
+    final String gatewayPath = "gateway";
+    final String topologyName = "sandbox";
+    serviceModel.setGatewayPath(gatewayPath);
+    serviceModel.setTopologyName(topologyName);
+    serviceModel.setRequest(setUpHttpRequestMock());
+    final Service service = EasyMock.createNiceMock(Service.class);
+    serviceModel.setService(service);
+    EasyMock.expect(service.getRole()).andReturn(IMPALA_SERVICE_NAME).anyTimes();
+    EasyMock.replay(service);
+    assertEquals(String.format(Locale.ROOT, IMPALA_SERVICE_URL_TEMPLATE, SERVER_NAME, SERVER_PORT, gatewayPath, topologyName), serviceModel.getServiceUrl());
+  }
+
   public HttpServletRequest setUpHttpRequestMock() {
     final HttpServletRequest httpServletRequestMock = EasyMock.createNiceMock(HttpServletRequest.class);
     EasyMock.expect(httpServletRequestMock.getScheme()).andReturn(SERVER_SCHEME).anyTimes();