Add R2R JitStress, JitStressRegs, JITMinOpts and ForceRelocs jobs to CI.
authorLubomir Litchev <lubol@microsoft.com>
Sat, 21 May 2016 21:23:11 +0000 (14:23 -0700)
committerLubomir Litchev <lubol@microsoft.com>
Tue, 24 May 2016 00:00:53 +0000 (17:00 -0700)
netci.groovy
tests/runtest.cmd
tests/runtest.sh

index 0f6fba8..00aeb32 100755 (executable)
@@ -68,8 +68,12 @@ class Constants {
                'gcstress0xc_jitstress2' : ['COMPlus_GCStress'  : '0xC', 'COMPlus_JitStress'  : '2'],
                'gcstress0xc_minopts_heapverify1' : ['COMPlus_GCStress'  : '0xC', 'COMPlus_JITMinOpts'  : '1', 'COMPlus_HeapVerify'  : '1']
                ]
+    // This is a set of r2r jit stress scenarios
+    def static r2rJitStressScenarios = ['r2r_jitstress1', 'r2r_jitstress2', 'r2r_jitstressregs1', 'r2r_jitstressregs2', 'r2r_jitstressregs3',
+                                        'r2r_jitstressregs4', 'r2r_jitstressregs8', 'r2r_jitstressregsx10', 'r2r_jitstressregsx80',
+                                        'r2r_jitminopts', 'r2r_jitforcerelocs']
     // This is the basic set of scenarios
-    def static basicScenarios = ['default', 'pri1', 'ilrt', 'r2r', 'pri1r2r', 'gcstress15_pri1r2r', 'longgc', 'coverage', 'gcsimulator']
+    def static basicScenarios = ['default', 'pri1', 'ilrt', 'r2r', 'pri1r2r', 'gcstress15_pri1r2r', 'longgc', 'coverage', 'gcsimulator'] + r2rJitStressScenarios
     def static configurationList = ['Debug', 'Checked', 'Release']
     // This is the set of architectures
     def static architectureList = ['arm', 'arm64', 'x64', 'x86ryujit', 'x86lb']
@@ -355,6 +359,17 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
                     }
                 }
                 break
+            case 'r2r_jitstress1':
+            case 'r2r_jitstress2':
+            case 'r2r_jitstressregs1':
+            case 'r2r_jitstressregs2':
+            case 'r2r_jitstressregs3':
+            case 'r2r_jitstressregs4':
+            case 'r2r_jitstressregs8':
+            case 'r2r_jitstressregsx10':
+            case 'r2r_jitstressregsx80':
+            case 'r2r_jitminopts':
+            case 'r2r_jitforcerelocs':
             case 'gcstress15_pri1r2r':
                 assert !(os in bidailyCrossList)
                 //GC Stress 15 pri1 r2r gets a push trigger for checked/release
@@ -534,6 +549,61 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
                                 Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} GCStress 15 R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
                             }
                             break
+                        case 'r2r_jitstress1':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstress1 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstress2':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstress2 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregs1':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs1 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregs2':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs2 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregs3':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs3 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregs4':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs4 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregs8':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs8 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregsx10':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregsx10 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregsx80':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregsx80 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitminopts':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} JITMinOpts R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitforcerelocs':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} ForceRelocs R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
                         case 'longgc':
                             if (configuration == 'Release') {
                                 Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Long-Running GC Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")
@@ -664,6 +734,61 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
                                 Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} GCStress 15 R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
                             }
                             break
+                        case 'r2r_jitstress1':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstress1 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstress2':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstress2 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregs1':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs1 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregs2':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs2 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregs3':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs3 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregs4':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs4 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregs8':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs8 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregsx10':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregsx10 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregsx80':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregsx80 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitminopts':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} JITMinOpts R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitforcerelocs':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} ForceRelocs R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
                         default:
                             break
                     }   
@@ -701,6 +826,61 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
                                 Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} GCStress 15 R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
                             }
                             break
+                        case 'r2r_jitstress1':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstress1 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstress2':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstress2 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregs1':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs1 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregs2':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs2 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregs3':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs3 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregs4':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs4 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregs8':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs8 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregsx10':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregsx10 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitstressregsx80':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregsx80 R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitminopts':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} JITMinOpts R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
+                        case 'r2r_jitforcerelocs':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} ForceRelocs R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")  
+                            }
+                            break
                         case 'longgc':
                             if (configuration == 'Release') {
                                 Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Long-Running GC Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")
@@ -863,7 +1043,8 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
             break
         case 'x86ryujit':
         case 'x86lb':
-            assert (scenario == 'default' || scenario == 'r2r' || scenario == 'pri1r2r' || scenario == 'gcstress15_pri1r2r' || scenario == 'longgc' || scenario == 'gcsimulator')
+            assert (scenario == 'default' || scenario == 'r2r' || scenario == 'pri1r2r' || scenario == 'gcstress15_pri1r2r' || scenario == 'longgc' || scenario == 'gcsimulator' ||
+                    Constants.r2rJitStressScenarios.indexOf(scenario) != -1)
             // For windows, x86 runs by default
             def arch = 'x86'
             def jit = 'ryujit'
@@ -902,7 +1083,84 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
                         Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} GCStress 15 R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*")  
                     }
                 }
-            } 
+            }
+            else if (scenario == 'r2r_jitstress1'){
+                if (configuration == 'Release' || configuration == 'Checked') {
+                    if (os == 'Windows_NT'){
+                        Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstress1 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*")  
+                    }
+                }
+            }
+            else if (scenario == 'r2r_jitstress2'){
+                if (configuration == 'Release' || configuration == 'Checked') {
+                    if (os == 'Windows_NT'){
+                        Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstress2 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*")  
+                    }
+                }
+            }
+            else if (scenario == 'r2r_jitstressregs1'){
+                if (configuration == 'Release' || configuration == 'Checked') {
+                    if (os == 'Windows_NT'){
+                        Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs1 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*")  
+                    }
+                }
+            }
+            else if (scenario == 'r2r_jitstressregs2'){
+                if (configuration == 'Release' || configuration == 'Checked') {
+                    if (os == 'Windows_NT'){
+                        Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs2 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*")  
+                    }
+                }
+            }
+            else if (scenario == 'r2r_jitstressregs3'){
+                if (configuration == 'Release' || configuration == 'Checked') {
+                    if (os == 'Windows_NT'){
+                        Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs3 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*")  
+                    }
+                }
+            }
+            else if (scenario == 'r2r_jitstressregs4'){
+                if (configuration == 'Release' || configuration == 'Checked') {
+                    if (os == 'Windows_NT'){
+                        Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs4 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*")  
+                    }
+                }
+            }
+            else if (scenario == 'r2r_jitstressregs8'){
+                if (configuration == 'Release' || configuration == 'Checked') {
+                    if (os == 'Windows_NT'){
+                        Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs8 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*")  
+                    }
+                }
+            }
+            else if (scenario == 'r2r_jitstressregsx10'){
+                if (configuration == 'Release' || configuration == 'Checked') {
+                    if (os == 'Windows_NT'){
+                        Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregsx10 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*")  
+                    }
+                }
+            }
+            else if (scenario == 'r2r_jitstressregsx80'){
+                if (configuration == 'Release' || configuration == 'Checked') {
+                    if (os == 'Windows_NT'){
+                        Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregsx80 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*")  
+                    }
+                }
+            }
+            else if (scenario == 'r2r_jitminopts'){
+                if (configuration == 'Release' || configuration == 'Checked') {
+                    if (os == 'Windows_NT'){
+                        Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitminopts R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*")  
+                    }
+                }
+            }
+            else if (scenario == 'r2r_jitforcerelocs'){
+                if (configuration == 'Release' || configuration == 'Checked') {
+                    if (os == 'Windows_NT'){
+                        Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitforcerelocs R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*")  
+                    }
+                }
+            }
             else if (scenario == 'longgc') {
                 if (os == 'Windows_NT'){
                     if (configuration == 'Release'){
@@ -1051,7 +1309,18 @@ combinedScenarios.each { scenario ->
                                 }
                                 break
                             case 'gcstress15_pri1r2r':
-                                // The gcstress15_pri1r2r build isn't necessary except for Windows_NT.  Non-Windows NT uses
+                            case 'r2r_jitstress1':
+                            case 'r2r_jitstress2':
+                            case 'r2r_jitstressregs1':
+                            case 'r2r_jitstressregs2':
+                            case 'r2r_jitstressregs3':
+                            case 'r2r_jitstressregs4':
+                            case 'r2r_jitstressregs8':
+                            case 'r2r_jitstressregsx10':
+                            case 'r2r_jitstressregsx80':
+                            case 'r2r_jitminopts':
+                            case 'r2r_jitforcerelocs':
+                                // The above builds are not necessary except for Windows_NT.  Non-Windows NT uses
                                 // the default scenario build
                                 if (os != 'Windows_NT') {
                                     return
@@ -1122,7 +1391,10 @@ combinedScenarios.each { scenario ->
                                         arch = 'x86'
                                     }
                                     
-                                    if (Constants.jitStressModeScenarios.containsKey(scenario) || scenario == 'default' || scenario == 'r2r') {
+                                    if (Constants.jitStressModeScenarios.containsKey(scenario) ||
+                                            scenario == 'default' ||
+                                            scenario == 'r2r' ||
+                                            Constants.r2rJitStressScenarios.indexOf(scenario) != -1) {
                                         buildOpts = enableCorefxTesting ? 'skiptests' : ''
                                         buildCommands += "set __TestIntermediateDir=int&&build.cmd ${lowerConfiguration} ${arch} ${buildOpts}"
                                     }
@@ -1166,9 +1438,51 @@ combinedScenarios.each { scenario ->
                                         //If this is a crossgen build, pass 'crossgen' to runtest.cmd
                                         def crossgenStr = ''
                                         def runcrossgentestsStr = ''
-                                        if (scenario == 'r2r' || scenario == 'pri1r2r' || scenario == 'gcstress15_pri1r2r'){
-                                            crossgenStr = 'crossgen'
-                                            runcrossgentestsStr = 'runcrossgentests'
+                                        def runjitstressStr = ''
+                                        def runjitstressregsStr = ''
+                                        def runjitmioptsStr = ''
+                                        def runjitforcerelocsStr = ''
+
+                                        if (scenario == 'r2r' ||
+                                            scenario == 'pri1r2r' ||
+                                            scenario == 'gcstress15_pri1r2r' ||
+                                            Constants.r2rJitStressScenarios.indexOf(scenario) != -1) {
+                                                crossgenStr = 'crossgen'
+                                                runcrossgentestsStr = 'runcrossgentests'
+                                            
+                                                if (scenario == 'r2r_jitstress1'){
+                                                    runjitstressStr = 'jitstress 1'
+                                                }
+                                                else if (scenario == 'r2r_jitstress2') {
+                                                    runjitstressStr = 'jitstress 2'
+                                                }
+                                                else if (scenario == 'r2r_jitstressregs1'){
+                                                    runjitstressregsStr = 'jitstressregs 1'
+                                                }
+                                                else if (scenario == 'r2r_jitstressregs2') {
+                                                    runjitstressregsStr = 'jitstressregs 2'
+                                                }
+                                                else if (scenario == 'r2r_jitstressregs3') {
+                                                    runjitstressregsStr = 'jitstressregs 3'
+                                                }
+                                                else if (scenario == 'r2r_jitstressregs4') {
+                                                    runjitstressregsStr = 'jitstressregs 4'
+                                                }
+                                                else if (scenario == 'r2r_jitstressregs8') {
+                                                    runjitstressregsStr = 'jitstressregs 8'
+                                                }
+                                                else if (scenario == 'r2r_jitstressregsx10') {
+                                                    runjitstressregsStr = 'jitstressregs x10'
+                                                }
+                                                else if (scenario == 'r2r_jitstressregsx80') {
+                                                    runjitstressregsStr = 'jitstressregs x80'
+                                                }
+                                                else if (scenario == 'r2r_jitminopts') {
+                                                    runjitmioptsStr = 'jitminopts'
+                                                }
+                                                else if (scenario == 'r2r_jitforcerelocs') {
+                                                    runjitforcerelocsStr = 'jitforcerelocs'
+                                                }
                                         }
                                         if (Constants.jitStressModeScenarios.containsKey(scenario)) {
                                             if (enableCorefxTesting) {
@@ -1190,7 +1504,7 @@ combinedScenarios.each { scenario ->
                                                 
                                                 // Run tests with the 
                                                 
-                                                buildCommands += "tests\\runtest.cmd ${lowerConfiguration} ${arch} ${crossgenStr} ${runcrossgentestsStr} TestEnv ${stepScriptLocation}"
+                                                buildCommands += "tests\\runtest.cmd ${lowerConfiguration} ${arch} ${crossgenStr} ${runcrossgentestsStr} ${runjitstressStr} ${runjitstressregsStr} ${runjitmioptsStr} ${runjitforcerelocsStr} TestEnv ${stepScriptLocation}"
                                             }                                            
                                         }
                                         else if (architecture == 'x64') {
@@ -1467,7 +1781,11 @@ combinedScenarios.each { scenario ->
                     }
                     // For CentOS, we only want Checked/Release pri1 builds.
                     else if (os == 'CentOS7.1') {
-                        if (scenario != 'pri1' && scenario != 'r2r' && scenario != 'pri1r2r' && scenario != 'gcstress15_pri1r2r') {
+                        if (scenario != 'pri1' &&
+                            scenario != 'r2r' && 
+                            scenario != 'pri1r2r' && 
+                            scenario != 'gcstress15_pri1r2r' &&
+                            Constants.r2rJitStressScenarios.indexOf(scenario) == -1) {
                             return
                         }
                         if (configuration != 'Checked' && configuration != 'Release') {
@@ -1504,6 +1822,17 @@ combinedScenarios.each { scenario ->
                                 }
                                 break
                             case 'gcstress15_pri1r2r':
+                            case 'r2r_jitstress1':
+                            case 'r2r_jitstress2':
+                            case 'r2r_jitstressregs1':
+                            case 'r2r_jitstressregs2':
+                            case 'r2r_jitstressregs3':
+                            case 'r2r_jitstressregs4':
+                            case 'r2r_jitstressregs8':
+                            case 'r2r_jitstressregsx10':
+                            case 'r2r_jitstressregsx80':
+                            case 'r2r_jitminopts':
+                            case 'r2r_jitforcerelocs':
                                 //Skip configs that aren't Checked or Release (so just Debug, for now)
                                 if (configuration != 'Checked' && configuration != 'Release') {
                                     return
@@ -1581,9 +1910,51 @@ combinedScenarios.each { scenario ->
                     // pass --crossgen to runtest.sh for crossgen builds
                     def crossgenStr = ''
                     def runcrossgentestsStr = ''
-                    if (scenario == 'r2r' || scenario == 'pri1r2r' || scenario == 'gcstress15_pri1r2r'){
-                        crossgenStr = '--crossgen'
-                        runcrossgentestsStr = '--runcrossgentests'
+                    def runjitstressStr = ''
+                    def runjitstressregsStr = ''
+                    def runjitmioptsStr = ''
+                    def runjitforcerelocsStr = ''
+
+                    if (scenario == 'r2r' ||
+                        scenario == 'pri1r2r' ||
+                        scenario == 'gcstress15_pri1r2r' ||
+                        Constants.r2rJitStressScenarios.indexOf(scenario) != -1) {
+                            crossgenStr = '--crossgen'
+                            runcrossgentestsStr = '--runcrossgentests'
+                                            
+                            if (scenario == 'r2r_jitstress1'){
+                                runjitstressStr = '--jitstress=1'
+                            }
+                            else if (scenario == 'r2r_jitstress2') {
+                                runjitstressStr = '--jitstress=2'
+                            }
+                            else if (scenario == 'r2r_jitstressregs1'){
+                                runjitstressregsStr = '--jitstressregs=1'
+                            }
+                            else if (scenario == 'r2r_jitstressregs2') {
+                                runjitstressregsStr = '--jitstressregs=2'
+                            }
+                            else if (scenario == 'r2r_jitstressregs3') {
+                                runjitstressregsStr = '--jitstressregs=3'
+                            }
+                            else if (scenario == 'r2r_jitstressregs4') {
+                                runjitstressregsStr = '--jitstressregs=4'
+                            }
+                            else if (scenario == 'r2r_jitstressregs8') {
+                                runjitstressregsStr = '--jitstressregs=8'
+                            }
+                            else if (scenario == 'r2r_jitstressregsx10') {
+                                runjitstressregsStr = '--jitstressregs=x10'
+                            }
+                            else if (scenario == 'r2r_jitstressregsx80') {
+                                runjitstressregsStr = '--jitstressregs=x80'
+                            }
+                            else if (scenario == 'r2r_jitminopts') {
+                                runjitmioptsStr = '--jitminopts'
+                            }
+                            else if (scenario == 'r2r_jitforcerelocs') {
+                                runjitforcerelocsStr = '--jitforcerelocs'
+                            }
                     }
 
                     if (isLongGc(scenario)) {
@@ -1743,7 +2114,7 @@ combinedScenarios.each { scenario ->
                 --mscorlibDir=\"\${WORKSPACE}/bin/Product/${osGroup}.${architecture}.${configuration}\" \\
                 --coreFxBinDir=\"\${WORKSPACE}/bin/${osGroup}.AnyCPU.Release;\${WORKSPACE}/bin/Unix.AnyCPU.Release;\${WORKSPACE}/bin/AnyOS.AnyCPU.Release\" \\
                 --coreFxNativeBinDir=\"\${WORKSPACE}/bin/${osGroup}.${architecture}.Release\" \\
-                ${testEnvOpt} ${serverGCString} ${crossgenStr} ${runcrossgentestsStr} ${sequentialString} ${playlistString}""")
+                ${testEnvOpt} ${serverGCString} ${crossgenStr} ${runcrossgentestsStr} ${runjitstressStr} ${runjitstressregsStr} ${runjitmioptsStr} ${runjitforcerelocsStr} ${sequentialString} ${playlistString}""")
                             }
                         }
                     }
index 52468a1..981690e 100644 (file)
@@ -57,6 +57,10 @@ if /i "%1" == "TestEnv"             (set __TestEnv=%2&shift&shift&goto Arg_Loop)
 if /i "%1" == "sequential"          (set __Sequential=1&shift&goto Arg_Loop)
 if /i "%1" == "crossgen"            (set __DoCrossgen=1&shift&goto Arg_Loop)
 if /i "%1" == "longgctests"         (set __LongGCTests=1&shift&goto Arg_Loop)
+if /i "%1" == "jitstress"            (set COMPlus_JitStress=%2&shift&shift&goto Arg_Loop)
+if /i "%1" == "jitstressregs"        (set COMPlus_JitStressRegs=%2&shift&shift&goto Arg_Loop)
+if /i "%1" == "jitminopts           (set COMPlus_JITMinOpts=1&shift&shift&goto Arg_Loop)
+if /i "%1" == "jitforcerelocs"      (set COMPlus_ForceRelocs=1&shift&shift&goto Arg_Loop)
 if /i "%1" == "GenerateLayoutOnly"  (set __GenerateLayoutOnly=1&set __SkipWrapperGeneration=true&shift&goto Arg_Loop)
 if /i "%1" == "PerfTests"           (set __PerfTests=true&set __SkipWrapperGeneration=true&shift&goto Arg_Loop)
 if /i "%1" == "runcrossgentests"    (set __RunCrossgenTests=1&shift&goto Arg_Loop)
@@ -346,6 +350,10 @@ echo TestEnv- Optional parameter - this will run a custom script to set custom t
 echo VSVersion- Optional parameter - VS2013 or VS2015 ^(default: VS2015^)
 echo GenerateLayoutOnly - If specified will not run the tests and will only create the Runtime Dependency Layout
 echo RunCrossgenTests   - Runs ReadytoRun tests
+echo jitstress <n>      - Runs the tests with COMPlus_JitStress=n
+echo jitstressregs <n>  - Runs the tests with COMPlus_JitStressRegs=n
+echo jitminopts         - Runs the tests with COMPlus_JITMinOpts=1
+echo jitforcerelocs     - Runs the tests with COMPlus_ForceRelocs=1
 echo CORE_ROOT The path to the runtime  
 exit /b 1
 
index 07463af..fb18933 100755 (executable)
@@ -47,6 +47,11 @@ function print_usage {
     echo '  --test-env                       : Script to set environment variables for tests'
     echo '  --runcrossgentests               : Runs the ready to run tests' 
     echo ''
+    echo '  --jitstress=<n>                  : Runs the tests with COMPlus_JitStress=n'
+    echo '  --jitstressregs=<n>              : Runs the tests with COMPlus_JitStressRegs=n'
+    echo '  --jitminopts                     : Runs the tests with COMPlus_JITMinOpts=1'
+    echo '  --jitforcerelocs                 : Runs the tests with COMPlus_ForceRelocs=1'
+    echo ''
     echo 'Runtime Code Coverage options:'
     echo '  --coreclr-coverage               : Optional argument to get coreclr code coverage reports'
     echo '  --coreclr-objs=<path>            : Location of root of the object directory'
@@ -751,6 +756,18 @@ do
         --crossgen)
             doCrossgen=1
             ;;
+        --jitstress=*)
+            export COMPlus_JitStress=${i#*=}
+            ;;
+        --jitstressregs=*)
+            export COMPlus_JitStressRegs=${i#*=}
+            ;;
+        --jitminopts)
+            export COMPlus_JITMinOpts=1
+            ;;
+        --jitforcerelocs)
+            export COMPlus_ForceRelocs=1
+            ;;
         --testRootDir=*)
             testRootDir=${i#*=}
             ;;