From a56e30c8d33048216567753d9d3fefc2152af8ac Mon Sep 17 00:00:00 2001 From: Jiyoung Yun Date: Thu, 13 Apr 2017 14:17:19 +0900 Subject: Imported Upstream version 2.0.0.11353 --- netci.groovy | 1534 ++++++++++++++++++++-------------------------------------- 1 file changed, 524 insertions(+), 1010 deletions(-) (limited to 'netci.groovy') diff --git a/netci.groovy b/netci.groovy index 176c436dd6..05e5d7fa7d 100755 --- a/netci.groovy +++ b/netci.groovy @@ -8,23 +8,28 @@ def project = GithubProject def branch = GithubBranchName def projectFolder = Utilities.getFolderName(project) + '/' + Utilities.getFolderName(branch) -// Create a folder for JIT stress jobs +// Create a folder for JIT stress jobs and associated folder views folder('jitstress') - +Utilities.addStandardFolderView(this, 'jitstress', project) + +// Create a folder for testing via illink +folder('illink') +Utilities.addStandardFolderView(this, 'illink', project) + def static getOSGroup(def os) { def osGroupMap = ['Ubuntu':'Linux', 'RHEL7.2': 'Linux', 'Ubuntu16.04': 'Linux', 'Ubuntu16.10': 'Linux', 'Debian8.4':'Linux', - 'Fedora23':'Linux', - 'OSX':'OSX', + 'Fedora24':'Linux', + 'OSX10.12':'OSX', 'Windows_NT':'Windows_NT', 'FreeBSD':'FreeBSD', 'CentOS7.1': 'Linux', 'OpenSUSE42.1': 'Linux', - 'LinuxARMEmulator': 'Linux'] - def osGroup = osGroupMap.get(os, null) + 'Tizen': 'Linux'] + def osGroup = osGroupMap.get(os, null) assert osGroup != null : "Could not find os group for ${os}" return osGroupMap[os] } @@ -39,60 +44,65 @@ class Constants { def static osList = [ 'Ubuntu', 'Debian8.4', - 'OSX', + 'OSX10.12', 'Windows_NT', 'Windows_NT_BuildOnly', 'FreeBSD', 'CentOS7.1', 'OpenSUSE42.1', 'RHEL7.2', - 'LinuxARMEmulator', 'Ubuntu16.04', 'Ubuntu16.10', - 'Fedora23'] + 'Fedora24', + 'Tizen'] - def static crossList = ['Ubuntu', 'OSX', 'CentOS7.1', 'RHEL7.2', 'Debian8.4'] + def static crossList = ['Ubuntu', 'OSX10.12', 'CentOS7.1', 'RHEL7.2', 'Debian8.4'] // This is a set of JIT stress modes combined with the set of variables that // need to be set to actually enable that stress mode. The key of the map is the stress mode and // the values are the environment variables def static jitStressModeScenarios = [ - 'minopts' : ['COMPlus_JITMinOpts' : '1'], - 'forcerelocs' : ['COMPlus_ForceRelocs' : '1'], - 'jitstress1' : ['COMPlus_JitStress' : '1'], - 'jitstress2' : ['COMPlus_JitStress' : '2'], - 'jitstressregs1' : ['COMPlus_JitStressRegs' : '1'], - 'jitstressregs2' : ['COMPlus_JitStressRegs' : '2'], - 'jitstressregs3' : ['COMPlus_JitStressRegs' : '3'], - 'jitstressregs4' : ['COMPlus_JitStressRegs' : '4'], - 'jitstressregs8' : ['COMPlus_JitStressRegs' : '8'], - 'jitstressregs0x10' : ['COMPlus_JitStressRegs' : '0x10'], - 'jitstressregs0x80' : ['COMPlus_JitStressRegs' : '0x80'], - 'jitstress2_jitstressregs1' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '1'], - 'jitstress2_jitstressregs2' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '2'], - 'jitstress2_jitstressregs3' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '3'], - 'jitstress2_jitstressregs4' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '4'], - 'jitstress2_jitstressregs8' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '8'], - 'jitstress2_jitstressregs0x10' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '0x10'], - 'jitstress2_jitstressregs0x80' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '0x80'], - 'corefx_baseline' : [ : ], // corefx baseline - 'corefx_minopts' : ['COMPlus_JITMinOpts' : '1'], - 'corefx_jitstress1' : ['COMPlus_JitStress' : '1'], - 'corefx_jitstress2' : ['COMPlus_JitStress' : '2'], - 'corefx_jitstressregs1' : ['COMPlus_JitStressRegs' : '1'], - 'corefx_jitstressregs2' : ['COMPlus_JitStressRegs' : '2'], - 'corefx_jitstressregs3' : ['COMPlus_JitStressRegs' : '3'], - 'corefx_jitstressregs4' : ['COMPlus_JitStressRegs' : '4'], - 'corefx_jitstressregs8' : ['COMPlus_JitStressRegs' : '8'], - 'corefx_jitstressregs0x10' : ['COMPlus_JitStressRegs' : '0x10'], - 'corefx_jitstressregs0x80' : ['COMPlus_JitStressRegs' : '0x80'], - 'gcstress0x3' : ['COMPlus_GCStress' : '0x3'], - 'gcstress0xc' : ['COMPlus_GCStress' : '0xC'], - 'zapdisable' : ['COMPlus_ZapDisable' : '1'], - 'heapverify1' : ['COMPlus_HeapVerify' : '1'], - 'gcstress0xc_zapdisable' : ['COMPlus_GCStress' : '0xC', 'COMPlus_ZapDisable' : '1'], - 'gcstress0xc_zapdisable_jitstress2' : ['COMPlus_GCStress' : '0xC', 'COMPlus_ZapDisable' : '1', 'COMPlus_JitStress' : '2'], - 'gcstress0xc_zapdisable_heapverify1' : ['COMPlus_GCStress' : '0xC', 'COMPlus_ZapDisable' : '1', 'COMPlus_HeapVerify' : '1'], + 'minopts' : ['COMPlus_JITMinOpts' : '1'], + 'forcerelocs' : ['COMPlus_ForceRelocs' : '1'], + 'jitstress1' : ['COMPlus_JitStress' : '1'], + 'jitstress2' : ['COMPlus_JitStress' : '2'], + 'jitstressregs1' : ['COMPlus_JitStressRegs' : '1'], + 'jitstressregs2' : ['COMPlus_JitStressRegs' : '2'], + 'jitstressregs3' : ['COMPlus_JitStressRegs' : '3'], + 'jitstressregs4' : ['COMPlus_JitStressRegs' : '4'], + 'jitstressregs8' : ['COMPlus_JitStressRegs' : '8'], + 'jitstressregs0x10' : ['COMPlus_JitStressRegs' : '0x10'], + 'jitstressregs0x80' : ['COMPlus_JitStressRegs' : '0x80'], + 'jitstressregs0x1000' : ['COMPlus_JitStressRegs' : '0x1000'], + 'jitstress2_jitstressregs1' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '1'], + 'jitstress2_jitstressregs2' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '2'], + 'jitstress2_jitstressregs3' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '3'], + 'jitstress2_jitstressregs4' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '4'], + 'jitstress2_jitstressregs8' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '8'], + 'jitstress2_jitstressregs0x10' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '0x10'], + 'jitstress2_jitstressregs0x80' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '0x80'], + 'jitstress2_jitstressregs0x1000' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '0x1000'], + 'tailcallstress' : ['COMPlus_TailcallStress' : '1'], + 'jitsse2only' : ['COMPlus_EnableAVX' : '0', 'COMPlus_EnableSSE3_4' : '0'], + 'corefx_baseline' : [ : ], // corefx baseline + 'corefx_minopts' : ['COMPlus_JITMinOpts' : '1'], + 'corefx_jitstress1' : ['COMPlus_JitStress' : '1'], + 'corefx_jitstress2' : ['COMPlus_JitStress' : '2'], + 'corefx_jitstressregs1' : ['COMPlus_JitStressRegs' : '1'], + 'corefx_jitstressregs2' : ['COMPlus_JitStressRegs' : '2'], + 'corefx_jitstressregs3' : ['COMPlus_JitStressRegs' : '3'], + 'corefx_jitstressregs4' : ['COMPlus_JitStressRegs' : '4'], + 'corefx_jitstressregs8' : ['COMPlus_JitStressRegs' : '8'], + 'corefx_jitstressregs0x10' : ['COMPlus_JitStressRegs' : '0x10'], + 'corefx_jitstressregs0x80' : ['COMPlus_JitStressRegs' : '0x80'], + 'corefx_jitstressregs0x1000' : ['COMPlus_JitStressRegs' : '0x1000'], + 'gcstress0x3' : ['COMPlus_GCStress' : '0x3'], + 'gcstress0xc' : ['COMPlus_GCStress' : '0xC'], + 'zapdisable' : ['COMPlus_ZapDisable' : '1', 'COMPlus_ReadyToRun' : '0'], + 'heapverify1' : ['COMPlus_HeapVerify' : '1'], + 'gcstress0xc_zapdisable' : ['COMPlus_GCStress' : '0xC', 'COMPlus_ZapDisable' : '1', 'COMPlus_ReadyToRun' : '0'], + 'gcstress0xc_zapdisable_jitstress2' : ['COMPlus_GCStress' : '0xC', 'COMPlus_ZapDisable' : '1', 'COMPlus_ReadyToRun' : '0', 'COMPlus_JitStress' : '2'], + 'gcstress0xc_zapdisable_heapverify1' : ['COMPlus_GCStress' : '0xC', 'COMPlus_ZapDisable' : '1', 'COMPlus_ReadyToRun' : '0', 'COMPlus_HeapVerify' : '1'], 'gcstress0xc_jitstress1' : ['COMPlus_GCStress' : '0xC', 'COMPlus_JitStress' : '1'], 'gcstress0xc_jitstress2' : ['COMPlus_GCStress' : '0xC', 'COMPlus_JitStress' : '2'], 'gcstress0xc_minopts_heapverify1' : ['COMPlus_GCStress' : '0xC', 'COMPlus_JITMinOpts' : '1', 'COMPlus_HeapVerify' : '1'] @@ -107,8 +117,9 @@ class Constants { 'r2r_jitstressregs3', 'r2r_jitstressregs4', 'r2r_jitstressregs8', - 'r2r_jitstressregsx10', - 'r2r_jitstressregsx80', + 'r2r_jitstressregs0x10', + 'r2r_jitstressregs0x80', + 'r2r_jitstressregs0x1000', 'r2r_jitminopts', 'r2r_jitforcerelocs'] @@ -124,23 +135,23 @@ class Constants { 'coverage', 'formatting', 'gcsimulator', - 'jitdiff', - 'standalone_gc'] + r2rJitStressScenarios + 'jitdiff', + 'standalone_gc', + 'illink'] + r2rJitStressScenarios def static configurationList = ['Debug', 'Checked', 'Release'] // This is the set of architectures - def static architectureList = ['arm', 'arm64', 'x64', 'x86', 'x86compatjit', 'x86lb'] + def static architectureList = ['arm', 'arm64', 'x64', 'x86'] } def static setMachineAffinity(def job, def os, def architecture) { if (architecture == 'arm64' && os == 'Windows_NT') { - // For cross compilation - job.with { - label('arm64') - } - } else if ((architecture == 'arm' || architecture == 'arm64') && os == 'Ubuntu') { + Utilities.setMachineAffinity(job, os, 'latest-arm64'); + } else if (architecture == 'arm64' && os == 'Ubuntu') { Utilities.setMachineAffinity(job, os, 'arm-cross-latest'); + } else if ((architecture == 'arm') && (os == 'Ubuntu' || os == 'Ubuntu16.04' || os == 'Tizen')) { + Utilities.setMachineAffinity(job, 'Ubuntu', 'arm-cross-latest'); } else { Utilities.setMachineAffinity(job, os, 'latest-or-auto'); } @@ -162,11 +173,11 @@ def static isGCStressRelatedTesting(def scenario) { def gcStressTestEnvVars = [ 'COMPlus_GCStress', 'COMPlus_ZapDisable', 'COMPlus_HeapVerify'] def scenarioName = scenario.toLowerCase() def isGCStressTesting = false - Constants.jitStressModeScenarios[scenario].each{ k, v -> + Constants.jitStressModeScenarios[scenario].each{ k, v -> if (k in gcStressTestEnvVars) { isGCStressTesting = true; } - } + } return isGCStressTesting } @@ -208,7 +219,7 @@ def static setTestJobTimeOut(newJob, scenario) { Utilities.setJobTimeout(newJob, 240) } else if (isCoverage(scenario)) { - Utilities.setJobTimeout(newJob, 1440) + Utilities.setJobTimeout(newJob, 1440) } else if (isLongGc(scenario)) { Utilities.setJobTimeout(newJob, 1440) @@ -219,15 +230,36 @@ def static setTestJobTimeOut(newJob, scenario) { // Non-test jobs use the default timeout value. } +def static getJobFolder(def scenario) { + if (isJITStressJob(scenario)) { + return 'jitstress' + } + if (scenario == 'illink') { + return 'illink' + } + return '' +} + def static getStressModeDisplayName(def scenario) { def displayStr = '' - Constants.jitStressModeScenarios[scenario].each{ k, v -> + Constants.jitStressModeScenarios[scenario].each{ k, v -> def prefixLength = 'COMPlus_'.length() if (k.length() >= prefixLength) { def modeName = k.substring(prefixLength, k.length()) displayStr += ' ' + modeName + '=' + v } - } + } + return displayStr +} + +def static getR2RStressModeDisplayName(def scenario) { + // Assume the scenario name is one from the r2rJitStressScenarios list, and remove its + // "r2r_" prefix. + def displayStr = scenario + def prefixLength = 'r2r_'.length() + if (displayStr.length() >= prefixLength) { + displayStr = displayStr.substring(prefixLength, displayStr.length()) + } return displayStr } @@ -239,7 +271,7 @@ def static genStressModeScriptStep(def os, def stressModeName, def stressModeVar if (os == 'Windows_NT') { stepScript += "echo Creating TestEnv Script for ${stressModeName}\r\n" stepScript += "del ${stepScriptLocation}\r\n" - + // Timeout in ms, default is 10 minutes. For stress // modes up this to 30 minutes def timeout = 1800000 @@ -247,7 +279,7 @@ def static genStressModeScriptStep(def os, def stressModeName, def stressModeVar // Set the Timeout stepScript += "set __TestTimeout=${timeout}\r\n" stepScript += "echo. > ${stepScriptLocation}\r\n" - stressModeVars.each{ k, v -> + stressModeVars.each{ k, v -> // Write out what we are writing to the script file stepScript += "echo Setting ${k}=${v}\r\n" // Write out the set itself to the script file` @@ -257,7 +289,7 @@ def static genStressModeScriptStep(def os, def stressModeName, def stressModeVar else { stepScript += "echo Setting variables for ${stressModeName}\n" stepScript += "echo \\#\\!/usr/bin/env bash > ${stepScriptLocation}\n" - stressModeVars.each{ k, v -> + stressModeVars.each{ k, v -> // Write out what we are writing to the script file stepScript += "echo Setting ${k}=${v}\n" // Write out the set itself to the script file` @@ -270,11 +302,11 @@ def static genStressModeScriptStep(def os, def stressModeName, def stressModeVar // Calculates the name of the build job based on some typical parameters. // -def static getJobName(def configuration, def architecture, def os, def scenario, def isBuildOnly, def isLinuxEmulatorBuild = false) { +def static getJobName(def configuration, def architecture, def os, def scenario, def isBuildOnly) { // If the architecture is x64, do not add that info into the build name. // Need to change around some systems and other builds to pick up the right builds // to do that. - + def suffix = scenario != 'default' ? "_${scenario}" : ''; if (isBuildOnly) { suffix += '_bld' @@ -295,43 +327,42 @@ def static getJobName(def configuration, def architecture, def os, def scenario, } break case 'arm64': + // These are cross builds + baseName = architecture.toLowerCase() + '_cross_' + configuration.toLowerCase() + '_' + os.toLowerCase() + break case 'arm': // These are cross builds - if (isLinuxEmulatorBuild == false) { - baseName = architecture.toLowerCase() + '_cross_' + configuration.toLowerCase() + '_' + os.toLowerCase() + if (os == 'Tizen') { + // ABI: softfp + baseName = 'armel_cross_' + configuration.toLowerCase() + '_' + os.toLowerCase() } else { - baseName = architecture.toLowerCase() + '_emulator_cross_' + configuration.toLowerCase() + '_' + os.toLowerCase() + baseName = architecture.toLowerCase() + '_cross_' + configuration.toLowerCase() + '_' + os.toLowerCase() } break case 'x86': baseName = architecture.toLowerCase() + '_' + configuration.toLowerCase() + '_' + os.toLowerCase() break - case 'x86compatjit': - baseName = 'x86_compatjit_' + configuration.toLowerCase() + '_' + os.toLowerCase() - break - case 'x86lb': - baseName = 'x86_lb_' + configuration.toLowerCase() + '_' + os.toLowerCase() - break default: println("Unknown architecture: ${architecture}"); assert false break } - + return baseName + suffix } -def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def os, def configuration, def scenario, def isFlowJob, def isWindowsBuildOnlyJob, def isLinuxEmulatorBuild, def bidailyCrossList) { +def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def os, def configuration, def scenario, def isFlowJob, def isWindowsBuildOnlyJob, def bidailyCrossList) { // Check scenario. switch (scenario) { case 'default': switch (architecture) { case 'x64': case 'x86': - case 'x86compatjit': - case 'x86lb': - if (isFlowJob || os == 'Windows_NT' || !(os in Constants.crossList)) { + if (architecture == 'x86' && os == 'Ubuntu') { + Utilities.addPeriodicTrigger(job, '@daily') + } + else if (isFlowJob || os == 'Windows_NT' || !(os in Constants.crossList)) { Utilities.addGithubPushTrigger(job) } break @@ -361,7 +392,7 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def if (isFlowJob || os == 'Windows_NT') { Utilities.addGithubPushTrigger(job) } - } + } else { if (isFlowJob) { Utilities.addPeriodicTrigger(job, 'H H/12 * * *') @@ -378,19 +409,19 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def //pri1 r2r gets a push trigger for checked/release if (configuration == 'Checked' || configuration == 'Release') { assert (os == 'Windows_NT') || (os in Constants.crossList) - if (architecture == 'x64' && os != 'OSX') { - //Flow jobs should be Windows, Ubuntu, OSX, or CentOS + if (architecture == 'x64' && os != 'OSX10.12') { + //Flow jobs should be Windows, Ubuntu, OSX0.12, or CentOS if (isFlowJob || os == 'Windows_NT') { Utilities.addGithubPushTrigger(job) } - // OSX pri1r2r jobs should only run every 12 hours, not daily. - } else if (architecture == 'x64' && os == 'OSX'){ + // OSX10.12 pri1r2r jobs should only run every 12 hours, not daily. + } else if (architecture == 'x64' && os == 'OSX10.12'){ if (isFlowJob) { Utilities.addPeriodicTrigger(job, 'H H/12 * * *') } } // For x86, only add per-commit jobs for Windows - else if (architecture == 'x86' || architecture == 'x86compatjit' || architecture == 'x86lb') { + else if (architecture == 'x86') { if (os == 'Windows_NT') { Utilities.addGithubPushTrigger(job) } @@ -412,15 +443,16 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def case 'r2r_jitstressregs3': case 'r2r_jitstressregs4': case 'r2r_jitstressregs8': - case 'r2r_jitstressregsx10': - case 'r2r_jitstressregsx80': + case 'r2r_jitstressregs0x10': + case 'r2r_jitstressregs0x80': + case 'r2r_jitstressregs0x1000': case 'r2r_jitminopts': case 'r2r_jitforcerelocs': case 'gcstress15_pri1r2r': assert !(os in bidailyCrossList) // GCStress=C is currently not supported on OS X - if (os == 'OSX' && isGCStressRelatedTesting(scenario)) { + if (os == 'OSX10.12' && isGCStressRelatedTesting(scenario)) { break } @@ -428,14 +460,14 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def if (configuration == 'Checked' || configuration == 'Release') { assert (os == 'Windows_NT') || (os in Constants.crossList) if (architecture == 'x64') { - //Flow jobs should be Windows, Ubuntu, OSX, or CentOS + //Flow jobs should be Windows, Ubuntu, OSX10.12, or CentOS if (isFlowJob || os == 'Windows_NT') { // Add a weekly periodic trigger Utilities.addPeriodicTrigger(job, 'H H * * 3,6') // some time every Wednesday and Saturday } } // For x86, only add per-commit jobs for Windows - else if (architecture == 'x86' || architecture == 'x86compatjit' || architecture == 'x86lb') { + else if (architecture == 'x86') { if (os == 'Windows_NT') { Utilities.addPeriodicTrigger(job, 'H H * * 3,6') // some time every Wednesday and Saturday } @@ -443,7 +475,7 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def } break case 'longgc': - assert (os == 'Ubuntu' || os == 'Windows_NT' || os == 'OSX') + assert (os == 'Ubuntu' || os == 'Windows_NT' || os == 'OSX10.12') assert configuration == 'Release' assert architecture == 'x64' Utilities.addPeriodicTrigger(job, '@daily') @@ -451,7 +483,7 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def // addEmailPublisher(job, 'dotnetgctests@microsoft.com') break case 'gcsimulator': - assert (os == 'Ubuntu' || os == 'Windows_NT' || os == 'OSX') + assert (os == 'Ubuntu' || os == 'Windows_NT' || os == 'OSX10.12') assert configuration == 'Release' assert architecture == 'x64' Utilities.addPeriodicTrigger(job, 'H H * * 3,6') // some time every Wednesday and Saturday @@ -459,7 +491,7 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def // addEmailPublisher(job, 'dotnetgctests@microsoft.com') break case 'standalone_gc': - assert (os == 'Ubuntu' || os == 'Windows_NT' || os == 'OSX') + assert (os == 'Ubuntu' || os == 'Windows_NT' || os == 'OSX10.12') assert (configuration == 'Release' || configuration == 'Checked') // TODO: Add once external email sending is available again // addEmailPublisher(job, 'dotnetgctests@microsoft.com') @@ -477,9 +509,9 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def } break case 'jitdiff': - assert (os == 'Ubuntu' || os == 'Windows_NT' || os == 'OSX') + assert (os == 'Ubuntu' || os == 'Windows_NT' || os == 'OSX10.12') assert configuration == 'Checked' - assert (architecture == 'x64' || architecture == 'x86') + assert (architecture == 'x64' || architecture == 'x86') Utilities.addGithubPushTrigger(job) break case 'coverage': @@ -500,10 +532,11 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def case 'jitstressregs8': case 'jitstressregs0x10': case 'jitstressregs0x80': + case 'jitstressregs0x1000': case 'minopts': case 'forcerelocs': case 'jitstress1': - case 'jitstress2': + case 'jitstress2': case 'jitstress2_jitstressregs1': case 'jitstress2_jitstressregs2': case 'jitstress2_jitstressregs3': @@ -511,9 +544,12 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def case 'jitstress2_jitstressregs8': case 'jitstress2_jitstressregs0x10': case 'jitstress2_jitstressregs0x80': - case 'corefx_baseline': + case 'jitstress2_jitstressregs0x1000': + case 'tailcallstress': + case 'jitsse2only': + case 'corefx_baseline': case 'corefx_minopts': - case 'corefx_jitstress1': + case 'corefx_jitstress1': case 'corefx_jitstress2': case 'corefx_jitstressregs1': case 'corefx_jitstressregs2': @@ -522,14 +558,15 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def case 'corefx_jitstressregs8': case 'corefx_jitstressregs0x10': case 'corefx_jitstressregs0x80': - case 'zapdisable': + case 'corefx_jitstressregs0x1000': + case 'zapdisable': if (os != 'CentOS7.1' && !(os in bidailyCrossList)) { assert (os == 'Windows_NT') || (os in Constants.crossList) Utilities.addPeriodicTrigger(job, '@daily') } - break + break case 'heapverify1': - case 'gcstress0x3': + case 'gcstress0x3': if (os != 'CentOS7.1' && !(os in bidailyCrossList)) { assert (os == 'Windows_NT') || (os in Constants.crossList) if (architecture == 'arm64') { @@ -551,7 +588,7 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def case 'gcstress0xc_jitstress2': case 'gcstress0xc_minopts_heapverify1': // GCStress=C is currently not supported on OS X - if (os != 'CentOS7.1' && os != 'OSX' && !(os in bidailyCrossList)) { + if (os != 'CentOS7.1' && os != 'OSX10.12' && !(os in bidailyCrossList)) { assert (os == 'Windows_NT') || (os in Constants.crossList) if (architecture == 'arm64') { assert (os == 'Windows_NT') @@ -565,6 +602,17 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def } } break + + case 'illink': + // Testing on other operating systems TBD + assert (os == 'Windows_NT' || os == 'Ubuntu') + if (architecture == 'x64' || architecture == 'x86') { + if (configuration == 'Checked') { + Utilities.addPeriodicTrigger(job, '@daily') + } + } + break + default: println("Unknown scenario: ${scenario}"); assert false @@ -575,7 +623,7 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def // ************************** // Define the basic inner loop builds for PR and commit. This is basically just the set -// of coreclr builds over linux/osx/freebsd/windows and debug/release/checked. In addition, the windows +// of coreclr builds over linux/osx 10.12/freebsd/windows and debug/release/checked. In addition, the windows // builds will do a couple extra steps. // ************************** @@ -583,15 +631,15 @@ def static addNonPRTriggers(def job, def branch, def isPR, def architecture, def // flow job that rolls up the build and test for non-windows OS's. // If the job is a windows build only job, // it's just used for internal builds // If you add a job with a trigger phrase, please add that phrase to coreclr/Documentation/project-docs/ci-trigger-phrases.md -def static addTriggers(def job, def branch, def isPR, def architecture, def os, def configuration, def scenario, def isFlowJob, def isWindowsBuildOnlyJob, def isLinuxEmulatorBuild) { +def static addTriggers(def job, def branch, def isPR, def architecture, def os, def configuration, def scenario, def isFlowJob, def isWindowsBuildOnlyJob) { if (isWindowsBuildOnlyJob) { return } - + def bidailyCrossList = ['RHEL7.2', 'Debian8.4'] // Non pull request builds. if (!isPR) { - addNonPRTriggers(job, branch, isPR, architecture, os, configuration, scenario, isFlowJob, isWindowsBuildOnlyJob, isLinuxEmulatorBuild, bidailyCrossList) + addNonPRTriggers(job, branch, isPR, architecture, os, configuration, scenario, isFlowJob, isWindowsBuildOnlyJob, bidailyCrossList) return } // Pull request builds. Generally these fall into two categories: default triggers and on-demand triggers @@ -628,16 +676,26 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Pri 1 Build & Test", "(?i).*test\\W+${os}\\W+${scenario}.*") } break - case 'Fedora23': case 'Ubuntu16.04': + assert !isFlowJob + assert scenario == 'default' + // Distinguish with the other architectures (arm and x86) + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build", "(?i).*test\\W+${os}\\W+${architecture}.*") + break + case 'Fedora24': case 'Ubuntu16.10': case 'OpenSUSE42.1': assert !isFlowJob assert scenario == 'default' Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build", "(?i).*test\\W+${os}\\W+.*") - break + break case 'Ubuntu': - case 'OSX': + if (scenario == 'illink') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} via ILLink", "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + break + } + // fall through + case 'OSX10.12': // Triggers on the non-flow jobs aren't necessary here // Corefx testing uses non-flow jobs. if (!isFlowJob && !isCorefxTesting(scenario)) { @@ -668,72 +726,34 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, break case 'r2r': if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} R2R pri0 Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} R2R pri0 Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") } break case 'pri1r2r': if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") } break case 'gcstress15_pri1r2r': if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} GCStress 15 R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") + 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_jitstressregs0x10': + case 'r2r_jitstressregs0x80': + case 'r2r_jitstressregs0x1000': 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}.*") + def displayStr = getR2RStressModeDisplayName(scenario) + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} ${displayStr} R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") } break case 'longgc': @@ -747,59 +767,17 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, } break case 'minopts': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - MinOpts)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break + case 'forcerelocs': case 'jitstress1': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStress=1)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break case 'jitstress2': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStress=2)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break - case 'forcerelocs': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - ForceRelocs)", - "(?i).*test\\W+${os}\\W+${scenario}.*") case 'jitstressregs1': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=1)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break case 'jitstressregs2': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=2)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break case 'jitstressregs3': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=3)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break - case 'jitstressregs4': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=4)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break + case 'jitstressregs4': case 'jitstressregs8': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=8)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break case 'jitstressregs0x10': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=0x10)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break case 'jitstressregs0x80': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=0x80)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break + case 'jitstressregs0x1000': case 'jitstress2_jitstressregs1': case 'jitstress2_jitstressregs2': case 'jitstress2_jitstressregs3': @@ -807,6 +785,9 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, case 'jitstress2_jitstressregs8': case 'jitstress2_jitstressregs0x10': case 'jitstress2_jitstressregs0x80': + case 'jitstress2_jitstressregs0x1000': + case 'tailcallstress': + case 'jitsse2only': case 'gcstress0x3': case 'gcstress0xc': case 'zapdisable': @@ -816,8 +797,8 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, case 'gcstress0xc_zapdisable_heapverify1': case 'gcstress0xc_jitstress1': case 'gcstress0xc_jitstress2': - case 'gcstress0xc_minopts_heapverify1': - def displayStr = getStressModeDisplayName(scenario) + case 'gcstress0xc_minopts_heapverify1': + def displayStr = getStressModeDisplayName(scenario) assert (os == 'Windows_NT') || (os in Constants.crossList) Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - ${displayStr})", "(?i).*test\\W+${os}\\W+${scenario}.*") @@ -833,11 +814,12 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, case 'corefx_jitstressregs8': case 'corefx_jitstressregs0x10': case 'corefx_jitstressregs0x80': - def displayName = 'CoreFx ' + getStressModeDisplayName(scenario) + case 'corefx_jitstressregs0x1000': + def displayName = ('CoreFx ' + getStressModeDisplayName(scenario)).trim() assert (os == 'Windows_NT') || (os in Constants.crossList) Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - ${displayName})", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break + "(?i).*test\\W+${os}\\W+${architecture}\\W+${scenario}.*") + break default: println("Unknown scenario: ${scenario}"); assert false @@ -863,67 +845,29 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, break case 'gcstress15_pri1r2r': if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} GCStress 15 R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") + 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_jitstressregs0x10': + case 'r2r_jitstressregs0x80': + case 'r2r_jitstressregs0x1000': 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}.*") + def displayStr = getR2RStressModeDisplayName(scenario) + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} ${displayStr} R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") } break default: break - } + } case 'Windows_NT': switch (scenario) { case 'default': @@ -960,62 +904,24 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, break case 'gcstress15_pri1r2r': if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} GCStress 15 R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") + 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_jitstressregs0x10': + case 'r2r_jitstressregs0x80': + case 'r2r_jitstressregs0x1000': 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}.*") + def displayStr = getR2RStressModeDisplayName(scenario) + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} ${displayStr} R2R Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") } break case 'longgc': @@ -1034,60 +940,17 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, } break case 'minopts': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - MinOpts)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break - case 'forcerelocs': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - ForceRelocs)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break + case 'forcerelocs': case 'jitstress1': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStress=1)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break case 'jitstress2': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStress=2)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break case 'jitstressregs1': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=1)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break case 'jitstressregs2': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=2)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break case 'jitstressregs3': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=3)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break - case 'jitstressregs4': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=4)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break + case 'jitstressregs4': case 'jitstressregs8': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=8)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break case 'jitstressregs0x10': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=0x10)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break case 'jitstressregs0x80': - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=0x80)", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break + case 'jitstressregs0x1000': case 'jitstress2_jitstressregs1': case 'jitstress2_jitstressregs2': case 'jitstress2_jitstressregs3': @@ -1095,7 +958,10 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, case 'jitstress2_jitstressregs8': case 'jitstress2_jitstressregs0x10': case 'jitstress2_jitstressregs0x80': - case 'gcstress0x3': + case 'jitstress2_jitstressregs0x1000': + case 'tailcallstress': + case 'jitsse2only': + case 'gcstress0x3': case 'gcstress0xc': case 'zapdisable': case 'heapverify1': @@ -1104,7 +970,7 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, case 'gcstress0xc_zapdisable_heapverify1': case 'gcstress0xc_jitstress1': case 'gcstress0xc_jitstress2': - case 'gcstress0xc_minopts_heapverify1': + case 'gcstress0xc_minopts_heapverify1': def displayStr = getStressModeDisplayName(scenario) assert (os == 'Windows_NT') || (os in Constants.crossList) Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - ${displayStr})", @@ -1121,11 +987,15 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, case 'corefx_jitstressregs8': case 'corefx_jitstressregs0x10': case 'corefx_jitstressregs0x80': - def displayName = 'CoreFx ' + getStressModeDisplayName(scenario) + case 'corefx_jitstressregs0x1000': + def displayName = ('CoreFx ' + getStressModeDisplayName(scenario)).trim() assert (os == 'Windows_NT') || (os in Constants.crossList) Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - ${displayName})", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break + "(?i).*test\\W+${os}\\W+${architecture}\\W+${scenario}.*") + break + case 'illink': + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} via ILLink", "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + break default: println("Unknown scenario: ${scenario}"); assert false @@ -1149,17 +1019,27 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, assert scenario == 'default' switch (os) { case 'Ubuntu': - if (isLinuxEmulatorBuild == false) { - // Removing the regex will cause this to run on each PR. - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} Cross ${configuration} Build", "(?i).*test\\W+Linux\\W+arm\\W+cross\\W+${configuration}.*") + case 'Ubuntu16.04': + if ((os == 'Ubuntu' && configuration == 'Release') || (os == 'Ubuntu16.04' && configuration == 'Debug')) { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} Cross ${configuration} Build") } else { - Utilities.addGithubPRTriggerForBranch(job, branch, "Linux ARM Emulator Cross ${configuration} Build") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} Cross ${configuration} Build", "(?i).*test\\W+${os}\\W+${architecture}\\W+Cross\\W+${configuration}\\W+Build.*") } - break + break; + case 'Tizen': + architecture='armel' + // Removing the regex will cause this to run on each PR. + if (configuration == 'Release' || configuration == 'Debug') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} Cross ${configuration} Build") + } + else { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} Cross ${configuration} Build", "(?i).*test\\W+${os}\\W+${architecture}\\W+Cross\\W+${configuration}\\W+Build.*") + } + break; case 'Windows_NT': if (configuration == 'Debug' || configuration == 'Release') - { + { Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} Cross ${configuration} Build") } break @@ -1214,412 +1094,126 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, switch (scenario) { case 'default': // For now only run Debug jobs on PR Trigger. - if (configuration != 'Debug') { - Utilities.addPrivateGithubPRTriggerForBranch(job, branch, contextString, - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}.*", null, arm64Users) - } - else { - // Add "Checked Build And Test" and "Debug Build" to the above users' PRs since many of them - // are at higher risk of ARM64-breaking changes. - Utilities.addDefaultPrivateGithubPRTriggerForBranch(job, branch, contextString, null, arm64Users) - } - break - case 'pri1r2r': - case 'gcstress0x3': - case 'gcstress0xc': - Utilities.addPrivateGithubPRTriggerForBranch(job, branch, contextString, - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*", null, arm64Users) - break - } - break - default: - println("NYI os: ${os}"); - assert false - break - } - break - // editor brace matching: } - case 'x86': // editor brace matching: { - assert (os == 'Windows_NT') - switch (scenario) { - case 'default': - if (configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test") - } - else if (configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test", - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}.*") - } - break - case 'pri1': - if (configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Priority 1 Build and Test") - } - break - case 'ilrt': - if (configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} IL RoundTrip Build and Test", - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'r2r': - if (configuration == 'Checked' || configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} R2R pri0 Build & Test", - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'pri1r2r': - if (configuration == 'Checked' || configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} R2R pri1 Build & Test", - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'gcstress15_pri1r2r': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} GCStress 15 R2R pri1 Build & Test", - "(?i).*test\\W+${os}\\W+${architecture}\\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+${architecture}\\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+${architecture}\\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+${architecture}\\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+${architecture}\\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+${architecture}\\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+${architecture}\\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+${architecture}\\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+${architecture}\\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+${architecture}\\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+${architecture}\\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+${architecture}\\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+${architecture}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'gcsimulator': - if (configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} GC Simulator", - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'standalone_gc': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Standalone GC", - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'minopts': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - MinOpts)", - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") - break - case 'forcerelocs': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - ForceRelocs)", - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") - break - case 'jitstress1': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStress=1)", - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") - break - case 'jitstress2': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStress=2)", - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") - break - case 'jitstressregs1': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=1)", - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") - break - case 'jitstressregs2': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=2)", - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") - break - case 'jitstressregs3': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=3)", - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") - break - case 'jitstressregs4': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=4)", - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") - break - case 'jitstressregs8': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=8)", - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") - break - case 'jitstressregs0x10': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=0x10)", - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") - break - case 'jitstressregs0x80': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=0x80)", - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") - break - case 'jitstress2_jitstressregs1': - case 'jitstress2_jitstressregs2': - case 'jitstress2_jitstressregs3': - case 'jitstress2_jitstressregs4': - case 'jitstress2_jitstressregs8': - case 'jitstress2_jitstressregs0x10': - case 'jitstress2_jitstressregs0x80': - case 'gcstress0x3': - case 'gcstress0xc': - case 'zapdisable': - case 'heapverify1': - case 'gcstress0xc_zapdisable': - case 'gcstress0xc_zapdisable_jitstress2': - case 'gcstress0xc_zapdisable_heapverify1': - case 'gcstress0xc_jitstress1': - case 'gcstress0xc_jitstress2': - case 'gcstress0xc_minopts_heapverify1': - def displayStr = getStressModeDisplayName(scenario) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - ${displayStr})", - "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") - break - case 'corefx_baseline': - case 'corefx_minopts': - case 'corefx_jitstress1': - case 'corefx_jitstress2': - case 'corefx_jitstressregs1': - case 'corefx_jitstressregs2': - case 'corefx_jitstressregs3': - case 'corefx_jitstressregs4': - case 'corefx_jitstressregs8': - case 'corefx_jitstressregs0x10': - case 'corefx_jitstressregs0x80': - def displayName = 'CoreFx ' + getStressModeDisplayName(scenario) - assert (os == 'Windows_NT') || (os in Constants.crossList) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - ${displayName})", - "(?i).*test\\W+${os}\\W+${scenario}.*") - break + if (configuration != 'Debug') { + Utilities.addPrivateGithubPRTriggerForBranch(job, branch, contextString, + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}.*", null, arm64Users) + } + else { + // Add "Checked Build And Test" and "Debug Build" to the above users' PRs since many of them + // are at higher risk of ARM64-breaking changes. + Utilities.addDefaultPrivateGithubPRTriggerForBranch(job, branch, contextString, null, arm64Users) + } + break + case 'pri1r2r': + case 'gcstress0x3': + case 'gcstress0xc': + Utilities.addPrivateGithubPRTriggerForBranch(job, branch, contextString, + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*", null, arm64Users) + break + } + break default: - println("Unknown scenario: ${os} ${architecture} ${scenario}"); + println("NYI os: ${os}"); assert false break } break // editor brace matching: } - case 'x86compatjit': // editor brace matching: { - assert (os == 'Windows_NT') - def arch = 'x86' - def jit = 'compatjit' + case 'x86': // editor brace matching: { + assert ((os == 'Windows_NT') || ((os == 'Ubuntu') && (scenario == 'default'))) + if (os == 'Ubuntu') { + // on-demand only for ubuntu x86 + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}.*") + break + } switch (scenario) { case 'default': if (configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test") + } + else if (configuration == 'Release') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}.*") } break case 'pri1': if (configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Priority 1 Build and Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+Priority 1 Build and Test.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Priority 1 Build and Test") } break case 'ilrt': if (configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} IL RoundTrip Build and Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} IL RoundTrip Build and Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") } break case 'r2r': if (configuration == 'Checked' || configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} R2R pri0 Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} R2R pri0 Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") } break case 'pri1r2r': if (configuration == 'Checked' || configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} R2R pri1 Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} R2R pri1 Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") } break case 'gcstress15_pri1r2r': if (configuration == 'Release' || configuration == 'Checked') { - 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}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} GCStress 15 R2R pri1 Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") } break case 'r2r_jitstress1': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstress1 R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break case 'r2r_jitstress2': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstress2 R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break case 'r2r_jitstressregs1': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs1 R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break case 'r2r_jitstressregs2': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs2 R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break case 'r2r_jitstressregs3': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs3 R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break case 'r2r_jitstressregs4': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs4 R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break case 'r2r_jitstressregs8': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs8 R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'r2r_jitstressregsx10': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregsx10 R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'r2r_jitstressregsx80': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregsx80 R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break + case 'r2r_jitstressregs0x10': + case 'r2r_jitstressregs0x80': + case 'r2r_jitstressregs0x1000': case 'r2r_jitminopts': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} JITMinOpts R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break case 'r2r_jitforcerelocs': if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} ForceRelocs R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + def displayStr = getR2RStressModeDisplayName(scenario) + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} ${displayStr} R2R Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") } break case 'longgc': if (configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Long-Running GC Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Long-Running GC Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") } break case 'gcsimulator': if (configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} GC Simulator", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} GC Simulator", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") } break case 'standalone_gc': if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Standalone GC", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Standalone GC", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") } break case 'minopts': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - MinOpts)", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - break - case 'forcerelocs': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - ForceRelocs)", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - break + case 'forcerelocs': case 'jitstress1': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - JitStress=1)", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - break case 'jitstress2': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - JitStress=2)", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - break case 'jitstressregs1': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - JitStressRegs=1)", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - break case 'jitstressregs2': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - JitStressRegs=2)", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - break case 'jitstressregs3': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - JitStressRegs=3)", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - break - case 'jitstressregs4': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - JitStressRegs=4)", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - break + case 'jitstressregs4': case 'jitstressregs8': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - JitStressRegs=8)", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - break case 'jitstressregs0x10': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - JitStressRegs=0x10)", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - break case 'jitstressregs0x80': - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - JitStressRegs=0x80)", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - break + case 'jitstressregs0x1000': case 'jitstress2_jitstressregs1': case 'jitstress2_jitstressregs2': case 'jitstress2_jitstressregs3': @@ -1627,7 +1221,10 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, case 'jitstress2_jitstressregs8': case 'jitstress2_jitstressregs0x10': case 'jitstress2_jitstressregs0x80': - case 'gcstress0x3': + case 'jitstress2_jitstressregs0x1000': + case 'tailcallstress': + case 'jitsse2only': + case 'gcstress0x3': case 'gcstress0xc': case 'zapdisable': case 'heapverify1': @@ -1636,11 +1233,11 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, case 'gcstress0xc_zapdisable_heapverify1': case 'gcstress0xc_jitstress1': case 'gcstress0xc_jitstress2': - case 'gcstress0xc_minopts_heapverify1': + case 'gcstress0xc_minopts_heapverify1': def displayStr = getStressModeDisplayName(scenario) - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - ${displayStr})", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - break + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - ${displayStr})", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + break case 'corefx_baseline': case 'corefx_minopts': case 'corefx_jitstress1': @@ -1652,140 +1249,17 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, case 'corefx_jitstressregs8': case 'corefx_jitstressregs0x10': case 'corefx_jitstressregs0x80': - def displayName = 'CoreFx ' + getStressModeDisplayName(scenario) - assert (os == 'Windows_NT') - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - ${displayName})", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - break - default: - println("Unknown scenario: ${os} ${arch} ${jit} ${scenario}"); - assert false - break - } - break - // editor brace matching: } - case 'x86lb': // editor brace matching: { - assert (os == 'Windows_NT') - assert (scenario == 'default' || - scenario == 'r2r' || - scenario == 'pri1r2r' || - scenario == 'gcstress15_pri1r2r' || - scenario == 'longgc' || - scenario == 'gcsimulator' || - Constants.r2rJitStressScenarios.indexOf(scenario) != -1) - - def arch = 'x86' - def jit = 'legacy_backend' - switch (scenario) { - case 'default': - if (configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}.*") - } - break - case 'r2r': - if (configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} R2R pri0 Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'pri1r2r': - if (configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} R2R pri1 Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'gcstress15_pri1r2r': - if (configuration == 'Release') { - 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}.*") - } - break - case 'r2r_jitstress1': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstress1 R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'r2r_jitstress2': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstress2 R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'r2r_jitstressregs1': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs1 R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'r2r_jitstressregs2': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs2 R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'r2r_jitstressregs3': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs3 R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'r2r_jitstressregs4': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs4 R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'r2r_jitstressregs8': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs8 R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'r2r_jitstressregsx10': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregsx10 R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'r2r_jitstressregsx80': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregsx80 R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'r2r_jitminopts': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitminopts R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'r2r_jitforcerelocs': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitforcerelocs R2R Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'longgc': - if (configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Long-Running GC Build & Test", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } - break - case 'gcsimulator': - if (configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} GC Simulator", - "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") - } + case 'corefx_jitstressregs0x1000': + def displayName = ('CoreFx ' + getStressModeDisplayName(scenario)).trim() + assert (os == 'Windows_NT') || (os in Constants.crossList) + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - ${displayName})", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${scenario}.*") break - case 'standalone_gc': - if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Standalone GC", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*") - } + case 'illink': + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} via ILLink", "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") break default: - println("Unknown scenario: ${os} ${arch} ${jit} ${scenario}"); + println("Unknown scenario: ${os} ${architecture} ${scenario}"); assert false break } @@ -1798,7 +1272,7 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, } } -def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR, def architecture, def configuration, def os, def enableCorefxTesting, def isBuildOnly, def isLinuxEmulatorBuild) { +def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR, def architecture, def configuration, def os, def enableCorefxTesting, def isBuildOnly) { def buildCommands = []; def osGroup = getOSGroup(os) def lowerConfiguration = configuration.toLowerCase() @@ -1809,25 +1283,18 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR switch (architecture) { case 'x64': case 'x86': - case 'x86compatjit': - case 'x86lb': def arch = architecture def buildOpts = '' - - // We need to explicitly run build-test.cmd with Exclude for x86compatjit and x86lb, so skip tests. - if (architecture == 'x86compatjit') { - arch = 'x86' - buildOpts = 'compatjitcrossgen skiptests' - } - else if (architecture == 'x86lb') { - arch = 'x86' - buildOpts = 'legacyjitcrossgen skiptests' + + if (scenario == 'illink') { + buildCommands += "tests\\scripts\\build_illink.cmd clone ${arch}" } - + if (Constants.jitStressModeScenarios.containsKey(scenario) || scenario == 'default' || scenario == 'r2r' || scenario == 'jitdiff' || + scenario == 'illink' || Constants.r2rJitStressScenarios.indexOf(scenario) != -1) { buildOpts += enableCorefxTesting ? ' skiptests' : '' buildCommands += "set __TestIntermediateDir=int&&build.cmd ${lowerConfiguration} ${arch} ${buildOpts}" @@ -1835,7 +1302,7 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR // For Pri 1 tests, we must shorten the output test binary path names. // if __TestIntermediateDir is already set, build-test.cmd will - // output test binaries to that directory. If it is not set, the + // output test binaries to that directory. If it is not set, the // binaries are sent to a default directory whose name is about // 35 characters long. @@ -1863,7 +1330,7 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR println("Unknown scenario: ${scenario}") assert false } - + // If we are running a stress mode, we should write out the set of key // value env pairs to a file at this point and then we'll pass that to runtest.cmd @@ -1879,6 +1346,7 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR def gcstressStr = '' def runtestArguments = '' def gcTestArguments = '' + def illinkArguments = '' if (scenario == 'r2r' || scenario == 'pri1r2r' || @@ -1886,7 +1354,7 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR Constants.r2rJitStressScenarios.indexOf(scenario) != -1) { crossgenStr = 'crossgen' runcrossgentestsStr = 'runcrossgentests' - + if (scenario == 'r2r_jitstress1'){ runjitstressStr = 'jitstress 1' } @@ -1908,11 +1376,14 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR else if (scenario == 'r2r_jitstressregs8') { runjitstressregsStr = 'jitstressregs 8' } - else if (scenario == 'r2r_jitstressregsx10') { - runjitstressregsStr = 'jitstressregs x10' + else if (scenario == 'r2r_jitstressregs0x10') { + runjitstressregsStr = 'jitstressregs 0x10' } - else if (scenario == 'r2r_jitstressregsx80') { - runjitstressregsStr = 'jitstressregs x80' + else if (scenario == 'r2r_jitstressregs0x80') { + runjitstressregsStr = 'jitstressregs 0x80' + } + else if (scenario == 'r2r_jitstressregs0x1000') { + runjitstressregsStr = 'jitstressregs 0x1000' } else if (scenario == 'r2r_jitminopts') { runjitmioptsStr = 'jitminopts' @@ -1935,7 +1406,12 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR gcTestArguments = "${scenario} sequential" } - runtestArguments = "${lowerConfiguration} ${arch} ${gcstressStr} ${crossgenStr} ${runcrossgentestsStr} ${runjitstressStr} ${runjitstressregsStr} ${runjitmioptsStr} ${runjitforcerelocsStr} ${runjitdisasmStr} ${gcTestArguments}" + if (scenario == 'illink') + { + illinkArguments = "link %WORKSPACE%\\linker\\linker\\bin\\netcore_Release\\netcoreapp2.0\\win10-${arch}\\publish\\illink.exe" + } + + runtestArguments = "${lowerConfiguration} ${arch} ${gcstressStr} ${crossgenStr} ${runcrossgentestsStr} ${runjitstressStr} ${runjitstressregsStr} ${runjitmioptsStr} ${runjitforcerelocsStr} ${runjitdisasmStr} ${gcTestArguments} ${illinkArguments} collectdumps" if (Constants.jitStressModeScenarios.containsKey(scenario)) { def stepScriptLocation = "%WORKSPACE%\\SetStressModes.bat" @@ -1945,7 +1421,7 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR def workspaceRelativeFxRoot = "_/fx" def absoluteFxRoot = "%WORKSPACE%\\_\\fx" - buildCommands += "python %WORKSPACE%\\tests\\scripts\\run-corefx-tests.py -arch ${arch} -build_type ${configuration} -fx_root ${absoluteFxRoot} -fx_branch ${branch} -env_script ${stepScriptLocation}" + buildCommands += "python -u %WORKSPACE%\\tests\\scripts\\run-corefx-tests.py -arch ${arch} -build_type ${configuration} -fx_root ${absoluteFxRoot} -fx_branch ${branch} -env_script ${stepScriptLocation}" setTestJobTimeOut(newJob, scenario) @@ -1959,23 +1435,11 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR } else if (architecture == 'x64' || architecture == 'x86') { buildCommands += "tests\\runtest.cmd ${runtestArguments}" - } - else if (architecture == 'x86compatjit') { - def testEnvLocation = "%WORKSPACE%\\tests\\x86\\compatjit_x86_testenv.cmd" - def excludeLocation = "%WORKSPACE%\\tests\\x86_legacy_backend_issues.targets" - buildCommands += "build-test.cmd ${runtestArguments} Exclude ${excludeLocation}" - buildCommands += "tests\\runtest.cmd ${runtestArguments} TestEnv ${testEnvLocation}" - } - else if (architecture == 'x86lb') { - def testEnvLocation = "%WORKSPACE%\\tests\\x86\\legacyjit_x86_testenv.cmd" - def excludeLocation = "%WORKSPACE%\\tests\\x86_legacy_backend_issues.targets" - buildCommands += "build-test.cmd ${runtestArguments} Exclude ${excludeLocation}" - buildCommands += "tests\\runtest.cmd ${runtestArguments} TestEnv ${testEnvLocation}" } } if (!enableCorefxTesting) { - // Run the rest of the build + // Run the rest of the build // Build the mscorlib for the other OS's buildCommands += "build.cmd ${lowerConfiguration} ${arch} linuxmscorlib" buildCommands += "build.cmd ${lowerConfiguration} ${arch} freebsdmscorlib" @@ -1988,7 +1452,7 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR if (!Constants.jitStressModeScenarios.containsKey(scenario)) { // For windows, pull full test results and test drops for x86/x64. // No need to pull for stress mode scenarios (downstream builds use the default scenario) - Utilities.addArchival(newJob, "bin/Product/**,bin/tests/tests.zip") + Utilities.addArchival(newJob, "bin/Product/**,bin/tests/tests.zip", "bin/Product/**/.nuget/**") } if (scenario == 'jitdiff') { @@ -1998,7 +1462,7 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR Utilities.addArchival(newJob, "bin/tests/${osGroup}.${arch}.${configuration}/dasm/**") } } - + if (!isBuildOnly) { if (architecture == 'x64' || !isPR) { Utilities.addXUnitDotNETResults(newJob, 'bin/**/TestRun*.xml') @@ -2009,7 +1473,7 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR break case 'arm': assert (scenario == 'default') - + // Set time out setTestJobTimeOut(newJob, scenario) @@ -2021,10 +1485,11 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR buildCommands += "set __TestIntermediateDir=int&&build.cmd ${lowerConfiguration} ${architecture}" } // Add archival. - Utilities.addArchival(newJob, "bin/Product/**") + Utilities.addArchival(newJob, "bin/Product/**", "bin/Product/**/.nuget/**") break case 'arm64': assert (scenario == 'default') || (scenario == 'pri1r2r') || (scenario == 'gcstress0x3') || (scenario == 'gcstress0xc') + // Set time out setTestJobTimeOut(newJob, scenario) @@ -2033,6 +1498,13 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR buildCommands += "set __TestIntermediateDir=int&&build.cmd ${lowerConfiguration} ${architecture} toolset_dir C:\\ats2" } else { + if ((scenario != 'gcstress0x3') && (scenario != 'gcstress0xc')) + { + // Up the timeout for arm64 checked testing only. + // Keep the longer timeout for gcstress. + Utilities.setJobTimeout(newJob, 240) + } + buildCommands += "set __TestIntermediateDir=int&&build.cmd skiptests ${lowerConfiguration} ${architecture} toolset_dir C:\\ats2" // Test build and run are launched together. buildCommands += "python tests\\scripts\\arm64_post_build.py -repo_root %WORKSPACE% -arch ${architecture} -build_type ${lowerConfiguration} -scenario ${scenario} -key_location C:\\tools\\key.txt" @@ -2040,7 +1512,7 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR } // Add archival. - Utilities.addArchival(newJob, "bin/Product/**") + Utilities.addArchival(newJob, "bin/Product/**", "bin/Product/**/.nuget/**") break default: println("Unknown architecture: ${architecture}"); @@ -2053,65 +1525,71 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR case 'Ubuntu16.04': case 'Ubuntu16.10': case 'Debian8.4': - case 'OSX': + case 'OSX10.12': case 'FreeBSD': case 'CentOS7.1': case 'RHEL7.2': case 'OpenSUSE42.1': - case 'Fedora23': // editor brace matching: { + case 'Tizen': + case 'Fedora24': // editor brace matching: { switch (architecture) { case 'x64': case 'x86': - case 'x86compatjit': - case 'x86lb': - def arch = architecture - if (architecture == 'x86compatjit' || architecture == 'x86lb') { - arch = 'x86' + if (architecture == 'x86' && os == 'Ubuntu') { + // build and PAL test + buildCommands += "./tests/scripts/x86_ci_script.sh --buildConfig=${lowerConfiguration}" + Utilities.addXUnitDotNETResults(newJob, '**/pal_tests.xml') + break; } if (scenario == 'formatting') { - buildCommands += "python tests/scripts/format.py -c \${WORKSPACE} -o Linux -a ${arch}" + buildCommands += "python tests/scripts/format.py -c \${WORKSPACE} -o Linux -a ${architecture}" Utilities.addArchival(newJob, "format.patch", "", true, false) break } + if (scenario == 'illink') { + assert(os == 'Ubuntu') + buildCommands += "./tests/scripts/build_illink.sh --clone --arch=${architecture}" + } + def standaloneGc = '' if (scenario == 'standalone_gc') { standaloneGc = 'buildstandalonegc' } - + if (!enableCorefxTesting) { // We run pal tests on all OS but generate mscorlib (and thus, nuget packages) // only on supported OS platforms. if (os == 'FreeBSD') { - buildCommands += "./build.sh skipmscorlib verbose ${lowerConfiguration} ${arch} ${standaloneGc}" + buildCommands += "./build.sh skipmscorlib verbose ${lowerConfiguration} ${architecture} ${standaloneGc}" } else { def bootstrapRid = Utilities.getBoostrapPublishRid(os) def bootstrapRidEnv = bootstrapRid != null ? "__PUBLISH_RID=${bootstrapRid} " : '' - buildCommands += "${bootstrapRidEnv}./build.sh verbose ${lowerConfiguration} ${arch} ${standaloneGc}" + buildCommands += "${bootstrapRidEnv}./build.sh verbose ${lowerConfiguration} ${architecture} ${standaloneGc}" } - buildCommands += "src/pal/tests/palsuite/runpaltests.sh \${WORKSPACE}/bin/obj/${osGroup}.${arch}.${configuration} \${WORKSPACE}/bin/paltestout" - + buildCommands += "src/pal/tests/palsuite/runpaltests.sh \${WORKSPACE}/bin/obj/${osGroup}.${architecture}.${configuration} \${WORKSPACE}/bin/paltestout" + // Set time out setTestJobTimeOut(newJob, scenario) // Basic archiving of the build - Utilities.addArchival(newJob, "bin/Product/**,bin/obj/*/tests/**/*.dylib,bin/obj/*/tests/**/*.so") + Utilities.addArchival(newJob, "bin/Product/**,bin/obj/*/tests/**/*.dylib,bin/obj/*/tests/**/*.so", "bin/Product/**/.nuget/**") // And pal tests Utilities.addXUnitDotNETResults(newJob, '**/pal_tests.xml') } else { - // Corefx stress testing + // Corefx stress testing assert os == 'Ubuntu' assert architecture == 'x64' assert lowerConfiguration == 'checked' assert Constants.jitStressModeScenarios.containsKey(scenario) - + // Build coreclr buildCommands += "./build.sh verbose ${lowerConfiguration} ${architecture}" - + def scriptFileName = "\$WORKSPACE/set_stress_test_env.sh" buildCommands += genStressModeScriptStep(os, scenario, Constants.jitStressModeScenarios[scenario], scriptFileName) @@ -2119,7 +1597,7 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR def workspaceRelativeFxRoot = "_/fx" def absoluteFxRoot = "\$WORKSPACE/${workspaceRelativeFxRoot}" - buildCommands += "python \$WORKSPACE/tests/scripts/run-corefx-tests.py -arch ${arch} -build_type ${configuration} -fx_root ${absoluteFxRoot} -fx_branch ${branch} -env_script ${scriptFileName}" + buildCommands += "python -u \$WORKSPACE/tests/scripts/run-corefx-tests.py -arch ${architecture} -build_type ${configuration} -fx_root ${absoluteFxRoot} -fx_branch ${branch} -env_script ${scriptFileName}" setTestJobTimeOut(newJob, scenario) @@ -2131,53 +1609,51 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR case 'arm64': // We don't run the cross build except on Ubuntu assert os == 'Ubuntu' - + buildCommands += """echo \"Using rootfs in /opt/aarch64-linux-gnu-root\" ROOTFS_DIR=/opt/aarch64-linux-gnu-root ./build.sh skipmscorlib arm64 cross verbose ${lowerConfiguration}""" - + // Basic archiving of the build, no pal tests - Utilities.addArchival(newJob, "bin/Product/**") + Utilities.addArchival(newJob, "bin/Product/**", "bin/Product/**/.nuget/**") break case 'arm': - // All builds for ARM architecture are run on Ubuntu currently - assert os == 'Ubuntu' - if (isLinuxEmulatorBuild == false) { - buildCommands += """echo \"Using rootfs in /opt/arm-liux-genueabihf-root\" - ROOTFS_DIR=/opt/arm-linux-genueabihf-root ./build.sh skipmscorlib arm cross verbose ${lowerConfiguration}""" - - // Basic archiving of the build, no pal tests - Utilities.addArchival(newJob, "bin/Product/**") - break - } - else { - // Make sure the build configuration is either of debug or release - assert ( lowerConfiguration == 'debug' ) || ( lowerConfiguration == 'release' ) + // Cross builds for ARM runs on Ubuntu, Ubuntu16.04 and Tizen currently + assert (os == 'Ubuntu') || (os == 'Ubuntu16.04') || (os == 'Tizen') - // Setup variables to hold emulator folder path and the rootfs mount path - def armemul_path = '/opt/linux-arm-emulator' - def armrootfs_mountpath = '/opt/linux-arm-emulator-root' - - // Unzip the Windows test binaries first. Exit with 0 - buildCommands += "unzip -q -o ./bin/tests/tests.zip -d ./bin/tests/Windows_NT.x64.${configuration} || exit 0" + // default values for Ubuntu + def arm_abi="arm" + def linuxCodeName="trusty" + if (os == 'Ubuntu16.04') { + linuxCodeName="xenial" + } + else if (os == 'Tizen') { + arm_abi="armel" + linuxCodeName="tizen" + } - // Unpack the corefx binaries - buildCommands += "tar -xf ./bin/build.tar.gz" + // Unzip the Windows test binaries first. Exit with 0 + buildCommands += "unzip -q -o ./bin/tests/tests.zip -d ./bin/tests/Windows_NT.x64.${configuration} || exit 0" - // Call the ARM emulator build script to cross build and test using the ARM emulator rootfs - buildCommands += """./tests/scripts/arm32_ci_script.sh \\ - --emulatorPath=${armemul_path} \\ - --mountPath=${armrootfs_mountpath} \\ - --buildConfig=${lowerConfiguration} \\ - --testRootDir=./bin/tests/Windows_NT.x64.${configuration} \\ - --coreFxNativeBinDir=./bin/Linux.armel.${configuration} \\ - --coreFxBinDir=\"./bin/Linux.AnyCPU.${configuration};./bin/Unix.AnyCPU.${configuration};./bin/AnyOS.AnyCPU.${configuration}\" \\ - --testDirFile=./tests/testsRunningInsideARM.txt""" + // Unpack the corefx binaries + buildCommands += "mkdir ./bin/CoreFxBinDir" + buildCommands += "tar -xf ./bin/build.tar.gz -C ./bin/CoreFxBinDir" + if (os != 'Tizen') { + buildCommands += "chmod a+x ./bin/CoreFxBinDir/corerun" + } + // Call the ARM CI script to cross build and test using docker + buildCommands += """./tests/scripts/arm32_ci_script.sh \\ + --mode=docker \\ + --${arm_abi} \\ + --linuxCodeName=${linuxCodeName} \\ + --buildConfig=${lowerConfiguration} \\ + --testRootDir=./bin/tests/Windows_NT.x64.${configuration} \\ + --coreFxBinDir=./bin/CoreFxBinDir \\ + --testDirFile=./tests/testsRunningInsideARM.txt""" - // Basic archiving of the build - Utilities.addArchival(newJob, "bin/Product/**") - break - } + // Basic archiving of the build, no pal tests + Utilities.addArchival(newJob, "bin/Product/**", "bin/Product/**/.nuget/**") + break default: println("Unknown architecture: ${architecture}"); assert false @@ -2218,21 +1694,8 @@ combinedScenarios.each { scenario -> return } } - // If the OS is LinuxARMEmulator and arch is arm, set the isLinuxEmulatorBuild - // flag to true and reset the os to Ubuntu - // The isLinuxEmulatorBuild flag will be used at a later time to execute the right - // set of build commands - // The tuples (LinuxARMEmulator, other architectures) are not handled and control returns - def isLinuxEmulatorBuild = false - if (os == 'LinuxARMEmulator' && architecture == 'arm') { - // Cross Builds only in Debug and Release modes allowed - if ( configuration == 'Checked' ) { - return - } - - isLinuxEmulatorBuild = true - os = 'Ubuntu' - } else if (os == 'LinuxARMEmulator') { + // Tizen is only supported for arm architecture + if (os == 'Tizen' && architecture != 'arm') { return } @@ -2245,15 +1708,12 @@ combinedScenarios.each { scenario -> } break case 'arm': - if ((os != 'Ubuntu') && (os != 'Windows_NT')) { + if ((os != 'Ubuntu') && (os != 'Ubuntu16.04') && (os != 'Tizen') && (os != 'Windows_NT')) { return } break case 'x86': - case 'x86compatjit': - case 'x86lb': - // Skip non-windows - if (os != 'Windows_NT') { + if ((os != 'Ubuntu') && (os != 'Windows_NT')) { return } break @@ -2273,16 +1733,16 @@ combinedScenarios.each { scenario -> if (configuration != 'Checked') { return } - + enableCorefxTesting = isCorefxTesting(scenario) - + // Since these are just execution time differences, // skip platforms that don't execute the tests here (Windows_NT only) def isEnabledOS = (os == 'Windows_NT') || (os == 'Ubuntu' && enableCorefxTesting) if (!isEnabledOS || isBuildOnly) { return } - + switch (architecture) { case 'arm64': if ((scenario != 'gcstress0x3') && (scenario != 'gcstress0xc')) { @@ -2291,13 +1751,12 @@ combinedScenarios.each { scenario -> break case 'x64': case 'x86': - // Everything implemented + // x86 ubuntu: default only + if ((os == 'Ubuntu') && (architecture == 'x86')) { + return + } + // Windows: Everything implemented break - case 'x86compatjit': - case 'x86lb': - // No stress modes for compatjit.dll, legacyjit.dll. - // (There's no technical reason we couldn't allow these.) - return default: return } @@ -2338,7 +1797,7 @@ combinedScenarios.each { scenario -> } break case 'jitdiff': - if (os != 'Windows_NT' && os != 'Ubuntu' && os != 'OSX') { + if (os != 'Windows_NT' && os != 'Ubuntu' && os != 'OSX10.12') { return } if (architecture != 'x64') { @@ -2378,8 +1837,9 @@ combinedScenarios.each { scenario -> case 'r2r_jitstressregs3': case 'r2r_jitstressregs4': case 'r2r_jitstressregs8': - case 'r2r_jitstressregsx10': - case 'r2r_jitstressregsx80': + case 'r2r_jitstressregs0x10': + case 'r2r_jitstressregs0x80': + case 'r2r_jitstressregs0x1000': case 'r2r_jitminopts': case 'r2r_jitforcerelocs': // The above builds are not necessary except for Windows_NT. Non-Windows NT uses @@ -2393,7 +1853,7 @@ combinedScenarios.each { scenario -> break case 'longgc': case 'gcsimulator': - if (os != 'Windows_NT' && os != 'Ubuntu' && os != 'OSX') { + if (os != 'Windows_NT' && os != 'Ubuntu' && os != 'OSX10.12') { return } if (architecture != 'x64') { @@ -2404,7 +1864,7 @@ combinedScenarios.each { scenario -> } break case 'standalone_gc': - if (os != 'Windows_NT' && os != 'Ubuntu' && os != 'OSX') { + if (os != 'Windows_NT' && os != 'Ubuntu' && os != 'OSX10.12') { return } @@ -2443,6 +1903,17 @@ combinedScenarios.each { scenario -> return } break + case 'illink': + if (os != 'Windows_NT' && (os != 'Ubuntu' || architecture != 'x64')) { + return + } + if (architecture != 'x64' && architecture != 'x86') { + return + } + if (isBuildOnly) { + return + } + break case 'default': // Nothing skipped break @@ -2452,22 +1923,22 @@ combinedScenarios.each { scenario -> break } } - + // Calculate names def lowerConfiguration = configuration.toLowerCase() - def jobName = getJobName(configuration, architecture, os, scenario, isBuildOnly, isLinuxEmulatorBuild) - def folderName = isJITStressJob(scenario) ? 'jitstress' : ''; - + def jobName = getJobName(configuration, architecture, os, scenario, isBuildOnly) + def folderName = getJobFolder(scenario) + // Create the new job def newJob = job(Utilities.getFullJobName(project, jobName, isPR, folderName)) {} - + setMachineAffinity(newJob, os, architecture) // Add all the standard options Utilities.standardJobSetup(newJob, project, isPR, "*/${branch}") - addTriggers(newJob, branch, isPR, architecture, os, configuration, scenario, false, isBuildOnly, isLinuxEmulatorBuild) - - def buildCommands = calculateBuildCommands(newJob, scenario, branch, isPR, architecture, configuration, os, enableCorefxTesting, isBuildOnly, isLinuxEmulatorBuild) + addTriggers(newJob, branch, isPR, architecture, os, configuration, scenario, false, isBuildOnly) + + def buildCommands = calculateBuildCommands(newJob, scenario, branch, isPR, architecture, configuration, os, enableCorefxTesting, isBuildOnly) def osGroup = getOSGroup(os) newJob.with { @@ -2478,8 +1949,9 @@ combinedScenarios.each { scenario -> } } else { - // Setup corefx and Windows test binaries for Linux ARM Emulator Build - if (isLinuxEmulatorBuild) { + // Setup corefx and Windows test binaries for Linux cross build for ubuntu-arm, ubuntu16.04-arm and tizen-armel + if ( architecture == 'arm' && ( os == 'Ubuntu' || os == 'Ubuntu16.04' || os == 'Tizen')) { + // Cross build for ubuntu-arm, ubuntu16.04-arm and tizen-armel // Define the Windows Tests and Corefx build job names def WindowTestsName = projectFolder + '/' + Utilities.getFullJobName(project, @@ -2499,7 +1971,26 @@ combinedScenarios.each { scenario -> latestSuccessful(true) } } - copyArtifacts("${corefxFolder}/linuxarmemulator_softfp_cross_${lowerConfiguration}") { + + // Defaults for Ubuntu + def arm_abi = 'arm' + def corefx_os = 'ubuntu14.04' + if (os == 'Ubuntu16.04') { + arm_abi = 'arm' + corefx_os = 'ubuntu16.04' + } + else if (os == 'Tizen') { + arm_abi = 'armel' + corefx_os = 'tizen' + } + + // Let's use release CoreFX to test checked CoreCLR, + // because we do not generate checked CoreFX in CoreFX CI yet. + def corefx_lowerConfiguration = lowerConfiguration + if ( lowerConfiguration == 'checked' ) { + corefx_lowerConfiguration='release' + } + copyArtifacts("${corefxFolder}/${corefx_os}_${arm_abi}_cross_${corefx_lowerConfiguration}") { includePatterns('bin/build.tar.gz') buildSelector { latestSuccessful(true) @@ -2513,7 +2004,7 @@ combinedScenarios.each { scenario -> } } } // newJob.with - + } // os } // configuration } // architecture @@ -2550,8 +2041,8 @@ 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 != 'r2r' && + scenario != 'pri1r2r' && scenario != 'gcstress15_pri1r2r' && Constants.r2rJitStressScenarios.indexOf(scenario) == -1) { return @@ -2605,8 +2096,9 @@ combinedScenarios.each { scenario -> case 'r2r_jitstressregs3': case 'r2r_jitstressregs4': case 'r2r_jitstressregs8': - case 'r2r_jitstressregsx10': - case 'r2r_jitstressregsx80': + case 'r2r_jitstressregs0x10': + case 'r2r_jitstressregs0x80': + case 'r2r_jitstressregs0x1000': case 'r2r_jitminopts': case 'r2r_jitforcerelocs': //Skip configs that aren't Checked or Release (so just Debug, for now) @@ -2635,6 +2127,11 @@ combinedScenarios.each { scenario -> } case 'formatting': return + case 'illink': + if (os != 'Windows_NT' && os != 'Ubuntu') { + return + } + break case 'default': // Nothing skipped break @@ -2644,17 +2141,17 @@ combinedScenarios.each { scenario -> break } } - + def lowerConfiguration = configuration.toLowerCase() def osGroup = getOSGroup(os) def jobName = getJobName(configuration, architecture, os, scenario, false) + "_tst" - + // Unless this is a coverage test run, we want to copy over the default build of coreclr. def inputScenario = 'default' if (scenario == 'coverage') { inputScenario = 'coverage' } - def inputCoreCLRBuildName = projectFolder + '/' + + def inputCoreCLRBuildName = projectFolder + '/' + Utilities.getFullJobName(project, getJobName(configuration, architecture, os, inputScenario, false), isPR) // If this is a stress scenario, there isn't any difference in the build job // so we didn't create a build only job for windows_nt specific to that stress mode. Just copy @@ -2668,20 +2165,20 @@ combinedScenarios.each { scenario -> } def inputWindowTestsBuildName = '' if (Constants.jitStressModeScenarios.containsKey(testBuildScenario)) { - inputWindowTestsBuildName = projectFolder + '/' + + inputWindowTestsBuildName = projectFolder + '/' + Utilities.getFullJobName(project, getJobName(configuration, architecture, 'windows_nt', 'default', true), isPR) } else { - inputWindowTestsBuildName = projectFolder + '/' + + inputWindowTestsBuildName = projectFolder + '/' + Utilities.getFullJobName(project, getJobName(configuration, architecture, 'windows_nt', testBuildScenario, true), isPR) } // Enable Server GC for Ubuntu PR builds def serverGCString = '' - + // Whether or not this test run should be run sequentially instead // of in parallel. Only used for long GC tests. def sequentialString = '' - + // Whether or not this test run should run a specific playlist. // Only used for long GC tests. @@ -2690,7 +2187,7 @@ combinedScenarios.each { scenario -> // here because using a playlist file produces much more readable output on the CI machines // and reduces running time. def playlistString = '' - + if (os == 'Ubuntu' && isPR){ serverGCString = '--useServerGC' } @@ -2704,6 +2201,7 @@ combinedScenarios.each { scenario -> def runjitforcerelocsStr = '' def runjitdisasmStr = '' def gcstressStr = '' + def illinkStr = '' if (scenario == 'r2r' || scenario == 'pri1r2r' || @@ -2711,7 +2209,7 @@ combinedScenarios.each { scenario -> Constants.r2rJitStressScenarios.indexOf(scenario) != -1) { crossgenStr = '--crossgen' runcrossgentestsStr = '--runcrossgentests' - + if (scenario == 'r2r_jitstress1'){ runjitstressStr = '--jitstress=1' } @@ -2733,11 +2231,14 @@ combinedScenarios.each { scenario -> else if (scenario == 'r2r_jitstressregs8') { runjitstressregsStr = '--jitstressregs=8' } - else if (scenario == 'r2r_jitstressregsx10') { - runjitstressregsStr = '--jitstressregs=x10' + else if (scenario == 'r2r_jitstressregs0x10') { + runjitstressregsStr = '--jitstressregs=0x10' } - else if (scenario == 'r2r_jitstressregsx80') { - runjitstressregsStr = '--jitstressregs=x80' + else if (scenario == 'r2r_jitstressregs0x80') { + runjitstressregsStr = '--jitstressregs=0x80' + } + else if (scenario == 'r2r_jitstressregs0x1000') { + runjitstressregsStr = '--jitstressregs=0x1000' } else if (scenario == 'r2r_jitminopts') { runjitmioptsStr = '--jitminopts' @@ -2755,12 +2256,17 @@ combinedScenarios.each { scenario -> { runjitdisasmStr = '--jitdisasm --crossgen' } - + + if (scenario == 'illink') + { + illinkStr = '--link=\$WORKSPACE/linker/linker/bin/netcore_Release/netcoreapp2.0/ubuntu-x64/publish/illink' + } + if (isLongGc(scenario)) { // Long GC tests behave very poorly when they are not // the only test running (many of them allocate until OOM). sequentialString = '--sequential' - + // The Long GC playlist contains all of the tests that are // going to be run. The GCSimulator playlist contains all of // the GC simulator tests. @@ -2771,21 +2277,21 @@ combinedScenarios.each { scenario -> playlistString = '--gcsimulator --playlist=./tests/gcSimulatorTests.txt' } } - - def folder = isJITStressJob(scenario) ? 'jitstress' : '' + + def folder = getJobFolder(scenario) def newJob = job(Utilities.getFullJobName(project, jobName, isPR, folder)) { // Add parameters for the inputs - + parameters { stringParam('CORECLR_WINDOWS_BUILD', '', 'Build number to copy CoreCLR windows test binaries from') stringParam('CORECLR_BUILD', '', "Build number to copy CoreCLR ${osGroup} binaries from") } - + steps { // Set up the copies - + // Coreclr build containing the tests and mscorlib - + copyArtifacts(inputWindowTestsBuildName) { excludePatterns('**/testResults.xml', '**/*.ni.dll') buildSelector { @@ -2815,7 +2321,7 @@ combinedScenarios.each { scenario -> // Remove obj files for PAL tests so they're not included in coverage results shell("rm -rf ./clr/bin/obj/Linux.x64.Release/src/pal/tests") - + // Unzip the tests first. Exit with 0 shell("unzip -q -o ./clr/bin/tests/tests.zip -d ./clr/bin/tests/Windows_NT.${architecture}.${configuration} || exit 0") @@ -2871,7 +2377,7 @@ combinedScenarios.each { scenario -> else { // Coreclr build we are trying to test - + copyArtifacts(inputCoreCLRBuildName) { excludePatterns('**/testResults.xml', '**/*.ni.dll') buildSelector { @@ -2880,23 +2386,29 @@ combinedScenarios.each { scenario -> } def corefxFolder = Utilities.getFolderName('dotnet/corefx') + '/' + Utilities.getFolderName(branch) - + // Corefx components. We now have full stack builds on all distros we test here, so we can copy straight from CoreFX jobs. - def osJobName = (os == 'Ubuntu') ? 'ubuntu14.04' : os.toLowerCase() + def osJobName + if (os == 'Ubuntu') { + osJobName = 'ubuntu14.04' + } + else { + osJobName = os.toLowerCase() + } copyArtifacts("${corefxFolder}/${osJobName}_release") { includePatterns('bin/build.tar.gz') buildSelector { latestSuccessful(true) } } - + shell ("mkdir ./bin/CoreFxBinDir") // Unpack the corefx binaries shell("tar -xf ./bin/build.tar.gz -C ./bin/CoreFxBinDir") // Unzip the tests first. Exit with 0 shell("unzip -q -o ./bin/tests/tests.zip -d ./bin/tests/Windows_NT.${architecture}.${configuration} || exit 0") - + // Execute the tests // If we are running a stress mode, we'll set those variables first def testEnvOpt = "" @@ -2906,7 +2418,7 @@ combinedScenarios.each { scenario -> shell("${createScriptCmds}") testEnvOpt = "--test-env=" + scriptFileName } - + if (isGCStressRelatedTesting(scenario)) { shell('./init-tools.sh') } @@ -2918,7 +2430,7 @@ combinedScenarios.each { scenario -> --mscorlibDir=\"\${WORKSPACE}/bin/Product/${osGroup}.${architecture}.${configuration}\" \\ --coreFxBinDir=\"\${WORKSPACE}/bin/CoreFxBinDir\" \\ --limitedDumpGeneration \\ - ${testEnvOpt} ${serverGCString} ${gcstressStr} ${crossgenStr} ${runcrossgentestsStr} ${runjitstressStr} ${runjitstressregsStr} ${runjitmioptsStr} ${runjitforcerelocsStr} ${runjitdisasmStr} ${sequentialString} ${playlistString}""") + ${testEnvOpt} ${serverGCString} ${gcstressStr} ${crossgenStr} ${runcrossgentestsStr} ${runjitstressStr} ${runjitstressregsStr} ${runjitmioptsStr} ${runjitforcerelocsStr} ${runjitdisasmStr} ${illinkStr} ${sequentialString} ${playlistString}""") } } } @@ -2946,7 +2458,7 @@ combinedScenarios.each { scenario -> // Set timeouts to 240. setTestJobTimeOut(newJob, scenario) Utilities.addXUnitDotNETResults(newJob, '**/coreclrtests.xml') - + // Create a build flow to join together the build and tests required to run this // test. // Windows CoreCLR build and Linux CoreCLR build (in parallel) -> @@ -2968,7 +2480,7 @@ combinedScenarios.each { scenario -> windowsBuildJob = build(params, '${inputWindowTestsBuildName}') // And then build the test build -build(params + [CORECLR_WINDOWS_BUILD: windowsBuildJob.build.number], '${fullTestJobName}') +build(params + [CORECLR_WINDOWS_BUILD: windowsBuildJob.build.number], '${fullTestJobName}') """) } // Normal jobs copy a Windows build & a non-Windows build @@ -2980,17 +2492,17 @@ parallel ( { coreclrBuildJob = build(params, '${inputCoreCLRBuildName}') }, { windowsBuildJob = build(params, '${inputWindowTestsBuildName}') } ) - + // And then build the test build -build(params + [CORECLR_BUILD: coreclrBuildJob.build.number, - CORECLR_WINDOWS_BUILD: windowsBuildJob.build.number], '${fullTestJobName}') +build(params + [CORECLR_BUILD: coreclrBuildJob.build.number, + CORECLR_WINDOWS_BUILD: windowsBuildJob.build.number], '${fullTestJobName}') """) } } setMachineAffinity(newFlowJob, os, architecture) Utilities.standardJobSetup(newFlowJob, project, isPR, "*/${branch}") - addTriggers(newFlowJob, branch, isPR, architecture, os, configuration, scenario, true, false, false) + addTriggers(newFlowJob, branch, isPR, architecture, os, configuration, scenario, true, false) } // configuration } // os } // architecture @@ -3003,3 +2515,5 @@ JobReport.Report.generateJobReport(out) Utilities.createHelperJob(this, project, branch, "Welcome to the ${project} Repository", // This is prepended to the help message "Have a nice day!") // This is appended to the help message. You might put known issues here. + +Utilities.addCROSSCheck(this, project, branch) -- cgit v1.2.3