Skip to content

Commit 2b66dc2

Browse files
committed
Improve AQA_Test_Pipeline for release testing
related: #5510 Signed-off-by: Lan Xia <[email protected]>
1 parent b2c46b9 commit 2b66dc2

File tree

3 files changed

+193
-32
lines changed

3 files changed

+193
-32
lines changed

buildenv/jenkins/aqaTestPipeline.groovy

+126-32
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,16 @@ def TARGETS = params.TARGETS ?: "Grinder"
66
TARGETS = TARGETS.trim().split("\\s*,\\s*")
77

88
def PARALLEL = params.PARALLEL ? params.PARALLEL : "Dynamic"
9-
def NUM_MACHINES = params.NUM_MACHINES ? params.NUM_MACHINES : 3
9+
10+
def NUM_MACHINES = ""
11+
if (params.NUM_MACHINES) {
12+
NUM_MACHINES = params.NUM_MACHINES
13+
} else if (!params.TEST_TIME) {
14+
NUM_MACHINES = 3
15+
}
1016
def SDK_RESOURCE = params.SDK_RESOURCE ? params.SDK_RESOURCE : "releases"
1117
def TIME_LIMIT = params.TIME_LIMIT ? params.TIME_LIMIT : 10
12-
def AUTO_AQA_GEN = params.AUTO_AQA_GEN ? params.AUTO_AQA_GEN : false
18+
def AUTO_AQA_GEN = params.AUTO_AQA_GEN ? params.AUTO_AQA_GEN.toBoolean() : false
1319
def TRSS_URL = params.TRSS_URL ? params.TRSS_URL : "https://trss.adoptium.net/"
1420
def TEST_FLAG = (params.TEST_FLAG) ?: ""
1521
def LIGHT_WEIGHT_CHECKOUT = params.LIGHT_WEIGHT_CHECKOUT ?: false
@@ -18,20 +24,62 @@ def LIGHT_WEIGHT_CHECKOUT = params.LIGHT_WEIGHT_CHECKOUT ?: false
1824
def DEFAULT_SUFFIX = (env.BUILD_USER_ID) ? "${env.BUILD_USER_ID} - jdk-${params.JDK_VERSIONS}" : "jdk-${params.JDK_VERSIONS}"
1925
def PIPELINE_DISPLAY_NAME = (params.PIPELINE_DISPLAY_NAME) ? "#${currentBuild.number} - ${params.PIPELINE_DISPLAY_NAME}" : "#${currentBuild.number} - ${DEFAULT_SUFFIX}"
2026

21-
def JOBS = [:]
22-
2327
// Set the AQA_TEST_PIPELINE Jenkins job displayName
2428
currentBuild.setDisplayName(PIPELINE_DISPLAY_NAME)
2529

26-
def suffix = ""
27-
if (TEST_FLAG) {
28-
suffix = "_" + TEST_FLAG.toLowerCase().trim()
29-
}
30+
def defaultTestTargets = "sanity.functional,extended.functional,special.functional,sanity.openjdk,extended.openjdk,sanity.system,extended.system,sanity.perf,extended.perf"
31+
def defaultFipsTestTargets = "sanity.functional,extended.functional,sanity.openjdk,extended.openjdk,sanity.jck,extended.jck,special.jck"
32+
33+
JOBS = [:]
34+
fail = false
3035

31-
def fail = false
32-
int jobNum = 0
3336
JDK_VERSIONS.each { JDK_VERSION ->
34-
PLATFORMS.each { PLATFORM ->
37+
if (params.PLATFORMS == "release") {
38+
def configJson = []
39+
node("worker || (ci.role.test&&hw.arch.x86&&sw.os.linux)") {
40+
checkout scm
41+
dir (env.WORKSPACE) {
42+
def filePath = "./aqa-tests/buildenv/jenkins/config/${params.VARIANT}/"
43+
filePath = filePath + "default.json"
44+
if (fileExists(filePath + "jdk${JDK_VERSION}.json")) {
45+
filePath = filePath + "jdk${JDK_VERSION}.json"
46+
}
47+
configJson = readJSON(file: filePath)
48+
}
49+
}
50+
51+
configJson.each { item ->
52+
def releaseTestFlag = ""
53+
releaseTestFlag = item.TEST_FLAG
54+
item.PLATFORM_TARGETS.each { pt ->
55+
pt.each{ p, t ->
56+
def releasePlatform = p
57+
def releaseTargets = ""
58+
if (t.contains("defaultFipsTestTargets")) {
59+
releaseTargets = t.replace("defaultFipsTestTargets","${defaultFipsTestTargets}")
60+
} else {
61+
releaseTargets = t.replace("defaultTestTargets","${defaultTestTargets}")
62+
}
63+
String[] releasePlatformArray = releasePlatform.split("\\s*,\\s*")
64+
String[] releaseTargetsArray = releaseTargets.split("\\s*,\\s*")
65+
generateJobs(JDK_VERSION, releaseTestFlag, releasePlatformArray, releaseTargetsArray)
66+
}
67+
}
68+
}
69+
} else {
70+
generateJobs(JDK_VERSION, TEST_FLAG, PLATFORMS, TARGETS)
71+
}
72+
}
73+
parallel JOBS
74+
if (fail) {
75+
currentBuild.result = "FAILURE"
76+
}
77+
78+
def generateJobs(jobJdkVersion, jobTestFlag, jobPlatforms, jobTargets) {
79+
if (jobTestFlag == "NONE") {
80+
jobTestFlag = ""
81+
}
82+
jobPlatforms.each { PLATFORM ->
3583
String[] tokens = PLATFORM.split('_')
3684
def os = tokens[1];
3785
def arch = tokens[0];
@@ -63,30 +111,76 @@ JDK_VERSIONS.each { JDK_VERSION ->
63111
if (params.VARIANT == "openj9") {
64112
// get IBM Semeru CE
65113
sdk_resource_value = "customized"
66-
download_url="https://ibm.com/semeru-runtimes/api/v3/binary/latest/${JDK_VERSION}/ga/${os}/${arch}/jdk/openj9/normal/ibm_ce https://ibm.com/semeru-runtimes/api/v3/binary/latest/${JDK_VERSION}/ga/${os}/${arch}/testimage/openj9/normal/ibm_ce"
114+
download_url="https://ibm.com/semeru-runtimes/api/v3/binary/latest/${jobJdkVersion}/ga/${os}/${arch}/jdk/openj9/normal/ibm_ce https://ibm.com/semeru-runtimes/api/v3/binary/latest/${jobJdkVersion}/ga/${os}/${arch}/testimage/openj9/normal/ibm_ce"
67115
}
68116
}
69117
echo "download_url: ${download_url}"
70118

71-
TARGETS.each { TARGET ->
119+
jobTargets.each { TARGET ->
72120
def TEST_JOB_NAME = "Grinder"
73121
if (TARGET.contains("Grinder")) {
74122
TEST_JOB_NAME = TARGET
75123
} else {
76-
TEST_JOB_NAME = "Test_openjdk${JDK_VERSION}_${short_name}_${TARGET}_${PLATFORM}${suffix}"
124+
def suffix = ""
125+
if (jobTestFlag) {
126+
suffix = "_" + jobTestFlag.toLowerCase().trim()
127+
}
128+
TEST_JOB_NAME = "Test_openjdk${jobJdkVersion}_${short_name}_${TARGET}_${PLATFORM}${suffix}"
77129
}
78130
echo "TEST_JOB_NAME: ${TEST_JOB_NAME}"
79131

80132
def keep_reportdir = false
81-
if (TARGET.contains("jck") || TARGET.contains("openjdk") || TARGET.contains("osb")) {
133+
if (TARGET.contains("functional") || TARGET.contains("jck") || TARGET.contains("openjdk") || TARGET.contains("osb")) {
82134
keep_reportdir = true
83135
}
84-
if (TARGET.contains("functional") || TARGET.contains("perf")) {
85-
if (params.VARIANT == "temurin") {
86-
PARALLEL = "None"
136+
137+
def DYNAMIC_COMPILE = false
138+
if (!params.DYNAMIC_COMPILE) {
139+
if (("${TARGET}".contains('functional')) || ("${TARGET}".contains('external'))) {
140+
DYNAMIC_COMPILE = true
141+
} else {
142+
DYNAMIC_COMPILE = false
87143
}
144+
} else {
145+
DYNAMIC_COMPILE = params.DYNAMIC_COMPILE ? params.DYNAMIC_COMPILE.toBoolean() : false
88146
}
89147

148+
def VENDOR_TEST_REPOS = ''
149+
def VENDOR_TEST_BRANCHES = ''
150+
def VENDOR_TEST_DIRS = ''
151+
int rerunIterations = params.RERUN_ITERATIONS ? params.RERUN_ITERATIONS.toInteger() : 0
152+
if (params.VARIANT == "openj9") {
153+
// default rerunIterations is 3 for openj9
154+
rerunIterations = params.RERUN_ITERATIONS ? params.RERUN_ITERATIONS.toInteger() : 3
155+
if (TARGET.contains('external')) {
156+
PARALLEL = "None"
157+
rerunIterations = 0
158+
} else if (TARGET.contains('functional')) {
159+
VENDOR_TEST_REPOS = '[email protected]:runtimes/test.git'
160+
VENDOR_TEST_BRANCHES = params.ADOPTOPENJDK_BRANCH ?: 'master'
161+
VENDOR_TEST_DIRS = 'functional'
162+
} else if (TARGET.contains('jck')) {
163+
VENDOR_TEST_REPOS = '[email protected]:runtimes/jck.git'
164+
VENDOR_TEST_BRANCHES = "main"
165+
VENDOR_TEST_DIRS = 'jck'
166+
} else if (TARGET.contains('openjdk')) {
167+
// only use osb repo for regular testing
168+
if (TARGET.contains('special') && jobTestFlag == "") {
169+
VENDOR_TEST_REPOS = '[email protected]:runtimes/osb-tests.git'
170+
VENDOR_TEST_BRANCHES = "ibm_tlda"
171+
VENDOR_TEST_DIRS = 'openjdk'
172+
}
173+
}
174+
175+
if (TARGET.contains("FIPS") || (TARGET.contains("dev"))) {
176+
rerunIterations = 0
177+
}
178+
} else if (params.VARIANT == "temurin") {
179+
if (TARGET.contains("functional") || TARGET.contains("perf")) {
180+
PARALLEL = "None"
181+
}
182+
}
183+
echo "AUTO_AQA_GEN: ${AUTO_AQA_GEN}"
90184
// Grinder job has special settings and should be regenerated specifically, not via aqaTestPipeline
91185
if (AUTO_AQA_GEN && !TEST_JOB_NAME.contains("Grinder")) {
92186
String[] targetTokens = TARGET.split("\\.")
@@ -96,7 +190,7 @@ JDK_VERSIONS.each { JDK_VERSION ->
96190
string(name: 'TEST_JOB_NAME', value: TEST_JOB_NAME),
97191
string(name: 'LEVELS', value: level),
98192
string(name: 'GROUPS', value: group),
99-
string(name: 'JDK_VERSIONS', value: JDK_VERSION),
193+
string(name: 'JDK_VERSIONS', value: jobJdkVersion),
100194
string(name: 'ARCH_OS_LIST', value: PLATFORM),
101195
string(name: 'JDK_IMPL', value: jdk_impl),
102196
booleanParam(name: 'LIGHT_WEIGHT_CHECKOUT', value: LIGHT_WEIGHT_CHECKOUT)
@@ -124,8 +218,8 @@ JDK_VERSIONS.each { JDK_VERSION ->
124218
childParams << booleanParam(name: param.key, value: LIGHT_WEIGHT_CHECKOUT.toBoolean())
125219
} else if (param.key == "TIME_LIMIT") {
126220
childParams << string(name: param.key, value: TIME_LIMIT.toString())
127-
} else if (param.key == "TRSS_URL") {
128-
childParams << string(name: param.key, value: TRSS_URL)
221+
} else if (param.key == "TEST_FLAG") {
222+
childParams << string(name: param.key, value: jobTestFlag)
129223
} else if (param.key == "KEEP_REPORTDIR") {
130224
childParams << booleanParam(name: param.key, value: keep_reportdir.toBoolean())
131225
} else {
@@ -137,17 +231,22 @@ JDK_VERSIONS.each { JDK_VERSION ->
137231
}
138232
}
139233
}
234+
childParams << booleanParam(name: "DYNAMIC_COMPILE", value: DYNAMIC_COMPILE.toBoolean())
140235
childParams << booleanParam(name: "GENERATE_JOBS", value: AUTO_AQA_GEN.toBoolean())
141-
childParams << string(name: "JDK_VERSION", value: JDK_VERSION)
142-
childParams << string(name: "PLATFORM", value: PLATFORM)
143236
childParams << string(name: "JDK_IMPL", value: jdk_impl)
237+
childParams << string(name: "JDK_VERSION", value: jobJdkVersion)
238+
childParams << string(name: "PLATFORM", value: PLATFORM)
239+
childParams << string(name: "RERUN_ITERATIONS", value: rerunIterations.toString())
240+
childParams << string(name: "VENDOR_TEST_BRANCHES", value: VENDOR_TEST_BRANCHES)
241+
childParams << string(name: "VENDOR_TEST_DIRS", value: VENDOR_TEST_DIRS)
242+
childParams << string(name: "VENDOR_TEST_REPOS", value: VENDOR_TEST_REPOS)
144243

145-
jobNum++
244+
int jobNum = JOBS.size() + 1
146245
JOBS["${TEST_JOB_NAME}_${jobNum}"] = {
147246
def downstreamJob = build job: TEST_JOB_NAME, parameters: childParams, propagate: false, wait: true
148247
def downstreamJobResult = downstreamJob.getResult()
149-
echo " ${TEST_JOB_NAME} result is ${downstreamJobResult}"
150-
if (downstreamJob.getResult() == 'SUCCESS' || downstreamJob.getResult() == 'UNSTABLE') {
248+
echo "${TEST_JOB_NAME} result is ${downstreamJobResult}"
249+
if (downstreamJobResult == 'SUCCESS' || downstreamJobResult == 'UNSTABLE') {
151250
echo "[NODE SHIFT] MOVING INTO CONTROLLER NODE..."
152251
node("worker || (ci.role.test&&hw.arch.x86&&sw.os.linux)") {
153252
cleanWs disableDeferredWipeout: true, deleteDirs: true
@@ -185,9 +284,4 @@ JDK_VERSIONS.each { JDK_VERSION ->
185284
}
186285
}
187286
}
188-
}
189-
parallel JOBS
190-
if (fail) {
191-
currentBuild.result = "FAILURE"
192-
}
193-
287+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
[
2+
{
3+
"TEST_FLAG" : "NONE",
4+
"PLATFORM_TARGETS" : [
5+
{ "aarch64_linux" : "defaultTestTargets,dev.external" },
6+
{ "aarch64_mac" : "defaultTestTargets" },
7+
{ "ppc64_aix" : "defaultTestTargets" },
8+
{ "ppc64le_linux" : "defaultTestTargets,dev.external" },
9+
{ "s390x_linux" : "defaultTestTargets,dev.external" },
10+
{ "x86-64_linux" : "defaultTestTargets,dev.external" },
11+
{ "x86-64_mac" : "defaultTestTargets" },
12+
{ "x86-64_windows" : "defaultTestTargets" }
13+
]
14+
},
15+
{
16+
"TEST_FLAG" : "FIPS140_2",
17+
"PLATFORM_TARGETS" : [
18+
{ "ppc64le_linux" : "defaultFipsTestTargets" },
19+
{ "s390x_linux" : "defaultFipsTestTargets" },
20+
{ "x86-64_linux" : "defaultFipsTestTargets" }
21+
]
22+
},
23+
{
24+
"TEST_FLAG" : "FIPS140_3_OpenJCEPlusFIPS",
25+
"PLATFORM_TARGETS" : [
26+
{ "ppc64_aix" : "defaultFipsTestTargets" },
27+
{ "ppc64le_linux" : "defaultFipsTestTargets" },
28+
{ "s390x_linux" : "defaultFipsTestTargets" },
29+
{ "x86-64_linux" : "defaultFipsTestTargets" },
30+
{ "x86-64_windows" : "defaultFipsTestTargets" }
31+
]
32+
},
33+
{
34+
"TEST_FLAG" : "FIPS140_3_OpenJCEPlusFIPS.FIPS140-3",
35+
"PLATFORM_TARGETS" : [
36+
{ "ppc64_aix" : "defaultFipsTestTargets" },
37+
{ "ppc64le_linux" : "defaultFipsTestTargets" },
38+
{ "s390x_linux" : "defaultFipsTestTargets" },
39+
{ "x86-64_linux" : "defaultFipsTestTargets" },
40+
{ "x86-64_windows" : "defaultFipsTestTargets" }
41+
]
42+
}
43+
]
+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
[
2+
{
3+
"TEST_FLAG" : "NONE",
4+
"PLATFORM_TARGETS" : [
5+
{ "aarch64_linux" : "defaultTestTargets" },
6+
{ "aarch64_mac" : "defaultTestTargets" },
7+
{ "ppc64_aix" : "defaultTestTargets" },
8+
{ "ppc64le_linux" : "defaultTestTargets" },
9+
{ "s390x_linux" : "defaultTestTargets" },
10+
{ "x86-64_linux" : "defaultTestTargets" },
11+
{ "x86-64_mac" : "defaultTestTargets" },
12+
{ "x86-64_windows" : "defaultTestTargets" },
13+
{ "x86-32_windows" : "defaultTestTargets" }
14+
]
15+
},
16+
{
17+
"TEST_FLAG" : "FIPS140_2",
18+
"PLATFORM_TARGETS" : [
19+
{ "ppc64le_linux" : "defaultFipsTestTargets" },
20+
{ "s390x_linux" : "defaultFipsTestTargets" },
21+
{ "x86-64_linux" : "defaultFipsTestTargets" }
22+
]
23+
}
24+
]

0 commit comments

Comments
 (0)