Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit 19ff879

Browse files
noahfalkkouvel
authored andcommitted
Add no tiered compilation test jobs (#18864)
Port of #18864 to 2.2 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
1 parent 10e33d0 commit 19ff879

File tree

1 file changed

+45
-15
lines changed

1 file changed

+45
-15
lines changed

netci.groovy

Lines changed: 45 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@ class Constants {
6969
// the values are the environment variables
7070
def static jitStressModeScenarios = [
7171
'minopts' : ['COMPlus_TieredCompilation' : '0', 'COMPlus_JITMinOpts' : '1'],
72-
'tieredcompilation' : ['COMPlus_TieredCompilation' : '1'],
72+
'tieredcompilation' : ['COMPlus_TieredCompilation' : '1'], // this can be removed once tiered compilation is on by default
73+
'no_tiered_compilation' : ['COMPlus_TieredCompilation' : '0'],
74+
'no_tiered_compilation_innerloop': ['COMPlus_TieredCompilation' : '0'],
7375
'forcerelocs' : ['COMPlus_TieredCompilation' : '0', 'COMPlus_ForceRelocs' : '1'],
7476
'jitstress1' : ['COMPlus_TieredCompilation' : '0', 'COMPlus_JitStress' : '1'],
7577
'jitstress2' : ['COMPlus_TieredCompilation' : '0', 'COMPlus_JitStress' : '2'],
@@ -101,7 +103,7 @@ class Constants {
101103
'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'],
102104
'corefx_baseline' : ['COMPlus_TieredCompilation' : '0'], // corefx baseline
103105
'corefx_minopts' : ['COMPlus_TieredCompilation' : '0', 'COMPlus_JITMinOpts' : '1'],
104-
'corefx_tieredcompilation' : ['COMPlus_TieredCompilation' : '1'],
106+
'corefx_tieredcompilation' : ['COMPlus_TieredCompilation' : '1'], // this can be removed once tiered compilation is on by default
105107
'corefx_jitstress1' : ['COMPlus_TieredCompilation' : '0', 'COMPlus_JitStress' : '1'],
106108
'corefx_jitstress2' : ['COMPlus_TieredCompilation' : '0', 'COMPlus_JitStress' : '2'],
107109
'corefx_jitstressregs1' : ['COMPlus_TieredCompilation' : '0', 'COMPlus_JitStressRegs' : '1'],
@@ -140,7 +142,8 @@ class Constants {
140142
'r2r_jitstressregs0x1000' : ['COMPlus_TieredCompilation' : '0', "COMPlus_JitStressRegs": "0x1000"],
141143
'r2r_jitminopts' : ['COMPlus_TieredCompilation' : '0', "COMPlus_JITMinOpts": "1"],
142144
'r2r_jitforcerelocs' : ['COMPlus_TieredCompilation' : '0', "COMPlus_ForceRelocs": "1"],
143-
'r2r_gcstress15' : ['COMPlus_TieredCompilation' : '0', "COMPlus_GCStress": "0xF"]
145+
'r2r_gcstress15' : ['COMPlus_TieredCompilation' : '0', "COMPlus_GCStress": "0xF"],
146+
'r2r_no_tiered_compilation' : ['COMPlus_TieredCompilation' : '0'],
144147
]
145148

146149
// This is the basic set of scenarios
@@ -251,8 +254,11 @@ class Constants {
251254
'r2r_jitminopts': ["R2R_FAIL", "R2R_EXCLUDE", "JITSTRESS_FAIL", "JITSTRESS_EXCLUDE", "MINOPTS_FAIL", "MINOPTS_EXCLUDE"],
252255
'r2r_jitforcerelocs': ["R2R_FAIL", "R2R_EXCLUDE", "JITSTRESS_FAIL", "JITSTRESS_EXCLUDE"],
253256
'r2r_gcstress15': ["R2R_FAIL", "R2R_EXCLUDE", "JITSTRESS_FAIL", "JITSTRESS_EXCLUDE", "GCSTRESS_FAIL", "GCSTRESS_EXCLUDE"],
257+
'r2r_no_tiered_compilation': ["R2R_FAIL", "R2R_EXCLUDE"],
254258
'minopts': ["MINOPTS_FAIL", "MINOPTS_EXCLUDE"],
255259
'tieredcompilation': [],
260+
'no_tiered_compilation': [],
261+
'no_tiered_compilation_innerloop': [],
256262
'forcerelocs': [],
257263
'jitstress1': ["JITSTRESS_FAIL", "JITSTRESS_EXCLUDE"],
258264
'jitstress2': ["JITSTRESS_FAIL", "JITSTRESS_EXCLUDE"],
@@ -358,7 +364,10 @@ class Constants {
358364
'r2r_jitminopts',
359365
'r2r_jitforcerelocs',
360366
'r2r_gcstress15',
367+
'r2r_no_tiered_compilation',
361368
'minopts',
369+
'no_tiered_compilation',
370+
'no_tiered_compilation_innerloop',
362371
'forcerelocs',
363372
'jitstress1',
364373
'jitstress2',
@@ -769,14 +778,18 @@ def static isValidPrTriggeredInnerLoopJob(os, architecture, configuration, isBui
769778
return true
770779
}
771780

781+
// This means the job builds and runs the 'Pri0' test set. This does not mean the job is
782+
// scheduled with a default PR trigger despite the correlation being true at the moment.
783+
def static isPri0TestScenario(def scenario) {
784+
return (scenario == 'innerloop' || scenario == 'no_tiered_compilation_innerloop')
785+
}
786+
772787
def static setJobTimeout(newJob, isPR, architecture, configuration, scenario, isBuildOnly) {
773788
// 2 hours (120 minutes) is the default timeout
774789
def timeout = 120
775-
def innerLoop = (scenario == "innerloop")
776790

777-
if (!innerLoop) {
778-
// Pri-1 test builds take a long time. Default PR jobs are Pri-0; everything else is Pri-1
779-
// (see calculateBuildCommands()). So up the Pri-1 build jobs timeout.
791+
if (!isPri0TestScenario(scenario)) {
792+
// Pri-1 test builds take a long time (see calculateBuildCommands()). So up the Pri-1 build jobs timeout.
780793
timeout = 240
781794
}
782795

@@ -1104,6 +1117,7 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def
11041117
// Check scenario.
11051118
switch (scenario) {
11061119
case 'innerloop':
1120+
case 'no_tiered_compilation_innerloop':
11071121
break
11081122
case 'normal':
11091123
switch (architecture) {
@@ -1190,6 +1204,7 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def
11901204
case 'r2r_jitminopts':
11911205
case 'r2r_jitforcerelocs':
11921206
case 'r2r_gcstress15':
1207+
case 'r2r_no_tiered_compilation':
11931208
assert !(os in bidailyCrossList)
11941209

11951210
// GCStress=C is currently not supported on OS X
@@ -1275,6 +1290,7 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def
12751290
case 'jitstressregs0x1000':
12761291
case 'minopts':
12771292
case 'tieredcompilation':
1293+
case 'no_tiered_compilation':
12781294
case 'forcerelocs':
12791295
case 'jitstress1':
12801296
case 'jitstress2':
@@ -1605,6 +1621,14 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
16051621
Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Innerloop Build and Test")
16061622
}
16071623
break
1624+
//no_tiered_compilation_innerloop will be added as default once it is confirmed working
1625+
//case 'no_tiered_compilation_innerloop':
1626+
// // Default trigger
1627+
// if (configuration == 'Checked') {
1628+
// def displayStr = getStressModeDisplayName(scenario)
1629+
// Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - ${displayStr})")
1630+
// }
1631+
// break
16081632

16091633
case 'normal':
16101634
if (configuration == 'Checked') {
@@ -1750,7 +1774,8 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
17501774
break
17511775
}
17521776

1753-
if (scenario == 'innerloop') {
1777+
//no_tiered_compilation_innerloop will be added as default once it is confirmed working
1778+
if (scenario == 'innerloop' /*|| scenario == 'no_tiered_compilation_innerloop'*/) {
17541779
if (configuration == 'Checked') {
17551780
Utilities.addGithubPRTriggerForBranch(job, branch, contextString)
17561781
}
@@ -1893,6 +1918,14 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
18931918
}
18941919
break
18951920

1921+
//no_tiered_compilation_innerloop will be added as default once it is confirmed working
1922+
//case 'no_tiered_compilation_innerloop':
1923+
// if (configuration == 'Checked') {
1924+
// def displayStr = getStressModeDisplayName(scenario)
1925+
// Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - ${displayStr})")
1926+
// }
1927+
// break
1928+
18961929
case 'normal':
18971930
if (configuration == 'Checked') {
18981931
Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test",
@@ -1984,7 +2017,7 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR
19842017
def lowerConfiguration = configuration.toLowerCase()
19852018

19862019
def priority = '1'
1987-
if (scenario == 'innerloop') {
2020+
if (isPri0TestScenario(scenario)) {
19882021
priority = '0'
19892022
}
19902023

@@ -2465,7 +2498,6 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR
24652498
def static shouldGenerateJob(def scenario, def isPR, def architecture, def configuration, def os, def isBuildOnly)
24662499
{
24672500
// The "innerloop" (Pri-0 testing) scenario is only available as PR triggered.
2468-
// All other scenarios do Pri-1 testing.
24692501
if (scenario == 'innerloop' && !isPR) {
24702502
return false
24712503
}
@@ -2921,8 +2953,7 @@ def static CreateWindowsArmTestJob(def dslFactory, def project, def architecture
29212953
addArchSpecificExclude(architecture, excludeTag)
29222954
}
29232955

2924-
// Innerloop jobs run Pri-0 tests; everyone else runs Pri-1.
2925-
if (scenario == 'innerloop') {
2956+
if (isPri0TestScenario(scenario)) {
29262957
addExclude("pri1")
29272958
}
29282959

@@ -3327,7 +3358,6 @@ build(params + [CORECLR_BUILD: coreclrBuildJob.build.number,
33273358
def static shouldGenerateFlowJob(def scenario, def isPR, def architecture, def configuration, def os)
33283359
{
33293360
// The "innerloop" (Pri-0 testing) scenario is only available as PR triggered.
3330-
// All other scenarios do Pri-1 testing.
33313361
if (scenario == 'innerloop' && !isPR) {
33323362
return false
33333363
}
@@ -3516,7 +3546,7 @@ Constants.allScenarios.each { scenario ->
35163546

35173547
// Figure out the job name of the CoreCLR build the test will depend on.
35183548

3519-
def inputCoreCLRBuildScenario = scenario == 'innerloop' ? 'innerloop' : 'normal'
3549+
def inputCoreCLRBuildScenario = isPri0TestScenario(scenario) ? 'innerloop' : 'normal'
35203550
def inputCoreCLRBuildIsBuildOnly = false
35213551
if (isCoreFxScenario(scenario)) {
35223552
// Every CoreFx test depends on its own unique build.
@@ -3535,7 +3565,7 @@ Constants.allScenarios.each { scenario ->
35353565

35363566
def windowsArmJob = ((os == "Windows_NT") && (architecture in Constants.armWindowsCrossArchitectureList))
35373567
if (!windowsArmJob) {
3538-
def testBuildScenario = scenario == 'innerloop' ? 'innerloop' : 'normal'
3568+
def testBuildScenario = isPri0TestScenario(scenario) ? 'innerloop' : 'normal'
35393569

35403570
def inputTestsBuildArch = architecture
35413571
if (architecture == "arm64") {

0 commit comments

Comments
 (0)