Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 47df0e1

Browse files
committed
Merge branch 'xc-108698-2' into 'main'
Test case for JRF Domain on PV: user creates PV/PVC, Operator creates RCU/Domain See merge request weblogic-cloud/weblogic-kubernetes-operator!4237
2 parents b7c8ad1 + 2c7d173 commit 47df0e1

File tree

1 file changed

+153
-53
lines changed

1 file changed

+153
-53
lines changed

‎integration-tests/src/test/java/oracle/weblogic/kubernetes/ItFmwDomainInPVSimplified.java‎

Lines changed: 153 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,18 @@
7171
import static oracle.weblogic.kubernetes.utils.AuxiliaryImageUtils.createAndPushAuxiliaryImage;
7272
import static oracle.weblogic.kubernetes.utils.ClusterUtils.createClusterAndVerify;
7373
import static oracle.weblogic.kubernetes.utils.ClusterUtils.createClusterResource;
74+
import static oracle.weblogic.kubernetes.utils.ClusterUtils.deleteClusterCustomResourceAndVerify;
7475
import static oracle.weblogic.kubernetes.utils.CommonTestUtils.addSccToDBSvcAccount;
7576
import static oracle.weblogic.kubernetes.utils.CommonTestUtils.getNextFreePort;
7677
import static oracle.weblogic.kubernetes.utils.CommonTestUtils.getUniqueName;
7778
import static oracle.weblogic.kubernetes.utils.DbUtils.startOracleDB;
7879
import static oracle.weblogic.kubernetes.utils.DomainUtils.createDomainAndVerify;
80+
import static oracle.weblogic.kubernetes.utils.DomainUtils.deleteDomainResource;
7981
import static oracle.weblogic.kubernetes.utils.FmwUtils.verifyDomainReady;
8082
import static oracle.weblogic.kubernetes.utils.ImageUtils.createBaseRepoSecret;
8183
import static oracle.weblogic.kubernetes.utils.OperatorUtils.installAndVerifyOperator;
84+
import static oracle.weblogic.kubernetes.utils.PersistentVolumeUtils.createPV;
85+
import static oracle.weblogic.kubernetes.utils.PersistentVolumeUtils.createPVC;
8286
import static oracle.weblogic.kubernetes.utils.PersistentVolumeUtils.createPVHostPathDir;
8387
import static oracle.weblogic.kubernetes.utils.PodUtils.setPodAntiAffinity;
8488
import static oracle.weblogic.kubernetes.utils.SecretUtils.createOpsswalletpasswordSecret;
@@ -107,7 +111,6 @@ class ItFmwDomainInPVSimplified {
107111
private static String dbUrl = null;
108112
private static LoggingFacade logger = null;
109113
private static String DOMAINHOMEPREFIX = null;
110-
private static final String domainUid = "jrfonpv-simplified";
111114
private static final String clusterName = "cluster-1";
112115
private static final int replicaCount = 2;
113116

@@ -164,11 +167,13 @@ public static void initAll(@Namespaces(3) List<String> namespaces) {
164167

165168
/**
166169
* Create a basic FMW domain on PV using simplified feature.
170+
* Operator will create PV/PVC/RCU/Domain.
167171
* Verify Pod is ready and service exists for both admin server and managed servers.
168172
*/
169173
@Test
170-
@DisplayName("Create a FMW domainon on PV using WDT")
171-
void testFmwDomainOnPVUsingWdt() {
174+
@DisplayName("Create a FMW domain on PV using simplified feature, Operator creates PV/PVC/RCU/Domain")
175+
void testOperatorCreatesPvPvcRcuDomain() {
176+
String domainUid = "jrfonpv-simplified";
172177
final String pvName = getUniqueName(domainUid + "-pv-");
173178
final String pvcName = getUniqueName(domainUid + "-pvc-");
174179
final int t3ChannelPort = getNextFreePort();
@@ -180,7 +185,7 @@ void testFmwDomainOnPVUsingWdt() {
180185
ADMIN_USERNAME_DEFAULT, ADMIN_PASSWORD_DEFAULT);
181186

182187
// create a model property file
183-
File fmwModelPropFile = createWdtPropertyFile();
188+
File fmwModelPropFile = createWdtPropertyFile("jrfonpv-simplified1", RCUSCHEMAPREFIX + "1");
184189

185190
// create domainCreationImage
186191
String domainCreationImageName = DOMAIN_IMAGES_REPO + "jrf-domain-on-pv-image";
@@ -207,39 +212,163 @@ void testFmwDomainOnPVUsingWdt() {
207212

208213
// create a domain resource
209214
logger.info("Creating domain custom resource");
215+
Map<String, Quantity> pvCapacity = new HashMap<>();
216+
pvCapacity.put("storage", new Quantity("10Gi"));
217+
218+
Map<String, Quantity> pvcRequest = new HashMap<>();
219+
pvcRequest.put("storage", new Quantity("10Gi"));
220+
221+
Configuration configuration = new Configuration()
222+
.initializeDomainOnPV(new InitializeDomainOnPV()
223+
.persistentVolume(new PersistentVolume()
224+
.metadata(new V1ObjectMeta()
225+
.name(pvName))
226+
.spec(new PersistentVolumeSpec()
227+
.storageClassName(storageClassName)
228+
.capacity(pvCapacity)
229+
.persistentVolumeReclaimPolicy("Retain")
230+
.hostPath(new V1HostPathVolumeSource()
231+
.path(getHostPath(pvName, this.getClass().getSimpleName())))))
232+
.persistentVolumeClaim(new PersistentVolumeClaim()
233+
.metadata(new V1ObjectMeta()
234+
.name(pvcName))
235+
.spec(new PersistentVolumeClaimSpec()
236+
.storageClassName(storageClassName)
237+
.resources(new V1ResourceRequirements()
238+
.requests(pvcRequest))))
239+
.domain(new DomainOnPV()
240+
.createMode(CreateIfNotExists.DOMAIN_AND_RCU)
241+
.domainCreationImages(Collections.singletonList(domainCreationImage))
242+
.domainType(DomainOnPVType.JRF)
243+
.opss(new Opss()
244+
.walletPasswordSecret(opsswalletpassSecretName))));
245+
210246
DomainResource domain = createDomainResourceOnPv(
211-
domainUid,
212-
domainNamespace,
213-
wlSecretName,
214-
clusterName,
215-
pvName,
216-
pvcName,
217-
DOMAINHOMEPREFIX,
218-
replicaCount,
219-
t3ChannelPort,
220-
Collections.singletonList(domainCreationImage),
221-
opsswalletpassSecretName);
247+
domainUid,
248+
domainNamespace,
249+
wlSecretName,
250+
clusterName,
251+
pvName,
252+
pvcName,
253+
DOMAINHOMEPREFIX,
254+
replicaCount,
255+
t3ChannelPort,
256+
configuration);
222257

223258
// Set the inter-pod anti-affinity for the domain custom resource
224259
setPodAntiAffinity(domain);
225260

226261
// create a domain custom resource and verify domain is created
227262
createDomainAndVerify(domain, domainNamespace);
228263

229-
// verify that all servers are ready and EM console is accessible
264+
// verify that all servers are ready
230265
verifyDomainReady(domainNamespace, domainUid, replicaCount, "nosuffix");
266+
267+
// delete the domain
268+
deleteDomainResource(domainNamespace, domainUid);
269+
// delete the cluster
270+
deleteClusterCustomResourceAndVerify(domainUid + "-" + clusterName, domainNamespace);
231271
}
232272

233-
private File createWdtPropertyFile() {
273+
/**
274+
* Create a basic FMW domain on PV using simplified feature.
275+
* User creates PV/PVC, operator creates RCU and domain
276+
* Verify Pod is ready and service exists for both admin server and managed servers.
277+
*/
278+
@Test
279+
@DisplayName("Create a FMW domainon on PV. User creates PV/PVC and operator creates RCU and domain")
280+
void testUserCreatesPvPvcOperatorCreatesRcuDomain() {
281+
String domainUid = "jrfonpv-simplified2";
282+
final String pvName = getUniqueName(domainUid + "-pv-");
283+
final String pvcName = getUniqueName(domainUid + "-pvc-");
284+
final int t3ChannelPort = getNextFreePort();
285+
final String wlSecretName = domainUid + "-weblogic-credentials";
286+
final String fmwModelFile = fmwModelFilePrefix + ".yaml";
287+
288+
// create FMW domain credential secret
289+
createSecretWithUsernamePassword(wlSecretName, domainNamespace,
290+
ADMIN_USERNAME_DEFAULT, ADMIN_PASSWORD_DEFAULT);
291+
292+
// create persistent volume and persistent volume claim for domain
293+
createPV(pvName, domainUid, this.getClass().getSimpleName());
294+
createPVC(pvName, pvcName, domainUid, domainNamespace);
295+
296+
// create a model property file
297+
File fmwModelPropFile = createWdtPropertyFile(domainUid, RCUSCHEMAPREFIX + "2");
298+
299+
// create domainCreationImage
300+
String domainCreationImageName = DOMAIN_IMAGES_REPO + "jrf-domain-on-pv-image2";
301+
// create image with model and wdt installation files
302+
WitParams witParams =
303+
new WitParams()
304+
.modelImageName(domainCreationImageName)
305+
.modelImageTag(MII_BASIC_IMAGE_TAG)
306+
.modelFiles(Collections.singletonList(MODEL_DIR + "/" + fmwModelFile))
307+
.modelVariableFiles(Collections.singletonList(fmwModelPropFile.getAbsolutePath()));
308+
createAndPushAuxiliaryImage(domainCreationImageName, MII_BASIC_IMAGE_TAG, witParams);
309+
310+
DomainCreationImage domainCreationImage =
311+
new DomainCreationImage().image(domainCreationImageName + ":" + MII_BASIC_IMAGE_TAG);
312+
313+
// create opss wallet password secret
314+
String opsswalletpassSecretName = domainUid + "-opss-wallet-password-secret";
315+
logger.info("Create OPSS wallet password secret");
316+
assertDoesNotThrow(() -> createOpsswalletpasswordSecret(
317+
opsswalletpassSecretName,
318+
domainNamespace,
319+
ADMIN_PASSWORD_DEFAULT),
320+
String.format("createSecret failed for %s", opsswalletpassSecretName));
321+
322+
// create a domain resource
323+
logger.info("Creating domain custom resource");
324+
Configuration configuration =
325+
new Configuration()
326+
.initializeDomainOnPV(new InitializeDomainOnPV()
327+
.domain(new DomainOnPV()
328+
.createMode(CreateIfNotExists.DOMAIN_AND_RCU)
329+
.domainCreationImages(Collections.singletonList(domainCreationImage))
330+
.domainType(DomainOnPVType.JRF)
331+
.opss(new Opss()
332+
.walletPasswordSecret(opsswalletpassSecretName))));
333+
334+
DomainResource domain = createDomainResourceOnPv(
335+
domainUid,
336+
domainNamespace,
337+
wlSecretName,
338+
clusterName,
339+
pvName,
340+
pvcName,
341+
DOMAINHOMEPREFIX,
342+
replicaCount,
343+
t3ChannelPort,
344+
configuration);
345+
346+
// Set the inter-pod anti-affinity for the domain custom resource
347+
setPodAntiAffinity(domain);
348+
349+
// create a domain custom resource and verify domain is created
350+
createDomainAndVerify(domain, domainNamespace);
351+
352+
// verify that all servers are ready
353+
verifyDomainReady(domainNamespace, domainUid, replicaCount, "nosuffix");
354+
355+
// delete the domain
356+
deleteDomainResource(domainNamespace, domainUid);
357+
// delete the cluster
358+
deleteClusterCustomResourceAndVerify(domainUid + "-" + clusterName, domainNamespace);
359+
}
360+
361+
private File createWdtPropertyFile(String domainName, String rcuSchemaPrefix) {
234362

235363
// create property file used with domain model file
236364
Properties p = new Properties();
237365
p.setProperty("rcuDb", dbUrl);
238-
p.setProperty("rcuSchemaPrefix", RCUSCHEMAPREFIX);
366+
p.setProperty("rcuSchemaPrefix", rcuSchemaPrefix);
239367
p.setProperty("rcuSchemaPassword", RCUSCHEMAPASSWORD);
240368
p.setProperty("rcuSysPassword", RCUSYSPASSWORD);
241369
p.setProperty("adminUsername", ADMIN_USERNAME_DEFAULT);
242370
p.setProperty("adminPassword", ADMIN_PASSWORD_DEFAULT);
371+
p.setProperty("domainName", domainName);
243372

244373
// create a model property file
245374
File domainPropertiesFile = assertDoesNotThrow(() ->
@@ -263,14 +392,7 @@ private DomainResource createDomainResourceOnPv(String domainUid,
263392
String domainInHomePrefix,
264393
int replicaCount,
265394
int t3ChannelPort,
266-
List<DomainCreationImage> domainCreationImages,
267-
String walletPasswordSecret) {
268-
269-
Map<String, Quantity> pvCapacity = new HashMap<>();
270-
pvCapacity.put("storage", new Quantity("10Gi"));
271-
272-
Map<String, Quantity> pvcRequest = new HashMap<>();
273-
pvcRequest.put("storage", new Quantity("10Gi"));
395+
Configuration configuration) {
274396

275397
// create a domain custom resource configuration object
276398
DomainResource domain = new DomainResource()
@@ -319,38 +441,16 @@ private DomainResource createDomainResourceOnPv(String domainUid,
319441
.addChannelsItem(new Channel()
320442
.channelName("T3Channel")
321443
.nodePort(t3ChannelPort))))
322-
.configuration(new Configuration()
323-
.initializeDomainOnPV(new InitializeDomainOnPV()
324-
.persistentVolume(new PersistentVolume()
325-
.metadata(new V1ObjectMeta()
326-
.name(pvName))
327-
.spec(new PersistentVolumeSpec()
328-
.storageClassName(storageClassName)
329-
.capacity(pvCapacity)
330-
.persistentVolumeReclaimPolicy("Retain")
331-
.hostPath(new V1HostPathVolumeSource()
332-
.path(getHostPath(pvName, this.getClass().getSimpleName())))))
333-
.persistentVolumeClaim(new PersistentVolumeClaim()
334-
.metadata(new V1ObjectMeta()
335-
.name(pvcName))
336-
.spec(new PersistentVolumeClaimSpec()
337-
.storageClassName(storageClassName)
338-
.resources(new V1ResourceRequirements()
339-
.requests(pvcRequest))))
340-
.domain(new DomainOnPV()
341-
.createMode(CreateIfNotExists.DOMAIN_AND_RCU)
342-
.domainCreationImages(domainCreationImages)
343-
.domainType(DomainOnPVType.JRF)
344-
.opss(new Opss()
345-
.walletPasswordSecret(walletPasswordSecret))))));
444+
.configuration(configuration));
346445

347446
// create cluster resource for the domain
348-
if (!Cluster.doesClusterExist(clusterName, CLUSTER_VERSION, domainNamespace)) {
349-
ClusterResource cluster = createClusterResource(clusterName,
447+
String clusterResName = domainUid + "-" + clusterName;
448+
if (!Cluster.doesClusterExist(clusterResName, CLUSTER_VERSION, domainNamespace)) {
449+
ClusterResource cluster = createClusterResource(clusterResName,
350450
clusterName, domainNamespace, replicaCount);
351451
createClusterAndVerify(cluster);
352452
}
353-
domain.getSpec().withCluster(new V1LocalObjectReference().name(clusterName));
453+
domain.getSpec().withCluster(new V1LocalObjectReference().name(clusterResName));
354454

355455
return domain;
356456
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /