Skip to content

Commit 4cb02fb

Browse files
committed
Merge branch 'xc-117560' into 'main'
Fix NullPointerException in WKO tests See merge request weblogic-cloud/weblogic-kubernetes-operator!4706
2 parents 27841cc + aa2e5cb commit 4cb02fb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+540
-400
lines changed

integration-tests/src/test/java/oracle/weblogic/kubernetes/ItConfigDistributionStrategy.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -231,10 +231,15 @@ public void initAll(@Namespaces(3) List<String> namespaces) throws ApiException,
231231
//start two MySQL database instances
232232
String dbService1 = createMySQLDB("mysqldb-1", "root", "root123", domainNamespace, null);
233233
V1Pod pod = getPod(domainNamespace, null, "mysqldb-1");
234+
assertNotNull(pod, "pod is null");
235+
assertNotNull(pod.getMetadata(), "pod metadata is null");
234236
createFileInPod(pod.getMetadata().getName(), domainNamespace, "root123");
235237
runMysqlInsidePod(pod.getMetadata().getName(), domainNamespace, "root123");
238+
236239
String dbService2 = createMySQLDB("mysqldb-2", "root", "root456", domainNamespace, null);
237240
pod = getPod(domainNamespace, null, "mysqldb-2");
241+
assertNotNull(pod, "pod is null");
242+
assertNotNull(pod.getMetadata(), "pod metadata is null");
238243
createFileInPod(pod.getMetadata().getName(), domainNamespace, "root456");
239244
runMysqlInsidePod(pod.getMetadata().getName(), domainNamespace, "root456");
240245

@@ -441,8 +446,9 @@ void testModifiedOverrideContent() {
441446

442447
testUntil(
443448
withLongRetryPolicy,
444-
() -> listConfigMaps(domainNamespace).getItems().stream().noneMatch((cm)
445-
-> (cm.getMetadata().getName().equals(overridecm))),
449+
() -> listConfigMaps(domainNamespace).getItems().stream().noneMatch(cm
450+
-> cm.getMetadata() != null && cm.getMetadata().getName() != null
451+
&& cm.getMetadata().getName().equals(overridecm)),
446452
logger,
447453
"configmap {0} to be deleted.");
448454

@@ -1250,7 +1256,9 @@ private static Integer getMySQLNodePort(String namespace, String dbName) {
12501256
logger.info(dump(Kubernetes.listServices(namespace)));
12511257
List<V1Service> services = listServices(namespace).getItems();
12521258
for (V1Service service : services) {
1253-
if (service.getMetadata().getName().startsWith(dbName)) {
1259+
if (service.getMetadata() != null && service.getMetadata().getName() != null
1260+
&& service.getSpec() != null && service.getSpec().getPorts() != null
1261+
&& service.getMetadata().getName().startsWith(dbName)) {
12541262
return service.getSpec().getPorts().get(0).getNodePort();
12551263
}
12561264
}
@@ -1261,7 +1269,8 @@ private static String getMySQLSvcName(String namespace, String dbName) {
12611269
logger.info(dump(Kubernetes.listServices(namespace)));
12621270
List<V1Service> services = listServices(namespace).getItems();
12631271
for (V1Service service : services) {
1264-
if (service.getMetadata().getName().startsWith(dbName)) {
1272+
if (service.getMetadata() != null && service.getMetadata().getName() != null
1273+
&& service.getMetadata().getName().startsWith(dbName)) {
12651274
return service.getMetadata().getName();
12661275
}
12671276
}
@@ -1282,6 +1291,7 @@ private static String getMySQLSvcEndpoint(String domainNamespace, String dbName)
12821291
} catch (Exception e) {
12831292
getLogger().info("Got exception, command failed with errors " + e.getMessage());
12841293
}
1294+
assertNotNull(result, "result is null");
12851295
return result.stdout();
12861296
}
12871297

integration-tests/src/test/java/oracle/weblogic/kubernetes/ItEvictedPodsCycling.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,9 +204,12 @@ private Callable<Boolean> checkEvictionEvent(String adminServerpodName,
204204
boolean gotEvent = false;
205205
List<CoreV1Event> events = Kubernetes.listNamespacedEvents(domainNamespace);
206206
for (CoreV1Event event : events) {
207-
if (event.getType().equals(type)
207+
if (event.getType() != null && event.getType().equals(type)
208+
&& event.getInvolvedObject().getName() != null
208209
&& event.getInvolvedObject().getName().equals(adminServerpodName)
210+
&& event.getReason() != null
209211
&& event.getReason().equals(reason)
212+
&& event.getMessage() != null
210213
&& event.getMessage().contains(message)) {
211214
logger.info(Yaml.dump(event));
212215
gotEvent = true;

integration-tests/src/test/java/oracle/weblogic/kubernetes/ItIntrospectVersion.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1352,6 +1352,7 @@ private static void verifyMemberHealth(String adminServerPodName, List<String> m
13521352
} catch (IOException | InterruptedException ex) {
13531353
logger.severe(ex.getMessage());
13541354
}
1355+
assertNotNull(result, "result is null");
13551356
String response = result.stdout().trim();
13561357
logger.info(response);
13571358
logger.info(result.stderr());
@@ -1574,7 +1575,7 @@ private DomainResource createDomainResourceWithConfigMap(String domainUid, Strin
15741575
private void updateIngressBackendServicePort(int newAdminPort) throws ApiException {
15751576
String ingressName = introDomainNamespace + "-" + domainUid + "-" + adminServerName + "-7001";
15761577
V1Ingress ingress = Ingress.getIngress(introDomainNamespace, ingressName).orElse(null);
1577-
if (ingress != null) {
1578+
if (ingress != null && ingress.getSpec() != null && ingress.getSpec().getRules() != null) {
15781579
logger.info("Updating ingress {0} with new admin port {1}", ingressName, newAdminPort);
15791580
ingress.getSpec().getRules().getFirst().getHttp()
15801581
.getPaths().getFirst().getBackend().getService()

integration-tests/src/test/java/oracle/weblogic/kubernetes/ItLargeMiiDomainsClusters.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2023, Oracle and/or its affiliates.
1+
// Copyright (c) 2023, 2024, Oracle and/or its affiliates.
22
// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
33

44
package oracle.weblogic.kubernetes;
@@ -102,7 +102,6 @@
102102
import static oracle.weblogic.kubernetes.utils.K8sEvents.checkDomainEvent;
103103
import static oracle.weblogic.kubernetes.utils.OKDUtils.createRouteForOKD;
104104
import static oracle.weblogic.kubernetes.utils.OKDUtils.setTlsTerminationForRoute;
105-
import static oracle.weblogic.kubernetes.utils.OperatorUtils.installAndVerifyOperator;
106105
import static oracle.weblogic.kubernetes.utils.PatchDomainUtils.patchDomainResource;
107106
import static oracle.weblogic.kubernetes.utils.PodUtils.getExternalServicePodName;
108107
import static oracle.weblogic.kubernetes.utils.PodUtils.getPodsWithTimeStamps;

integration-tests/src/test/java/oracle/weblogic/kubernetes/ItLiftAndShiftFromOnPremDomain.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@
109109

110110
@IntegrationTest
111111
class ItLiftAndShiftFromOnPremDomain {
112-
private static String opNamespace = null;
113112
private static String traefikNamespace = null;
114113
private static String domainNamespace = null;
115114
private static final String LIFT_AND_SHIFT_WORK_DIR = WORK_DIR + "/liftandshiftworkdir";
@@ -124,10 +123,8 @@ class ItLiftAndShiftFromOnPremDomain {
124123
private static final Path BUILD_SCRIPT_SOURCE_PATH = Paths.get(RESOURCE_DIR, "bash-scripts", BUILD_SCRIPT);
125124
private static final String domainUid = "onprem-domain";
126125
private static final String adminServerName = "admin-server";
127-
private static final String appPath = "opdemo/index.jsp";
128126
private static String imageName = null;
129127
private static LoggingFacade logger = null;
130-
private Path zipFile;
131128

132129
private static HelmParams traefikHelmParams = null;
133130
private int traefikNodePort = 0;
@@ -145,7 +142,7 @@ public static void initAll(@Namespaces(3) List<String> namespaces) {
145142
// get a new unique opNamespace
146143
logger.info("Creating unique namespace for Operator");
147144
assertNotNull(namespaces.get(0), "Namespace list is null");
148-
opNamespace = namespaces.get(0);
145+
String opNamespace = namespaces.get(0);
149146

150147
// get a unique traefik namespace
151148
logger.info("Get a unique namespace for traefik");
@@ -220,13 +217,17 @@ void testCreateMiiDomainWithClusterFromOnPremDomain() throws UnknownHostExceptio
220217
}
221218

222219
Path tempDomainDir = Paths.get(DOMAIN_TEMP_DIR);
223-
zipFile = Paths.get(createZipFile(tempDomainDir));
220+
String tmpDomainDirZip = createZipFile(tempDomainDir);
221+
assertNotNull(tmpDomainDirZip);
222+
Path zipFile = Paths.get(tmpDomainDirZip);
224223
logger.info("zipfile is in {0}", zipFile.toString());
225224

226225
// Call WDT DiscoverDomain tool with wko target to get the required file to create a
227226
// Mii domain image. Since WDT requires weblogic installation, we start a pod and run
228227
// wdt discoverDomain tool in the pod
229228
V1Pod webLogicPod = callSetupWebLogicPod(domainNamespace);
229+
assertNotNull(webLogicPod, "webLogicPod is null");
230+
assertNotNull(webLogicPod.getMetadata(), "webLogicPod metadata is null");
230231

231232
// copy the onprem domain zip file to /u01 location inside pod
232233
try {
@@ -351,7 +352,7 @@ void testCreateMiiDomainWithClusterFromOnPremDomain() throws UnknownHostExceptio
351352
}
352353
}
353354

354-
String hostAndPort = null;
355+
String hostAndPort;
355356
if (OKD) {
356357
hostAndPort = getHostAndPort(hostName, traefikNodePort);
357358
} else {
@@ -378,7 +379,7 @@ void testCreateMiiDomainWithClusterFromOnPremDomain() throws UnknownHostExceptio
378379
"opdemo/index.jsp",
379380
"WebLogic on prem to wko App");
380381

381-
ExecResult execResult = null;
382+
ExecResult execResult;
382383
logger.info("curl command {0}", curlString);
383384

384385
execResult = assertDoesNotThrow(

integration-tests/src/test/java/oracle/weblogic/kubernetes/ItManageNameSpace.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,7 @@ private static void setLabelToNamespace(String domainNS, Map<String, String> lab
439439
//add label to domain namespace
440440
V1Namespace namespaceObject1 = assertDoesNotThrow(() -> Kubernetes.getNamespace(domainNS));
441441
assertNotNull(namespaceObject1, "Can't find namespace with name " + domainNS);
442+
assertNotNull(namespaceObject1.getMetadata(), "namespaceObject metadata is null");
442443
namespaceObject1.getMetadata().setLabels(labels);
443444
assertDoesNotThrow(() -> Kubernetes.replaceNamespace(namespaceObject1));
444445
}

integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -850,8 +850,9 @@ WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, createSecretsForImageRepos(domai
850850
deleteConfigMap(configMapName, domainNamespace);
851851
testUntil(
852852
withLongRetryPolicy,
853-
() -> listConfigMaps(domainNamespace).getItems().stream().noneMatch((cm)
854-
-> (cm.getMetadata().getName().equals(configMapName))),
853+
() -> listConfigMaps(domainNamespace).getItems().stream().noneMatch(cm
854+
-> cm.getMetadata() != null && cm.getMetadata().getName() != null
855+
&& cm.getMetadata().getName().equals(configMapName)),
855856
logger,
856857
"configmap {0} to be deleted.", configMapName);
857858
}

integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiDomainModelInPV.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,8 @@ public static void initAll(@Namespaces(2) List<String> namespaces) {
202202

203203
logger.info("Setting up WebLogic pod to access PV");
204204
V1Pod pvPod = setupWebLogicPod(domainNamespace);
205+
assertNotNull(pvPod, "pvPod is null");
206+
assertNotNull(pvPod.getMetadata(), "pvPod metadata is null");
205207

206208
logger.info("Creating directory {0} in PV", modelMountPath + "/applications");
207209
execInPod(pvPod, null, true, "mkdir -p " + modelMountPath + "/applications");
@@ -344,6 +346,7 @@ private static void verifyMemberHealth(String adminServerPodName, List<String> m
344346
} catch (IOException | InterruptedException ex) {
345347
logger.severe(ex.getMessage());
346348
}
349+
assertNotNull(result, "execResult is null");
347350
String response = result.stdout().trim();
348351
logger.info(response);
349352
boolean health = true;
@@ -395,6 +398,7 @@ private static void verifyMemberHealth(String adminServerPodName, List<String> m
395398
}
396399

397400
boolean health = true;
401+
assertNotNull(result, "result is null");
398402
for (String managedServer : managedServerNames) {
399403
health = health && result.stdout().contains(managedServer + ":HEALTH_OK");
400404
if (health) {

integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiUpdateDomainConfig.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2020, 2023, Oracle and/or its affiliates.
1+
// Copyright (c) 2020, 2024, Oracle and/or its affiliates.
22
// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
33

44
package oracle.weblogic.kubernetes;
@@ -268,8 +268,8 @@ void testMiiCustomEnv() {
268268
for (int i = 0; i < envList.size(); i++) {
269269
logger.info("The name is: {0}, value is: {1}", envList.get(i).getName(), envList.get(i).getValue());
270270
if (envList.get(i).getName().equalsIgnoreCase("CUSTOM_ENV")) {
271-
assertTrue(
272-
envList.get(i).getValue().equalsIgnoreCase("${DOMAIN_UID}~##!'%*$(ls)"),
271+
assertTrue(envList.get(i).getValue() != null
272+
&& envList.get(i).getValue().equalsIgnoreCase("${DOMAIN_UID}~##!'%*$(ls)"),
273273
"Expected value for CUSTOM_ENV variable does not mtach");
274274
found = true;
275275
}

integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMonitoringExporterSamples.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,8 @@ public static void initAll(@Namespaces(6) List<String> namespaces) {
295295
dbService = createMySQLDB("mysql", "root", "root123", domain2Namespace, null);
296296
assertNotNull(dbService, "Failed to create database");
297297
V1Pod pod = getPod(domain2Namespace, null, "mysql");
298+
assertNotNull(pod, "pod is null");
299+
assertNotNull(pod.getMetadata(), "pod metadata is null");
298300
createFileInPod(pod.getMetadata().getName(), domain2Namespace, "root123");
299301
runMysqlInsidePod(pod.getMetadata().getName(), domain2Namespace, "root123", "/tmp/grant.sql");
300302
runMysqlInsidePod(pod.getMetadata().getName(), domain2Namespace, "root123", "/tmp/create.sql");
@@ -390,10 +392,8 @@ private void fireAlert() throws ApiException {
390392
List<V1Pod> pods = listPods(webhookNS, "app=webhook").getItems();
391393
assertNotNull((pods), "No pods are running in namespace : " + webhookNS);
392394
V1Pod pod = pods.stream()
393-
.filter(testpod -> testpod
394-
.getMetadata()
395-
.getName()
396-
.contains("webhook"))
395+
.filter(testpod -> testpod.getMetadata() != null && testpod.getMetadata().getName() != null
396+
&& testpod.getMetadata().getName().contains("webhook"))
397397
.findAny()
398398
.orElse(null);
399399

@@ -706,7 +706,7 @@ private static void uninstallDeploymentService(V1Deployment deployment, V1Servic
706706
String serviceName = null;
707707
String deploymentName = null;
708708
try {
709-
if (service != null) {
709+
if (service != null && service.getMetadata() != null) {
710710
serviceName = service.getMetadata().getName();
711711
namespace = service.getMetadata().getNamespace();
712712
Kubernetes.deleteService(serviceName, namespace);
@@ -717,7 +717,7 @@ private static void uninstallDeploymentService(V1Deployment deployment, V1Servic
717717
serviceName, namespace);
718718
}
719719
try {
720-
if (deployment != null) {
720+
if (deployment != null && deployment.getMetadata() != null) {
721721
deploymentName = deployment.getMetadata().getName();
722722
namespace = deployment.getMetadata().getNamespace();
723723
Kubernetes.deleteDeployment(namespace, deploymentName);

0 commit comments

Comments
 (0)