Skip to content

Commit 9f12638

Browse files
Created ConsumeReservationIT class
1 parent e4bf31b commit 9f12638

File tree

4 files changed

+123
-67
lines changed

4 files changed

+123
-67
lines changed

compute/cloud-client/src/main/java/compute/reservation/ConsumeSpecificSharedReservation.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,7 @@ public static void createInstance(String projectId, String zone, String instance
174174

175175
if (response.hasError()) {
176176
System.out.println("Instance creation failed ! ! " + response);
177-
return;
178-
}
177+
}
179178
System.out.println("Operation Status: " + response.getStatus());
180179
}
181180
}
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
/*
2+
* Copyright 2024 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+
* http://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 compute.reservation;
18+
19+
import static com.google.cloud.compute.v1.ReservationAffinity.ConsumeReservationType.SPECIFIC_RESERVATION;
20+
import static com.google.common.truth.Truth.assertWithMessage;
21+
22+
import com.google.api.gax.rpc.NotFoundException;
23+
import com.google.cloud.compute.v1.Instance;
24+
import com.google.cloud.compute.v1.InstancesClient;
25+
import com.google.cloud.compute.v1.ReservationsClient;
26+
import compute.DeleteInstance;
27+
import compute.Util;
28+
import java.io.IOException;
29+
import java.util.UUID;
30+
import java.util.concurrent.ExecutionException;
31+
import java.util.concurrent.TimeUnit;
32+
import java.util.concurrent.TimeoutException;
33+
import org.junit.jupiter.api.AfterAll;
34+
import org.junit.jupiter.api.Assertions;
35+
import org.junit.jupiter.api.BeforeAll;
36+
import org.junit.jupiter.api.Test;
37+
import org.junit.jupiter.api.Timeout;
38+
import org.junit.runner.RunWith;
39+
import org.junit.runners.JUnit4;
40+
41+
@RunWith(JUnit4.class)
42+
@Timeout(value = 25, unit = TimeUnit.MINUTES)
43+
public class ConsumeReservationIT {
44+
45+
private static final String PROJECT_ID = System.getenv("GOOGLE_CLOUD_PROJECT");
46+
private static final String ZONE = "europe-southwest1-a";
47+
static String javaVersion = System.getProperty("java.version").substring(0, 2);
48+
private static ReservationsClient reservationsClient;
49+
private static InstancesClient instancesClient;
50+
private static final String RESERVATION_SHARED_NAME = "test-reservation-shared-" + javaVersion
51+
+ "-" + UUID.randomUUID().toString().substring(0, 8);
52+
private static final String SPECIFIC_SHARED_INSTANCE_NAME =
53+
"test-shared-instance-" + javaVersion + "-"
54+
+ UUID.randomUUID().toString().substring(0, 8);
55+
private static final int NUMBER_OF_VMS = 3;
56+
private static final String MACHINE_TYPE = "n2-standard-32";
57+
private static final String MIN_CPU_PLATFORM = "Intel Cascade Lake";
58+
59+
// Check if the required environment variables are set.
60+
public static void requireEnvVar(String envVarName) {
61+
assertWithMessage(String.format("Missing environment variable '%s' ", envVarName))
62+
.that(System.getenv(envVarName)).isNotEmpty();
63+
}
64+
65+
@BeforeAll
66+
public static void setUp()
67+
throws IOException, ExecutionException, InterruptedException, TimeoutException {
68+
requireEnvVar("GOOGLE_APPLICATION_CREDENTIALS");
69+
requireEnvVar("GOOGLE_CLOUD_PROJECT");
70+
71+
// Cleanup existing stale resources.
72+
Util.cleanUpExistingInstances("test-shared-instance-" + javaVersion, PROJECT_ID, ZONE);
73+
Util.cleanUpExistingReservations("test-shared-instance-" + javaVersion, PROJECT_ID, ZONE);
74+
75+
// Initialize the clients once for all tests
76+
reservationsClient = ReservationsClient.create();
77+
instancesClient = InstancesClient.create();
78+
}
79+
80+
@AfterAll
81+
public static void cleanup()
82+
throws IOException, ExecutionException, InterruptedException, TimeoutException {
83+
// Delete resources created for testing.
84+
DeleteInstance.deleteInstance(PROJECT_ID, ZONE, SPECIFIC_SHARED_INSTANCE_NAME);
85+
DeleteReservation.deleteReservation(PROJECT_ID, ZONE, RESERVATION_SHARED_NAME);
86+
87+
// Test that reservations are deleted
88+
Assertions.assertThrows(
89+
NotFoundException.class,
90+
() -> GetReservation.getReservation(PROJECT_ID, RESERVATION_SHARED_NAME, ZONE));
91+
92+
// Close clients after all tests
93+
reservationsClient.close();
94+
instancesClient.close();
95+
}
96+
97+
@Test
98+
public void testConsumeSpecificSharedReservation()
99+
throws IOException, ExecutionException, InterruptedException, TimeoutException {
100+
ConsumeSpecificSharedReservation.createReservation(PROJECT_ID,
101+
RESERVATION_SHARED_NAME, NUMBER_OF_VMS, ZONE,
102+
MACHINE_TYPE, MIN_CPU_PLATFORM, true);
103+
104+
Assertions.assertEquals(RESERVATION_SHARED_NAME,
105+
reservationsClient.get(PROJECT_ID, ZONE, RESERVATION_SHARED_NAME).getName());
106+
107+
ConsumeSpecificSharedReservation.createInstance(
108+
PROJECT_ID, ZONE, SPECIFIC_SHARED_INSTANCE_NAME, MACHINE_TYPE,
109+
MIN_CPU_PLATFORM, RESERVATION_SHARED_NAME);
110+
111+
// Verify that the instance was created with the correct reservation and consumeReservationType
112+
Instance instance = instancesClient.get(PROJECT_ID, ZONE, SPECIFIC_SHARED_INSTANCE_NAME);
113+
114+
Assertions.assertTrue(instance.getReservationAffinity()
115+
.getValuesList().get(0).contains(RESERVATION_SHARED_NAME));
116+
Assertions.assertEquals(SPECIFIC_RESERVATION.toString(),
117+
instance.getReservationAffinity().getConsumeReservationType());
118+
}
119+
}

compute/cloud-client/src/test/java/compute/reservation/CrudOperationsReservationIT.java

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,12 @@
4040
import org.junit.jupiter.api.Timeout;
4141
import org.junit.runner.RunWith;
4242
import org.junit.runners.JUnit4;
43-
<<<<<<<< HEAD:compute/cloud-client/src/test/java/compute/reservation/CrudOperationReservationIT.java
44-
45-
@RunWith(JUnit4.class)
46-
@Timeout(value = 25, unit = TimeUnit.MINUTES)
47-
public class CrudOperationReservationIT {
48-
========
4943
import org.junit.runners.MethodSorters;
5044

5145
@RunWith(JUnit4.class)
5246
@Timeout(value = 25, unit = TimeUnit.MINUTES)
5347
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
5448
public class CrudOperationsReservationIT {
55-
>>>>>>>> main:compute/cloud-client/src/test/java/compute/reservation/CrudOperationsReservationIT.java
5649

5750
private static final String PROJECT_ID = System.getenv("GOOGLE_CLOUD_PROJECT");
5851
private static final String ZONE = "us-west1-a";
@@ -71,21 +64,12 @@ public static void setUp()
7164
throws IOException, ExecutionException, InterruptedException, TimeoutException {
7265
requireEnvVar("GOOGLE_APPLICATION_CREDENTIALS");
7366
requireEnvVar("GOOGLE_CLOUD_PROJECT");
74-
<<<<<<<< HEAD:compute/cloud-client/src/test/java/compute/reservation/CrudOperationReservationIT.java
75-
RESERVATION_NAME = "test-reservation-" + UUID.randomUUID();
7667

77-
// Cleanup existing stale resources.
78-
Util.cleanUpExistingReservations("test-reservation-", PROJECT_ID, ZONE);
79-
80-
CreateReservation.createReservation(
81-
PROJECT_ID, RESERVATION_NAME, NUMBER_OF_VMS, ZONE);
82-
========
8368
RESERVATION_NAME = "test-reservation-" + javaVersion + "-"
8469
+ UUID.randomUUID().toString().substring(0, 8);
8570

8671
// Cleanup existing stale resources.
8772
Util.cleanUpExistingReservations("test-reservation-" + javaVersion, PROJECT_ID, ZONE);
88-
>>>>>>>> main:compute/cloud-client/src/test/java/compute/reservation/CrudOperationsReservationIT.java
8973
}
9074

9175
@AfterAll

compute/cloud-client/src/test/java/compute/reservation/ReservationIT.java

Lines changed: 3 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,14 @@
1616

1717
package compute.reservation;
1818

19-
import static com.google.cloud.compute.v1.ReservationAffinity.ConsumeReservationType.SPECIFIC_RESERVATION;
2019
import static com.google.common.truth.Truth.assertThat;
2120
import static com.google.common.truth.Truth.assertWithMessage;
2221

2322
import com.google.api.gax.rpc.NotFoundException;
24-
import com.google.cloud.compute.v1.Instance;
25-
import com.google.cloud.compute.v1.InstancesClient;
2623
import com.google.cloud.compute.v1.Reservation;
2724
import com.google.cloud.compute.v1.ReservationsClient;
2825
import compute.CreateInstanceTemplate;
2926
import compute.CreateRegionalInstanceTemplate;
30-
import compute.DeleteInstance;
3127
import compute.DeleteInstanceTemplate;
3228
import compute.DeleteRegionalInstanceTemplate;
3329
import compute.Util;
@@ -55,10 +51,8 @@ public class ReservationIT {
5551
private static final String ZONE = "us-west1-a";
5652
private static final String REGION = ZONE.substring(0, ZONE.lastIndexOf('-'));
5753
private static ReservationsClient reservationsClient;
58-
private static InstancesClient instancesClient;
5954
private static String RESERVATION_NAME_GLOBAL;
6055
private static String RESERVATION_NAME_REGIONAL;
61-
private static String RESERVATION_SHARED_NAME;
6256
private static String GLOBAL_INSTANCE_TEMPLATE_URI;
6357
private static String REGIONAL_INSTANCE_TEMPLATE_URI;
6458
static String javaVersion = System.getProperty("java.version").substring(0, 2);
@@ -67,12 +61,7 @@ public class ReservationIT {
6761
private static final String REGIONAL_INSTANCE_TEMPLATE_NAME =
6862
"test-regional-inst-temp-" + javaVersion + "-"
6963
+ UUID.randomUUID().toString().substring(0, 8);
70-
private static final String SPECIFIC_SHARED_INSTANCE_NAME =
71-
"test-shared-instance-" + javaVersion + "-"
72-
+ UUID.randomUUID().toString().substring(0, 8);
7364
private static final int NUMBER_OF_VMS = 3;
74-
private static final String MACHINE_TYPE = "n2-standard-32";
75-
private static final String MIN_CPU_PLATFORM = "Intel Cascade Lake";
7665

7766
// Check if the required environment variables are set.
7867
public static void requireEnvVar(String envVarName) {
@@ -90,24 +79,17 @@ public static void setUp()
9079
System.setOut(new PrintStream(stdOut));
9180

9281
// Cleanup existing stale resources.
93-
Util.cleanUpExistingInstances("test-shared-instance", PROJECT_ID, ZONE);
9482
Util.cleanUpExistingInstanceTemplates("test-global-inst-temp-" + javaVersion, PROJECT_ID);
9583
Util.cleanUpExistingRegionalInstanceTemplates(
9684
"test-regional-inst-temp-" + javaVersion, PROJECT_ID, ZONE);
9785
Util.cleanUpExistingReservations(
9886
"test-reservation-global-" + javaVersion, PROJECT_ID, ZONE);
9987
Util.cleanUpExistingReservations("test-reservation-regional-" + javaVersion, PROJECT_ID, ZONE);
100-
Util.cleanUpExistingReservations("test-reserv-", PROJECT_ID, ZONE);
101-
102-
// Initialize the clients once for all tests
103-
reservationsClient = ReservationsClient.create();
104-
instancesClient = InstancesClient.create();
10588

10689
RESERVATION_NAME_GLOBAL = "test-reservation-global-" + javaVersion + "-"
10790
+ UUID.randomUUID().toString().substring(0, 8);
10891
RESERVATION_NAME_REGIONAL = "test-reservation-regional-" + javaVersion + "-"
10992
+ UUID.randomUUID().toString().substring(0, 8);
110-
RESERVATION_SHARED_NAME = "test-reserv-shared-" + UUID.randomUUID();
11193
GLOBAL_INSTANCE_TEMPLATE_URI = String.format("projects/%s/global/instanceTemplates/%s",
11294
PROJECT_ID, GLOBAL_INSTANCE_TEMPLATE_NAME);
11395
REGIONAL_INSTANCE_TEMPLATE_URI =
@@ -123,6 +105,9 @@ public static void setUp()
123105
PROJECT_ID, REGION, REGIONAL_INSTANCE_TEMPLATE_NAME);
124106
assertThat(stdOut.toString()).contains("Instance Template Operation Status: DONE");
125107

108+
// Initialize the client once for all tests
109+
reservationsClient = ReservationsClient.create();
110+
126111
stdOut.close();
127112
System.setOut(out);
128113
}
@@ -147,13 +132,9 @@ public static void cleanup()
147132
.contains("Instance template deletion operation status for "
148133
+ REGIONAL_INSTANCE_TEMPLATE_NAME);
149134

150-
// Delete instance created for consume shared reservation.
151-
DeleteInstance.deleteInstance(PROJECT_ID, ZONE, SPECIFIC_SHARED_INSTANCE_NAME);
152-
153135
// Delete all reservations created for testing.
154136
DeleteReservation.deleteReservation(PROJECT_ID, ZONE, RESERVATION_NAME_GLOBAL);
155137
DeleteReservation.deleteReservation(PROJECT_ID, ZONE, RESERVATION_NAME_REGIONAL);
156-
DeleteReservation.deleteReservation(PROJECT_ID, ZONE, RESERVATION_SHARED_NAME);
157138

158139
// Test that reservations are deleted
159140
Assertions.assertThrows(
@@ -163,10 +144,6 @@ public static void cleanup()
163144
NotFoundException.class,
164145
() -> GetReservation.getReservation(PROJECT_ID, RESERVATION_NAME_REGIONAL, ZONE));
165146

166-
// Close clients after all tests
167-
reservationsClient.close();
168-
instancesClient.close();
169-
170147
stdOut.close();
171148
System.setOut(out);
172149
}
@@ -198,27 +175,4 @@ public void testCreateReservationWithRegionInstanceTemplate()
198175
Assert.assertTrue(reservation.getZone().contains(ZONE));
199176
Assert.assertEquals(RESERVATION_NAME_REGIONAL, reservation.getName());
200177
}
201-
202-
@Test
203-
public void testConsumeSpecificSharedReservation()
204-
throws IOException, ExecutionException, InterruptedException, TimeoutException {
205-
ConsumeSpecificSharedReservation.createReservation(PROJECT_ID,
206-
RESERVATION_SHARED_NAME, NUMBER_OF_VMS, ZONE,
207-
MACHINE_TYPE, MIN_CPU_PLATFORM, true);
208-
209-
Assert.assertEquals(RESERVATION_SHARED_NAME,
210-
reservationsClient.get(PROJECT_ID, ZONE, RESERVATION_SHARED_NAME).getName());
211-
212-
ConsumeSpecificSharedReservation.createInstance(
213-
PROJECT_ID, ZONE, SPECIFIC_SHARED_INSTANCE_NAME, MACHINE_TYPE,
214-
MIN_CPU_PLATFORM, RESERVATION_SHARED_NAME);
215-
216-
// Verify that the instance was created with the correct reservation and consumeReservationType
217-
Instance instance = instancesClient.get(PROJECT_ID, ZONE, SPECIFIC_SHARED_INSTANCE_NAME);
218-
219-
Assert.assertTrue(instance.getReservationAffinity()
220-
.getValuesList().get(0).contains(RESERVATION_SHARED_NAME));
221-
Assert.assertEquals(SPECIFIC_RESERVATION.toString(),
222-
instance.getReservationAffinity().getConsumeReservationType());
223-
}
224178
}

0 commit comments

Comments
 (0)