Skip to content

Commit c05b45b

Browse files
committed
modify remove function, pass delete function to each add method
1 parent f04997e commit c05b45b

File tree

2 files changed

+78
-147
lines changed

2 files changed

+78
-147
lines changed

google-cloud-compute/src/main/java/com/google/cloud/compute/testing/ResourceCleaner.java

Lines changed: 78 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import com.google.common.base.Function;
2828
import java.util.HashMap;
2929
import java.util.Map;
30-
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
30+
import java.util.NoSuchElementException;
3131

3232
public class ResourceCleaner {
3333
private final Compute compute;
@@ -46,13 +46,9 @@ private class ManagedResource<T> {
4646
final T res;
4747
Function<T, Void> func;
4848

49-
private ManagedResource(T res) {
49+
private ManagedResource(T res, Function<T, Void> func) {
5050
this.res = res;
51-
52-
@SuppressWarnings("unchecked")
53-
Function<T, Void> localFunc = (Function<T, Void>) getDeleteMethod(res);
54-
55-
this.func = localFunc;
51+
this.func = func;
5652
}
5753

5854
public void delete() {
@@ -69,142 +65,115 @@ public void cleanUp() {
6965
}
7066

7167
public ResourceCleaner add(AddressId addressId) {
72-
ManagedResource<AddressId> r = new ManagedResource<>(addressId);
68+
ManagedResource<AddressId> r =
69+
new ManagedResource<>(
70+
addressId,
71+
new Function<AddressId, Void>() {
72+
@Override
73+
public Void apply(AddressId addressId) {
74+
compute.deleteAddress(addressId);
75+
return null;
76+
}
77+
});
7378
resources.put(addressId, r);
7479
return this;
7580
}
7681

77-
public ResourceCleaner remove(AddressId addressId) {
78-
resources.remove(addressId);
79-
return this;
80-
}
81-
8282
public ResourceCleaner add(DiskId diskId) {
83-
ManagedResource<DiskId> r = new ManagedResource<>(diskId);
83+
ManagedResource<DiskId> r =
84+
new ManagedResource<>(
85+
diskId,
86+
new Function<DiskId, Void>() {
87+
@Override
88+
public Void apply(DiskId diskId) {
89+
compute.deleteDisk(diskId);
90+
return null;
91+
}
92+
});
8493
resources.put(diskId, r);
8594
return this;
8695
}
8796

88-
public ResourceCleaner remove(DiskId diskId) {
89-
resources.remove(diskId);
90-
return this;
91-
}
92-
9397
public ResourceCleaner add(SnapshotId snapshotId) {
94-
ManagedResource<SnapshotId> r = new ManagedResource<>(snapshotId);
98+
ManagedResource<SnapshotId> r =
99+
new ManagedResource<>(
100+
snapshotId,
101+
new Function<SnapshotId, Void>() {
102+
@Override
103+
public Void apply(SnapshotId snapshotId) {
104+
compute.deleteSnapshot(snapshotId);
105+
return null;
106+
}
107+
});
95108
resources.put(snapshotId, r);
96109
return this;
97110
}
98111

99-
public ResourceCleaner remove(SnapshotId snapshotId) {
100-
resources.remove(snapshotId);
101-
return this;
102-
}
103-
104112
public ResourceCleaner add(NetworkId networkId) {
105-
ManagedResource<NetworkId> r = new ManagedResource<>(networkId);
113+
ManagedResource<NetworkId> r =
114+
new ManagedResource<>(
115+
networkId,
116+
new Function<NetworkId, Void>() {
117+
@Override
118+
public Void apply(NetworkId networkId) {
119+
compute.deleteNetwork(networkId);
120+
return null;
121+
}
122+
});
106123
resources.put(networkId, r);
107124
return this;
108125
}
109126

110-
public ResourceCleaner remove(NetworkId networkId) {
111-
resources.remove(networkId);
112-
return this;
113-
}
114-
115127
public ResourceCleaner add(SubnetworkId subnetworkId) {
116-
ManagedResource<SubnetworkId> r = new ManagedResource<>(subnetworkId);
128+
ManagedResource<SubnetworkId> r =
129+
new ManagedResource<>(
130+
subnetworkId,
131+
new Function<SubnetworkId, Void>() {
132+
@Override
133+
public Void apply(SubnetworkId subnetworkId) {
134+
compute.deleteSubnetwork(subnetworkId);
135+
return null;
136+
}
137+
});
117138
resources.put(subnetworkId, r);
118139
return this;
119140
}
120141

121-
public ResourceCleaner remove(SubnetworkId subnetworkId) {
122-
resources.remove(subnetworkId);
123-
return this;
124-
}
125-
126142
public ResourceCleaner add(ImageId imageId) {
127-
ManagedResource<ImageId> r = new ManagedResource<>(imageId);
143+
ManagedResource<ImageId> r =
144+
new ManagedResource<>(
145+
imageId,
146+
new Function<ImageId, Void>() {
147+
@Override
148+
public Void apply(ImageId imageId) {
149+
compute.deleteImage(imageId);
150+
return null;
151+
}
152+
});
128153
resources.put(imageId, r);
129154
return this;
130155
}
131156

132-
public ResourceCleaner remove(ImageId imageId) {
133-
resources.remove(imageId);
134-
return this;
135-
}
136-
137157
public ResourceCleaner add(InstanceId instanceId) {
138-
ManagedResource<InstanceId> r = new ManagedResource<>(instanceId);
158+
ManagedResource<InstanceId> r =
159+
new ManagedResource<>(
160+
instanceId,
161+
new Function<InstanceId, Void>() {
162+
@Override
163+
public Void apply(InstanceId instanceId) {
164+
compute.deleteInstance(instanceId);
165+
return null;
166+
}
167+
});
139168
resources.put(instanceId, r);
140169
return this;
141170
}
142171

143-
public ResourceCleaner remove(InstanceId instanceId) {
144-
resources.remove(instanceId);
145-
return this;
146-
}
147-
148-
private <T> Function<?, Void> getDeleteMethod(T res) {
149-
150-
if (res instanceof AddressId) {
151-
return new Function<AddressId, Void>() {
152-
@Override
153-
public Void apply(AddressId addressId) {
154-
compute.deleteAddress(addressId);
155-
return null;
156-
}
157-
};
158-
} else if (res instanceof DiskId) {
159-
return new Function<DiskId, Void>() {
160-
@Override
161-
public Void apply(DiskId diskId) {
162-
compute.deleteDisk(diskId);
163-
return null;
164-
}
165-
};
166-
} else if (res instanceof SnapshotId) {
167-
return new Function<SnapshotId, Void>() {
168-
@Override
169-
public Void apply(SnapshotId snapshotId) {
170-
compute.deleteSnapshot(snapshotId);
171-
return null;
172-
}
173-
};
174-
} else if (res instanceof NetworkId) {
175-
return new Function<NetworkId, Void>() {
176-
@Override
177-
public Void apply(NetworkId networkId) {
178-
compute.deleteNetwork(networkId);
179-
return null;
180-
}
181-
};
182-
} else if (res instanceof SubnetworkId) {
183-
return new Function<SubnetworkId, Void>() {
184-
@Override
185-
public Void apply(SubnetworkId subnetworkId) {
186-
compute.deleteSubnetwork(subnetworkId);
187-
return null;
188-
}
189-
};
190-
} else if (res instanceof ImageId) {
191-
return new Function<ImageId, Void>() {
192-
@Override
193-
public Void apply(ImageId imageId) {
194-
compute.deleteImage(imageId);
195-
return null;
196-
}
197-
};
198-
} else if (res instanceof InstanceId) {
199-
return new Function<InstanceId, Void>() {
200-
@Override
201-
public Void apply(InstanceId instanceId) {
202-
compute.deleteInstance(instanceId);
203-
return null;
204-
}
205-
};
206-
} else {
207-
throw new NotImplementedException();
172+
public <T> ResourceCleaner remove(T resourceId) {
173+
if (!resources.containsKey(resourceId)) {
174+
throw new NoSuchElementException(resourceId + " has not been added to managed resources");
208175
}
176+
resources.remove(resourceId);
177+
return this;
209178
}
210179
}

google-cloud-compute/src/test/java/com/google/cloud/compute/it/ITComputeTest.java

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -771,10 +771,6 @@ public void testListRegionAddresses() throws InterruptedException, TimeoutExcept
771771
count++;
772772
}
773773
assertEquals(2, count);
774-
compute.deleteAddress(firstAddressId);
775-
resourceCleaner.remove(firstAddressId);
776-
compute.deleteAddress(secondAddressId);
777-
resourceCleaner.remove(secondAddressId);
778774
}
779775

780776
@Test
@@ -806,10 +802,6 @@ public void testAggregatedListAddresses() throws InterruptedException, TimeoutEx
806802
count++;
807803
}
808804
assertEquals(2, count);
809-
compute.deleteAddress(firstAddressId);
810-
resourceCleaner.remove(firstAddressId);
811-
compute.deleteAddress(secondAddressId);
812-
resourceCleaner.remove(secondAddressId);
813805
}
814806

815807
@Test
@@ -891,10 +883,6 @@ public void testListGlobalAddresses() throws InterruptedException, TimeoutExcept
891883
count++;
892884
}
893885
assertEquals(2, count);
894-
compute.deleteAddress(firstAddressId);
895-
resourceCleaner.remove(firstAddressId);
896-
compute.deleteAddress(secondAddressId);
897-
resourceCleaner.remove(secondAddressId);
898886
}
899887

900888
@Test
@@ -1192,14 +1180,6 @@ public void testListDisksAndSnapshots() throws InterruptedException, TimeoutExce
11921180
count++;
11931181
}
11941182
assertEquals(2, count);
1195-
compute.deleteDisk(firstDiskId);
1196-
resourceCleaner.remove(firstDiskId);
1197-
compute.deleteDisk(secondDiskId);
1198-
resourceCleaner.remove(secondDiskId);
1199-
compute.deleteSnapshot(firstSnapshotId);
1200-
resourceCleaner.remove(firstSnapshotId);
1201-
compute.deleteSnapshot(secondSnapshotId);
1202-
resourceCleaner.remove(secondSnapshotId);
12031183
}
12041184

12051185
@Test
@@ -1239,10 +1219,6 @@ public void testAggregatedListDisks() throws InterruptedException, TimeoutExcept
12391219
count++;
12401220
}
12411221
assertEquals(2, count);
1242-
compute.deleteDisk(firstDiskId);
1243-
resourceCleaner.remove(firstDiskId);
1244-
compute.deleteDisk(secondDiskId);
1245-
resourceCleaner.remove(secondDiskId);
12461222
}
12471223

12481224
@Test
@@ -1679,8 +1655,6 @@ public void testCreateGetAndDeleteInstance() throws InterruptedException, Timeou
16791655
operation.waitFor();
16801656
resourceCleaner.remove(instanceId);
16811657
assertNull(compute.getInstance(instanceId));
1682-
address.delete();
1683-
resourceCleaner.remove(addressId);
16841658
}
16851659

16861660
@Test
@@ -1717,8 +1691,6 @@ public void testStartStopAndResetInstance() throws InterruptedException, Timeout
17171691
remoteInstance = compute.getInstance(instanceId,
17181692
Compute.InstanceOption.fields(Compute.InstanceField.STATUS));
17191693
assertEquals(InstanceInfo.Status.RUNNING, remoteInstance.getStatus());
1720-
remoteInstance.delete();
1721-
resourceCleaner.remove(instanceId);
17221694
}
17231695

17241696
@Test
@@ -1765,8 +1737,6 @@ public void testSetInstanceProperties() throws InterruptedException, TimeoutExce
17651737
operation.waitFor();
17661738
remoteInstance = compute.getInstance(instanceId);
17671739
assertEquals(options, remoteInstance.getSchedulingOptions());
1768-
remoteInstance.delete();
1769-
resourceCleaner.remove(instanceId);
17701740
}
17711741

17721742
@Test
@@ -1817,10 +1787,6 @@ public void testAttachAndDetachDisk() throws InterruptedException, TimeoutExcept
18171787
remoteInstance = compute.getInstance(instanceId);
18181788
assertEquals(1, remoteInstance.getAttachedDisks().size());
18191789
assertEquals("dev0", remoteInstance.getAttachedDisks().get(0).getDeviceName());
1820-
remoteInstance.delete();
1821-
compute.deleteDisk(diskId);
1822-
resourceCleaner.remove(instanceId);
1823-
resourceCleaner.remove(diskId);
18241790
}
18251791

18261792
@Test
@@ -1865,9 +1831,5 @@ public void testAddAndRemoveAccessConfig() throws InterruptedException, TimeoutE
18651831
instanceOperation.waitFor();
18661832
remoteInstance = compute.getInstance(instanceId);
18671833
assertTrue(remoteInstance.getNetworkInterfaces().get(0).getAccessConfigurations().isEmpty());
1868-
remoteInstance.delete();
1869-
remoteAddress.delete();
1870-
resourceCleaner.remove(instanceId);
1871-
resourceCleaner.remove(addressId);
18721834
}
18731835
}

0 commit comments

Comments
 (0)