Skip to content

Commit 0c7483b

Browse files
committed
add mixed cluster test
1 parent 4ef4fbe commit 0c7483b

File tree

2 files changed

+231
-3
lines changed

2 files changed

+231
-3
lines changed

integration-tests/src/test/java/oracle/kubernetes/operator/ITMultipleClusters.java

Lines changed: 64 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public class ITMultipleClusters extends BaseTest {
3838
private static Operator operatorForRESTCertChain;
3939

4040
private static String TWO_CONFIGURED_CLUSTER_SCRIPT = "create-domain-two-configured-cluster.py";
41-
private static final String DOMAINUID = "mixedclusterdomain";
41+
private static String TWO_MIXED_CLUSTER_SCRIPT = "create-domain-two-mixed-cluster.py";
4242

4343
/**
4444
* This method gets called only once before any of the test methods are executed. It does the
@@ -84,6 +84,7 @@ public static void staticUnPrepare() throws Exception {
8484
*/
8585
@Test
8686
public void testCreateDomainTwoConfiguredCluster() throws Exception {
87+
String DOMAINUID = "twoconfiguredclusterdomain";
8788
String testMethodName = new Object() {}.getClass().getEnclosingMethod().getName();
8889
logTestBegin(testMethodName);
8990
String template =
@@ -111,9 +112,69 @@ public void testCreateDomainTwoConfiguredCluster() throws Exception {
111112
if (!Files.exists(Paths.get(template + ".org"))) {
112113
Files.copy(Paths.get(template), Paths.get(template + ".org"));
113114
}
114-
logger.info("Appended the domain template file");
115115
Files.write(Paths.get(template), add.getBytes(), StandardOpenOption.APPEND);
116-
logger.info("Appended the domain template file");
116+
domain = TestUtils.createDomain(domainMap);
117+
domain.verifyDomainCreated();
118+
K8sTestUtils testUtil = new K8sTestUtils();
119+
String domain1LabelSelector = String.format("weblogic.domainUID in (%s)", DOMAINUID);
120+
String namespace = domain.getDomainNS();
121+
String pods[] = {
122+
DOMAINUID + "-" + domain.getAdminServerName(),
123+
DOMAINUID + "-managed-server",
124+
DOMAINUID + "-managed-server1",
125+
DOMAINUID + "-managed-server2",
126+
DOMAINUID + "-new-managed-server1",
127+
DOMAINUID + "-new-managed-server2",
128+
};
129+
for (String pod : pods) {
130+
assertTrue(
131+
pod + " Pod not running", testUtil.isPodRunning(namespace, domain1LabelSelector, pod));
132+
}
133+
134+
testBasicUseCases(domain);
135+
if (!SMOKETEST) domain.testWlsLivenessProbe();
136+
testCompletedSuccessfully = true;
137+
} finally {
138+
if (domain != null && !SMOKETEST && (JENKINS || testCompletedSuccessfully)) {
139+
Files.copy(
140+
Paths.get(template + ".org"), Paths.get(template), StandardCopyOption.REPLACE_EXISTING);
141+
Files.delete(Paths.get(template + ".org"));
142+
}
143+
domain.shutdownUsingServerStartPolicy();
144+
}
145+
logger.info("SUCCESS - " + testMethodName);
146+
}
147+
148+
@Test
149+
public void testCreateDomainTwoMixedCluster() throws Exception {
150+
String DOMAINUID = "twomixedclusterdomain";
151+
String testMethodName = new Object() {}.getClass().getEnclosingMethod().getName();
152+
logTestBegin(testMethodName);
153+
String template =
154+
BaseTest.getProjectRoot() + "/kubernetes/samples/scripts/common/domain-template.yaml";
155+
logger.info("Creating Operator & waiting for the script to complete execution");
156+
// create operator1
157+
if (operator1 == null) {
158+
operator1 = TestUtils.createOperator(OPERATOR1_YAML);
159+
}
160+
Domain domain = null;
161+
boolean testCompletedSuccessfully = false;
162+
try {
163+
Map<String, Object> domainMap = TestUtils.loadYaml(DOMAINONPV_WLST_YAML);
164+
domainMap.put("domainUID", DOMAINUID);
165+
domainMap.put(
166+
"createDomainPyScript",
167+
"integration-tests/src/test/resources/domain-home-on-pv/" + TWO_MIXED_CLUSTER_SCRIPT);
168+
169+
String add =
170+
" - clusterName: %CLUSTER_NAME%-2\n"
171+
+ " serverStartState: \"RUNNING\"\n"
172+
+ " replicas: %INITIAL_MANAGED_SERVER_REPLICAS%\n";
173+
logger.info("Making a backup of the domain template file:" + template);
174+
if (!Files.exists(Paths.get(template + ".org"))) {
175+
Files.copy(Paths.get(template), Paths.get(template + ".org"));
176+
}
177+
Files.write(Paths.get(template), add.getBytes(), StandardOpenOption.APPEND);
117178
domain = TestUtils.createDomain(domainMap);
118179
domain.verifyDomainCreated();
119180
K8sTestUtils testUtil = new K8sTestUtils();
Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
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 http://oss.oracle.com/licenses/upl.
3+
4+
def getEnvVar(var):
5+
val=os.environ.get(var)
6+
if val==None:
7+
print "ERROR: Env var ",var, " not set."
8+
sys.exit(1)
9+
return val
10+
11+
# This python script is used to create a WebLogic domain
12+
13+
domain_uid = getEnvVar("DOMAIN_UID")
14+
server_port = int(getEnvVar("MANAGED_SERVER_PORT"))
15+
domain_path = getEnvVar("DOMAIN_HOME")
16+
cluster_name = getEnvVar("CLUSTER_NAME")
17+
admin_server_name = getEnvVar("ADMIN_SERVER_NAME")
18+
admin_server_name_svc = getEnvVar("ADMIN_SERVER_NAME_SVC")
19+
admin_port = int(getEnvVar("ADMIN_PORT"))
20+
domain_name = getEnvVar("DOMAIN_NAME")
21+
t3_channel_port = int(getEnvVar("T3_CHANNEL_PORT"))
22+
t3_public_address = getEnvVar("T3_PUBLIC_ADDRESS")
23+
number_of_ms = int(getEnvVar("CONFIGURED_MANAGED_SERVER_COUNT"))
24+
cluster_type = getEnvVar("CLUSTER_TYPE")
25+
managed_server_name_base = getEnvVar("MANAGED_SERVER_NAME_BASE")
26+
managed_server_name_base_svc = getEnvVar("MANAGED_SERVER_NAME_BASE_SVC")
27+
domain_logs = getEnvVar("DOMAIN_LOGS_DIR")
28+
script_dir = getEnvVar("CREATE_DOMAIN_SCRIPT_DIR")
29+
production_mode_enabled = getEnvVar("PRODUCTION_MODE_ENABLED")
30+
31+
32+
cluster_name_2 = cluster_name + "-2"
33+
managed_server_name_base_2 = "new-" + managed_server_name_base
34+
managed_server_name_base_svc_2 = "new-" + managed_server_name_base_svc
35+
36+
# Read the domain secrets from the common python file
37+
execfile('%s/read-domain-secret.py' % script_dir)
38+
39+
print('domain_path : [%s]' % domain_path);
40+
print('domain_name : [%s]' % domain_name);
41+
print('admin_server_name : [%s]' % admin_server_name);
42+
print('admin_username : [%s]' % admin_username);
43+
print('admin_port : [%s]' % admin_port);
44+
print('cluster_name : [%s]' % cluster_name);
45+
print('cluster_name_2 : [%s]' % cluster_name_2);
46+
print('server_port : [%s]' % server_port);
47+
# Open default domain template
48+
# ============================
49+
readTemplate("/u01/oracle/wlserver/common/templates/wls/wls.jar")
50+
51+
set('Name', domain_name)
52+
setOption('DomainName', domain_name)
53+
create(domain_name,'Log')
54+
cd('/Log/%s' % domain_name);
55+
set('FileName', '%s/%s.log' % (domain_logs, domain_name))
56+
57+
# Configure the Administration Server
58+
# ===================================
59+
cd('/Servers/AdminServer')
60+
set('ListenAddress', '%s-%s' % (domain_uid, admin_server_name_svc))
61+
set('ListenPort', admin_port)
62+
set('Name', admin_server_name)
63+
64+
create('T3Channel', 'NetworkAccessPoint')
65+
cd('/Servers/%s/NetworkAccessPoints/T3Channel' % admin_server_name)
66+
set('PublicPort', t3_channel_port)
67+
set('PublicAddress', t3_public_address)
68+
set('ListenAddress', '%s-%s' % (domain_uid, admin_server_name_svc))
69+
set('ListenPort', t3_channel_port)
70+
cd('/Servers/%s' % admin_server_name)
71+
create(admin_server_name, 'Log')
72+
cd('/Servers/%s/Log/%s' % (admin_server_name, admin_server_name))
73+
set('FileName', '%s/%s.log' % (domain_logs, admin_server_name))
74+
75+
# Set the admin user's username and password
76+
# ==========================================
77+
cd('/Security/%s/User/weblogic' % domain_name)
78+
cmo.setName(admin_username)
79+
cmo.setPassword(admin_password)
80+
81+
# Write the domain and close the domain template
82+
# ==============================================
83+
setOption('OverwriteDomain', 'true')
84+
85+
# Create a cluster
86+
# ======================
87+
cd('/')
88+
cl=create(cluster_name, 'Cluster')
89+
c2=create(cluster_name_2, 'Cluster')
90+
91+
# Create Independent Managed Server
92+
name = '%s' %(managed_server_name_base)
93+
name_svc = '%s' %(managed_server_name_base_svc)
94+
cd('/')
95+
create(name, 'Server')
96+
cd('/Servers/%s/' % name )
97+
print('managed server name is %s' % name);
98+
set('ListenAddress', '%s-%s' % (domain_uid, name_svc))
99+
set('ListenPort', server_port)
100+
set('NumOfRetriesBeforeMSIMode', 0)
101+
set('RetryIntervalBeforeMSIMode', 1)
102+
103+
104+
for index in range(0, number_of_ms):
105+
cd('/')
106+
msIndex = index+1
107+
name = '%s%s' % (managed_server_name_base, msIndex)
108+
name_svc = '%s%s' % (managed_server_name_base_svc, msIndex)
109+
110+
create(name, 'Server')
111+
cd('/Servers/%s/' % name )
112+
print('managed server name is %s' % name);
113+
set('ListenAddress', '%s-%s' % (domain_uid, name_svc))
114+
set('ListenPort', server_port)
115+
set('NumOfRetriesBeforeMSIMode', 0)
116+
set('RetryIntervalBeforeMSIMode', 1)
117+
set('Cluster', cluster_name)
118+
119+
print('Configuring Dynamic Cluster %s' % cluster_name2)
120+
templateName = cluster_name2 + "-template"
121+
print('Creating Server Template: %s' % templateName)
122+
st1=create(templateName, 'ServerTemplate')
123+
print('Done creating Server Template: %s' % templateName)
124+
cd('/ServerTemplates/%s' % templateName)
125+
cmo.setListenPort(server_port)
126+
cmo.setListenAddress('%s-%s${id}' % (domain_uid, managed_server_name_base_svc_2))
127+
cmo.setCluster(c2)
128+
create(templateName,'Log')
129+
cd('Log/%s' % templateName)
130+
set('FileName', '%s/%s${id}.log' % (domain_logs, managed_server_name_base_2))
131+
print('Done setting attributes for Server Template: %s' % templateName);
132+
133+
cd('/Clusters/%s' % cluster_name2)
134+
create(cluster_name, 'DynamicServers')
135+
cd('DynamicServers/%s' % cluster_name2)
136+
set('ServerTemplate', st1)
137+
set('ServerNamePrefix', managed_server_name_base_2)
138+
set('DynamicClusterSize', number_of_ms)
139+
set('MaxDynamicClusterSize', number_of_ms)
140+
set('CalculatedListenPorts', false)
141+
set('Id', 1)
142+
143+
print('Done setting attributes for Dynamic Cluster: %s' % cluster_name2);
144+
145+
# Write Domain
146+
# ============
147+
writeDomain(domain_path)
148+
closeTemplate()
149+
print 'Domain Created'
150+
151+
# Update Domain
152+
readDomain(domain_path)
153+
cd('/')
154+
if production_mode_enabled == "true":
155+
cmo.setProductionModeEnabled(true)
156+
else:
157+
cmo.setProductionModeEnabled(false)
158+
updateDomain()
159+
160+
closeDomain()
161+
print 'Domain Updated'
162+
print 'Done'
163+
164+
# Exit WLST
165+
# =========
166+
exit()
167+

0 commit comments

Comments
 (0)