1 /* 2 * Copyright 2022 Google LLC 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.google.cloud.discoveryengine.v1beta; 18 19 import static com.google.cloud.discoveryengine.v1beta.SearchServiceClient.SearchPagedResponse; 20 21 import com.google.api.gax.core.NoCredentialsProvider; 22 import com.google.api.gax.grpc.GaxGrpcProperties; 23 import com.google.api.gax.grpc.testing.LocalChannelProvider; 24 import com.google.api.gax.grpc.testing.MockGrpcService; 25 import com.google.api.gax.grpc.testing.MockServiceHelper; 26 import com.google.api.gax.rpc.ApiClientHeaderProvider; 27 import com.google.api.gax.rpc.InvalidArgumentException; 28 import com.google.common.collect.Lists; 29 import com.google.protobuf.AbstractMessage; 30 import com.google.protobuf.Value; 31 import io.grpc.StatusRuntimeException; 32 import java.io.IOException; 33 import java.util.ArrayList; 34 import java.util.Arrays; 35 import java.util.HashMap; 36 import java.util.List; 37 import java.util.UUID; 38 import javax.annotation.Generated; 39 import org.junit.After; 40 import org.junit.AfterClass; 41 import org.junit.Assert; 42 import org.junit.Before; 43 import org.junit.BeforeClass; 44 import org.junit.Test; 45 46 @Generated("by gapic-generator-java") 47 public class SearchServiceClientTest { 48 private static MockSearchService mockSearchService; 49 private static MockServiceHelper mockServiceHelper; 50 private LocalChannelProvider channelProvider; 51 private SearchServiceClient client; 52 53 @BeforeClass startStaticServer()54 public static void startStaticServer() { 55 mockSearchService = new MockSearchService(); 56 mockServiceHelper = 57 new MockServiceHelper( 58 UUID.randomUUID().toString(), Arrays.<MockGrpcService>asList(mockSearchService)); 59 mockServiceHelper.start(); 60 } 61 62 @AfterClass stopServer()63 public static void stopServer() { 64 mockServiceHelper.stop(); 65 } 66 67 @Before setUp()68 public void setUp() throws IOException { 69 mockServiceHelper.reset(); 70 channelProvider = mockServiceHelper.createChannelProvider(); 71 SearchServiceSettings settings = 72 SearchServiceSettings.newBuilder() 73 .setTransportChannelProvider(channelProvider) 74 .setCredentialsProvider(NoCredentialsProvider.create()) 75 .build(); 76 client = SearchServiceClient.create(settings); 77 } 78 79 @After tearDown()80 public void tearDown() throws Exception { 81 client.close(); 82 } 83 84 @Test searchTest()85 public void searchTest() throws Exception { 86 SearchResponse.SearchResult responsesElement = SearchResponse.SearchResult.newBuilder().build(); 87 SearchResponse expectedResponse = 88 SearchResponse.newBuilder() 89 .setNextPageToken("") 90 .addAllResults(Arrays.asList(responsesElement)) 91 .build(); 92 mockSearchService.addResponse(expectedResponse); 93 94 SearchRequest request = 95 SearchRequest.newBuilder() 96 .setServingConfig( 97 ServingConfigName.ofProjectLocationDataStoreServingConfigName( 98 "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[SERVING_CONFIG]") 99 .toString()) 100 .setBranch( 101 BranchName.ofProjectLocationDataStoreBranchName( 102 "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]") 103 .toString()) 104 .setQuery("query107944136") 105 .setPageSize(883849137) 106 .setPageToken("pageToken873572522") 107 .setOffset(-1019779949) 108 .setFilter("filter-1274492040") 109 .setOrderBy("orderBy-1207110587") 110 .addAllFacetSpecs(new ArrayList<SearchRequest.FacetSpec>()) 111 .setBoostSpec(SearchRequest.BoostSpec.newBuilder().build()) 112 .putAllParams(new HashMap<String, Value>()) 113 .setQueryExpansionSpec(SearchRequest.QueryExpansionSpec.newBuilder().build()) 114 .setSpellCorrectionSpec(SearchRequest.SpellCorrectionSpec.newBuilder().build()) 115 .setUserPseudoId("userPseudoId-1155274652") 116 .setContentSearchSpec(SearchRequest.ContentSearchSpec.newBuilder().build()) 117 .build(); 118 119 SearchPagedResponse pagedListResponse = client.search(request); 120 121 List<SearchResponse.SearchResult> resources = 122 Lists.newArrayList(pagedListResponse.iterateAll()); 123 124 Assert.assertEquals(1, resources.size()); 125 Assert.assertEquals(expectedResponse.getResultsList().get(0), resources.get(0)); 126 127 List<AbstractMessage> actualRequests = mockSearchService.getRequests(); 128 Assert.assertEquals(1, actualRequests.size()); 129 SearchRequest actualRequest = ((SearchRequest) actualRequests.get(0)); 130 131 Assert.assertEquals(request.getServingConfig(), actualRequest.getServingConfig()); 132 Assert.assertEquals(request.getBranch(), actualRequest.getBranch()); 133 Assert.assertEquals(request.getQuery(), actualRequest.getQuery()); 134 Assert.assertEquals(request.getPageSize(), actualRequest.getPageSize()); 135 Assert.assertEquals(request.getPageToken(), actualRequest.getPageToken()); 136 Assert.assertEquals(request.getOffset(), actualRequest.getOffset()); 137 Assert.assertEquals(request.getFilter(), actualRequest.getFilter()); 138 Assert.assertEquals(request.getOrderBy(), actualRequest.getOrderBy()); 139 Assert.assertEquals(request.getFacetSpecsList(), actualRequest.getFacetSpecsList()); 140 Assert.assertEquals(request.getBoostSpec(), actualRequest.getBoostSpec()); 141 Assert.assertEquals(request.getParamsMap(), actualRequest.getParamsMap()); 142 Assert.assertEquals(request.getQueryExpansionSpec(), actualRequest.getQueryExpansionSpec()); 143 Assert.assertEquals(request.getSpellCorrectionSpec(), actualRequest.getSpellCorrectionSpec()); 144 Assert.assertEquals(request.getUserPseudoId(), actualRequest.getUserPseudoId()); 145 Assert.assertEquals(request.getContentSearchSpec(), actualRequest.getContentSearchSpec()); 146 Assert.assertTrue( 147 channelProvider.isHeaderSent( 148 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 149 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 150 } 151 152 @Test searchExceptionTest()153 public void searchExceptionTest() throws Exception { 154 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 155 mockSearchService.addException(exception); 156 157 try { 158 SearchRequest request = 159 SearchRequest.newBuilder() 160 .setServingConfig( 161 ServingConfigName.ofProjectLocationDataStoreServingConfigName( 162 "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[SERVING_CONFIG]") 163 .toString()) 164 .setBranch( 165 BranchName.ofProjectLocationDataStoreBranchName( 166 "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]") 167 .toString()) 168 .setQuery("query107944136") 169 .setPageSize(883849137) 170 .setPageToken("pageToken873572522") 171 .setOffset(-1019779949) 172 .setFilter("filter-1274492040") 173 .setOrderBy("orderBy-1207110587") 174 .addAllFacetSpecs(new ArrayList<SearchRequest.FacetSpec>()) 175 .setBoostSpec(SearchRequest.BoostSpec.newBuilder().build()) 176 .putAllParams(new HashMap<String, Value>()) 177 .setQueryExpansionSpec(SearchRequest.QueryExpansionSpec.newBuilder().build()) 178 .setSpellCorrectionSpec(SearchRequest.SpellCorrectionSpec.newBuilder().build()) 179 .setUserPseudoId("userPseudoId-1155274652") 180 .setContentSearchSpec(SearchRequest.ContentSearchSpec.newBuilder().build()) 181 .build(); 182 client.search(request); 183 Assert.fail("No exception raised"); 184 } catch (InvalidArgumentException e) { 185 // Expected exception. 186 } 187 } 188 } 189