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.appengine.v1; 18 19 import static com.google.appengine.v1.InstancesClient.ListInstancesPagedResponse; 20 21 import com.google.api.gax.core.NoCredentialsProvider; 22 import com.google.api.gax.httpjson.GaxHttpJsonProperties; 23 import com.google.api.gax.httpjson.testing.MockHttpService; 24 import com.google.api.gax.rpc.ApiClientHeaderProvider; 25 import com.google.api.gax.rpc.ApiException; 26 import com.google.api.gax.rpc.ApiExceptionFactory; 27 import com.google.api.gax.rpc.InvalidArgumentException; 28 import com.google.api.gax.rpc.StatusCode; 29 import com.google.api.gax.rpc.testing.FakeStatusCode; 30 import com.google.appengine.v1.stub.HttpJsonInstancesStub; 31 import com.google.common.collect.Lists; 32 import com.google.longrunning.Operation; 33 import com.google.protobuf.Any; 34 import com.google.protobuf.Empty; 35 import com.google.protobuf.Timestamp; 36 import java.io.IOException; 37 import java.util.Arrays; 38 import java.util.List; 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 InstancesClientHttpJsonTest { 50 private static MockHttpService mockService; 51 private static InstancesClient client; 52 53 @BeforeClass startStaticServer()54 public static void startStaticServer() throws IOException { 55 mockService = 56 new MockHttpService( 57 HttpJsonInstancesStub.getMethodDescriptors(), InstancesSettings.getDefaultEndpoint()); 58 InstancesSettings settings = 59 InstancesSettings.newHttpJsonBuilder() 60 .setTransportChannelProvider( 61 InstancesSettings.defaultHttpJsonTransportProviderBuilder() 62 .setHttpTransport(mockService) 63 .build()) 64 .setCredentialsProvider(NoCredentialsProvider.create()) 65 .build(); 66 client = InstancesClient.create(settings); 67 } 68 69 @AfterClass stopServer()70 public static void stopServer() { 71 client.close(); 72 } 73 74 @Before setUp()75 public void setUp() {} 76 77 @After tearDown()78 public void tearDown() throws Exception { 79 mockService.reset(); 80 } 81 82 @Test listInstancesTest()83 public void listInstancesTest() throws Exception { 84 Instance responsesElement = Instance.newBuilder().build(); 85 ListInstancesResponse expectedResponse = 86 ListInstancesResponse.newBuilder() 87 .setNextPageToken("") 88 .addAllInstances(Arrays.asList(responsesElement)) 89 .build(); 90 mockService.addResponse(expectedResponse); 91 92 ListInstancesRequest request = 93 ListInstancesRequest.newBuilder() 94 .setParent("apps/app-8780/services/service-8780/versions/version-8780") 95 .setPageSize(883849137) 96 .setPageToken("pageToken873572522") 97 .build(); 98 99 ListInstancesPagedResponse pagedListResponse = client.listInstances(request); 100 101 List<Instance> resources = Lists.newArrayList(pagedListResponse.iterateAll()); 102 103 Assert.assertEquals(1, resources.size()); 104 Assert.assertEquals(expectedResponse.getInstancesList().get(0), resources.get(0)); 105 106 List<String> actualRequests = mockService.getRequestPaths(); 107 Assert.assertEquals(1, actualRequests.size()); 108 109 String apiClientHeaderKey = 110 mockService 111 .getRequestHeaders() 112 .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) 113 .iterator() 114 .next(); 115 Assert.assertTrue( 116 GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() 117 .matcher(apiClientHeaderKey) 118 .matches()); 119 } 120 121 @Test listInstancesExceptionTest()122 public void listInstancesExceptionTest() throws Exception { 123 ApiException exception = 124 ApiExceptionFactory.createException( 125 new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); 126 mockService.addException(exception); 127 128 try { 129 ListInstancesRequest request = 130 ListInstancesRequest.newBuilder() 131 .setParent("apps/app-8780/services/service-8780/versions/version-8780") 132 .setPageSize(883849137) 133 .setPageToken("pageToken873572522") 134 .build(); 135 client.listInstances(request); 136 Assert.fail("No exception raised"); 137 } catch (InvalidArgumentException e) { 138 // Expected exception. 139 } 140 } 141 142 @Test getInstanceTest()143 public void getInstanceTest() throws Exception { 144 Instance expectedResponse = 145 Instance.newBuilder() 146 .setName("name3373707") 147 .setId("id3355") 148 .setAppEngineRelease("appEngineRelease-1601369404") 149 .setVmName("vmName-813643294") 150 .setVmZoneName("vmZoneName-245094354") 151 .setVmId("vmId3622450") 152 .setStartTime(Timestamp.newBuilder().build()) 153 .setRequests(-393257020) 154 .setErrors(-1294635157) 155 .setQps(112180) 156 .setAverageLatency(1814586588) 157 .setMemoryUsage(1034557667) 158 .setVmStatus("vmStatus-66804343") 159 .setVmDebugEnabled(true) 160 .setVmIp("vmIp3622462") 161 .build(); 162 mockService.addResponse(expectedResponse); 163 164 GetInstanceRequest request = 165 GetInstanceRequest.newBuilder() 166 .setName( 167 "apps/app-9649/services/service-9649/versions/version-9649/instances/instance-9649") 168 .build(); 169 170 Instance actualResponse = client.getInstance(request); 171 Assert.assertEquals(expectedResponse, actualResponse); 172 173 List<String> actualRequests = mockService.getRequestPaths(); 174 Assert.assertEquals(1, actualRequests.size()); 175 176 String apiClientHeaderKey = 177 mockService 178 .getRequestHeaders() 179 .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) 180 .iterator() 181 .next(); 182 Assert.assertTrue( 183 GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() 184 .matcher(apiClientHeaderKey) 185 .matches()); 186 } 187 188 @Test getInstanceExceptionTest()189 public void getInstanceExceptionTest() throws Exception { 190 ApiException exception = 191 ApiExceptionFactory.createException( 192 new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); 193 mockService.addException(exception); 194 195 try { 196 GetInstanceRequest request = 197 GetInstanceRequest.newBuilder() 198 .setName( 199 "apps/app-9649/services/service-9649/versions/version-9649/instances/instance-9649") 200 .build(); 201 client.getInstance(request); 202 Assert.fail("No exception raised"); 203 } catch (InvalidArgumentException e) { 204 // Expected exception. 205 } 206 } 207 208 @Test deleteInstanceTest()209 public void deleteInstanceTest() throws Exception { 210 Empty expectedResponse = Empty.newBuilder().build(); 211 Operation resultOperation = 212 Operation.newBuilder() 213 .setName("deleteInstanceTest") 214 .setDone(true) 215 .setResponse(Any.pack(expectedResponse)) 216 .build(); 217 mockService.addResponse(resultOperation); 218 219 DeleteInstanceRequest request = 220 DeleteInstanceRequest.newBuilder() 221 .setName( 222 "apps/app-9649/services/service-9649/versions/version-9649/instances/instance-9649") 223 .build(); 224 225 client.deleteInstanceAsync(request).get(); 226 227 List<String> actualRequests = mockService.getRequestPaths(); 228 Assert.assertEquals(1, actualRequests.size()); 229 230 String apiClientHeaderKey = 231 mockService 232 .getRequestHeaders() 233 .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) 234 .iterator() 235 .next(); 236 Assert.assertTrue( 237 GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() 238 .matcher(apiClientHeaderKey) 239 .matches()); 240 } 241 242 @Test deleteInstanceExceptionTest()243 public void deleteInstanceExceptionTest() throws Exception { 244 ApiException exception = 245 ApiExceptionFactory.createException( 246 new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); 247 mockService.addException(exception); 248 249 try { 250 DeleteInstanceRequest request = 251 DeleteInstanceRequest.newBuilder() 252 .setName( 253 "apps/app-9649/services/service-9649/versions/version-9649/instances/instance-9649") 254 .build(); 255 client.deleteInstanceAsync(request).get(); 256 Assert.fail("No exception raised"); 257 } catch (ExecutionException e) { 258 } 259 } 260 261 @Test debugInstanceTest()262 public void debugInstanceTest() throws Exception { 263 Instance expectedResponse = 264 Instance.newBuilder() 265 .setName("name3373707") 266 .setId("id3355") 267 .setAppEngineRelease("appEngineRelease-1601369404") 268 .setVmName("vmName-813643294") 269 .setVmZoneName("vmZoneName-245094354") 270 .setVmId("vmId3622450") 271 .setStartTime(Timestamp.newBuilder().build()) 272 .setRequests(-393257020) 273 .setErrors(-1294635157) 274 .setQps(112180) 275 .setAverageLatency(1814586588) 276 .setMemoryUsage(1034557667) 277 .setVmStatus("vmStatus-66804343") 278 .setVmDebugEnabled(true) 279 .setVmIp("vmIp3622462") 280 .build(); 281 Operation resultOperation = 282 Operation.newBuilder() 283 .setName("debugInstanceTest") 284 .setDone(true) 285 .setResponse(Any.pack(expectedResponse)) 286 .build(); 287 mockService.addResponse(resultOperation); 288 289 DebugInstanceRequest request = 290 DebugInstanceRequest.newBuilder() 291 .setName( 292 "apps/app-9649/services/service-9649/versions/version-9649/instances/instance-9649") 293 .setSshKey("sshKey-893236425") 294 .build(); 295 296 Instance actualResponse = client.debugInstanceAsync(request).get(); 297 Assert.assertEquals(expectedResponse, actualResponse); 298 299 List<String> actualRequests = mockService.getRequestPaths(); 300 Assert.assertEquals(1, actualRequests.size()); 301 302 String apiClientHeaderKey = 303 mockService 304 .getRequestHeaders() 305 .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) 306 .iterator() 307 .next(); 308 Assert.assertTrue( 309 GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() 310 .matcher(apiClientHeaderKey) 311 .matches()); 312 } 313 314 @Test debugInstanceExceptionTest()315 public void debugInstanceExceptionTest() throws Exception { 316 ApiException exception = 317 ApiExceptionFactory.createException( 318 new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); 319 mockService.addException(exception); 320 321 try { 322 DebugInstanceRequest request = 323 DebugInstanceRequest.newBuilder() 324 .setName( 325 "apps/app-9649/services/service-9649/versions/version-9649/instances/instance-9649") 326 .setSshKey("sshKey-893236425") 327 .build(); 328 client.debugInstanceAsync(request).get(); 329 Assert.fail("No exception raised"); 330 } catch (ExecutionException e) { 331 } 332 } 333 } 334