summaryrefslogtreecommitdiff
path: root/netci.groovy
diff options
context:
space:
mode:
authorNoah Falk <noahfalk@users.noreply.github.com>2018-07-16 13:48:37 -0700
committerGitHub <noreply@github.com>2018-07-16 13:48:37 -0700
commit37322ac660acffa1543d8338c118417d48571f1c (patch)
tree0c888914c4f79388daa0d14729c30cb9094a4f31 /netci.groovy
parentc389865009b7f000a7d477edf7a3f3fe6c877d77 (diff)
downloadcoreclr-37322ac660acffa1543d8338c118417d48571f1c.tar.gz
coreclr-37322ac660acffa1543d8338c118417d48571f1c.tar.bz2
coreclr-37322ac660acffa1543d8338c118417d48571f1c.zip
Add no tiered compilation test jobs (#18864)
* Add no tiered compilation test jobs With the upcoming switch to make tiered compilation on by default we want to preserve some JIT testing that will not enable tiered compilation. 1) Add 'no_tiered_compilation_pri0' jit stress job, logically the non-tiered variant of current 'Innerloop' jobs - This job will run on all PRs for Checked x (Windows x86, Windows x64, Ubuntu arm) - but not scheduled that way for the moment so it can be tested post-checkin 2) Add 'no_tiered_compilation' jit stress job, logically the non-tiered variant of the current 'normal' job - This job has the same periodic schedule as other jit stress jobs 3) Add 'r2r_no_tiered_compilation' r2r stress job, logically the non-tiered variant of the current 'r2r' job - This job has the same periodic schedule as other r2r stress jobs Misc adjustments - Added isPri0TestScenario because 'innerloop' is no longer the only scenario name which has this property + eliminated various comments that implied 'innerloop' IFF pri0
Diffstat (limited to 'netci.groovy')
-rwxr-xr-xnetci.groovy60
1 files changed, 45 insertions, 15 deletions
diff --git a/netci.groovy b/netci.groovy
index db99a2849d..20785e1a47 100755
--- a/netci.groovy
+++ b/netci.groovy
@@ -69,7 +69,9 @@ class Constants {
// the values are the environment variables
def static jitStressModeScenarios = [
'minopts' : ['COMPlus_TieredCompilation' : '0', 'COMPlus_JITMinOpts' : '1'],
- 'tieredcompilation' : ['COMPlus_TieredCompilation' : '1'],
+ 'tieredcompilation' : ['COMPlus_TieredCompilation' : '1'], // this can be removed once tiered compilation is on by default
+ 'no_tiered_compilation' : ['COMPlus_TieredCompilation' : '0'],
+ 'no_tiered_compilation_innerloop': ['COMPlus_TieredCompilation' : '0'],
'forcerelocs' : ['COMPlus_TieredCompilation' : '0', 'COMPlus_ForceRelocs' : '1'],
'jitstress1' : ['COMPlus_TieredCompilation' : '0', 'COMPlus_JitStress' : '1'],
'jitstress2' : ['COMPlus_TieredCompilation' : '0', 'COMPlus_JitStress' : '2'],
@@ -101,7 +103,7 @@ class Constants {
'jitnox86hwintrinsic' : ['COMPlus_TieredCompilation' : '0', 'COMPlus_EnableIncompleteISAClass' : '1', 'COMPlus_EnableSSE' : '0' , 'COMPlus_EnableSSE2' : '0' , 'COMPlus_EnableSSE3' : '0' , 'COMPlus_EnableSSSE3' : '0' , 'COMPlus_EnableSSE41' : '0' , 'COMPlus_EnableSSE42' : '0' , 'COMPlus_EnableAVX' : '0' , 'COMPlus_EnableAVX2' : '0' , 'COMPlus_EnableAES' : '0' , 'COMPlus_EnableBMI1' : '0' , 'COMPlus_EnableBMI2' : '0' , 'COMPlus_EnableFMA' : '0' , 'COMPlus_EnableLZCNT' : '0' , 'COMPlus_EnablePCLMULQDQ' : '0' , 'COMPlus_EnablePOPCNT' : '0'],
'corefx_baseline' : ['COMPlus_TieredCompilation' : '0'], // corefx baseline
'corefx_minopts' : ['COMPlus_TieredCompilation' : '0', 'COMPlus_JITMinOpts' : '1'],
- 'corefx_tieredcompilation' : ['COMPlus_TieredCompilation' : '1'],
+ 'corefx_tieredcompilation' : ['COMPlus_TieredCompilation' : '1'], // this can be removed once tiered compilation is on by default
'corefx_jitstress1' : ['COMPlus_TieredCompilation' : '0', 'COMPlus_JitStress' : '1'],
'corefx_jitstress2' : ['COMPlus_TieredCompilation' : '0', 'COMPlus_JitStress' : '2'],
'corefx_jitstressregs1' : ['COMPlus_TieredCompilation' : '0', 'COMPlus_JitStressRegs' : '1'],
@@ -140,7 +142,8 @@ class Constants {
'r2r_jitstressregs0x1000' : ['COMPlus_TieredCompilation' : '0', "COMPlus_JitStressRegs": "0x1000"],
'r2r_jitminopts' : ['COMPlus_TieredCompilation' : '0', "COMPlus_JITMinOpts": "1"],
'r2r_jitforcerelocs' : ['COMPlus_TieredCompilation' : '0', "COMPlus_ForceRelocs": "1"],
- 'r2r_gcstress15' : ['COMPlus_TieredCompilation' : '0', "COMPlus_GCStress": "0xF"]
+ 'r2r_gcstress15' : ['COMPlus_TieredCompilation' : '0', "COMPlus_GCStress": "0xF"],
+ 'r2r_no_tiered_compilation' : ['COMPlus_TieredCompilation' : '0'],
]
// This is the basic set of scenarios
@@ -254,8 +257,11 @@ class Constants {
'r2r_jitminopts': ["R2R_FAIL", "R2R_EXCLUDE", "JITSTRESS_FAIL", "JITSTRESS_EXCLUDE", "MINOPTS_FAIL", "MINOPTS_EXCLUDE"],
'r2r_jitforcerelocs': ["R2R_FAIL", "R2R_EXCLUDE", "JITSTRESS_FAIL", "JITSTRESS_EXCLUDE"],
'r2r_gcstress15': ["R2R_FAIL", "R2R_EXCLUDE", "JITSTRESS_FAIL", "JITSTRESS_EXCLUDE", "GCSTRESS_FAIL", "GCSTRESS_EXCLUDE"],
+ 'r2r_no_tiered_compilation': ["R2R_FAIL", "R2R_EXCLUDE"],
'minopts': ["MINOPTS_FAIL", "MINOPTS_EXCLUDE"],
'tieredcompilation': [],
+ 'no_tiered_compilation': [],
+ 'no_tiered_compilation_innerloop': [],
'forcerelocs': [],
'jitstress1': ["JITSTRESS_FAIL", "JITSTRESS_EXCLUDE"],
'jitstress2': ["JITSTRESS_FAIL", "JITSTRESS_EXCLUDE"],
@@ -361,8 +367,11 @@ class Constants {
'r2r_jitminopts',
'r2r_jitforcerelocs',
'r2r_gcstress15',
+ 'r2r_no_tiered_compilation',
'minopts',
'tieredcompilation',
+ 'no_tiered_compilation',
+ 'no_tiered_compilation_innerloop',
'forcerelocs',
'jitstress1',
'jitstress2',
@@ -799,6 +808,12 @@ def static isValidPrTriggeredInnerLoopJob(os, architecture, configuration, isBui
return true
}
+// This means the job builds and runs the 'Pri0' test set. This does not mean the job is
+// scheduled with a default PR trigger despite the correlation being true at the moment.
+def static isPri0TestScenario(def scenario) {
+ return (scenario == 'innerloop' || scenario == 'no_tiered_compilation_innerloop')
+}
+
def static getFxBranch(def branch) {
def fxBranch = branch
// Map 'dev/unix_test_workflow' to 'master' so we can test CoreFX jobs in the CoreCLR dev/unix_test_workflow
@@ -812,11 +827,9 @@ def static getFxBranch(def branch) {
def static setJobTimeout(newJob, isPR, architecture, configuration, scenario, isBuildOnly) {
// 2 hours (120 minutes) is the default timeout
def timeout = 120
- def innerLoop = (scenario == "innerloop")
- if (!innerLoop) {
- // Pri-1 test builds take a long time. Default PR jobs are Pri-0; everything else is Pri-1
- // (see calculateBuildCommands()). So up the Pri-1 build jobs timeout.
+ if (!isPri0TestScenario(scenario)) {
+ // Pri-1 test builds take a long time (see calculateBuildCommands()). So up the Pri-1 build jobs timeout.
timeout = 240
}
@@ -1142,6 +1155,7 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def
// Check scenario.
switch (scenario) {
case 'innerloop':
+ case 'no_tiered_compilation_innerloop':
break
case 'normal':
switch (architecture) {
@@ -1259,6 +1273,7 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def
case 'r2r_jitminopts':
case 'r2r_jitforcerelocs':
case 'r2r_gcstress15':
+ case 'r2r_no_tiered_compilation':
assert !(os in bidailyCrossList)
// GCStress=C is currently not supported on OS X
@@ -1357,6 +1372,7 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def
case 'jitstressregs0x1000':
case 'minopts':
case 'tieredcompilation':
+ case 'no_tiered_compilation':
case 'forcerelocs':
case 'jitstress1':
case 'jitstress2':
@@ -1715,6 +1731,14 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Innerloop Build and Test")
}
break
+ //no_tiered_compilation_innerloop will be added as default once it is confirmed working
+ //case 'no_tiered_compilation_innerloop':
+ // // Default trigger
+ // if (configuration == 'Checked') {
+ // def displayStr = getStressModeDisplayName(scenario)
+ // Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - ${displayStr})")
+ // }
+ // break
case 'normal':
if (configuration == 'Checked') {
@@ -1858,7 +1882,8 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
switch (os) {
case 'Ubuntu':
- if (scenario == 'innerloop') {
+ //no_tiered_compilation_innerloop will be added as default once it is confirmed working
+ if (scenario == 'innerloop' /*|| scenario == 'no_tiered_compilation_innerloop'*/) {
if (configuration == 'Checked') {
Utilities.addGithubPRTriggerForBranch(job, branch, contextString)
}
@@ -1997,6 +2022,14 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
}
break
+ //no_tiered_compilation_innerloop will be added as default once it is confirmed working
+ //case 'no_tiered_compilation_innerloop':
+ // if (configuration == 'Checked') {
+ // def displayStr = getStressModeDisplayName(scenario)
+ // Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - ${displayStr})")
+ // }
+ // break
+
case 'normal':
if (configuration == 'Checked') {
Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test",
@@ -2088,7 +2121,7 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR
def lowerConfiguration = configuration.toLowerCase()
def priority = '1'
- if (scenario == 'innerloop') {
+ if (isPri0TestScenario(scenario)) {
priority = '0'
}
@@ -2594,7 +2627,6 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR
def static shouldGenerateJob(def scenario, def isPR, def architecture, def configuration, def os, def isBuildOnly)
{
// The "innerloop" (Pri-0 testing) scenario is only available as PR triggered.
- // All other scenarios do Pri-1 testing.
if (scenario == 'innerloop' && !isPR) {
return false
}
@@ -3092,8 +3124,7 @@ def static CreateWindowsArmTestJob(def dslFactory, def project, def architecture
addArchSpecificExclude(architecture, excludeTag)
}
- // Innerloop jobs run Pri-0 tests; everyone else runs Pri-1.
- if (scenario == 'innerloop') {
+ if (isPri0TestScenario(scenario)) {
addExclude("pri1")
}
@@ -3524,7 +3555,6 @@ build(params + [CORECLR_BUILD: coreclrBuildJob.build.number,
def static shouldGenerateFlowJob(def scenario, def isPR, def architecture, def configuration, def os)
{
// The "innerloop" (Pri-0 testing) scenario is only available as PR triggered.
- // All other scenarios do Pri-1 testing.
if (scenario == 'innerloop' && !isPR) {
return false
}
@@ -3721,7 +3751,7 @@ Constants.allScenarios.each { scenario ->
// Figure out the job name of the CoreCLR build the test will depend on.
- def inputCoreCLRBuildScenario = scenario == 'innerloop' ? 'innerloop' : 'normal'
+ def inputCoreCLRBuildScenario = isPri0TestScenario(scenario) ? 'innerloop' : 'normal'
def inputCoreCLRBuildIsBuildOnly = false
if (doCoreFxTesting) {
// Every CoreFx test depends on its own unique build.
@@ -3744,7 +3774,7 @@ Constants.allScenarios.each { scenario ->
def inputTestsBuildName = null
if (!windowsArmJob && !doCoreFxTesting) {
- def testBuildScenario = scenario == 'innerloop' ? 'innerloop' : 'normal'
+ def testBuildScenario = isPri0TestScenario(scenario) ? 'innerloop' : 'normal'
def inputTestsBuildArch = architecture
if (architecture == "arm64") {