Skip to content

Commit d0752d1

Browse files
committed
Merge branch 'xc-118006-42' into 'release/4.2'
catch NullPointerException in WKO tests in release/4.2 See merge request weblogic-cloud/weblogic-kubernetes-operator!4708
2 parents f848e43 + e83a056 commit d0752d1

Some content is hidden

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

42 files changed

+573
-404
lines changed

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

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -207,10 +207,15 @@ public void initAll(@Namespaces(2) List<String> namespaces) throws ApiException,
207207
//start two MySQL database instances
208208
String dbService1 = createMySQLDB("mysqldb-1", "root", "root123", domainNamespace, null);
209209
V1Pod pod = getPod(domainNamespace, null, "mysqldb-1");
210+
assertNotNull(pod, "pod is null");
211+
assertNotNull(pod.getMetadata(), "pod metadata is null");
210212
createFileInPod(pod.getMetadata().getName(), domainNamespace, "root123");
211213
runMysqlInsidePod(pod.getMetadata().getName(), domainNamespace, "root123");
214+
212215
String dbService2 = createMySQLDB("mysqldb-2", "root", "root456", domainNamespace, null);
213216
pod = getPod(domainNamespace, null, "mysqldb-2");
217+
assertNotNull(pod, "pod is null");
218+
assertNotNull(pod.getMetadata(), "pod metadata is null");
214219
createFileInPod(pod.getMetadata().getName(), domainNamespace, "root456");
215220
runMysqlInsidePod(pod.getMetadata().getName(), domainNamespace, "root456");
216221

@@ -404,8 +409,9 @@ void testModifiedOverrideContent() {
404409

405410
testUntil(
406411
withLongRetryPolicy,
407-
() -> listConfigMaps(domainNamespace).getItems().stream().noneMatch((cm)
408-
-> (cm.getMetadata().getName().equals(overridecm))),
412+
() -> listConfigMaps(domainNamespace).getItems().stream().noneMatch(cm
413+
-> cm.getMetadata() != null && cm.getMetadata().getName() != null
414+
&& cm.getMetadata().getName().equals(overridecm)),
409415
logger,
410416
"configmap {0} to be deleted.");
411417

@@ -1195,7 +1201,10 @@ private static Integer getMySQLNodePort(String namespace, String dbName) {
11951201
logger.info(dump(Kubernetes.listServices(namespace)));
11961202
List<V1Service> services = listServices(namespace).getItems();
11971203
for (V1Service service : services) {
1198-
if (service.getMetadata().getName().startsWith(dbName)) {
1204+
if (service.getMetadata() != null && service.getMetadata().getName() != null
1205+
&& service.getSpec() != null && service.getSpec().getPorts() != null
1206+
&& !service.getSpec().getPorts().isEmpty()
1207+
&& service.getMetadata().getName().startsWith(dbName)) {
11991208
return service.getSpec().getPorts().get(0).getNodePort();
12001209
}
12011210
}
@@ -1206,7 +1215,8 @@ private static String getMySQLSvcName(String namespace, String dbName) {
12061215
logger.info(dump(Kubernetes.listServices(namespace)));
12071216
List<V1Service> services = listServices(namespace).getItems();
12081217
for (V1Service service : services) {
1209-
if (service.getMetadata().getName().startsWith(dbName)) {
1218+
if (service.getMetadata() != null && service.getMetadata().getName() != null
1219+
&& service.getMetadata().getName().startsWith(dbName)) {
12101220
return service.getMetadata().getName();
12111221
}
12121222
}
@@ -1227,7 +1237,8 @@ private static String getMySQLSvcEndpoint(String domainNamespace, String dbName)
12271237
} catch (Exception e) {
12281238
getLogger().info("Got exception, command failed with errors " + e.getMessage());
12291239
}
1230-
return result.stdout();
1240+
assertNotNull(result, "result is null");
1241+
return result.stdout();
12311242
}
12321243

12331244
private static void runMysqlInsidePod(String podName, String namespace, String password) {

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,9 +204,14 @@ 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
208+
&& event.getType().equals(type)
209+
&& event.getInvolvedObject() != null
210+
&& event.getInvolvedObject().getName() != null
208211
&& event.getInvolvedObject().getName().equals(adminServerpodName)
212+
&& event.getReason() != null
209213
&& event.getReason().equals(reason)
214+
&& event.getMessage() != null
210215
&& event.getMessage().contains(message)) {
211216
logger.info(Yaml.dump(event));
212217
gotEvent = true;

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1351,6 +1351,7 @@ private static void verifyMemberHealth(String adminServerPodName, List<String> m
13511351
} catch (IOException | InterruptedException ex) {
13521352
logger.severe(ex.getMessage());
13531353
}
1354+
assertNotNull(result, "result is null");
13541355
String response = result.stdout().trim();
13551356
logger.info(response);
13561357
logger.info(result.stderr());
@@ -1574,7 +1575,10 @@ 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
1579+
&& ingress.getSpec() != null
1580+
&& ingress.getSpec().getRules() != null
1581+
&& !ingress.getSpec().getRules().isEmpty()) {
15781582
logger.info("Updating ingress {0} with new admin port {1}", ingressName, newAdminPort);
15791583
ingress.getSpec().getRules().getFirst().getHttp()
15801584
.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, String.format("failed to create zip file %s", DOMAIN_TEMP_DIR));
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");
@@ -346,6 +348,7 @@ private static void verifyMemberHealth(String adminServerPodName, List<String> m
346348
} catch (IOException | InterruptedException ex) {
347349
logger.severe(ex.getMessage());
348350
}
351+
assertNotNull(result, "execResult is null");
349352
String response = result.stdout().trim();
350353
logger.info(response);
351354
boolean health = true;
@@ -398,6 +401,7 @@ private static void verifyMemberHealth(String adminServerPodName, List<String> m
398401
}
399402

400403
boolean health = true;
404+
assertNotNull(result, "result is null");
401405
for (String managedServer : managedServerNames) {
402406
health = health && result.stdout().contains(managedServer + ":HEALTH_OK");
403407
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)