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 <smol...@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();

Reply via email to