@@ -137,6 +137,7 @@ class Constants {
137
137
' gcsimulator' ,
138
138
' jitdiff' ,
139
139
' standalone_gc' ,
140
+ ' gc_reliability_framework' ,
140
141
' illink' ] + r2rJitStressScenarios
141
142
142
143
def static configurationList = [' Debug' , ' Checked' , ' Release' ]
@@ -205,6 +206,14 @@ def static isJitDiff(def scenario) {
205
206
return (scenario == ' jitdiff' )
206
207
}
207
208
209
+ def static isGcReliabilityFramework (def scenario ) {
210
+ return (scenario == ' gc_reliability_framework' )
211
+ }
212
+
213
+ def static scenarioNeedsPri1Build (def scenario ) {
214
+ return (scenario == ' pri1' || scenario == ' pri1r2r' || scenario == ' gcstress15_pri1r2r' || scenario == ' coverage' || isGcReliabilityFramework(scenario))
215
+ }
216
+
208
217
def static setTestJobTimeOut (newJob , scenario ) {
209
218
if (isGCStressRelatedTesting(scenario)) {
210
219
Utilities . setJobTimeout(newJob, 4320 )
@@ -227,6 +236,9 @@ def static setTestJobTimeOut(newJob, scenario) {
227
236
else if (isJitDiff(scenario)) {
228
237
Utilities . setJobTimeout(newJob, 240 )
229
238
}
239
+ else if (isGcReliabilityFramework(scenario)) {
240
+ Utilities . setJobTimeout(newJob, 1440 )
241
+ }
230
242
// Non-test jobs use the default timeout value.
231
243
}
232
244
@@ -497,6 +509,11 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def
497
509
// addEmailPublisher(job, '[email protected] ')
498
510
Utilities . addPeriodicTrigger(job, ' @weekly' )
499
511
break
512
+ case ' gc_reliability_framework' :
513
+ assert (os == ' Ubuntu' || os == ' Windows_NT' || os == ' OSX10.12' )
514
+ assert (configuration == ' Release' || configuration == ' Checked' )
515
+ // Only triggered by phrase.
516
+ break
500
517
case ' ilrt' :
501
518
assert ! (os in bidailyCrossList)
502
519
// ILASM/ILDASM roundtrip one gets a daily build, and only for release
@@ -766,6 +783,16 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
766
783
Utilities . addGithubPRTriggerForBranch(job, branch, " ${ os} ${ architecture} ${ configuration} GC Simulator" , " (?i).*test\\ W+${ os} \\ W+${ configuration} \\ W+${ scenario} .*" )
767
784
}
768
785
break
786
+ case ' standalone_gc' :
787
+ if (configuration == ' Release' || configuration == ' Checked' ) {
788
+ Utilities . addGithubPRTriggerForBranch(job, branch, " ${ os} ${ architecture} ${ configuration} Standalone GC" , " (?i).*test\\ W+${ os} \\ W+${ configuration} \\ W+${ scenario} .*" )
789
+ }
790
+ break
791
+ case ' gc_reliability_framework' :
792
+ if (configuration == ' Release' || configuration == ' Checked' ) {
793
+ Utilities . addGithubPRTriggerForBranch(job, branch, " ${ os} ${ architecture} ${ configuration} GC Reliability Framework" , " (?i).*test\\ W+${ os} \\ W+${ configuration} \\ W+${ scenario} .*" )
794
+ }
795
+ break
769
796
case ' minopts' :
770
797
case ' forcerelocs' :
771
798
case ' jitstress1' :
@@ -939,6 +966,11 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
939
966
Utilities . addGithubPRTriggerForBranch(job, branch, " ${ os} ${ architecture} ${ configuration} Standalone GC" , " (?i).*test\\ W+${ os} \\ W+${ configuration} \\ W+${ scenario} .*" )
940
967
}
941
968
break
969
+ case ' gc_reliability_framework' :
970
+ if (configuration == ' Release' || configuration == ' Checked' ) {
971
+ Utilities . addGithubPRTriggerForBranch(job, branch, " ${ os} ${ architecture} ${ configuration} GC Reliability Framework" , " (?i).*test\\ W+${ os} \\ W+${ configuration} \\ W+${ scenario} .*" )
972
+ }
973
+ break
942
974
case ' minopts' :
943
975
case ' forcerelocs' :
944
976
case ' jitstress1' :
@@ -1307,7 +1339,7 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR
1307
1339
// binaries are sent to a default directory whose name is about
1308
1340
// 35 characters long.
1309
1341
1310
- else if (scenario == ' pri1 ' || scenario == ' pri1r2r ' || scenario == ' gcstress15_pri1r2r ' || scenario == ' coverage ' ) {
1342
+ else if (scenarioNeedsPri1Build( scenario) ) {
1311
1343
buildCommands + = " set __TestIntermediateDir=int&&build.cmd ${ lowerConfiguration} ${ arch} ${ buildOpts} -priority=1"
1312
1344
}
1313
1345
else if (isLongGc(scenario)) {
@@ -1435,6 +1467,12 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR
1435
1467
buildCommands + = " %WORKSPACE%\\ tests\\ runtest.cmd ${ runtestArguments} TestEnv ${ stepScriptLocation} "
1436
1468
}
1437
1469
}
1470
+ else if (isGcReliabilityFramework(scenario)) {
1471
+ buildCommands + = " tests\\ runtest.cmd ${ runtestArguments} GenerateLayoutOnly"
1472
+ buildCommands + = " tests\\ scripts\\ run-gc-reliability-framework.cmd ${ arch} ${ configuration} "
1473
+ Utilities . addArchival(newJob, " stdout.txt" )
1474
+ Utilities . addArchival(newJob, " Logs/**" )
1475
+ }
1438
1476
else if (architecture == ' x64' || architecture == ' x86' ) {
1439
1477
buildCommands + = " tests\\ runtest.cmd ${ runtestArguments} "
1440
1478
}
@@ -1870,6 +1908,7 @@ combinedScenarios.each { scenario ->
1870
1908
return
1871
1909
}
1872
1910
break
1911
+ case ' gc_reliability_framework' :
1873
1912
case ' standalone_gc' :
1874
1913
if (os != ' Windows_NT' && os != ' Ubuntu' && os != ' OSX10.12' ) {
1875
1914
return
@@ -2120,10 +2159,12 @@ combinedScenarios.each { scenario ->
2120
2159
return
2121
2160
}
2122
2161
break
2162
+ case ' gc_reliability_framework' :
2123
2163
case ' standalone_gc' :
2124
2164
if (configuration != ' Release' && configuration != ' Checked' ) {
2125
2165
return
2126
2166
}
2167
+ break
2127
2168
case ' coverage' :
2128
2169
// We only want Ubuntu Release for coverage
2129
2170
if (os != ' Ubuntu' ) {
@@ -2164,7 +2205,7 @@ combinedScenarios.each { scenario ->
2164
2205
// so we didn't create a build only job for windows_nt specific to that stress mode. Just copy
2165
2206
// from the default scenario
2166
2207
def testBuildScenario = scenario
2167
- if (testBuildScenario == ' coverage ' || testBuildScenario == ' pri1r2r ' || testBuildScenario == ' gcstress15_pri1r2r ' ) {
2208
+ if (scenarioNeedsPri1Build(scenario) ) {
2168
2209
testBuildScenario = ' pri1'
2169
2210
}
2170
2211
else if ( testBuildScenario == ' r2r' || Constants . r2rJitStressScenarios. indexOf(testBuildScenario) != -1 || isLongGc(testBuildScenario)) {
@@ -2210,6 +2251,7 @@ combinedScenarios.each { scenario ->
2210
2251
def runilasmroundtripStr = ' '
2211
2252
def gcstressStr = ' '
2212
2253
def illinkStr = ' '
2254
+ def layoutOnlyStr = ' '
2213
2255
2214
2256
if (scenario == ' r2r' ||
2215
2257
scenario == ' pri1r2r' ||
@@ -2286,6 +2328,10 @@ combinedScenarios.each { scenario ->
2286
2328
}
2287
2329
}
2288
2330
2331
+ if (isGcReliabilityFramework(scenario)) {
2332
+ layoutOnlyStr = ' --build-overlay-only'
2333
+ }
2334
+
2289
2335
def folder = getJobFolder(scenario)
2290
2336
def newJob = job(Utilities . getFullJobName(project, jobName, isPR, folder)) {
2291
2337
// Add parameters for the inputs
@@ -2438,11 +2484,29 @@ combinedScenarios.each { scenario ->
2438
2484
--mscorlibDir=\"\$ {WORKSPACE}/bin/Product/${ osGroup} .${ architecture} .${ configuration} \" \\
2439
2485
--coreFxBinDir=\"\$ {WORKSPACE}/bin/CoreFxBinDir\" \\
2440
2486
--limitedDumpGeneration \\
2441
- ${ testEnvOpt} ${ serverGCString} ${ gcstressStr} ${ crossgenStr} ${ runcrossgentestsStr} ${ runjitstressStr} ${ runjitstressregsStr} ${ runjitmioptsStr} ${ runjitforcerelocsStr} ${ runjitdisasmStr} ${ runilasmroundtripStr} ${ illinkStr} ${ sequentialString} ${ playlistString} """ )
2487
+ ${ testEnvOpt} ${ serverGCString} ${ gcstressStr} ${ crossgenStr} ${ runcrossgentestsStr} ${ runjitstressStr} \\
2488
+ ${ runjitstressregsStr} ${ runjitmioptsStr} ${ runjitforcerelocsStr} ${ runjitdisasmStr} ${ runilasmroundtripStr} \\
2489
+ ${ illinkStr} ${ sequentialString} ${ playlistString} ${ layoutOnlyStr} """ )
2490
+
2491
+ if (isGcReliabilityFramework(scenario)) {
2492
+ // runtest.sh doesn't actually execute the reliability framework - do it here.
2493
+ if (serverGCString != ' ' ) {
2494
+ shell(" export COMPlus_gcServer=1" )
2495
+ }
2496
+
2497
+ shell(" ./tests/scripts/run-gc-reliability-framework.sh ${ architecture} ${ configuration} " )
2498
+ }
2442
2499
}
2443
2500
}
2444
2501
}
2445
2502
2503
+ if (isGcReliabilityFramework(scenario))
2504
+ {
2505
+ // Both of these are emitted by the RF
2506
+ Utilities . addArchival(newJob, " stdout.txt" )
2507
+ Utilities . addArchival(newJob, " Logs/**" )
2508
+ }
2509
+
2446
2510
if (scenario == ' coverage' ) {
2447
2511
// Publish coverage reports
2448
2512
Utilities . addHtmlPublisher(newJob, ' ${WORKSPACE}/coverage/Coverage/reports' , ' Code Coverage Report' , ' coreclr.html' )
0 commit comments