Skip to content

Commit 4f3d397

Browse files
committed
Add unit tests for PodHelper
1 parent b1762f1 commit 4f3d397

File tree

11 files changed

+1505
-43
lines changed

11 files changed

+1505
-43
lines changed

ManagedSuite.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package oracle.kubernetes.operator.helpers;
2+
3+
import oracle.kubernetes.job.CreateDomainTest;
4+
import oracle.kubernetes.operator.ConfigMapWatcherTest;
5+
import oracle.kubernetes.operator.DomainNormalizationTest;
6+
import oracle.kubernetes.operator.DomainPresenceTest;
7+
import oracle.kubernetes.operator.DomainWatcherTest;
8+
import oracle.kubernetes.operator.HealthCheckHelperTest;
9+
import oracle.kubernetes.operator.IngressWatcherTest;
10+
import oracle.kubernetes.operator.PodWatcherTest;
11+
import oracle.kubernetes.operator.SecretHelperTest;
12+
import oracle.kubernetes.operator.ServiceWatcherTest;
13+
import oracle.kubernetes.operator.builders.WatchBuilderTest;
14+
import oracle.kubernetes.operator.calls.AsyncRequestStepTest;
15+
import oracle.kubernetes.operator.http.HttpClientTest;
16+
import oracle.kubernetes.operator.steps.DeleteIngressListStepTest;
17+
import oracle.kubernetes.operator.work.InMemoryDatabaseTest;
18+
import oracle.kubernetes.operator.work.StepChainTest;
19+
import oracle.kubernetes.operator.work.StepTest;
20+
import org.junit.runner.RunWith;
21+
import org.junit.runners.Suite;
22+
23+
@RunWith(Suite.class)
24+
@Suite.SuiteClasses({CreateDomainTest.class, AsyncRequestStepTest.class, ConfigMapWatcherTest.class,
25+
ServiceWatcherTest.class, WatchBuilderTest.class, SecretHelperTest.class, PodWatcherTest.class,
26+
DeleteIngressListStepTest.class, IngressWatcherTest.class, HttpClientTest.class, StepChainTest.class,
27+
StepTest.class, InMemoryDatabaseTest.class, HealthCheckHelperTest.class, DomainNormalizationTest.class,
28+
DomainWatcherTest.class, ServiceHelperTest.class, PodHelperConfigTest.class, ServerKubernetesObjectsLookupTest.class,
29+
DomainConfigBuilderV1Dot1Test.class, IngressHelperTest.class, LifeCycleHelperTest.class, ConfigMapHelperTest.class,
30+
PodHelperTest.class, AdminPodHelperTest.class, LegalNamesTest.class, CallBuilderTest.class,
31+
DomainConfigBuilderV1Test.class, DomainConfigBuilderTest.class, FileGroupReaderTest.class, VersionHelperTest.class,
32+
33+
ManagedPodHelperTest.class, DomainPresenceTest.class})
34+
public class ManagedSuite {
35+
}

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

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import java.util.TreeMap;
1616
import java.util.concurrent.ConcurrentMap;
1717
import oracle.kubernetes.operator.helpers.CallBuilder;
18-
import oracle.kubernetes.operator.helpers.CallBuilderFactory;
1918
import oracle.kubernetes.operator.helpers.DomainPresenceInfo;
2019
import oracle.kubernetes.operator.helpers.DomainPresenceInfo.ServerStartupInfo;
2120
import oracle.kubernetes.operator.helpers.ResponseStep;
@@ -26,7 +25,6 @@
2625
import oracle.kubernetes.operator.wlsconfig.WlsClusterConfig;
2726
import oracle.kubernetes.operator.wlsconfig.WlsDomainConfig;
2827
import oracle.kubernetes.operator.wlsconfig.WlsServerConfig;
29-
import oracle.kubernetes.operator.work.ContainerResolver;
3028
import oracle.kubernetes.operator.work.Fiber;
3129
import oracle.kubernetes.operator.work.Fiber.CompletionCallback;
3230
import oracle.kubernetes.operator.work.NextAction;
@@ -639,11 +637,8 @@ private static NextAction doDomainUpdate(
639637
Domain dom, DomainPresenceInfo info, Packet packet, Step conflictStep, Step next) {
640638
V1ObjectMeta meta = dom.getMetadata();
641639
NextAction na = new NextAction();
642-
CallBuilderFactory factory =
643-
ContainerResolver.getInstance().getContainer().getSPI(CallBuilderFactory.class);
644640
na.invoke(
645-
factory
646-
.create()
641+
new CallBuilder()
647642
.replaceDomainAsync(
648643
meta.getName(),
649644
meta.getNamespace(),
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// Copyright 2018, Oracle Corporation and/or its affiliates. All rights reserved.
2+
// Licensed under the Universal Permissive License v 1.0 as shown at
3+
// http://oss.oracle.com/licenses/upl.
4+
5+
package oracle.kubernetes.operator;
6+
7+
import io.kubernetes.client.models.V1Pod;
8+
import oracle.kubernetes.operator.work.Step;
9+
10+
public interface PodAwaiterStepFactory {
11+
/**
12+
* Waits until the Pod is Ready
13+
*
14+
* @param pod Pod to watch
15+
* @param next Next processing step once Pod is ready
16+
* @return Asynchronous step
17+
*/
18+
Step waitForReady(V1Pod pod, Step next);
19+
}

operator/src/main/java/oracle/kubernetes/operator/helpers/PodHelper.java

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import oracle.kubernetes.operator.DomainStatusUpdater;
3030
import oracle.kubernetes.operator.KubernetesConstants;
3131
import oracle.kubernetes.operator.LabelConstants;
32-
import oracle.kubernetes.operator.PodWatcher;
32+
import oracle.kubernetes.operator.PodAwaiterStepFactory;
3333
import oracle.kubernetes.operator.ProcessingConstants;
3434
import oracle.kubernetes.operator.TuningParameters;
3535
import oracle.kubernetes.operator.TuningParameters.PodTuning;
@@ -40,7 +40,7 @@
4040
import oracle.kubernetes.operator.logging.MessageKeys;
4141
import oracle.kubernetes.operator.wlsconfig.WlsClusterConfig;
4242
import oracle.kubernetes.operator.wlsconfig.WlsServerConfig;
43-
import oracle.kubernetes.operator.work.Container;
43+
import oracle.kubernetes.operator.work.Component;
4444
import oracle.kubernetes.operator.work.ContainerResolver;
4545
import oracle.kubernetes.operator.work.NextAction;
4646
import oracle.kubernetes.operator.work.Packet;
@@ -75,12 +75,10 @@ public AdminPodStep(Step next) {
7575

7676
@Override
7777
public NextAction apply(Packet packet) {
78-
Container c = ContainerResolver.getInstance().getContainer();
79-
CallBuilderFactory factory = c.getSPI(CallBuilderFactory.class);
80-
TuningParameters configMapHelper = c.getSPI(TuningParameters.class);
78+
TuningParameters tuningParameters = TuningParameters.getInstance();
8179

8280
// Compute the desired pod configuration for the admin server
83-
V1Pod adminPod = computeAdminPodConfig(configMapHelper, packet);
81+
V1Pod adminPod = computeAdminPodConfig(tuningParameters, packet);
8482

8583
// Verify if Kubernetes api server has a matching Pod
8684
// Create or replace, if necessary
@@ -99,8 +97,7 @@ public NextAction apply(Packet packet) {
9997

10098
// First, verify existing Pod
10199
Step read =
102-
factory
103-
.create()
100+
new CallBuilder()
104101
.readPodAsync(
105102
podName,
106103
namespace,
@@ -120,8 +117,7 @@ public NextAction onSuccess(Packet packet, CallResponse<V1Pod> callResponse) {
120117
info.getExplicitRestartAdmin().set(false);
121118
info.getExplicitRestartServers().remove(asName);
122119
Step create =
123-
factory
124-
.create()
120+
new CallBuilder()
125121
.createPodAsync(
126122
namespace,
127123
adminPod,
@@ -187,7 +183,7 @@ && validateCurrentPod(adminPod, result)) {
187183
}
188184

189185
// Make this protected so that it can be unit tested
190-
protected V1Pod computeAdminPodConfig(TuningParameters configMapHelper, Packet packet) {
186+
protected V1Pod computeAdminPodConfig(TuningParameters tuningParameters, Packet packet) {
191187
DomainPresenceInfo info = packet.getSPI(DomainPresenceInfo.class);
192188

193189
Domain dom = info.getDomain();
@@ -282,7 +278,7 @@ protected V1Pod computeAdminPodConfig(TuningParameters configMapHelper, Packet p
282278
container.addCommandItem(spec.getAsName());
283279
container.addCommandItem(weblogicDomainName);
284280

285-
PodTuning tuning = configMapHelper.getPodTuning();
281+
PodTuning tuning = tuningParameters.getPodTuning();
286282

287283
V1Probe readinessProbe = new V1Probe();
288284
V1ExecAction readinessAction = new V1ExecAction();
@@ -319,7 +315,7 @@ protected V1Pod computeAdminPodConfig(TuningParameters configMapHelper, Packet p
319315
}
320316

321317
// Add internal-weblogic-operator-service certificate to Admin Server pod
322-
String internalOperatorCert = getInternalOperatorCertFile(configMapHelper, packet);
318+
String internalOperatorCert = getInternalOperatorCertFile(tuningParameters, packet);
323319
addEnvVar(container, INTERNAL_OPERATOR_CERT_ENV, internalOperatorCert);
324320

325321
// Override the weblogic domain and admin server related environment variables that
@@ -356,8 +352,8 @@ protected V1Pod computeAdminPodConfig(TuningParameters configMapHelper, Packet p
356352
}
357353

358354
// Make it protected to so that it can be unit tested:
359-
protected String getInternalOperatorCertFile(TuningParameters configMapHelper, Packet packet) {
360-
return configMapHelper.get(INTERNAL_OPERATOR_CERT_FILE);
355+
protected String getInternalOperatorCertFile(TuningParameters tuningParameters, Packet packet) {
356+
return tuningParameters.get(INTERNAL_OPERATOR_CERT_FILE);
361357
}
362358
}
363359

@@ -403,8 +399,7 @@ public NextAction apply(Packet packet) {
403399
CallBuilderFactory factory =
404400
ContainerResolver.getInstance().getContainer().getSPI(CallBuilderFactory.class);
405401
Step delete =
406-
factory
407-
.create()
402+
new CallBuilder()
408403
.deletePodAsync(
409404
podName,
410405
namespace,
@@ -427,8 +422,7 @@ public NextAction onSuccess(
427422
}
428423
info.getExplicitRestartServers().contains(serverName);
429424
Step create =
430-
factory
431-
.create()
425+
new CallBuilder()
432426
.createPodAsync(
433427
namespace,
434428
newPod,
@@ -455,7 +449,7 @@ public NextAction onSuccess(
455449
sko.getPod().set(result);
456450
}
457451

458-
PodWatcher pw = packet.getSPI(PodWatcher.class);
452+
PodAwaiterStepFactory pw = getPodAwaiterStepFactory(packet);
459453
return doNext(pw.waitForReady(result, getNext()), packet);
460454
}
461455
});
@@ -466,6 +460,18 @@ public NextAction onSuccess(
466460
}
467461
}
468462

463+
public static void addToPacket(Packet packet, PodAwaiterStepFactory pw) {
464+
packet
465+
.getComponents()
466+
.put(
467+
ProcessingConstants.PODWATCHER_COMPONENT_NAME,
468+
Component.createFor(PodAwaiterStepFactory.class, pw));
469+
}
470+
471+
static PodAwaiterStepFactory getPodAwaiterStepFactory(Packet packet) {
472+
return packet.getSPI(PodAwaiterStepFactory.class);
473+
}
474+
469475
/**
470476
* Factory for {@link Step} that creates managed server pod
471477
*
@@ -554,12 +560,10 @@ public ManagedPodStep(Step next) {
554560

555561
@Override
556562
public NextAction apply(Packet packet) {
557-
Container c = ContainerResolver.getInstance().getContainer();
558-
CallBuilderFactory factory = c.getSPI(CallBuilderFactory.class);
559-
TuningParameters configMapHelper = c.getSPI(TuningParameters.class);
563+
TuningParameters tuningParameters = TuningParameters.getInstance();
560564

561565
// Compute the desired pod configuration for the managed server
562-
V1Pod pod = computeManagedPodConfig(configMapHelper, packet);
566+
V1Pod pod = computeManagedPodConfig(tuningParameters, packet);
563567

564568
// Verify if Kubernetes api server has a matching Pod
565569
// Create or replace, if necessary
@@ -582,8 +586,7 @@ public NextAction apply(Packet packet) {
582586

583587
// First, verify there existing Pod
584588
Step read =
585-
factory
586-
.create()
589+
new CallBuilder()
587590
.readPodAsync(
588591
podName,
589592
namespace,
@@ -609,8 +612,7 @@ public NextAction onSuccess(
609612
if (result == null) {
610613
info.getExplicitRestartServers().remove(weblogicServerName);
611614
Step create =
612-
factory
613-
.create()
615+
new CallBuilder()
614616
.createPodAsync(
615617
namespace,
616618
pod,
@@ -699,7 +701,7 @@ public NextAction onSuccess(
699701
}
700702

701703
// Make this protected so that it can be unit tested
702-
protected V1Pod computeManagedPodConfig(TuningParameters configMapHelper, Packet packet) {
704+
protected V1Pod computeManagedPodConfig(TuningParameters tuningParameters, Packet packet) {
703705
DomainPresenceInfo info = packet.getSPI(DomainPresenceInfo.class);
704706

705707
Domain dom = info.getDomain();
@@ -807,7 +809,7 @@ protected V1Pod computeManagedPodConfig(TuningParameters configMapHelper, Packet
807809
container.addCommandItem(spec.getAsName());
808810
container.addCommandItem(String.valueOf(spec.getAsPort()));
809811

810-
PodTuning tuning = configMapHelper.getPodTuning();
812+
PodTuning tuning = tuningParameters.getPodTuning();
811813

812814
V1Probe readinessProbe = new V1Probe();
813815
V1ExecAction readinessAction = new V1ExecAction();
@@ -900,6 +902,7 @@ private static void overrideContainerWeblogicEnvVars(
900902
addEnvVar(container, "ADMIN_USERNAME", null);
901903
addEnvVar(container, "ADMIN_PASSWORD", null);
902904

905+
if (envList == null) return;
903906
// resolve tokens in externally specified env that refers to internal env via $(XXX)
904907
for (V1EnvVar ev : envList) {
905908
String oldValue = ev.getValue();
@@ -952,11 +955,8 @@ public NextAction apply(Packet packet) {
952955
// Set pod to null so that watcher doesn't try to recreate pod
953956
V1Pod oldPod = sko.getPod().getAndSet(null);
954957
if (oldPod != null) {
955-
CallBuilderFactory factory =
956-
ContainerResolver.getInstance().getContainer().getSPI(CallBuilderFactory.class);
957958
return doNext(
958-
factory
959-
.create()
959+
new CallBuilder()
960960
.deletePodAsync(
961961
oldPod.getMetadata().getName(),
962962
namespace,

0 commit comments

Comments
 (0)