• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.maps.routing.v2;
18 
19 import com.google.api.gax.core.NoCredentialsProvider;
20 import com.google.api.gax.grpc.GaxGrpcProperties;
21 import com.google.api.gax.grpc.testing.LocalChannelProvider;
22 import com.google.api.gax.grpc.testing.MockGrpcService;
23 import com.google.api.gax.grpc.testing.MockServiceHelper;
24 import com.google.api.gax.grpc.testing.MockStreamObserver;
25 import com.google.api.gax.rpc.ApiClientHeaderProvider;
26 import com.google.api.gax.rpc.InvalidArgumentException;
27 import com.google.api.gax.rpc.ServerStreamingCallable;
28 import com.google.api.gax.rpc.StatusCode;
29 import com.google.protobuf.AbstractMessage;
30 import com.google.protobuf.Duration;
31 import com.google.protobuf.Timestamp;
32 import com.google.rpc.Status;
33 import io.grpc.StatusRuntimeException;
34 import java.io.IOException;
35 import java.util.ArrayList;
36 import java.util.Arrays;
37 import java.util.List;
38 import java.util.UUID;
39 import java.util.concurrent.ExecutionException;
40 import javax.annotation.Generated;
41 import org.junit.After;
42 import org.junit.AfterClass;
43 import org.junit.Assert;
44 import org.junit.Before;
45 import org.junit.BeforeClass;
46 import org.junit.Test;
47 
48 @Generated("by gapic-generator-java")
49 public class RoutesClientTest {
50   private static MockRoutes mockRoutes;
51   private static MockServiceHelper mockServiceHelper;
52   private LocalChannelProvider channelProvider;
53   private RoutesClient client;
54 
55   @BeforeClass
startStaticServer()56   public static void startStaticServer() {
57     mockRoutes = new MockRoutes();
58     mockServiceHelper =
59         new MockServiceHelper(
60             UUID.randomUUID().toString(), Arrays.<MockGrpcService>asList(mockRoutes));
61     mockServiceHelper.start();
62   }
63 
64   @AfterClass
stopServer()65   public static void stopServer() {
66     mockServiceHelper.stop();
67   }
68 
69   @Before
setUp()70   public void setUp() throws IOException {
71     mockServiceHelper.reset();
72     channelProvider = mockServiceHelper.createChannelProvider();
73     RoutesSettings settings =
74         RoutesSettings.newBuilder()
75             .setTransportChannelProvider(channelProvider)
76             .setCredentialsProvider(NoCredentialsProvider.create())
77             .build();
78     client = RoutesClient.create(settings);
79   }
80 
81   @After
tearDown()82   public void tearDown() throws Exception {
83     client.close();
84   }
85 
86   @Test
computeRoutesTest()87   public void computeRoutesTest() throws Exception {
88     ComputeRoutesResponse expectedResponse =
89         ComputeRoutesResponse.newBuilder()
90             .addAllRoutes(new ArrayList<Route>())
91             .setFallbackInfo(FallbackInfo.newBuilder().build())
92             .setGeocodingResults(GeocodingResults.newBuilder().build())
93             .build();
94     mockRoutes.addResponse(expectedResponse);
95 
96     ComputeRoutesRequest request =
97         ComputeRoutesRequest.newBuilder()
98             .setOrigin(Waypoint.newBuilder().build())
99             .setDestination(Waypoint.newBuilder().build())
100             .addAllIntermediates(new ArrayList<Waypoint>())
101             .setTravelMode(RouteTravelMode.forNumber(0))
102             .setRoutingPreference(RoutingPreference.forNumber(0))
103             .setPolylineQuality(PolylineQuality.forNumber(0))
104             .setPolylineEncoding(PolylineEncoding.forNumber(0))
105             .setDepartureTime(Timestamp.newBuilder().build())
106             .setComputeAlternativeRoutes(true)
107             .setRouteModifiers(RouteModifiers.newBuilder().build())
108             .setLanguageCode("languageCode-2092349083")
109             .setRegionCode("regionCode-1991004415")
110             .setUnits(Units.forNumber(0))
111             .addAllRequestedReferenceRoutes(new ArrayList<ComputeRoutesRequest.ReferenceRoute>())
112             .addAllExtraComputations(new ArrayList<ComputeRoutesRequest.ExtraComputation>())
113             .build();
114 
115     ComputeRoutesResponse actualResponse = client.computeRoutes(request);
116     Assert.assertEquals(expectedResponse, actualResponse);
117 
118     List<AbstractMessage> actualRequests = mockRoutes.getRequests();
119     Assert.assertEquals(1, actualRequests.size());
120     ComputeRoutesRequest actualRequest = ((ComputeRoutesRequest) actualRequests.get(0));
121 
122     Assert.assertEquals(request.getOrigin(), actualRequest.getOrigin());
123     Assert.assertEquals(request.getDestination(), actualRequest.getDestination());
124     Assert.assertEquals(request.getIntermediatesList(), actualRequest.getIntermediatesList());
125     Assert.assertEquals(request.getTravelMode(), actualRequest.getTravelMode());
126     Assert.assertEquals(request.getRoutingPreference(), actualRequest.getRoutingPreference());
127     Assert.assertEquals(request.getPolylineQuality(), actualRequest.getPolylineQuality());
128     Assert.assertEquals(request.getPolylineEncoding(), actualRequest.getPolylineEncoding());
129     Assert.assertEquals(request.getDepartureTime(), actualRequest.getDepartureTime());
130     Assert.assertEquals(
131         request.getComputeAlternativeRoutes(), actualRequest.getComputeAlternativeRoutes());
132     Assert.assertEquals(request.getRouteModifiers(), actualRequest.getRouteModifiers());
133     Assert.assertEquals(request.getLanguageCode(), actualRequest.getLanguageCode());
134     Assert.assertEquals(request.getRegionCode(), actualRequest.getRegionCode());
135     Assert.assertEquals(request.getUnits(), actualRequest.getUnits());
136     Assert.assertEquals(
137         request.getRequestedReferenceRoutesList(), actualRequest.getRequestedReferenceRoutesList());
138     Assert.assertEquals(
139         request.getExtraComputationsList(), actualRequest.getExtraComputationsList());
140     Assert.assertTrue(
141         channelProvider.isHeaderSent(
142             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
143             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
144   }
145 
146   @Test
computeRoutesExceptionTest()147   public void computeRoutesExceptionTest() throws Exception {
148     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
149     mockRoutes.addException(exception);
150 
151     try {
152       ComputeRoutesRequest request =
153           ComputeRoutesRequest.newBuilder()
154               .setOrigin(Waypoint.newBuilder().build())
155               .setDestination(Waypoint.newBuilder().build())
156               .addAllIntermediates(new ArrayList<Waypoint>())
157               .setTravelMode(RouteTravelMode.forNumber(0))
158               .setRoutingPreference(RoutingPreference.forNumber(0))
159               .setPolylineQuality(PolylineQuality.forNumber(0))
160               .setPolylineEncoding(PolylineEncoding.forNumber(0))
161               .setDepartureTime(Timestamp.newBuilder().build())
162               .setComputeAlternativeRoutes(true)
163               .setRouteModifiers(RouteModifiers.newBuilder().build())
164               .setLanguageCode("languageCode-2092349083")
165               .setRegionCode("regionCode-1991004415")
166               .setUnits(Units.forNumber(0))
167               .addAllRequestedReferenceRoutes(new ArrayList<ComputeRoutesRequest.ReferenceRoute>())
168               .addAllExtraComputations(new ArrayList<ComputeRoutesRequest.ExtraComputation>())
169               .build();
170       client.computeRoutes(request);
171       Assert.fail("No exception raised");
172     } catch (InvalidArgumentException e) {
173       // Expected exception.
174     }
175   }
176 
177   @Test
computeRouteMatrixTest()178   public void computeRouteMatrixTest() throws Exception {
179     RouteMatrixElement expectedResponse =
180         RouteMatrixElement.newBuilder()
181             .setOriginIndex(2078721657)
182             .setDestinationIndex(-1296954015)
183             .setStatus(Status.newBuilder().build())
184             .setCondition(RouteMatrixElementCondition.forNumber(0))
185             .setDistanceMeters(1958857108)
186             .setDuration(Duration.newBuilder().build())
187             .setStaticDuration(Duration.newBuilder().build())
188             .setTravelAdvisory(RouteTravelAdvisory.newBuilder().build())
189             .setFallbackInfo(FallbackInfo.newBuilder().build())
190             .build();
191     mockRoutes.addResponse(expectedResponse);
192     ComputeRouteMatrixRequest request =
193         ComputeRouteMatrixRequest.newBuilder()
194             .addAllOrigins(new ArrayList<RouteMatrixOrigin>())
195             .addAllDestinations(new ArrayList<RouteMatrixDestination>())
196             .setTravelMode(RouteTravelMode.forNumber(0))
197             .setRoutingPreference(RoutingPreference.forNumber(0))
198             .setDepartureTime(Timestamp.newBuilder().build())
199             .setLanguageCode("languageCode-2092349083")
200             .setRegionCode("regionCode-1991004415")
201             .addAllExtraComputations(new ArrayList<ComputeRouteMatrixRequest.ExtraComputation>())
202             .build();
203 
204     MockStreamObserver<RouteMatrixElement> responseObserver = new MockStreamObserver<>();
205 
206     ServerStreamingCallable<ComputeRouteMatrixRequest, RouteMatrixElement> callable =
207         client.computeRouteMatrixCallable();
208     callable.serverStreamingCall(request, responseObserver);
209 
210     List<RouteMatrixElement> actualResponses = responseObserver.future().get();
211     Assert.assertEquals(1, actualResponses.size());
212     Assert.assertEquals(expectedResponse, actualResponses.get(0));
213   }
214 
215   @Test
computeRouteMatrixExceptionTest()216   public void computeRouteMatrixExceptionTest() throws Exception {
217     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
218     mockRoutes.addException(exception);
219     ComputeRouteMatrixRequest request =
220         ComputeRouteMatrixRequest.newBuilder()
221             .addAllOrigins(new ArrayList<RouteMatrixOrigin>())
222             .addAllDestinations(new ArrayList<RouteMatrixDestination>())
223             .setTravelMode(RouteTravelMode.forNumber(0))
224             .setRoutingPreference(RoutingPreference.forNumber(0))
225             .setDepartureTime(Timestamp.newBuilder().build())
226             .setLanguageCode("languageCode-2092349083")
227             .setRegionCode("regionCode-1991004415")
228             .addAllExtraComputations(new ArrayList<ComputeRouteMatrixRequest.ExtraComputation>())
229             .build();
230 
231     MockStreamObserver<RouteMatrixElement> responseObserver = new MockStreamObserver<>();
232 
233     ServerStreamingCallable<ComputeRouteMatrixRequest, RouteMatrixElement> callable =
234         client.computeRouteMatrixCallable();
235     callable.serverStreamingCall(request, responseObserver);
236 
237     try {
238       List<RouteMatrixElement> actualResponses = responseObserver.future().get();
239       Assert.fail("No exception thrown");
240     } catch (ExecutionException e) {
241       Assert.assertTrue(e.getCause() instanceof InvalidArgumentException);
242       InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause());
243       Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
244     }
245   }
246 }
247