Skip to content

Commit 2a3caf7

Browse files
Created test for Hyperdisk with mocked client
1 parent fdfe92e commit 2a3caf7

File tree

5 files changed

+135
-68
lines changed

5 files changed

+135
-68
lines changed

compute/cloud-client/src/main/java/compute/disks/storagepool/CreateDiskInStoragePool.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public static void main(String[] args)
5858
public static Disk createDiskInStoragePool(String projectId, String zone, String diskName,
5959
String storagePoolName, String diskType,
6060
long diskSizeGb, long iops, long throughput)
61-
throws IOException, ExecutionException, InterruptedException, TimeoutException {
61+
throws IOException, ExecutionException, InterruptedException{
6262
// Initialize client that will be used to send requests. This client only needs to be created
6363
// once, and can be reused for multiple requests.
6464
try (DisksClient client = DisksClient.create()) {
@@ -80,7 +80,7 @@ public static Disk createDiskInStoragePool(String projectId, String zone, String
8080
.build();
8181

8282
// Wait for the insert disk operation to complete.
83-
Operation operation = client.insertAsync(request).get(1, TimeUnit.MINUTES);
83+
Operation operation = client.insertAsync(request).get();
8484

8585
if (operation.hasError()) {
8686
System.out.println("Disk creation failed!");

compute/cloud-client/src/main/java/compute/disks/storagepool/CreateHyperdiskStoragePool.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public static void main(String[] args)
6161
public static StoragePool createHyperdiskStoragePool(String projectId, String zone,
6262
String storagePoolName, String storagePoolType, String capacityProvisioningType,
6363
long capacity, long iops, long throughput, String performanceProvisioningType)
64-
throws IOException, ExecutionException, InterruptedException, TimeoutException {
64+
throws IOException, ExecutionException, InterruptedException {
6565
// Initialize client that will be used to send requests. This client only needs to be created
6666
// once, and can be reused for multiple requests.
6767
try (StoragePoolsClient client = StoragePoolsClient.create()) {
@@ -84,7 +84,7 @@ public static StoragePool createHyperdiskStoragePool(String projectId, String zo
8484
.build();
8585

8686
// Wait for the insert disk operation to complete.
87-
Operation operation = client.insertAsync(request).get(1, TimeUnit.MINUTES);
87+
Operation operation = client.insertAsync(request).get();
8888

8989
if (operation.hasError()) {
9090
System.out.println("StoragePool creation failed!");

compute/cloud-client/src/test/java/compute/disks/ConsistencyGroupIT.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import compute.disks.consistencygroup.CreateDiskConsistencyGroup;
3636
import compute.disks.consistencygroup.DeleteDiskConsistencyGroup;
3737
import compute.disks.consistencygroup.RemoveDiskFromConsistencyGroup;
38-
import org.junit.jupiter.api.Disabled;
3938
import org.junit.jupiter.api.Test;
4039
import org.junit.jupiter.api.Timeout;
4140
import org.junit.runner.RunWith;
@@ -50,7 +49,6 @@ public class ConsistencyGroupIT {
5049
private static final String CONSISTENCY_GROUP_NAME = "consistency-group";
5150
private static final String DISK_NAME = "disk-for-consistency";
5251

53-
@Disabled
5452
@Test
5553
public void testCreateDiskConsistencyGroupResourcePolicy() throws Exception {
5654
try (MockedStatic<ResourcePoliciesClient> mockedResourcePoliciesClient =
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
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.disks;
18+
19+
import static org.junit.Assert.assertEquals;
20+
import static org.mockito.ArgumentMatchers.any;
21+
import static org.mockito.Mockito.mock;
22+
import static org.mockito.Mockito.mockStatic;
23+
import static org.mockito.Mockito.times;
24+
import static org.mockito.Mockito.verify;
25+
import static org.mockito.Mockito.when;
26+
27+
import com.google.api.gax.longrunning.OperationFuture;
28+
import com.google.cloud.compute.v1.Disk;
29+
import com.google.cloud.compute.v1.DisksClient;
30+
import com.google.cloud.compute.v1.InsertDiskRequest;
31+
import com.google.cloud.compute.v1.InsertStoragePoolRequest;
32+
import com.google.cloud.compute.v1.Operation;
33+
import com.google.cloud.compute.v1.StoragePool;
34+
import com.google.cloud.compute.v1.StoragePoolsClient;
35+
import compute.disks.storagepool.CreateDiskInStoragePool;
36+
import compute.disks.storagepool.CreateHyperdiskStoragePool;
37+
import org.junit.jupiter.api.Test;
38+
import org.junit.jupiter.api.Timeout;
39+
import org.junit.runner.RunWith;
40+
import org.junit.runners.JUnit4;
41+
import org.mockito.MockedStatic;
42+
import org.mockito.Mockito;
43+
44+
@RunWith(JUnit4.class)
45+
@Timeout(value = 20)
46+
public class HyperdiskMockIT {
47+
private static final String PROJECT_ID = "project-id";
48+
private static final String ZONE = "asia-east1-a";
49+
private static final String HYPERDISK_IN_POOL_NAME = "hyperdisk";
50+
private static final String STORAGE_POOL_NAME = "storage-pool";
51+
private static final String PERFORMANCE_PROVISIONING_TYPE = "advanced";
52+
private static final String CAPACITY_PROVISIONING_TYPE = "advanced";
53+
54+
@Test
55+
public void testCreateHyperdiskStoragePool() throws Exception {
56+
String poolType = String.format(
57+
"projects/%s/zones/%s/storagePoolTypes/%s", PROJECT_ID, ZONE, "hyperdisk-balanced");
58+
59+
StoragePool storagePool = StoragePool.newBuilder()
60+
.setZone(ZONE)
61+
.setName(STORAGE_POOL_NAME)
62+
.setStoragePoolType(poolType)
63+
.setCapacityProvisioningType(CAPACITY_PROVISIONING_TYPE)
64+
.setPoolProvisionedCapacityGb(10240)
65+
.setPoolProvisionedIops(10000)
66+
.setPoolProvisionedThroughput(1024)
67+
.setPerformanceProvisioningType(PERFORMANCE_PROVISIONING_TYPE)
68+
.build();
69+
try (MockedStatic<StoragePoolsClient> mockedStoragePoolsClient =
70+
mockStatic(StoragePoolsClient.class)) {
71+
StoragePoolsClient mockClient = mock(StoragePoolsClient.class);
72+
OperationFuture<Operation, Operation> mockFuture =
73+
mock(OperationFuture.class, Mockito.RETURNS_DEEP_STUBS);
74+
Operation operation = mock(Operation.class, Mockito.RETURNS_DEEP_STUBS);
75+
76+
mockedStoragePoolsClient.when(StoragePoolsClient::create).thenReturn(mockClient);
77+
when(mockClient.insertAsync(any(InsertStoragePoolRequest.class)))
78+
.thenReturn(mockFuture);
79+
when(mockFuture.get()).thenReturn(operation);
80+
when(operation.getStatus()).thenReturn(Operation.Status.DONE);
81+
when(mockClient.get(PROJECT_ID, ZONE, STORAGE_POOL_NAME)).thenReturn(storagePool);
82+
83+
84+
StoragePool expectedStoragePool = CreateHyperdiskStoragePool
85+
.createHyperdiskStoragePool(PROJECT_ID, ZONE, STORAGE_POOL_NAME, poolType,
86+
CAPACITY_PROVISIONING_TYPE, 10240, 10000, 1024,
87+
PERFORMANCE_PROVISIONING_TYPE);
88+
89+
verify(mockClient, times(1)).insertAsync(any(InsertStoragePoolRequest.class));
90+
verify(mockFuture, times(1)).get();
91+
assertEquals(storagePool, expectedStoragePool);
92+
}
93+
}
94+
95+
@Test
96+
public void testCreateDiskInStoragePool() throws Exception {
97+
String diskType = String.format("zones/%s/diskTypes/hyperdisk-balanced", ZONE);
98+
Disk expectedHyperdisk = Disk.newBuilder()
99+
.setZone(ZONE)
100+
.setName(HYPERDISK_IN_POOL_NAME)
101+
.setType(diskType)
102+
.setSizeGb(10L)
103+
.setProvisionedIops(3000L)
104+
.setProvisionedThroughput(140L)
105+
.build();
106+
String storagePoolLink = String.format("https://www.googleapis.com/compute/v1/projects/%s/zones/%s/storagePools/%s",
107+
PROJECT_ID, ZONE, STORAGE_POOL_NAME);
108+
109+
try (MockedStatic<DisksClient> mockedDisksClient = mockStatic(DisksClient.class)) {
110+
DisksClient mockClient = mock(DisksClient.class);
111+
OperationFuture<Operation, Operation> mockFuture =
112+
mock(OperationFuture.class, Mockito.RETURNS_DEEP_STUBS);
113+
Operation operation = mock(Operation.class, Mockito.RETURNS_DEEP_STUBS);
114+
115+
mockedDisksClient.when(DisksClient::create).thenReturn(mockClient);
116+
when(mockClient.insertAsync(any(InsertDiskRequest.class))).thenReturn(mockFuture);
117+
when(mockFuture.get()).thenReturn(operation);
118+
when(operation.getStatus()).thenReturn(Operation.Status.DONE);
119+
when(mockClient.get(PROJECT_ID, ZONE, HYPERDISK_IN_POOL_NAME)).thenReturn(expectedHyperdisk);
120+
121+
122+
Disk returnedDisk = CreateDiskInStoragePool
123+
.createDiskInStoragePool(PROJECT_ID, ZONE, HYPERDISK_IN_POOL_NAME, storagePoolLink,
124+
diskType, 10, 3000, 140);
125+
126+
verify(mockClient, times(1)).insertAsync(any(InsertDiskRequest.class));
127+
verify(mockFuture, times(1)).get();
128+
assertEquals(expectedHyperdisk, returnedDisk);
129+
}
130+
}
131+
}

compute/cloud-client/src/test/java/compute/disks/HyperdisksIT.java

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,6 @@
1919
import static com.google.common.truth.Truth.assertWithMessage;
2020

2121
import com.google.cloud.compute.v1.Disk;
22-
import com.google.cloud.compute.v1.StoragePool;
23-
import compute.Util;
24-
import compute.disks.storagepool.CreateDiskInStoragePool;
25-
import compute.disks.storagepool.CreateHyperdiskStoragePool;
2622
import java.io.IOException;
2723
import java.util.UUID;
2824
import java.util.concurrent.ExecutionException;
@@ -31,25 +27,17 @@
3127
import org.junit.Assert;
3228
import org.junit.jupiter.api.AfterAll;
3329
import org.junit.jupiter.api.BeforeAll;
34-
import org.junit.jupiter.api.MethodOrderer;
35-
import org.junit.jupiter.api.Order;
3630
import org.junit.jupiter.api.Test;
37-
import org.junit.jupiter.api.TestMethodOrder;
3831
import org.junit.jupiter.api.Timeout;
3932
import org.junit.runner.RunWith;
4033
import org.junit.runners.JUnit4;
4134

4235
@RunWith(JUnit4.class)
4336
@Timeout(value = 6, unit = TimeUnit.MINUTES)
44-
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
4537
public class HyperdisksIT {
4638
private static final String PROJECT_ID = System.getenv("GOOGLE_CLOUD_PROJECT");
4739
private static final String ZONE = "us-west1-a";
4840
private static final String HYPERDISK_NAME = "test-hyperdisk-enc-" + UUID.randomUUID();
49-
private static final String HYPERDISK_IN_POOL_NAME = "test-hyperdisk-enc-" + UUID.randomUUID();
50-
private static final String STORAGE_POOL_NAME = "test-storage-pool-enc-" + UUID.randomUUID();
51-
private static final String PERFORMANCE_PROVISIONING_TYPE = "advanced";
52-
private static final String CAPACITY_PROVISIONING_TYPE = "advanced";
5341

5442
// Check if the required environment variables are set.
5543
public static void requireEnvVar(String envVarName) {
@@ -69,13 +57,9 @@ public static void cleanup()
6957
throws IOException, InterruptedException, ExecutionException, TimeoutException {
7058
// Delete all disks created for testing.
7159
DeleteDisk.deleteDisk(PROJECT_ID, ZONE, HYPERDISK_NAME);
72-
DeleteDisk.deleteDisk(PROJECT_ID, ZONE, HYPERDISK_IN_POOL_NAME);
73-
74-
Util.deleteStoragePool(PROJECT_ID, ZONE, STORAGE_POOL_NAME);
7560
}
7661

7762
@Test
78-
@Order(1)
7963
public void testCreateHyperdisk()
8064
throws IOException, ExecutionException, InterruptedException, TimeoutException {
8165
String diskType = String.format("zones/%s/diskTypes/hyperdisk-balanced", ZONE);
@@ -92,50 +76,4 @@ public void testCreateHyperdisk()
9276
Assert.assertTrue(hyperdisk.getType().contains("hyperdisk-balanced"));
9377
Assert.assertTrue(hyperdisk.getZone().contains(ZONE));
9478
}
95-
96-
@Test
97-
@Order(1)
98-
public void testCreateHyperdiskStoragePool()
99-
throws IOException, ExecutionException, InterruptedException, TimeoutException {
100-
String poolType = String.format("projects/%s/zones/%s/storagePoolTypes/hyperdisk-balanced",
101-
PROJECT_ID, ZONE);
102-
StoragePool storagePool = CreateHyperdiskStoragePool
103-
.createHyperdiskStoragePool(PROJECT_ID, ZONE, STORAGE_POOL_NAME, poolType,
104-
CAPACITY_PROVISIONING_TYPE, 10240, 10000, 1024,
105-
PERFORMANCE_PROVISIONING_TYPE);
106-
107-
Assert.assertNotNull(storagePool);
108-
Assert.assertEquals(STORAGE_POOL_NAME, storagePool.getName());
109-
Assert.assertEquals(10000, storagePool.getPoolProvisionedIops());
110-
Assert.assertEquals(1024, storagePool.getPoolProvisionedThroughput());
111-
Assert.assertEquals(10240, storagePool.getPoolProvisionedCapacityGb());
112-
Assert.assertTrue(storagePool.getStoragePoolType().contains("hyperdisk-balanced"));
113-
Assert.assertTrue(storagePool.getCapacityProvisioningType()
114-
.equalsIgnoreCase(CAPACITY_PROVISIONING_TYPE));
115-
Assert.assertTrue(storagePool.getPerformanceProvisioningType()
116-
.equalsIgnoreCase(PERFORMANCE_PROVISIONING_TYPE));
117-
Assert.assertTrue(storagePool.getZone().contains(ZONE));
118-
}
119-
120-
@Test
121-
@Order(2)
122-
public void testCreateDiskInStoragePool()
123-
throws IOException, ExecutionException, InterruptedException, TimeoutException {
124-
String diskType = String.format("zones/%s/diskTypes/hyperdisk-balanced", ZONE);
125-
String storagePoolLink = String
126-
.format("https://www.googleapis.com/compute/v1/projects/%s/zones/%s/storagePools/%s",
127-
PROJECT_ID, ZONE, STORAGE_POOL_NAME);
128-
Disk disk = CreateDiskInStoragePool
129-
.createDiskInStoragePool(PROJECT_ID, ZONE, HYPERDISK_IN_POOL_NAME, storagePoolLink,
130-
diskType, 10, 3000, 140);
131-
132-
Assert.assertNotNull(disk);
133-
Assert.assertEquals(HYPERDISK_IN_POOL_NAME, disk.getName());
134-
Assert.assertTrue(disk.getStoragePool().contains(STORAGE_POOL_NAME));
135-
Assert.assertEquals(3000, disk.getProvisionedIops());
136-
Assert.assertEquals(140, disk.getProvisionedThroughput());
137-
Assert.assertEquals(10, disk.getSizeGb());
138-
Assert.assertTrue(disk.getType().contains("hyperdisk-balanced"));
139-
Assert.assertTrue(disk.getZone().contains(ZONE));
140-
}
14179
}

0 commit comments

Comments
 (0)