From 38105ab52e92aa1030593441d328df62d380df8b Mon Sep 17 00:00:00 2001 From: jayancv Date: Sat, 22 Oct 2022 00:30:55 +0530 Subject: [PATCH 1/2] Adding initial test case for S3 Service handler --- pom.xml | 81 ++++++++++++++++++ .../S3ServiceHandlerTest.java | 84 +++++++++++++++++++ .../backend/sql/SQLResourceBackendTest.java | 75 +++++++++++++++++ 3 files changed, 240 insertions(+) create mode 100644 services/resource-service/server/src/test/java/org.apache.airavata.mft.resource.server.handler/S3ServiceHandlerTest.java create mode 100644 services/resource-service/server/src/test/java/org/apache/airavata/mft/resource/server/backend/sql/SQLResourceBackendTest.java diff --git a/pom.xml b/pom.xml index b2254166..179cd81e 100755 --- a/pom.xml +++ b/pom.xml @@ -97,6 +97,50 @@ 11 + + + org.jacoco + jacoco-maven-plugin + 0.8.4 + + + pre-test + + prepare-agent + + + surefireArgLine + + + + post-unit-test + test + + report + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.0.0-M7 + + + @{surefireArgLine} + 1 + + + + default-test + test + + test + + + + @@ -131,6 +175,40 @@ log4j-1.2-api ${log4j2.version} + + org.junit.jupiter + junit-jupiter-engine + ${jupiter.version} + test + + + org.mockito + mockito-core + ${mockito.version} + test + + + io.grpc + grpc-testing + ${grpc.version} + test + + + org.springframework.boot + spring-boot-starter-test + ${spring.boot.data.jpa} + test + + + org.junit.vintage + junit-vintage-engine + + + org.apache.logging.log4j + log4j-to-slf4j + + + @@ -151,6 +229,9 @@ 2.5.0 2.6 4.5.13 + 5.8.1 + 4.6.1 + 1.25.0 diff --git a/services/resource-service/server/src/test/java/org.apache.airavata.mft.resource.server.handler/S3ServiceHandlerTest.java b/services/resource-service/server/src/test/java/org.apache.airavata.mft.resource.server.handler/S3ServiceHandlerTest.java new file mode 100644 index 00000000..280f46cd --- /dev/null +++ b/services/resource-service/server/src/test/java/org.apache.airavata.mft.resource.server.handler/S3ServiceHandlerTest.java @@ -0,0 +1,84 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.airavata.mft.resource.server.handler; + + +import io.grpc.internal.testing.StreamRecorder; +import org.apache.airavata.mft.resource.server.backend.ResourceBackend; +import org.apache.airavata.mft.resource.stubs.s3.storage.S3Storage; +import org.apache.airavata.mft.resource.stubs.s3.storage.S3StorageListRequest; +import org.apache.airavata.mft.resource.stubs.s3.storage.S3StorageListResponse; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnitRunner; + +import java.util.List; +import java.util.concurrent.TimeUnit; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; +import static org.mockito.Mockito.when; + +@RunWith( MockitoJUnitRunner.class ) +class S3ServiceHandlerTest +{ + + @InjectMocks + private S3ServiceHandler s3ServiceHandler; + + @Mock + private ResourceBackend backend; + + + @BeforeEach + void setUp() + { + s3ServiceHandler = new S3ServiceHandler(); + MockitoAnnotations.openMocks( this ); + } + + @Test + void listS3Storage() throws Exception + { + + S3StorageListRequest request1 = S3StorageListRequest.newBuilder().setOffset( 0 ).setLimit( 10 ).build(); + when( backend.listS3Storage( request1 ) ).thenReturn( S3StorageListResponse.newBuilder().addStorages( 0, + S3Storage.newBuilder().setStorageId( "1" ).setBucketName( "testBkt" ).setName( "testJCV" ) + .setRegion( "usa-east" ) ).build() ); + + S3StorageListRequest request = S3StorageListRequest.newBuilder().setOffset( 0 ).setLimit( 10 ).build(); + StreamRecorder responseOb = StreamRecorder.create(); + s3ServiceHandler.listS3Storage( request, responseOb ); + if ( !responseOb.awaitCompletion( 5, TimeUnit.SECONDS ) ) + { + System.out.println( "Time out !" ); + fail(); + } + List results = responseOb.getValues(); + assertEquals( 1, results.size() ); + S3StorageListResponse response = results.get( 0 ); + assertEquals( S3StorageListResponse.newBuilder().addStorages( 0, + S3Storage.newBuilder().setStorageId( "1" ).setBucketName( "testBkt" ).setName( "testJCV" ) + .setRegion( "usa-east" ) ).build(), response ); + } + +} \ No newline at end of file diff --git a/services/resource-service/server/src/test/java/org/apache/airavata/mft/resource/server/backend/sql/SQLResourceBackendTest.java b/services/resource-service/server/src/test/java/org/apache/airavata/mft/resource/server/backend/sql/SQLResourceBackendTest.java new file mode 100644 index 00000000..51a916ae --- /dev/null +++ b/services/resource-service/server/src/test/java/org/apache/airavata/mft/resource/server/backend/sql/SQLResourceBackendTest.java @@ -0,0 +1,75 @@ +package org.apache.airavata.mft.resource.server.backend.sql; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import org.apache.airavata.mft.resource.server.backend.sql.entity.S3StorageEntity; +import org.apache.airavata.mft.resource.server.backend.sql.repository.S3StorageRepository; +import org.apache.airavata.mft.resource.stubs.s3.storage.S3Storage; +import org.apache.airavata.mft.resource.stubs.s3.storage.S3StorageGetRequest; +import org.apache.airavata.mft.resource.stubs.s3.storage.S3StorageListRequest; +import org.apache.airavata.mft.resource.stubs.s3.storage.S3StorageListResponse; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnitRunner; +import org.springframework.data.domain.PageRequest; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.when; + +@RunWith( MockitoJUnitRunner.class ) +class SQLResourceBackendTest +{ + @InjectMocks + private SQLResourceBackend sqlResourceBackend; + @Mock + private S3StorageRepository s3StorageRepository; + + @BeforeEach + void setUp() + { + MockitoAnnotations.openMocks( this ); + } + + @Test + void listS3Storage() throws Exception + { + List storageList = new ArrayList<>(); + S3StorageEntity storage = new S3StorageEntity(); + storage.setStorageId( String.valueOf( 1 ) ); + storage.setBucketName( "testBucket" ); + storage.setName( "Bucket" ); + storage.setRegion( "usa-east" ); + storage.setEndpoint( "aws.com" ); + storage.setUseTLS( true ); + storageList.add( storage ); + when( s3StorageRepository.findAll( PageRequest.of( 1, 5 ) ) ).thenReturn( storageList ); + S3StorageListRequest request = S3StorageListRequest.newBuilder().setLimit( 5 ).setOffset( 1 ).build(); + S3StorageListResponse response = sqlResourceBackend.listS3Storage( request ); + assertTrue( response.getStoragesList().size() > 0 ); + } + + @Test + void getS3Storage() throws Exception + { + S3StorageEntity storage = new S3StorageEntity(); + storage.setStorageId( String.valueOf( 1 ) ); + storage.setBucketName( "testBucket" ); + storage.setName( "Bucket" ); + storage.setRegion( "usa-east" ); + storage.setEndpoint( "aws.com" ); + storage.setUseTLS( true ); + when( s3StorageRepository.findById( "1" ) ).thenReturn( Optional.of( storage ) ); + S3StorageGetRequest request = S3StorageGetRequest.newBuilder().setStorageId( "1" ).build(); + Optional response = sqlResourceBackend.getS3Storage( request ); + assertTrue( response.isPresent() ); + assertEquals( "1", ( (S3Storage) response.get() ).getStorageId() ); + } + +} \ No newline at end of file From dfb231b03b46084ee01f9d4752aff99499c00289 Mon Sep 17 00:00:00 2001 From: jayancv Date: Sat, 22 Oct 2022 13:24:47 +0530 Subject: [PATCH 2/2] Move grpc-testing dependency to resource service pom --- pom.xml | 7 ------- services/resource-service/server/pom.xml | 6 ++++++ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 179cd81e..b7d89ab9 100755 --- a/pom.xml +++ b/pom.xml @@ -187,12 +187,6 @@ ${mockito.version} test - - io.grpc - grpc-testing - ${grpc.version} - test - org.springframework.boot spring-boot-starter-test @@ -231,7 +225,6 @@ 4.5.13 5.8.1 4.6.1 - 1.25.0 diff --git a/services/resource-service/server/pom.xml b/services/resource-service/server/pom.xml index 24f2ab6c..4d81b160 100644 --- a/services/resource-service/server/pom.xml +++ b/services/resource-service/server/pom.xml @@ -59,6 +59,12 @@ grpc-services 1.25.0 + + io.grpc + grpc-testing + 1.25.0 + test + org.springframework.boot spring-boot-starter-data-jpa