• 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.cloud.dataproc.v1;
18 
19 import static com.google.cloud.dataproc.v1.JobControllerClient.ListJobsPagedResponse;
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.api.gax.rpc.StatusCode;
29 import com.google.common.collect.Lists;
30 import com.google.longrunning.Operation;
31 import com.google.protobuf.AbstractMessage;
32 import com.google.protobuf.Any;
33 import com.google.protobuf.Empty;
34 import com.google.protobuf.FieldMask;
35 import io.grpc.StatusRuntimeException;
36 import java.io.IOException;
37 import java.util.ArrayList;
38 import java.util.Arrays;
39 import java.util.HashMap;
40 import java.util.List;
41 import java.util.UUID;
42 import java.util.concurrent.ExecutionException;
43 import javax.annotation.Generated;
44 import org.junit.After;
45 import org.junit.AfterClass;
46 import org.junit.Assert;
47 import org.junit.Before;
48 import org.junit.BeforeClass;
49 import org.junit.Test;
50 
51 @Generated("by gapic-generator-java")
52 public class JobControllerClientTest {
53   private static MockJobController mockJobController;
54   private static MockServiceHelper mockServiceHelper;
55   private LocalChannelProvider channelProvider;
56   private JobControllerClient client;
57 
58   @BeforeClass
startStaticServer()59   public static void startStaticServer() {
60     mockJobController = new MockJobController();
61     mockServiceHelper =
62         new MockServiceHelper(
63             UUID.randomUUID().toString(), Arrays.<MockGrpcService>asList(mockJobController));
64     mockServiceHelper.start();
65   }
66 
67   @AfterClass
stopServer()68   public static void stopServer() {
69     mockServiceHelper.stop();
70   }
71 
72   @Before
setUp()73   public void setUp() throws IOException {
74     mockServiceHelper.reset();
75     channelProvider = mockServiceHelper.createChannelProvider();
76     JobControllerSettings settings =
77         JobControllerSettings.newBuilder()
78             .setTransportChannelProvider(channelProvider)
79             .setCredentialsProvider(NoCredentialsProvider.create())
80             .build();
81     client = JobControllerClient.create(settings);
82   }
83 
84   @After
tearDown()85   public void tearDown() throws Exception {
86     client.close();
87   }
88 
89   @Test
submitJobTest()90   public void submitJobTest() throws Exception {
91     Job expectedResponse =
92         Job.newBuilder()
93             .setReference(JobReference.newBuilder().build())
94             .setPlacement(JobPlacement.newBuilder().build())
95             .setStatus(JobStatus.newBuilder().build())
96             .addAllStatusHistory(new ArrayList<JobStatus>())
97             .addAllYarnApplications(new ArrayList<YarnApplication>())
98             .setDriverOutputResourceUri("driverOutputResourceUri794556277")
99             .setDriverControlFilesUri("driverControlFilesUri1491948202")
100             .putAllLabels(new HashMap<String, String>())
101             .setScheduling(JobScheduling.newBuilder().build())
102             .setJobUuid("jobUuid-1437868776")
103             .setDone(true)
104             .setDriverSchedulingConfig(DriverSchedulingConfig.newBuilder().build())
105             .build();
106     mockJobController.addResponse(expectedResponse);
107 
108     String projectId = "projectId-894832108";
109     String region = "region-934795532";
110     Job job = Job.newBuilder().build();
111 
112     Job actualResponse = client.submitJob(projectId, region, job);
113     Assert.assertEquals(expectedResponse, actualResponse);
114 
115     List<AbstractMessage> actualRequests = mockJobController.getRequests();
116     Assert.assertEquals(1, actualRequests.size());
117     SubmitJobRequest actualRequest = ((SubmitJobRequest) actualRequests.get(0));
118 
119     Assert.assertEquals(projectId, actualRequest.getProjectId());
120     Assert.assertEquals(region, actualRequest.getRegion());
121     Assert.assertEquals(job, actualRequest.getJob());
122     Assert.assertTrue(
123         channelProvider.isHeaderSent(
124             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
125             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
126   }
127 
128   @Test
submitJobExceptionTest()129   public void submitJobExceptionTest() throws Exception {
130     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
131     mockJobController.addException(exception);
132 
133     try {
134       String projectId = "projectId-894832108";
135       String region = "region-934795532";
136       Job job = Job.newBuilder().build();
137       client.submitJob(projectId, region, job);
138       Assert.fail("No exception raised");
139     } catch (InvalidArgumentException e) {
140       // Expected exception.
141     }
142   }
143 
144   @Test
submitJobAsOperationTest()145   public void submitJobAsOperationTest() throws Exception {
146     Job expectedResponse =
147         Job.newBuilder()
148             .setReference(JobReference.newBuilder().build())
149             .setPlacement(JobPlacement.newBuilder().build())
150             .setStatus(JobStatus.newBuilder().build())
151             .addAllStatusHistory(new ArrayList<JobStatus>())
152             .addAllYarnApplications(new ArrayList<YarnApplication>())
153             .setDriverOutputResourceUri("driverOutputResourceUri794556277")
154             .setDriverControlFilesUri("driverControlFilesUri1491948202")
155             .putAllLabels(new HashMap<String, String>())
156             .setScheduling(JobScheduling.newBuilder().build())
157             .setJobUuid("jobUuid-1437868776")
158             .setDone(true)
159             .setDriverSchedulingConfig(DriverSchedulingConfig.newBuilder().build())
160             .build();
161     Operation resultOperation =
162         Operation.newBuilder()
163             .setName("submitJobAsOperationTest")
164             .setDone(true)
165             .setResponse(Any.pack(expectedResponse))
166             .build();
167     mockJobController.addResponse(resultOperation);
168 
169     String projectId = "projectId-894832108";
170     String region = "region-934795532";
171     Job job = Job.newBuilder().build();
172 
173     Job actualResponse = client.submitJobAsOperationAsync(projectId, region, job).get();
174     Assert.assertEquals(expectedResponse, actualResponse);
175 
176     List<AbstractMessage> actualRequests = mockJobController.getRequests();
177     Assert.assertEquals(1, actualRequests.size());
178     SubmitJobRequest actualRequest = ((SubmitJobRequest) actualRequests.get(0));
179 
180     Assert.assertEquals(projectId, actualRequest.getProjectId());
181     Assert.assertEquals(region, actualRequest.getRegion());
182     Assert.assertEquals(job, actualRequest.getJob());
183     Assert.assertTrue(
184         channelProvider.isHeaderSent(
185             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
186             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
187   }
188 
189   @Test
submitJobAsOperationExceptionTest()190   public void submitJobAsOperationExceptionTest() throws Exception {
191     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
192     mockJobController.addException(exception);
193 
194     try {
195       String projectId = "projectId-894832108";
196       String region = "region-934795532";
197       Job job = Job.newBuilder().build();
198       client.submitJobAsOperationAsync(projectId, region, job).get();
199       Assert.fail("No exception raised");
200     } catch (ExecutionException e) {
201       Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
202       InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause());
203       Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
204     }
205   }
206 
207   @Test
getJobTest()208   public void getJobTest() throws Exception {
209     Job expectedResponse =
210         Job.newBuilder()
211             .setReference(JobReference.newBuilder().build())
212             .setPlacement(JobPlacement.newBuilder().build())
213             .setStatus(JobStatus.newBuilder().build())
214             .addAllStatusHistory(new ArrayList<JobStatus>())
215             .addAllYarnApplications(new ArrayList<YarnApplication>())
216             .setDriverOutputResourceUri("driverOutputResourceUri794556277")
217             .setDriverControlFilesUri("driverControlFilesUri1491948202")
218             .putAllLabels(new HashMap<String, String>())
219             .setScheduling(JobScheduling.newBuilder().build())
220             .setJobUuid("jobUuid-1437868776")
221             .setDone(true)
222             .setDriverSchedulingConfig(DriverSchedulingConfig.newBuilder().build())
223             .build();
224     mockJobController.addResponse(expectedResponse);
225 
226     String projectId = "projectId-894832108";
227     String region = "region-934795532";
228     String jobId = "jobId101296568";
229 
230     Job actualResponse = client.getJob(projectId, region, jobId);
231     Assert.assertEquals(expectedResponse, actualResponse);
232 
233     List<AbstractMessage> actualRequests = mockJobController.getRequests();
234     Assert.assertEquals(1, actualRequests.size());
235     GetJobRequest actualRequest = ((GetJobRequest) actualRequests.get(0));
236 
237     Assert.assertEquals(projectId, actualRequest.getProjectId());
238     Assert.assertEquals(region, actualRequest.getRegion());
239     Assert.assertEquals(jobId, actualRequest.getJobId());
240     Assert.assertTrue(
241         channelProvider.isHeaderSent(
242             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
243             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
244   }
245 
246   @Test
getJobExceptionTest()247   public void getJobExceptionTest() throws Exception {
248     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
249     mockJobController.addException(exception);
250 
251     try {
252       String projectId = "projectId-894832108";
253       String region = "region-934795532";
254       String jobId = "jobId101296568";
255       client.getJob(projectId, region, jobId);
256       Assert.fail("No exception raised");
257     } catch (InvalidArgumentException e) {
258       // Expected exception.
259     }
260   }
261 
262   @Test
listJobsTest()263   public void listJobsTest() throws Exception {
264     Job responsesElement = Job.newBuilder().build();
265     ListJobsResponse expectedResponse =
266         ListJobsResponse.newBuilder()
267             .setNextPageToken("")
268             .addAllJobs(Arrays.asList(responsesElement))
269             .build();
270     mockJobController.addResponse(expectedResponse);
271 
272     String projectId = "projectId-894832108";
273     String region = "region-934795532";
274 
275     ListJobsPagedResponse pagedListResponse = client.listJobs(projectId, region);
276 
277     List<Job> resources = Lists.newArrayList(pagedListResponse.iterateAll());
278 
279     Assert.assertEquals(1, resources.size());
280     Assert.assertEquals(expectedResponse.getJobsList().get(0), resources.get(0));
281 
282     List<AbstractMessage> actualRequests = mockJobController.getRequests();
283     Assert.assertEquals(1, actualRequests.size());
284     ListJobsRequest actualRequest = ((ListJobsRequest) actualRequests.get(0));
285 
286     Assert.assertEquals(projectId, actualRequest.getProjectId());
287     Assert.assertEquals(region, actualRequest.getRegion());
288     Assert.assertTrue(
289         channelProvider.isHeaderSent(
290             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
291             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
292   }
293 
294   @Test
listJobsExceptionTest()295   public void listJobsExceptionTest() throws Exception {
296     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
297     mockJobController.addException(exception);
298 
299     try {
300       String projectId = "projectId-894832108";
301       String region = "region-934795532";
302       client.listJobs(projectId, region);
303       Assert.fail("No exception raised");
304     } catch (InvalidArgumentException e) {
305       // Expected exception.
306     }
307   }
308 
309   @Test
listJobsTest2()310   public void listJobsTest2() throws Exception {
311     Job responsesElement = Job.newBuilder().build();
312     ListJobsResponse expectedResponse =
313         ListJobsResponse.newBuilder()
314             .setNextPageToken("")
315             .addAllJobs(Arrays.asList(responsesElement))
316             .build();
317     mockJobController.addResponse(expectedResponse);
318 
319     String projectId = "projectId-894832108";
320     String region = "region-934795532";
321     String filter = "filter-1274492040";
322 
323     ListJobsPagedResponse pagedListResponse = client.listJobs(projectId, region, filter);
324 
325     List<Job> resources = Lists.newArrayList(pagedListResponse.iterateAll());
326 
327     Assert.assertEquals(1, resources.size());
328     Assert.assertEquals(expectedResponse.getJobsList().get(0), resources.get(0));
329 
330     List<AbstractMessage> actualRequests = mockJobController.getRequests();
331     Assert.assertEquals(1, actualRequests.size());
332     ListJobsRequest actualRequest = ((ListJobsRequest) actualRequests.get(0));
333 
334     Assert.assertEquals(projectId, actualRequest.getProjectId());
335     Assert.assertEquals(region, actualRequest.getRegion());
336     Assert.assertEquals(filter, actualRequest.getFilter());
337     Assert.assertTrue(
338         channelProvider.isHeaderSent(
339             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
340             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
341   }
342 
343   @Test
listJobsExceptionTest2()344   public void listJobsExceptionTest2() throws Exception {
345     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
346     mockJobController.addException(exception);
347 
348     try {
349       String projectId = "projectId-894832108";
350       String region = "region-934795532";
351       String filter = "filter-1274492040";
352       client.listJobs(projectId, region, filter);
353       Assert.fail("No exception raised");
354     } catch (InvalidArgumentException e) {
355       // Expected exception.
356     }
357   }
358 
359   @Test
updateJobTest()360   public void updateJobTest() throws Exception {
361     Job expectedResponse =
362         Job.newBuilder()
363             .setReference(JobReference.newBuilder().build())
364             .setPlacement(JobPlacement.newBuilder().build())
365             .setStatus(JobStatus.newBuilder().build())
366             .addAllStatusHistory(new ArrayList<JobStatus>())
367             .addAllYarnApplications(new ArrayList<YarnApplication>())
368             .setDriverOutputResourceUri("driverOutputResourceUri794556277")
369             .setDriverControlFilesUri("driverControlFilesUri1491948202")
370             .putAllLabels(new HashMap<String, String>())
371             .setScheduling(JobScheduling.newBuilder().build())
372             .setJobUuid("jobUuid-1437868776")
373             .setDone(true)
374             .setDriverSchedulingConfig(DriverSchedulingConfig.newBuilder().build())
375             .build();
376     mockJobController.addResponse(expectedResponse);
377 
378     UpdateJobRequest request =
379         UpdateJobRequest.newBuilder()
380             .setProjectId("projectId-894832108")
381             .setRegion("region-934795532")
382             .setJobId("jobId101296568")
383             .setJob(Job.newBuilder().build())
384             .setUpdateMask(FieldMask.newBuilder().build())
385             .build();
386 
387     Job actualResponse = client.updateJob(request);
388     Assert.assertEquals(expectedResponse, actualResponse);
389 
390     List<AbstractMessage> actualRequests = mockJobController.getRequests();
391     Assert.assertEquals(1, actualRequests.size());
392     UpdateJobRequest actualRequest = ((UpdateJobRequest) actualRequests.get(0));
393 
394     Assert.assertEquals(request.getProjectId(), actualRequest.getProjectId());
395     Assert.assertEquals(request.getRegion(), actualRequest.getRegion());
396     Assert.assertEquals(request.getJobId(), actualRequest.getJobId());
397     Assert.assertEquals(request.getJob(), actualRequest.getJob());
398     Assert.assertEquals(request.getUpdateMask(), actualRequest.getUpdateMask());
399     Assert.assertTrue(
400         channelProvider.isHeaderSent(
401             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
402             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
403   }
404 
405   @Test
updateJobExceptionTest()406   public void updateJobExceptionTest() throws Exception {
407     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
408     mockJobController.addException(exception);
409 
410     try {
411       UpdateJobRequest request =
412           UpdateJobRequest.newBuilder()
413               .setProjectId("projectId-894832108")
414               .setRegion("region-934795532")
415               .setJobId("jobId101296568")
416               .setJob(Job.newBuilder().build())
417               .setUpdateMask(FieldMask.newBuilder().build())
418               .build();
419       client.updateJob(request);
420       Assert.fail("No exception raised");
421     } catch (InvalidArgumentException e) {
422       // Expected exception.
423     }
424   }
425 
426   @Test
cancelJobTest()427   public void cancelJobTest() throws Exception {
428     Job expectedResponse =
429         Job.newBuilder()
430             .setReference(JobReference.newBuilder().build())
431             .setPlacement(JobPlacement.newBuilder().build())
432             .setStatus(JobStatus.newBuilder().build())
433             .addAllStatusHistory(new ArrayList<JobStatus>())
434             .addAllYarnApplications(new ArrayList<YarnApplication>())
435             .setDriverOutputResourceUri("driverOutputResourceUri794556277")
436             .setDriverControlFilesUri("driverControlFilesUri1491948202")
437             .putAllLabels(new HashMap<String, String>())
438             .setScheduling(JobScheduling.newBuilder().build())
439             .setJobUuid("jobUuid-1437868776")
440             .setDone(true)
441             .setDriverSchedulingConfig(DriverSchedulingConfig.newBuilder().build())
442             .build();
443     mockJobController.addResponse(expectedResponse);
444 
445     String projectId = "projectId-894832108";
446     String region = "region-934795532";
447     String jobId = "jobId101296568";
448 
449     Job actualResponse = client.cancelJob(projectId, region, jobId);
450     Assert.assertEquals(expectedResponse, actualResponse);
451 
452     List<AbstractMessage> actualRequests = mockJobController.getRequests();
453     Assert.assertEquals(1, actualRequests.size());
454     CancelJobRequest actualRequest = ((CancelJobRequest) actualRequests.get(0));
455 
456     Assert.assertEquals(projectId, actualRequest.getProjectId());
457     Assert.assertEquals(region, actualRequest.getRegion());
458     Assert.assertEquals(jobId, actualRequest.getJobId());
459     Assert.assertTrue(
460         channelProvider.isHeaderSent(
461             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
462             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
463   }
464 
465   @Test
cancelJobExceptionTest()466   public void cancelJobExceptionTest() throws Exception {
467     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
468     mockJobController.addException(exception);
469 
470     try {
471       String projectId = "projectId-894832108";
472       String region = "region-934795532";
473       String jobId = "jobId101296568";
474       client.cancelJob(projectId, region, jobId);
475       Assert.fail("No exception raised");
476     } catch (InvalidArgumentException e) {
477       // Expected exception.
478     }
479   }
480 
481   @Test
deleteJobTest()482   public void deleteJobTest() throws Exception {
483     Empty expectedResponse = Empty.newBuilder().build();
484     mockJobController.addResponse(expectedResponse);
485 
486     String projectId = "projectId-894832108";
487     String region = "region-934795532";
488     String jobId = "jobId101296568";
489 
490     client.deleteJob(projectId, region, jobId);
491 
492     List<AbstractMessage> actualRequests = mockJobController.getRequests();
493     Assert.assertEquals(1, actualRequests.size());
494     DeleteJobRequest actualRequest = ((DeleteJobRequest) actualRequests.get(0));
495 
496     Assert.assertEquals(projectId, actualRequest.getProjectId());
497     Assert.assertEquals(region, actualRequest.getRegion());
498     Assert.assertEquals(jobId, actualRequest.getJobId());
499     Assert.assertTrue(
500         channelProvider.isHeaderSent(
501             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
502             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
503   }
504 
505   @Test
deleteJobExceptionTest()506   public void deleteJobExceptionTest() throws Exception {
507     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
508     mockJobController.addException(exception);
509 
510     try {
511       String projectId = "projectId-894832108";
512       String region = "region-934795532";
513       String jobId = "jobId101296568";
514       client.deleteJob(projectId, region, jobId);
515       Assert.fail("No exception raised");
516     } catch (InvalidArgumentException e) {
517       // Expected exception.
518     }
519   }
520 }
521