Skip to content

Commit 25f9d66

Browse files
alai8rjeberhard
authored andcommitted
refactored deleteDomainPresenceWithTimeCheck method in Main for easier unit testing
1 parent fa7c604 commit 25f9d66

File tree

3 files changed

+175
-50
lines changed

3 files changed

+175
-50
lines changed

operator/src/main/java/oracle/kubernetes/operator/Main.java

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -712,26 +712,47 @@ private static DateTime getDomainCreationTimeStamp(DomainPresenceInfo domainPres
712712
return null;
713713
}
714714

715-
private static void deleteDomainPresence(
716-
String namespace, String domainUID, DateTime deleteDomainDateTime) {
717-
LOGGER.entering();
718-
715+
/**
716+
* Delete DomainPresentInfo from DomainPresenceInfoManager iff there is DomainPresentInfo with the
717+
* same domainUID and with a creationTimeStamp that is on or after the provided
718+
* deleteDomainDateTime.
719+
*
720+
* @param domainUID domainUID of the DomainPresenceInfo to be deleted
721+
* @param creationDateTime only delete DomainPresenceInfo from DomainPresenceInfoManager if its
722+
* creationTimeStamp is on or after the given creationDateTime
723+
* @return The deleted DomainPresenceInfo that met the domainUID and creationDateTime criteria, or
724+
* null otherwise
725+
*/
726+
static DomainPresenceInfo deleteDomainPresenceWithTimeCheck(
727+
String domainUID, DateTime creationDateTime) {
719728
DomainPresenceInfo info = DomainPresenceInfoManager.lookup(domainUID);
720729
if (info != null) {
721730
DateTime infoDateTime = getDomainCreationTimeStamp(info);
722731
if (infoDateTime != null
723-
&& deleteDomainDateTime != null
724-
&& deleteDomainDateTime.isBefore(infoDateTime)) {
732+
&& creationDateTime != null
733+
&& creationDateTime.isBefore(infoDateTime)) {
725734
LOGGER.exiting("Domain to be deleted is too old");
726-
return;
735+
return null;
727736
}
728737
info = DomainPresenceInfoManager.remove(domainUID);
729738
if (info == null) {
730739
LOGGER.exiting("Domain already deleted by another Fiber");
731-
return;
740+
return null;
732741
}
733-
DomainPresenceControl.cancelDomainStatusUpdating(info);
734742
}
743+
return info;
744+
}
745+
746+
private static void deleteDomainPresence(
747+
String namespace, String domainUID, DateTime deleteDomainDateTime) {
748+
LOGGER.entering();
749+
750+
DomainPresenceInfo info = deleteDomainPresenceWithTimeCheck(domainUID, deleteDomainDateTime);
751+
if (info == null) {
752+
return;
753+
}
754+
DomainPresenceControl.cancelDomainStatusUpdating(info);
755+
735756
FIBER_GATE.startFiber(
736757
domainUID,
737758
new DeleteDomainStep(namespace, domainUID),

operator/src/test/java/oracle/kubernetes/operator/MainTest.java

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,33 @@
44

55
package oracle.kubernetes.operator;
66

7+
import static org.junit.Assert.assertEquals;
78
import static org.junit.Assert.assertFalse;
9+
import static org.junit.Assert.assertNotNull;
10+
import static org.junit.Assert.assertNull;
811
import static org.junit.Assert.assertTrue;
912

13+
import io.kubernetes.client.models.V1ObjectMeta;
1014
import java.lang.reflect.InvocationTargetException;
1115
import java.lang.reflect.Method;
1216
import java.util.Collection;
17+
import oracle.kubernetes.operator.helpers.DomainPresenceInfo;
18+
import oracle.kubernetes.operator.helpers.DomainPresenceInfoManager;
19+
import oracle.kubernetes.weblogic.domain.v1.Domain;
20+
import oracle.kubernetes.weblogic.domain.v1.DomainSpec;
21+
import org.joda.time.DateTime;
22+
import org.junit.After;
1323
import org.junit.Test;
1424

1525
public class MainTest {
1626

27+
final String DOMAIN_UID = "domain-uid-for-testing";
28+
29+
@After
30+
public void tearDown() {
31+
DomainPresenceInfoManager.remove(DOMAIN_UID);
32+
}
33+
1734
@Test
1835
public void getTargetNamespaces_withEmptyValue_should_return_default()
1936
throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
@@ -63,6 +80,134 @@ public void getTargetNamespaces_should_remove_trailing_spaces()
6380
assertTrue(namespaces.contains("test-domain"));
6481
}
6582

83+
@Test
84+
public void deleteDomainPresenceWithTimeCheck_delete_with_same_DateTime() {
85+
Domain domain = new Domain();
86+
DomainSpec domainSpec = new DomainSpec();
87+
domainSpec.setDomainUID(DOMAIN_UID);
88+
DateTime CREATION_DATETIME = DateTime.now();
89+
V1ObjectMeta domainMeta = new V1ObjectMeta().creationTimestamp(CREATION_DATETIME);
90+
domain.setMetadata(domainMeta);
91+
domain.setSpec(domainSpec);
92+
93+
DomainPresenceInfo info = DomainPresenceInfoManager.getOrCreate(domain);
94+
95+
DomainPresenceInfo result =
96+
Main.deleteDomainPresenceWithTimeCheck(DOMAIN_UID, CREATION_DATETIME);
97+
98+
assertEquals(info, result);
99+
assertNull(DomainPresenceInfoManager.lookup(DOMAIN_UID));
100+
}
101+
102+
@Test
103+
public void deleteDomainPresenceWithTimeCheck_delete_with_newer_DateTime() {
104+
Domain domain = new Domain();
105+
DomainSpec domainSpec = new DomainSpec();
106+
domainSpec.setDomainUID(DOMAIN_UID);
107+
DateTime CREATION_DATETIME = DateTime.now();
108+
DateTime DELETE_DATETIME = CREATION_DATETIME.plusMinutes(1);
109+
V1ObjectMeta domainMeta = new V1ObjectMeta().creationTimestamp(CREATION_DATETIME);
110+
domain.setMetadata(domainMeta);
111+
domain.setSpec(domainSpec);
112+
113+
DomainPresenceInfo info = DomainPresenceInfoManager.getOrCreate(domain);
114+
115+
DomainPresenceInfo result = Main.deleteDomainPresenceWithTimeCheck(DOMAIN_UID, DELETE_DATETIME);
116+
117+
assertEquals(info, result);
118+
assertNull(DomainPresenceInfoManager.lookup(DOMAIN_UID));
119+
}
120+
121+
@Test
122+
public void deleteDomainPresenceWithTimeCheck_delete_with_null_DateTime() {
123+
Domain domain = new Domain();
124+
DomainSpec domainSpec = new DomainSpec();
125+
domainSpec.setDomainUID(DOMAIN_UID);
126+
DateTime CREATION_DATETIME = DateTime.now();
127+
V1ObjectMeta domainMeta = new V1ObjectMeta().creationTimestamp(CREATION_DATETIME);
128+
domain.setMetadata(domainMeta);
129+
domain.setSpec(domainSpec);
130+
131+
DomainPresenceInfo info = DomainPresenceInfoManager.getOrCreate(domain);
132+
133+
DomainPresenceInfo result = Main.deleteDomainPresenceWithTimeCheck(DOMAIN_UID, null);
134+
135+
assertEquals(info, result);
136+
assertNull(DomainPresenceInfoManager.lookup(DOMAIN_UID));
137+
}
138+
139+
@Test
140+
public void deleteDomainPresenceWithTimeCheck_delete_without_domain_creationDateTime() {
141+
Domain domain = new Domain();
142+
DomainSpec domainSpec = new DomainSpec();
143+
domainSpec.setDomainUID(DOMAIN_UID);
144+
DateTime DELETE_DATETIME = DateTime.now();
145+
domain.setMetadata(new V1ObjectMeta());
146+
domain.setSpec(domainSpec);
147+
148+
DomainPresenceInfo info = DomainPresenceInfoManager.getOrCreate(domain);
149+
150+
DomainPresenceInfo result = Main.deleteDomainPresenceWithTimeCheck(DOMAIN_UID, DELETE_DATETIME);
151+
152+
assertEquals(info, result);
153+
assertNull(DomainPresenceInfoManager.lookup(DOMAIN_UID));
154+
}
155+
156+
@Test
157+
public void
158+
deleteDomainPresenceWithTimeCheck_delete_without_domain_creationDateTime_null_dateTime() {
159+
Domain domain = new Domain();
160+
DomainSpec domainSpec = new DomainSpec();
161+
domainSpec.setDomainUID(DOMAIN_UID);
162+
domain.setMetadata(new V1ObjectMeta());
163+
domain.setSpec(domainSpec);
164+
165+
DomainPresenceInfo info = DomainPresenceInfoManager.getOrCreate(domain);
166+
167+
DomainPresenceInfo result = Main.deleteDomainPresenceWithTimeCheck(DOMAIN_UID, null);
168+
169+
assertEquals(info, result);
170+
assertNull(DomainPresenceInfoManager.lookup(DOMAIN_UID));
171+
}
172+
173+
@Test
174+
public void deleteDomainPresenceWithTimeCheck_doNotDelete_with_older_DateTime() {
175+
Domain domain = new Domain();
176+
DomainSpec domainSpec = new DomainSpec();
177+
domainSpec.setDomainUID(DOMAIN_UID);
178+
DateTime CREATION_DATETIME = DateTime.now();
179+
DateTime DELETE_DATETIME = CREATION_DATETIME.minusMinutes(1);
180+
V1ObjectMeta domainMeta = new V1ObjectMeta().creationTimestamp(CREATION_DATETIME);
181+
domain.setMetadata(domainMeta);
182+
domain.setSpec(domainSpec);
183+
184+
DomainPresenceInfo info = DomainPresenceInfoManager.getOrCreate(domain);
185+
186+
DomainPresenceInfo result = Main.deleteDomainPresenceWithTimeCheck(DOMAIN_UID, DELETE_DATETIME);
187+
188+
assertNull(result);
189+
assertNotNull(DomainPresenceInfoManager.lookup(DOMAIN_UID));
190+
}
191+
192+
@Test
193+
public void deleteDomainPresenceWithTimeCheck_doNotDelete_with_different_domainUID() {
194+
Domain domain = new Domain();
195+
DomainSpec domainSpec = new DomainSpec();
196+
domainSpec.setDomainUID(DOMAIN_UID);
197+
DateTime CREATION_DATETIME = DateTime.now();
198+
V1ObjectMeta domainMeta = new V1ObjectMeta().creationTimestamp(CREATION_DATETIME);
199+
domain.setMetadata(domainMeta);
200+
domain.setSpec(domainSpec);
201+
202+
DomainPresenceInfo info = DomainPresenceInfoManager.getOrCreate(domain);
203+
204+
DomainPresenceInfo result =
205+
Main.deleteDomainPresenceWithTimeCheck("DifferentDomainUID", CREATION_DATETIME);
206+
207+
assertNull(result);
208+
assertNotNull(DomainPresenceInfoManager.lookup(DOMAIN_UID));
209+
}
210+
66211
Method getTargetNamespaces;
67212

68213
Collection<String> invoke_getTargetNamespaces(String tnValue, String namespace)

operator/src/test/java/oracle/kubernetes/operator/wlsconfig/WlsRetrieverTest.java

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -12,26 +12,20 @@
1212

1313
import com.meterware.simplestub.Memento;
1414
import com.meterware.simplestub.Stub;
15-
import io.kubernetes.client.models.V1ObjectMeta;
1615
import io.kubernetes.client.models.V1Service;
1716
import java.util.ArrayList;
1817
import java.util.List;
1918
import java.util.logging.Level;
2019
import java.util.logging.LogRecord;
2120
import oracle.kubernetes.TestUtils;
2221
import oracle.kubernetes.operator.ProcessingConstants;
23-
import oracle.kubernetes.operator.helpers.DomainPresenceInfo;
24-
import oracle.kubernetes.operator.helpers.DomainPresenceInfoManager;
25-
import oracle.kubernetes.operator.helpers.ServerKubernetesObjectsManager;
2622
import oracle.kubernetes.operator.http.HttpClient;
2723
import oracle.kubernetes.operator.wlsconfig.WlsRetriever.RequestType;
2824
import oracle.kubernetes.operator.wlsconfig.WlsRetriever.WithHttpClientStep;
2925
import oracle.kubernetes.operator.work.Component;
3026
import oracle.kubernetes.operator.work.NextAction;
3127
import oracle.kubernetes.operator.work.Packet;
3228
import oracle.kubernetes.operator.work.Step;
33-
import oracle.kubernetes.weblogic.domain.v1.Domain;
34-
import oracle.kubernetes.weblogic.domain.v1.DomainSpec;
3529
import org.junit.After;
3630
import org.junit.Before;
3731
import org.junit.Test;
@@ -99,47 +93,12 @@ public void withHttpClientStep_Health_logIfFailed() {
9993
assertThat(logRecords, containsFine(WLS_HEALTH_READ_FAILED, SERVER_NAME));
10094
}
10195

102-
// @Test - no longer retry for Health check
103-
public void withHttpClientStep_Health_nologIfFailedOnRetry() {
104-
V1Service service = Stub.createStub(V1ServiceStub.class);
105-
Step next = new MockStep(null);
106-
Packet packet = Stub.createStub(PacketStub.class).withRetryCount(1);
107-
108-
WithHttpClientStep withHttpClientStep =
109-
new WithHttpClientStep(RequestType.HEALTH, service, next);
110-
withHttpClientStep.apply(packet);
111-
112-
assert (logRecords.isEmpty());
113-
}
114-
11596
@Test(expected = IllegalArgumentException.class)
11697
public void WithHttpClientStep_const_throws_with_null_service() {
11798
Step next = new MockStep(null);
11899
new WithHttpClientStep(RequestType.HEALTH, null, next);
119100
}
120101

121-
// @Test (expected =IllegalArgumentException.class)
122-
public void ReadStep_apply_throws_with_null_service() {
123-
final String SERVER_NAME = "managed-server1";
124-
final String DOMAIN_UID = "testDomain";
125-
Step next = new MockStep(null);
126-
DomainSpec domainSpec = new DomainSpec();
127-
domainSpec.setDomainUID(DOMAIN_UID);
128-
Domain domain =
129-
new Domain()
130-
.withSpec(domainSpec)
131-
.withMetadata(new V1ObjectMeta().namespace("testnamespace"));
132-
DomainPresenceInfo domainPresenceInfo = DomainPresenceInfoManager.getOrCreate(domain);
133-
ServerKubernetesObjectsManager.getOrCreate(domainPresenceInfo, DOMAIN_UID, SERVER_NAME);
134-
Packet packet =
135-
Stub.createStub(PacketStub.class)
136-
.addSpi(DomainPresenceInfo.class, domainPresenceInfo)
137-
.withServerName(SERVER_NAME);
138-
139-
Step readStep = WlsRetriever.readHealthStep(next);
140-
readStep.apply(packet);
141-
}
142-
143102
abstract static class PacketStub extends Packet {
144103

145104
Integer retryCount;

0 commit comments

Comments
 (0)