aboutsummaryrefslogtreecommitdiffstats
path: root/grpc-resource/provider/src/test
diff options
context:
space:
mode:
authorAlexis de Talhouët <adetalhouet89@gmail.com>2019-02-28 14:59:03 -0500
committerAlexis de Talhouët <adetalhouet89@gmail.com>2019-02-28 15:59:25 -0500
commit09460aff611767884905680d504b4fc3c8bb1476 (patch)
tree797cbb8b5590875391c4d4893b6af5d35d472c0e /grpc-resource/provider/src/test
parente73462e38b5a282e7308a8d92a155e47f79d1b0e (diff)
Integration test on gRPC client
Change-Id: I5a7c4103a9139a5d1cc324cd23f644ba63e254c7 Issue-ID: CCSDK-947 - Signed-off-by: Alexis de Talhouët <adetalhouet89@gmail.com>
Diffstat (limited to 'grpc-resource/provider/src/test')
-rw-r--r--grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClientTest.java171
-rw-r--r--grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/GrpcClientTest.java64
2 files changed, 235 insertions, 0 deletions
diff --git a/grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClientTest.java b/grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClientTest.java
new file mode 100644
index 00000000..25de0d7f
--- /dev/null
+++ b/grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClientTest.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2019 Bell Canada.
+ *
+ * Licensed 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.onap.ccsdk.sli.adaptors.grpc.cds;
+
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.doReturn;
+
+import com.google.common.collect.Maps;
+import io.grpc.inprocess.InProcessChannelBuilder;
+import io.grpc.inprocess.InProcessServerBuilder;
+import io.grpc.stub.StreamObserver;
+import io.grpc.testing.GrpcCleanupRule;
+import io.grpc.util.MutableHandlerRegistry;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicReference;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+import org.mockito.Mockito;
+import org.onap.ccsdk.apps.controllerblueprints.common.api.ActionIdentifiers;
+import org.onap.ccsdk.apps.controllerblueprints.processing.api.BluePrintProcessingServiceGrpc.BluePrintProcessingServiceImplBase;
+import org.onap.ccsdk.apps.controllerblueprints.processing.api.ExecutionServiceInput;
+import org.onap.ccsdk.apps.controllerblueprints.processing.api.ExecutionServiceOutput;
+import org.onap.ccsdk.sli.adaptors.grpc.GrpcProperties;
+import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
+import org.onap.ccsdk.sli.core.sli.SvcLogicResource.QueryStatus;
+
+@RunWith(JUnit4.class)
+public class BlueprintProcessingClientTest {
+
+ @Rule
+ public final GrpcCleanupRule grpcCleanup = new GrpcCleanupRule();
+
+ private BlueprintProcessingClient client;
+
+ private final SvcLogicContext svcLogicContext = new SvcLogicContext();
+ private final MutableHandlerRegistry serviceRegistry = new MutableHandlerRegistry();
+ private final List<String> messagesDelivered = new ArrayList<>();
+ private final CountDownLatch allRequestsDelivered = new CountDownLatch(1);
+ private final AtomicReference<StreamObserver<ExecutionServiceOutput>> responseObserverRef = new AtomicReference<>();
+
+ @Before
+ public void setUp() throws Exception {
+
+ String serverName = InProcessServerBuilder.generateName();
+ grpcCleanup.register(InProcessServerBuilder.forName(serverName)
+ .fallbackHandlerRegistry(serviceRegistry).directExecutor().build().start());
+
+ BlueprintProcessingHandler handler = new BlueprintProcessingHandler();
+
+ client =
+ new BlueprintProcessingClient(InProcessChannelBuilder.forName(serverName).directExecutor().build(),
+ handler);
+
+ final BluePrintProcessingServiceImplBase routeChatImpl =
+ new BluePrintProcessingServiceImplBase() {
+ @Override
+ public StreamObserver<ExecutionServiceInput> process(
+ StreamObserver<ExecutionServiceOutput> responseObserver) {
+
+ responseObserverRef.set(responseObserver);
+
+ StreamObserver<ExecutionServiceInput> requestObserver = new StreamObserver<ExecutionServiceInput>() {
+ @Override
+ public void onNext(ExecutionServiceInput message) {
+ messagesDelivered.add(message.getActionIdentifiers().getActionName());
+ }
+
+ @Override
+ public void onError(Throwable t) {
+
+ }
+
+ @Override
+ public void onCompleted() {
+ allRequestsDelivered.countDown();
+ }
+ };
+
+ return requestObserver;
+ }
+ };
+
+ serviceRegistry.addService(routeChatImpl);
+ }
+
+ @After
+ public void tearDown() {
+ client.stop();
+ }
+
+ @Test
+ public void testClientCst() {
+ GrpcProperties props = Mockito.mock(GrpcProperties.class);
+ doReturn(999).when(props).getPort();
+ doReturn("localhost").when(props).getUrl();
+ new BlueprintProcessingClient(props);
+ }
+
+
+ @Test
+ public void testSendMessageFail() throws Exception {
+ Map<String, String> input = Maps.newHashMap();
+ input.put("is_force", "true");
+ input.put("ttl", "1");
+ input.put("blueprint_name", "test");
+ input.put("blueprint_version", "1.0.0");
+ input.put("action", "test-action");
+ input.put("mode", "sync");
+ input.put("payload", "");
+ input.put("prefix", "res");
+
+ QueryStatus status = client.sendRequest(input, svcLogicContext);
+
+ Assert.assertEquals(QueryStatus.FAILURE, status);
+
+ }
+
+ @Test
+ public void testSendMessage() throws Exception {
+ ExecutionServiceOutput fakeResponse1 = ExecutionServiceOutput.newBuilder().setActionIdentifiers(
+ ActionIdentifiers.newBuilder().setActionName("response1").build()).build();
+
+ ExecutionServiceOutput fakeResponse2 = ExecutionServiceOutput.newBuilder().setActionIdentifiers(
+ ActionIdentifiers.newBuilder().setActionName("response2").build()).build();
+
+ Map<String, String> input = Maps.newHashMap();
+ input.put("is_force", "true");
+ input.put("ttl", "1");
+ input.put("blueprint_name", "test");
+ input.put("blueprint_version", "1.0.0");
+ input.put("action", "test-action");
+ input.put("mode", "sync");
+ input.put("payload", "{}");
+ input.put("prefix", "res");
+
+ client.sendRequest(input, svcLogicContext);
+
+ // request message sent and delivered for one time
+ assertTrue(allRequestsDelivered.await(1, TimeUnit.SECONDS));
+ assertEquals(Collections.singletonList("test-action"), messagesDelivered);
+
+ // let server complete.
+ responseObserverRef.get().onCompleted();
+ }
+
+} \ No newline at end of file
diff --git a/grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/GrpcClientTest.java b/grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/GrpcClientTest.java
index 2b1a42ba..2ad49d79 100644
--- a/grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/GrpcClientTest.java
+++ b/grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/GrpcClientTest.java
@@ -15,6 +15,70 @@
*/
package org.onap.ccsdk.sli.adaptors.grpc.cds;
+import com.google.common.collect.Maps;
+import com.google.protobuf.InvalidProtocolBufferException;
+import com.google.protobuf.Struct;
+import com.google.protobuf.Struct.Builder;
+import java.util.Map;
+import org.junit.Test;
+import org.onap.ccsdk.sli.adaptors.grpc.JsonFormat;
+import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
+import org.onap.ccsdk.sli.core.sli.SvcLogicException;
+import org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils;
+
public class GrpcClientTest {
+ @Test
+ public void testPayload() throws InvalidProtocolBufferException {
+
+ String payload = "{\n"
+ + " \"commonHeader\": {\n"
+ + " \"timestamp\": \"2019-02-27T22:08:39.587Z\",\n"
+ + " \"originatorId\": \"System\",\n"
+ + " \"requestId\": \"1234\",\n"
+ + " \"subRequestId\": \"1234-12234\"\n"
+ + " },\n"
+ + " \"actionIdentifiers\": {\n"
+ + " \"blueprintName\": \"test\",\n"
+ + " \"blueprintVersion\": \"1.0.0\",\n"
+ + " \"actionName\": \"resource-assignment\",\n"
+ + " \"mode\": \"sync\"\n"
+ + " },\n"
+ + " \"status\": {\n"
+ + " \"code\": 200,\n"
+ + " \"eventType\": \"EVENT-COMPONENT-EXECUTED\",\n"
+ + " \"timestamp\": \"2019-02-27T22:08:39.981Z\",\n"
+ + " \"message\": \"success\"\n"
+ + " },\n"
+ + " \"payload\": {\n"
+ + " \"resource-assignment-params\": {\n"
+ + " \"test\": \"THIS IS A TEST: service-capability-resolved-status-test\"\n"
+ + " },\n"
+ + " \"status\": \"success\"\n"
+ + " }\n"
+ + "}";
+
+ Map<String, String> jsonToCtx = Maps.newHashMap();
+ jsonToCtx.put("source", "blueprint_processing_result");
+ jsonToCtx.put("outputPath", "t");
+ jsonToCtx.put("isEscaped", Boolean.FALSE.toString());
+
+ SvcLogicContext svcLogicContext = new SvcLogicContext();
+ svcLogicContext.setAttribute("blueprint_processing_result", payload);
+
+ try {
+ SliPluginUtils.jsonStringToCtx(jsonToCtx, svcLogicContext);
+ } catch (SvcLogicException e) {
+ e.printStackTrace();
+ }
+
+ Builder t = Struct.newBuilder();
+
+ JsonFormat.parser().merge(payload, t);
+
+ System.out.println(((Builder) t).build().toString());
+
+ System.out.println(JsonFormat.printer().print(t));
+ }
+
} \ No newline at end of file