Fix timeout issues in gRPC tests 32/104632/2
authorliamfallon <liam.fallon@est.tech>
Sun, 29 Mar 2020 12:10:38 +0000 (13:10 +0100)
committerliamfallon <liam.fallon@est.tech>
Mon, 30 Mar 2020 15:48:26 +0000 (16:48 +0100)
When running the gRPC tests in a slow or overloaded environment, the
timeupts must be set longer.

Issue-ID: POLICY-2106
Change-Id: Id152f1f82ef47f646c7b0488b4486425c6816e31
Signed-off-by: liamfallon <liam.fallon@est.tech>
examples/examples-grpc/src/test/java/org/onap/policy/apex/examples/grpc/GrpcTestDummyGrpcServer.java
examples/examples-grpc/src/test/java/org/onap/policy/apex/examples/grpc/GrpcTestServerSim.java
examples/examples-grpc/src/test/java/org/onap/policy/apex/examples/grpc/TestApexGrpcExample.java

index bef0a81..c8e38bc 100644 (file)
  * SPDX-License-Identifier: Apache-2.0
  * ============LICENSE_END=========================================================
  */
+
 package org.onap.policy.apex.examples.grpc;
 
 import com.google.protobuf.InvalidProtocolBufferException;
 import com.google.protobuf.util.JsonFormat;
+
 import io.grpc.Server;
 import io.grpc.netty.NettyServerBuilder;
 import io.grpc.stub.StreamObserver;
+
 import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.nio.file.Files;
 import java.nio.file.Paths;
+
 import org.onap.ccsdk.cds.controllerblueprints.processing.api.BluePrintProcessingServiceGrpc.BluePrintProcessingServiceImplBase;
 import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceInput;
 import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceOutput;
@@ -40,12 +44,18 @@ import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
 public class GrpcTestDummyGrpcServer {
     private Server server;
 
+    /**
+     * Dummy server for gRPC.
+     *
+     * @param host hostname of the server
+     * @param port port of the server
+     */
     public GrpcTestDummyGrpcServer(String host, int port) {
         // Implement the dummy gRPC server
         BluePrintProcessingServiceImplBase testCdsBlueprintServerImpl = new BluePrintProcessingServiceImplBase() {
             @Override
-            public StreamObserver<ExecutionServiceInput> process(
-                final StreamObserver<ExecutionServiceOutput> responseObserver) {
+            public StreamObserver<ExecutionServiceInput>
+                process(final StreamObserver<ExecutionServiceOutput> responseObserver) {
                 return new StreamObserver<ExecutionServiceInput>() {
                     @Override
                     public void onNext(final ExecutionServiceInput executionServiceInput) {
index ae35d1f..fcdf553 100644 (file)
@@ -47,14 +47,14 @@ public class GrpcTestServerSim {
         restServer.addServletClass(null, GrpcTestRestSimEndpoint.class.getName());
         restServer.setSerializationProvider(GsonMessageBodyHandler.class.getName());
         restServer.start();
-        if (!NetworkUtil.isTcpPortOpen(HOST, restServerPort, 2000, 1L)) {
+        if (!NetworkUtil.isTcpPortOpen(HOST, restServerPort, 50, 200L)) {
             throw new IllegalStateException("port " + restServerPort + " is still not in use");
         }
 
         int grpcServerPort = 54322;
         grpcServer = new GrpcTestDummyGrpcServer(HOST, grpcServerPort);
         grpcServer.start();
-        if (!NetworkUtil.isTcpPortOpen(HOST, grpcServerPort, 2000, 1L)) {
+        if (!NetworkUtil.isTcpPortOpen(HOST, grpcServerPort, 50, 200L)) {
             throw new IllegalStateException("port " + grpcServerPort + " is still not in use");
         }
     }
index 06d1d33..05d6e4c 100644 (file)
@@ -17,6 +17,7 @@
  * SPDX-License-Identifier: Apache-2.0
  * ============LICENSE_END=========================================================
  */
+
 package org.onap.policy.apex.examples.grpc;
 
 import static org.awaitility.Awaitility.await;
@@ -25,18 +26,20 @@ import static org.junit.Assert.assertEquals;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.util.concurrent.TimeUnit;
+
 import javax.ws.rs.client.Client;
 import javax.ws.rs.client.ClientBuilder;
 import javax.ws.rs.core.Response;
+
 import org.junit.Test;
 import org.onap.policy.apex.auth.clieditor.ApexCommandLineEditorMain;
 import org.onap.policy.apex.service.engine.main.ApexMain;
 
 /**
- * Test class to run an example policy for APEX-CDS interaction over gRPC.
- * Event received on unauthenticated.DCAE_CL_OUTPUT DMaaP topic (dummy REST Endpoint here) triggers the policy
- * Based on the event, a create/delete subscription gRPC request is triggered to the CDS (a dummy gRPC server here).
- * Response received from CDS is used to send a final output Log event on POLICY_CL_MGT topic.
+ * Test class to run an example policy for APEX-CDS interaction over gRPC. Event received on
+ * unauthenticated.DCAE_CL_OUTPUT DMaaP topic (dummy REST Endpoint here) triggers the policy Based on the event, a
+ * create/delete subscription gRPC request is triggered to the CDS (a dummy gRPC server here). Response received from
+ * CDS is used to send a final output Log event on POLICY_CL_MGT topic.
  */
 public class TestApexGrpcExample {
     @Test
@@ -65,21 +68,25 @@ public class TestApexGrpcExample {
         };
         // @formatter:on
 
-        GrpcTestServerSim sim = new GrpcTestServerSim();
+        final GrpcTestServerSim sim = new GrpcTestServerSim();
+
         final Client client = ClientBuilder.newClient();
-        String expectedLoggedOutputEvent = Files
-            .readString(Paths.get("src/main/resources/examples/events/APEXgRPC/LogEvent.json")).replaceAll("\r", "");
         final ApexMain apexMain = new ApexMain(apexArgs);
 
+        await().atMost(5000, TimeUnit.MILLISECONDS).until(() -> apexMain.isAlive());
+
         String getLoggedEventUrl = "http://localhost:54321/GrpcTestRestSim/sim/event/getLoggedEvent";
         // wait for success response code to be received, until a timeout
-        await().atMost(5000, TimeUnit.MILLISECONDS).until(() -> {
+        await().atMost(20000, TimeUnit.MILLISECONDS).until(() -> {
             return 200 == client.target(getLoggedEventUrl).request("application/json").get().getStatus();
         });
         apexMain.shutdown();
         Response response = client.target(getLoggedEventUrl).request("application/json").get();
         sim.tearDown();
         String responseEntity = response.readEntity(String.class);
+
+        String expectedLoggedOutputEvent = Files
+            .readString(Paths.get("src/main/resources/examples/events/APEXgRPC/LogEvent.json")).replaceAll("\r", "");
         assertEquals(expectedLoggedOutputEvent, responseEntity);
     }
 }