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.dataflow.v1beta3; 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.rpc.ApiClientHeaderProvider; 25 import com.google.api.gax.rpc.InvalidArgumentException; 26 import com.google.protobuf.AbstractMessage; 27 import com.google.protobuf.Timestamp; 28 import com.google.rpc.Status; 29 import io.grpc.StatusRuntimeException; 30 import java.io.IOException; 31 import java.util.ArrayList; 32 import java.util.Arrays; 33 import java.util.HashMap; 34 import java.util.List; 35 import java.util.UUID; 36 import javax.annotation.Generated; 37 import org.junit.After; 38 import org.junit.AfterClass; 39 import org.junit.Assert; 40 import org.junit.Before; 41 import org.junit.BeforeClass; 42 import org.junit.Test; 43 44 @Generated("by gapic-generator-java") 45 public class TemplatesServiceClientTest { 46 private static MockServiceHelper mockServiceHelper; 47 private static MockTemplatesService mockTemplatesService; 48 private LocalChannelProvider channelProvider; 49 private TemplatesServiceClient client; 50 51 @BeforeClass startStaticServer()52 public static void startStaticServer() { 53 mockTemplatesService = new MockTemplatesService(); 54 mockServiceHelper = 55 new MockServiceHelper( 56 UUID.randomUUID().toString(), Arrays.<MockGrpcService>asList(mockTemplatesService)); 57 mockServiceHelper.start(); 58 } 59 60 @AfterClass stopServer()61 public static void stopServer() { 62 mockServiceHelper.stop(); 63 } 64 65 @Before setUp()66 public void setUp() throws IOException { 67 mockServiceHelper.reset(); 68 channelProvider = mockServiceHelper.createChannelProvider(); 69 TemplatesServiceSettings settings = 70 TemplatesServiceSettings.newBuilder() 71 .setTransportChannelProvider(channelProvider) 72 .setCredentialsProvider(NoCredentialsProvider.create()) 73 .build(); 74 client = TemplatesServiceClient.create(settings); 75 } 76 77 @After tearDown()78 public void tearDown() throws Exception { 79 client.close(); 80 } 81 82 @Test createJobFromTemplateTest()83 public void createJobFromTemplateTest() throws Exception { 84 Job expectedResponse = 85 Job.newBuilder() 86 .setId("id3355") 87 .setProjectId("projectId-894832108") 88 .setName("name3373707") 89 .setType(JobType.forNumber(0)) 90 .setEnvironment(Environment.newBuilder().build()) 91 .addAllSteps(new ArrayList<Step>()) 92 .setStepsLocation("stepsLocation1335803900") 93 .setCurrentState(JobState.forNumber(0)) 94 .setCurrentStateTime(Timestamp.newBuilder().build()) 95 .setRequestedState(JobState.forNumber(0)) 96 .setExecutionInfo(JobExecutionInfo.newBuilder().build()) 97 .setCreateTime(Timestamp.newBuilder().build()) 98 .setReplaceJobId("replaceJobId441554788") 99 .putAllTransformNameMapping(new HashMap<String, String>()) 100 .setClientRequestId("clientRequestId848942207") 101 .setReplacedByJobId("replacedByJobId614115665") 102 .addAllTempFiles(new ArrayList<String>()) 103 .putAllLabels(new HashMap<String, String>()) 104 .setLocation("location1901043637") 105 .setPipelineDescription(PipelineDescription.newBuilder().build()) 106 .addAllStageStates(new ArrayList<ExecutionStageState>()) 107 .setJobMetadata(JobMetadata.newBuilder().build()) 108 .setStartTime(Timestamp.newBuilder().build()) 109 .setCreatedFromSnapshotId("createdFromSnapshotId851802705") 110 .setSatisfiesPzs(true) 111 .build(); 112 mockTemplatesService.addResponse(expectedResponse); 113 114 CreateJobFromTemplateRequest request = 115 CreateJobFromTemplateRequest.newBuilder() 116 .setProjectId("projectId-894832108") 117 .setJobName("jobName-1438096408") 118 .putAllParameters(new HashMap<String, String>()) 119 .setEnvironment(RuntimeEnvironment.newBuilder().build()) 120 .setLocation("location1901043637") 121 .build(); 122 123 Job actualResponse = client.createJobFromTemplate(request); 124 Assert.assertEquals(expectedResponse, actualResponse); 125 126 List<AbstractMessage> actualRequests = mockTemplatesService.getRequests(); 127 Assert.assertEquals(1, actualRequests.size()); 128 CreateJobFromTemplateRequest actualRequest = 129 ((CreateJobFromTemplateRequest) actualRequests.get(0)); 130 131 Assert.assertEquals(request.getProjectId(), actualRequest.getProjectId()); 132 Assert.assertEquals(request.getJobName(), actualRequest.getJobName()); 133 Assert.assertEquals(request.getGcsPath(), actualRequest.getGcsPath()); 134 Assert.assertEquals(request.getParametersMap(), actualRequest.getParametersMap()); 135 Assert.assertEquals(request.getEnvironment(), actualRequest.getEnvironment()); 136 Assert.assertEquals(request.getLocation(), actualRequest.getLocation()); 137 Assert.assertTrue( 138 channelProvider.isHeaderSent( 139 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 140 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 141 } 142 143 @Test createJobFromTemplateExceptionTest()144 public void createJobFromTemplateExceptionTest() throws Exception { 145 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 146 mockTemplatesService.addException(exception); 147 148 try { 149 CreateJobFromTemplateRequest request = 150 CreateJobFromTemplateRequest.newBuilder() 151 .setProjectId("projectId-894832108") 152 .setJobName("jobName-1438096408") 153 .putAllParameters(new HashMap<String, String>()) 154 .setEnvironment(RuntimeEnvironment.newBuilder().build()) 155 .setLocation("location1901043637") 156 .build(); 157 client.createJobFromTemplate(request); 158 Assert.fail("No exception raised"); 159 } catch (InvalidArgumentException e) { 160 // Expected exception. 161 } 162 } 163 164 @Test launchTemplateTest()165 public void launchTemplateTest() throws Exception { 166 LaunchTemplateResponse expectedResponse = 167 LaunchTemplateResponse.newBuilder().setJob(Job.newBuilder().build()).build(); 168 mockTemplatesService.addResponse(expectedResponse); 169 170 LaunchTemplateRequest request = 171 LaunchTemplateRequest.newBuilder() 172 .setProjectId("projectId-894832108") 173 .setValidateOnly(true) 174 .setLaunchParameters(LaunchTemplateParameters.newBuilder().build()) 175 .setLocation("location1901043637") 176 .build(); 177 178 LaunchTemplateResponse actualResponse = client.launchTemplate(request); 179 Assert.assertEquals(expectedResponse, actualResponse); 180 181 List<AbstractMessage> actualRequests = mockTemplatesService.getRequests(); 182 Assert.assertEquals(1, actualRequests.size()); 183 LaunchTemplateRequest actualRequest = ((LaunchTemplateRequest) actualRequests.get(0)); 184 185 Assert.assertEquals(request.getProjectId(), actualRequest.getProjectId()); 186 Assert.assertEquals(request.getValidateOnly(), actualRequest.getValidateOnly()); 187 Assert.assertEquals(request.getGcsPath(), actualRequest.getGcsPath()); 188 Assert.assertEquals(request.getDynamicTemplate(), actualRequest.getDynamicTemplate()); 189 Assert.assertEquals(request.getLaunchParameters(), actualRequest.getLaunchParameters()); 190 Assert.assertEquals(request.getLocation(), actualRequest.getLocation()); 191 Assert.assertTrue( 192 channelProvider.isHeaderSent( 193 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 194 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 195 } 196 197 @Test launchTemplateExceptionTest()198 public void launchTemplateExceptionTest() throws Exception { 199 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 200 mockTemplatesService.addException(exception); 201 202 try { 203 LaunchTemplateRequest request = 204 LaunchTemplateRequest.newBuilder() 205 .setProjectId("projectId-894832108") 206 .setValidateOnly(true) 207 .setLaunchParameters(LaunchTemplateParameters.newBuilder().build()) 208 .setLocation("location1901043637") 209 .build(); 210 client.launchTemplate(request); 211 Assert.fail("No exception raised"); 212 } catch (InvalidArgumentException e) { 213 // Expected exception. 214 } 215 } 216 217 @Test getTemplateTest()218 public void getTemplateTest() throws Exception { 219 GetTemplateResponse expectedResponse = 220 GetTemplateResponse.newBuilder() 221 .setStatus(Status.newBuilder().build()) 222 .setMetadata(TemplateMetadata.newBuilder().build()) 223 .setRuntimeMetadata(RuntimeMetadata.newBuilder().build()) 224 .build(); 225 mockTemplatesService.addResponse(expectedResponse); 226 227 GetTemplateRequest request = 228 GetTemplateRequest.newBuilder() 229 .setProjectId("projectId-894832108") 230 .setLocation("location1901043637") 231 .build(); 232 233 GetTemplateResponse actualResponse = client.getTemplate(request); 234 Assert.assertEquals(expectedResponse, actualResponse); 235 236 List<AbstractMessage> actualRequests = mockTemplatesService.getRequests(); 237 Assert.assertEquals(1, actualRequests.size()); 238 GetTemplateRequest actualRequest = ((GetTemplateRequest) actualRequests.get(0)); 239 240 Assert.assertEquals(request.getProjectId(), actualRequest.getProjectId()); 241 Assert.assertEquals(request.getGcsPath(), actualRequest.getGcsPath()); 242 Assert.assertEquals(request.getView(), actualRequest.getView()); 243 Assert.assertEquals(request.getLocation(), actualRequest.getLocation()); 244 Assert.assertTrue( 245 channelProvider.isHeaderSent( 246 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 247 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 248 } 249 250 @Test getTemplateExceptionTest()251 public void getTemplateExceptionTest() throws Exception { 252 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 253 mockTemplatesService.addException(exception); 254 255 try { 256 GetTemplateRequest request = 257 GetTemplateRequest.newBuilder() 258 .setProjectId("projectId-894832108") 259 .setLocation("location1901043637") 260 .build(); 261 client.getTemplate(request); 262 Assert.fail("No exception raised"); 263 } catch (InvalidArgumentException e) { 264 // Expected exception. 265 } 266 } 267 } 268