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

suvasude pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-gobblin.git


The following commit(s) were added to refs/heads/master by this push:
     new 8110e88  [GOBBLIN-1279] Fix flaky unit tests involving REST.li calls 
to FlowConfig endpoint in Gobblin-as-a-Service[]
8110e88 is described below

commit 8110e88a1c09c4ec7795560748321891013aadcc
Author: suvasude <[email protected]>
AuthorDate: Wed Oct 7 10:19:37 2020 -0700

    [GOBBLIN-1279] Fix flaky unit tests involving REST.li calls to FlowConfig 
endpoint in Gobblin-as-a-Service[]
    
    Closes #3119 from sv2000/flowConfigFlakiness
---
 .../main/java/org/apache/gobblin/service/FlowConfigClient.java |  7 ++++++-
 .../java/org/apache/gobblin/service/FlowConfigV2Client.java    |  4 ++++
 .../test/java/org/apache/gobblin/service/FlowConfigTest.java   |  7 +++++--
 .../test/java/org/apache/gobblin/service/FlowConfigV2Test.java |  7 +++++--
 .../org/apache/gobblin/service/GobblinServiceManagerTest.java  |  8 ++++++--
 .../gobblin/service/modules/core/GobblinServiceHATest.java     | 10 ++++++++--
 6 files changed, 34 insertions(+), 9 deletions(-)

diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-client/src/main/java/org/apache/gobblin/service/FlowConfigClient.java
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-client/src/main/java/org/apache/gobblin/service/FlowConfigClient.java
index 7e78e29..58ae8d1 100644
--- 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-client/src/main/java/org/apache/gobblin/service/FlowConfigClient.java
+++ 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-client/src/main/java/org/apache/gobblin/service/FlowConfigClient.java
@@ -20,6 +20,7 @@ package org.apache.gobblin.service;
 import java.io.Closeable;
 import java.io.IOException;
 import java.util.Collections;
+import java.util.Map;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -59,10 +60,14 @@ public class FlowConfigClient implements Closeable {
    * @param serverUri address and port of the REST server
    */
   public FlowConfigClient(String serverUri) {
+    this(serverUri, Collections.<String, String>emptyMap());
+  }
+
+  public FlowConfigClient(String serverUri, Map<String, String> properties) {
     LOG.debug("FlowConfigClient with serverUri " + serverUri);
 
     _httpClientFactory = Optional.of(new HttpClientFactory());
-    Client r2Client = new 
TransportClientAdapter(_httpClientFactory.get().getClient(Collections.<String, 
String>emptyMap()));
+    Client r2Client = new 
TransportClientAdapter(_httpClientFactory.get().getClient(properties));
     _restClient = Optional.of(new RestClient(r2Client, serverUri));
 
     _flowconfigsRequestBuilders = createRequestBuilders();
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-client/src/main/java/org/apache/gobblin/service/FlowConfigV2Client.java
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-client/src/main/java/org/apache/gobblin/service/FlowConfigV2Client.java
index 56130f6..98b9e90 100644
--- 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-client/src/main/java/org/apache/gobblin/service/FlowConfigV2Client.java
+++ 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-client/src/main/java/org/apache/gobblin/service/FlowConfigV2Client.java
@@ -70,6 +70,10 @@ public class FlowConfigV2Client implements Closeable {
    * @param serverUri address and port of the REST server
    */
   public FlowConfigV2Client(String serverUri) {
+    this(serverUri, Collections.emptyMap());
+  }
+
+  public FlowConfigV2Client(String serverUri, Map<String, String> properties) {
     LOG.debug("FlowConfigClient with serverUri " + serverUri);
 
     _httpClientFactory = Optional.of(new HttpClientFactory());
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-client/src/test/java/org/apache/gobblin/service/FlowConfigTest.java
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-client/src/test/java/org/apache/gobblin/service/FlowConfigTest.java
index 38bc2d5..e89f65f 100644
--- 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-client/src/test/java/org/apache/gobblin/service/FlowConfigTest.java
+++ 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-client/src/test/java/org/apache/gobblin/service/FlowConfigTest.java
@@ -38,6 +38,7 @@ import com.google.inject.Injector;
 import com.google.inject.Module;
 import com.google.inject.name.Names;
 import com.linkedin.data.template.StringMap;
+import com.linkedin.r2.transport.http.client.HttpClientFactory;
 import com.linkedin.restli.client.RestLiResponseException;
 import com.linkedin.restli.common.HttpStatus;
 import com.linkedin.restli.server.resources.BaseResource;
@@ -50,7 +51,7 @@ import org.apache.gobblin.runtime.spec_catalog.FlowCatalog;
 import org.apache.gobblin.runtime.spec_store.FSSpecStore;
 
 
-@Test(groups = { "gobblin.service" })
+@Test(groups = { "gobblin.service" }, singleThreaded = true)
 public class FlowConfigTest {
   private FlowConfigClient _client;
   private EmbeddedRestliServer _server;
@@ -102,8 +103,10 @@ public class FlowConfigTest {
     _server.startAsync();
     _server.awaitRunning();
 
+    Map<String, String> transportClientProperties = Maps.newHashMap();
+    transportClientProperties.put(HttpClientFactory.HTTP_REQUEST_TIMEOUT, 
"10000");
     _client =
-        new FlowConfigClient(String.format("http://localhost:%s/";, 
_server.getPort()));
+        new FlowConfigClient(String.format("http://localhost:%s/";, 
_server.getPort()), transportClientProperties);
   }
 
   private void cleanUpDir(String dir) throws Exception {
diff --git 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-client/src/test/java/org/apache/gobblin/service/FlowConfigV2Test.java
 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-client/src/test/java/org/apache/gobblin/service/FlowConfigV2Test.java
index eea986e..50fb947 100644
--- 
a/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-client/src/test/java/org/apache/gobblin/service/FlowConfigV2Test.java
+++ 
b/gobblin-restli/gobblin-flow-config-service/gobblin-flow-config-service-client/src/test/java/org/apache/gobblin/service/FlowConfigV2Test.java
@@ -38,6 +38,7 @@ import com.google.inject.Module;
 import com.google.inject.name.Names;
 import com.linkedin.data.DataMap;
 import com.linkedin.data.template.StringMap;
+import com.linkedin.r2.transport.http.client.HttpClientFactory;
 import com.linkedin.restli.client.RestLiResponseException;
 import com.linkedin.restli.common.PatchRequest;
 import com.linkedin.restli.internal.server.util.DataMapUtils;
@@ -55,7 +56,7 @@ import org.apache.gobblin.runtime.spec_catalog.FlowCatalog;
 import org.apache.gobblin.runtime.spec_store.FSSpecStore;
 
 
-@Test(groups = { "gobblin.service" })
+@Test(groups = { "gobblin.service" }, singleThreaded = true)
 public class FlowConfigV2Test {
   private FlowConfigV2Client _client;
   private EmbeddedRestliServer _server;
@@ -106,8 +107,10 @@ public class FlowConfigV2Test {
     _server.startAsync();
     _server.awaitRunning();
 
+    Map<String, String> transportClientProperties = Maps.newHashMap();
+    transportClientProperties.put(HttpClientFactory.HTTP_REQUEST_TIMEOUT, 
"10000");
     _client =
-        new FlowConfigV2Client(String.format("http://localhost:%s/";, 
_server.getPort()));
+        new FlowConfigV2Client(String.format("http://localhost:%s/";, 
_server.getPort()), transportClientProperties);
   }
 
   protected void cleanUpDir(String dir) throws Exception {
diff --git 
a/gobblin-service/src/test/java/org/apache/gobblin/service/GobblinServiceManagerTest.java
 
b/gobblin-service/src/test/java/org/apache/gobblin/service/GobblinServiceManagerTest.java
index f1eafbb..d3cb898 100644
--- 
a/gobblin-service/src/test/java/org/apache/gobblin/service/GobblinServiceManagerTest.java
+++ 
b/gobblin-service/src/test/java/org/apache/gobblin/service/GobblinServiceManagerTest.java
@@ -47,6 +47,7 @@ import com.google.common.io.Files;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.linkedin.data.template.StringMap;
+import com.linkedin.r2.transport.http.client.HttpClientFactory;
 import com.linkedin.restli.client.RestLiResponseException;
 import com.typesafe.config.Config;
 
@@ -106,6 +107,7 @@ public class GobblinServiceManagerTest {
   private TestingServer testingServer;
   Properties serviceCoreProperties = new Properties();
   Map<String, String> flowProperties = Maps.newHashMap();
+  Map<String, String> transportClientProperties = Maps.newHashMap();
 
   public GobblinServiceManagerTest() throws Exception {
   }
@@ -153,6 +155,8 @@ public class GobblinServiceManagerTest {
 
     
serviceCoreProperties.put(ServiceConfigKeys.GOBBLIN_SERVICE_FLOWCOMPILER_CLASS_KEY,
 MockedSpecCompiler.class.getCanonicalName());
 
+    transportClientProperties.put(HttpClientFactory.HTTP_REQUEST_TIMEOUT, 
"10000");
+
     // Create a bare repository
     RepositoryCache.FileKey fileKey = RepositoryCache.FileKey.exact(new 
File(GIT_REMOTE_REPO_DIR), FS.DETECTED);
     fileKey.open(false).create(true);
@@ -168,7 +172,7 @@ public class GobblinServiceManagerTest {
     this.gobblinServiceManager.start();
 
     this.flowConfigClient = new 
FlowConfigV2Client(String.format("http://127.0.0.1:%s/";,
-        
this.gobblinServiceManager.getRestLiServer().getListeningURI().getPort()));
+        
this.gobblinServiceManager.getRestLiServer().getListeningURI().getPort()), 
transportClientProperties);
   }
 
   private void cleanUpDir(String dir) throws Exception {
@@ -499,7 +503,7 @@ null, null, null, null);
     this.gobblinServiceManager = new MockGobblinServiceManager("CoreService", 
"1",
         ConfigUtils.propertiesToConfig(serviceCoreProperties), Optional.of(new 
Path(SERVICE_WORK_DIR)));
     this.flowConfigClient = new 
FlowConfigV2Client(String.format("http://127.0.0.1:%s/";,
-        this.gobblinServiceManager.getRestLiServer().getPort()));
+        this.gobblinServiceManager.getRestLiServer().getPort()), 
transportClientProperties);
     this.gobblinServiceManager.start();
   }
 
diff --git 
a/gobblin-service/src/test/java/org/apache/gobblin/service/modules/core/GobblinServiceHATest.java
 
b/gobblin-service/src/test/java/org/apache/gobblin/service/modules/core/GobblinServiceHATest.java
index 2132778..d8bc99e 100644
--- 
a/gobblin-service/src/test/java/org/apache/gobblin/service/modules/core/GobblinServiceHATest.java
+++ 
b/gobblin-service/src/test/java/org/apache/gobblin/service/modules/core/GobblinServiceHATest.java
@@ -36,6 +36,10 @@ import org.testng.annotations.Test;
 import com.google.common.base.Optional;
 import com.google.common.collect.Maps;
 import com.linkedin.data.template.StringMap;
+import com.linkedin.r2.transport.common.Client;
+import com.linkedin.r2.transport.common.bridge.client.TransportClientAdapter;
+import com.linkedin.r2.transport.http.client.HttpClientFactory;
+import com.linkedin.restli.client.RestClient;
 import com.linkedin.restli.client.RestLiResponseException;
 
 import org.apache.gobblin.configuration.ConfigurationKeys;
@@ -168,12 +172,14 @@ public class GobblinServiceHATest {
     this.node2GobblinServiceManager.start();
 
     // Initialize Node 1 Client
+    Map<String, String> transportClientProperties = Maps.newHashMap();
+    transportClientProperties.put(HttpClientFactory.HTTP_REQUEST_TIMEOUT, 
"10000");
     this.node1FlowConfigClient = new 
FlowConfigClient(String.format("http://localhost:%s/";,
-        this.node1GobblinServiceManager.restliServer.getPort()));
+        this.node1GobblinServiceManager.restliServer.getPort()), 
transportClientProperties);
 
     // Initialize Node 2 Client
     this.node2FlowConfigClient = new 
FlowConfigClient(String.format("http://localhost:%s/";,
-        this.node2GobblinServiceManager.restliServer.getPort()));
+        this.node2GobblinServiceManager.restliServer.getPort()), 
transportClientProperties);
   }
 
   private void cleanUpDir(String dir) throws Exception {

Reply via email to