summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Gillespie <segilles@microsoft.com>2016-03-11 15:48:56 -0800
committerSean Gillespie <segilles@microsoft.com>2016-04-11 11:47:48 -0700
commit57246c0812e94e0ad98cb313d2d97ba1a458afb8 (patch)
tree260e5bf0a11da114357fb35e5941c53e70cb326b
parent2eb214ee49e3474ec64aad04ac673f7f18379c95 (diff)
downloadcoreclr-57246c0812e94e0ad98cb313d2d97ba1a458afb8.tar.gz
coreclr-57246c0812e94e0ad98cb313d2d97ba1a458afb8.tar.bz2
coreclr-57246c0812e94e0ad98cb313d2d97ba1a458afb8.zip
Create Long-running GC test job for the CI
-rwxr-xr-xnetci.groovy75
-rw-r--r--tests/buildtest.cmd7
-rw-r--r--tests/issues.targets3
-rw-r--r--tests/runtest.cmd18
-rw-r--r--tests/src/CLRTest.Execute.Bash.targets5
-rw-r--r--tests/src/CLRTest.Execute.Batch.targets8
-rw-r--r--tests/src/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs8
-rw-r--r--tests/src/GC/Coverage/concurrentspin2.cs184
-rw-r--r--tests/src/GC/Coverage/concurrentspin2.csproj45
-rw-r--r--tests/src/GC/Features/BackgroundGC/concurrentspin2.csproj1
-rw-r--r--tests/src/GC/Features/LOHCompaction/lohcompact_stress.csproj1
-rw-r--r--tests/src/GC/Features/LOHCompaction/lohcompactapi2.csproj1
-rw-r--r--tests/src/GC/Features/LOHCompaction/lohcompactscenariorepro.csproj1
-rw-r--r--tests/src/GC/Features/PartialCompaction/eco1.csproj1
-rw-r--r--tests/src/GC/Features/PartialCompaction/partialcompactiontest.csproj1
-rw-r--r--tests/src/GC/Features/PartialCompaction/partialcompactionwloh.csproj1
-rw-r--r--tests/src/GC/Features/SustainedLowLatency/sustainedlowlatency_race.csproj1
-rw-r--r--tests/src/GC/Features/SustainedLowLatency/sustainedlowlatency_race_reverse.csproj1
-rw-r--r--tests/src/GC/Scenarios/BaseFinal/basefinal.csproj1
-rw-r--r--tests/src/GC/Scenarios/DoublinkList/doublinknoleak.csproj1
-rw-r--r--tests/tests.targets5
-rw-r--r--tests/testsFailingOutsideWindows.txt2
-rw-r--r--tests/x86_legacy_backend_issues.targets3
23 files changed, 126 insertions, 248 deletions
diff --git a/netci.groovy b/netci.groovy
index 53295e8bb3..6889de12d6 100755
--- a/netci.groovy
+++ b/netci.groovy
@@ -66,7 +66,7 @@ class Constants {
'gcstress0xc_minopts_heapverify1' : ['COMPlus_GCStress' : '0xC', 'COMPlus_JITMinOpts' : '1', 'COMPlus_HeapVerify' : '1']
]
// This is the basic set of scenarios
- def static basicScenarios = ['default', 'pri1', 'ilrt', 'r2r', 'pri1r2r', 'gcstress15_pri1r2r']
+ def static basicScenarios = ['default', 'pri1', 'ilrt', 'r2r', 'pri1r2r', 'gcstress15_pri1r2r', 'longgc']
// This is the set of configurations
def static configurationList = ['Debug', 'Checked', 'Release']
// This is the set of architectures
@@ -348,6 +348,9 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
}
}
break
+ case 'longgc':
+ // long GC jobs are triggered by phrase only.
+ break
case 'ilrt':
assert !(os in bidailyCrossList)
// ILASM/ILDASM roundtrip one gets a daily build, and only for release
@@ -479,6 +482,11 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} GCStress 15 R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")
}
break
+ case 'longgc':
+ if (configuration == 'Release' || configuration == 'Checked') {
+ Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Long-Running GC Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")
+ }
+ break
case 'minopts':
assert (os == 'Windows_NT') || (os in Constants.crossList)
Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - MinOpts)",
@@ -636,6 +644,11 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} GCStress 15 R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")
}
break
+ case 'longgc':
+ if (configuration == 'Release' || configuration == 'Checked') {
+ Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Long-Running GC Build & Test", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")
+ }
+ break
case 'minopts':
assert (os == 'Windows_NT') || (os in Constants.crossList)
Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - MinOpts)",
@@ -816,6 +829,12 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} GCStress 15 R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*")
}
}
+ } else if (scenario == 'longgc') {
+ if (os == 'Windows_NT'){
+ if (configuration == 'Release' || configuration == 'Checked'){
+ Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Long-Running GC Build & Test", "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*")
+ }
+ }
}
break
default:
@@ -950,6 +969,16 @@ combinedScenarios.each { scenario ->
return
}
break
+ case 'longgc':
+ if (os != 'Windows_NT' && !(os in Constants.crossList)) {
+ return
+ }
+
+ // only x64 or x86 for now
+ if (architecture != 'x64' && architecture != 'x86') {
+ return
+ }
+ break
case 'default':
// Nothing skipped
break
@@ -1014,6 +1043,9 @@ combinedScenarios.each { scenario ->
//Build pri1 R2R tests with GC stress level 15
buildCommands += "build.cmd ${lowerConfiguration} ${architecture} docrossgen skiptests"
buildCommands += "set __TestIntermediateDir=int&&tests\\buildtest.cmd ${lowerConfiguration} ${architecture} crossgen Priority 1 gcstresslevel 15"
+ } else if (scenario == 'longgc') {
+ buildCommands += "build.cmd ${lowerConfiguration} ${architecture} skiptests"
+ buildCommands += "set __TestIntermediateDir=int&&tests\\buildtest.cmd ${lowerConfiguration} ${architecture} longgctests"
}
else {
println("Unknown scenario: ${scenario}")
@@ -1053,10 +1085,18 @@ combinedScenarios.each { scenario ->
}
}
else if (architecture == 'x64') {
- buildCommands += "tests\\runtest.cmd ${lowerConfiguration} ${architecture} ${crossgenStr}"
+ if (scenario == 'longgc') {
+ buildCommands += "tests\\runtest.cmd ${lowerConfiguration} ${architecture} longgctests sequential Exclude0"
+ } else {
+ buildCommands += "tests\\runtest.cmd ${lowerConfiguration} ${architecture}"
+ }
}
else if (architecture == 'x86') {
- buildCommands += "tests\\runtest.cmd ${lowerConfiguration} ${architecture} ${crossgenStr} Exclude0 x86_legacy_backend_issues.targets"
+ if (scenario == 'longgc') {
+ buildCommands += "tests\\runtest.cmd ${lowerConfiguration} ${architecture} longgctests sequential Exclude0"
+ } else {
+ buildCommands += "tests\\runtest.cmd ${lowerConfiguration} ${architecture} Exclude0 x86_legacy_backend_issues.targets"
+ }
}
}
@@ -1295,6 +1335,12 @@ combinedScenarios.each { scenario ->
return
}
break
+ case 'longgc':
+ //Skip configs that aren't Checked or Release (so just Debug, for now)
+ if (configuration != 'Checked' && configuration != 'Release') {
+ return
+ }
+ break
case 'default':
// Nothing skipped
break
@@ -1324,6 +1370,15 @@ combinedScenarios.each { scenario ->
}
// 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 only run failing test.
+ // Only used for long GC tests, because they are all ignored in
+ // normal test runs.
+ def runFailingString = ''
if (os == 'Ubuntu' && isPR){
serverGCString = '--useServerGC'
@@ -1334,6 +1389,18 @@ combinedScenarios.each { scenario ->
if (scenario == 'r2r' || scenario == 'pri1r2r' || scenario == 'gcstress15_pri1r2r'){
crossgenStr = '--crossgen'
}
+
+ if (scenario == 'longgc') {
+ // Long GC tests behave very poorly when they are not
+ // the only test running (many of them allocate until OOM).
+ sequentialString = 'sequential'
+
+ // Long GC tests all exist in the ignore list because
+ // they can't run during normal test runs. This is not
+ // particularly pretty but, until we get a more generalized
+ // mechanism for coming up with test playlists, it works.
+ runFailingString = '--runFailingTestsOnly'
+ }
def newJob = job(Utilities.getFullJobName(project, jobName, isPR)) {
@@ -1412,7 +1479,7 @@ combinedScenarios.each { scenario ->
--mscorlibDir=\"\${WORKSPACE}/bin/Product/${osGroup}.${architecture}.${configuration}\" \\
--coreFxBinDir=\"\${WORKSPACE}/bin/${osGroup}.AnyCPU.Release\" \\
--coreFxNativeBinDir=\"\${WORKSPACE}/bin/${osGroup}.${architecture}.Release\" \\
- ${testEnvOpt} ${serverGCString} ${crossgenStr}""")
+ ${testEnvOpt} ${serverGCString} ${crossgenStr} ${sequentialString} ${runFailingString}""")
}
}
diff --git a/tests/buildtest.cmd b/tests/buildtest.cmd
index f85941d2bd..8f23e829d8 100644
--- a/tests/buildtest.cmd
+++ b/tests/buildtest.cmd
@@ -31,6 +31,7 @@ set __crossgen=
set __ILAsmRoundtrip=
set __BuildSequential=
set __TestPriority=
+set __LongGCTests=
set __msbuildCleanBuildArgs=
set __msbuildExtraArgs=
set __verbosity=normal
@@ -65,6 +66,7 @@ if /i "%1" == "ilasmroundtrip" (set __ILAsmRoundtrip=true&shift&goto Arg_Lo
if /i "%1" == "sequential" (set __BuildSequential=1&shift&goto Arg_Loop)
if /i "%1" == "priority" (set __TestPriority=%2&shift&shift&goto Arg_Loop)
if /i "%1" == "gcstresslevel" (set __GCStressLevel=%2&shift&shift&goto Arg_Loop)
+if /i "%1" == "longgctests" (set __LongGCTests=1&shift&goto Arg_Loop)
if /i "%1" == "verbose" (set __verbosity=detailed&shift&goto Arg_Loop)
@@ -275,6 +277,11 @@ if %__GCStressLevel% GTR 0 (
set __msbuildManagedBuildArgs=%__msbuildManagedBuildArgs% /p:GCStressLevel=%__GCStressLevel%
)
+if defined __LongGCTests (
+ echo Building tests with Long GC tests enabled.
+ set __msbuildManagedBuildArgs=%__msbuildManagedBuildArgs% /p:GCLongRunning=true
+)
+
set __BuildLogRootName=Tests_Managed
call :msbuild "%__ProjectFilesDir%\build.proj" %__msbuildManagedBuildArgs%
if errorlevel 1 exit /b 1
diff --git a/tests/issues.targets b/tests/issues.targets
index 331e721ef7..03545dc8ca 100644
--- a/tests/issues.targets
+++ b/tests/issues.targets
@@ -319,9 +319,6 @@
<ExcludeList Include="$(XunitTestBinBase)\GC\Scenarios\BaseFinal\basefinal\*">
<Issue>3392</Issue>
</ExcludeList>
- <ExcludeList Include="$(XunitTestBinBase)\GC\Coverage\concurrentspin2\*">
- <Issue>3392</Issue>
- </ExcludeList>
<ExcludeList Include="$(XunitTestBinBase)\GC\Coverage\smalloom\*">
<Issue>3392</Issue>
</ExcludeList>
diff --git a/tests/runtest.cmd b/tests/runtest.cmd
index eeca3a978e..d894c8e080 100644
--- a/tests/runtest.cmd
+++ b/tests/runtest.cmd
@@ -26,8 +26,9 @@ set "__LogsDir=%__RootBinDir%\Logs"
:: Default __Exclude to issues.targets
set __Exclude0=%~dp0\issues.targets
-set __BuildSequential=
+set __Sequential=
set __msbuildExtraArgs=
+set __LongGCTests=
:Arg_Loop
if "%1" == "" goto ArgsDone
@@ -53,8 +54,9 @@ if /i "%1" == "SkipWrapperGeneration" (set __SkipWrapperGeneration=true&shift&go
if /i "%1" == "Exclude" (set __Exclude=%2&shift&shift&goto Arg_Loop)
if /i "%1" == "Exclude0" (set __Exclude0=%2&shift&shift&goto Arg_Loop)
if /i "%1" == "TestEnv" (set __TestEnv=%2&shift&shift&goto Arg_Loop)
-if /i "%1" == "sequential" (set __BuildSequential=1&shift&goto Arg_Loop)
+if /i "%1" == "sequential" (set __Sequential=1&shift&goto Arg_Loop)
if /i "%1" == "crossgen" (set __DoCrossgen=1&shift&goto Arg_Loop)
+if /i "%1" == "longgctests" (set __LongGCTests=1&shift&goto Arg_Loop)
if /i "%1" == "GenerateLayoutOnly" (set __GenerateLayoutOnly=1&set __SkipWrapperGeneration=true&shift&goto Arg_Loop)
if /i "%1" == "PerfTests" (set __PerfTests=true&set __SkipWrapperGeneration=true&shift&goto Arg_Loop)
@@ -125,8 +127,10 @@ if not defined VSINSTALLDIR (
:: assembly.
set __msbuildCommonArgs=/nologo /nodeReuse:false %__msbuildExtraArgs%
-if not defined __BuildSequential (
+if not defined __Sequential (
set __msbuildCommonArgs=%__msbuildCommonArgs% /maxcpucount
+) else (
+ set __msbuildCommonArgs=%__msbuildCommonArgs% /p:ParallelRun=false
)
if defined CORE_ROOT goto SkipCoreRootSetup
@@ -309,6 +313,14 @@ if "%__IsGCTest%"=="true" (
)
)
+:: Long GC tests take about 10 minutes per test on average, so
+:: they often bump up against the default 10 minute timeout.
+:: 20 minutes is more than enough time for a test to complete successfully.
+if defined __LongGCTests (
+ echo Running Long GC tests, extending timeout to 20 minutes
+ set __TestTimeout=1200000
+)
+
set __BuildLogRootName=Tests_GenerateRuntimeLayout
call :msbuild "%__ProjectFilesDir%\runtest.proj" /p:GenerateRuntimeLayout=true
if errorlevel 1 (
diff --git a/tests/src/CLRTest.Execute.Bash.targets b/tests/src/CLRTest.Execute.Bash.targets
index d4bef47283..7ec2e1566d 100644
--- a/tests/src/CLRTest.Execute.Bash.targets
+++ b/tests/src/CLRTest.Execute.Bash.targets
@@ -165,6 +165,10 @@ then
exit 0
fi
]]></BashCLRTestEnvironmentCompatibilityCheck>
+ <BashCLRTestGCLongTestSkipCondition Condition="'$(GCLongRunning)' == 'true' And '$(IsLongRunningGCTest)' != 'true'"><![CDATA[
+echo Skipping execution because this is not a long-running GC test
+exit 0
+ ]]></BashCLRTestGCLongTestSkipCondition>
<BashCLRTestExitCodePrep Condition="$(_CLRTestNeedsToRun)">
<![CDATA[CLRTestExpectedExitCode=$(CLRTestExitCode)
echo BEGIN EXECUTION]]>
@@ -312,6 +316,7 @@ $__TestEnv
$(BashEnvironmentVariables)
$(BashCLRTestEnvironmentCompatibilityCheck)
+$(BashCLRTestGCLongTestSkipCondition)
$(BashCLRTestArgPrep)
$(BashCLRTestExitCodePrep)
# CrossGen Script (when /p:CrossGen=true)
diff --git a/tests/src/CLRTest.Execute.Batch.targets b/tests/src/CLRTest.Execute.Batch.targets
index 12820ac718..7fbe32cebb 100644
--- a/tests/src/CLRTest.Execute.Batch.targets
+++ b/tests/src/CLRTest.Execute.Batch.targets
@@ -153,7 +153,10 @@ IF "%COMPlus_JitStress%"=="" IF "%COMPlus_JitStressRegs%"=="" IF "%COMPlus_JITMi
Exit /b 0
:Compatible1
]]></BatchCLRTestEnvironmentCompatibilityCheck>
-
+ <BatchCLRTestGCLongTestSkipCondition Condition="$(GCLongRunning) == 'true' And '$(IsLongRunningGCTest)' != 'true'"><![CDATA[
+echo Skipping execution because this is not a long-running GC test
+Exit /b 0
+ ]]></BatchCLRTestGCLongTestSkipCondition>
<BatchCLRTestExitCodePrep Condition="$(_CLRTestNeedsToRun)">
<![CDATA[
set CLRTestExpectedExitCode=$(CLRTestExitCode)
@@ -347,6 +350,9 @@ $(CrossgenBatchScript)
REM IlasmRoundTrip Script
$(IlasmRoundTripBatchScript)
+REM Long GC Tests Script (when /p:GCLongRunning=true)
+$(BatchCLRTestGCLongTestSkipCondition)
+
REM Precommands
$(CLRTestBatchPreCommands)
REM Launch
diff --git a/tests/src/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/tests/src/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs
index d012dca5f2..398315bd61 100644
--- a/tests/src/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs
+++ b/tests/src/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs
@@ -16,13 +16,19 @@ namespace CoreclrTestLib
public class CoreclrTestWrapperLib
{
public const int EXIT_SUCCESS_CODE = 0;
+ public const string TIMEOUT_ENVIRONMENT_VAR = "__TestTimeout";
+ public const int DEFAULT_TIMEOUT = 1000 * 60*10;
public int RunTest(string executable, string outputFile, string errorFile)
{
Debug.Assert(outputFile != errorFile);
int exitCode = -100;
- int timeout = 1000 * 60*10;
+
+ // If a timeout was given to us by an environment variable, use it instead of the default
+ // timeout.
+ string environmentVar = Environment.GetEnvironmentVariable(TIMEOUT_ENVIRONMENT_VAR);
+ int timeout = environmentVar != null ? int.Parse(environmentVar) : DEFAULT_TIMEOUT;
var outputStream = new FileStream(outputFile, FileMode.Create);
var errorStream = new FileStream(errorFile, FileMode.Create);
diff --git a/tests/src/GC/Coverage/concurrentspin2.cs b/tests/src/GC/Coverage/concurrentspin2.cs
deleted file mode 100644
index 23edb8bb34..0000000000
--- a/tests/src/GC/Coverage/concurrentspin2.cs
+++ /dev/null
@@ -1,184 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for more information.
-
-using System;
-using System.Diagnostics;
-using System.Threading;
-
-class PriorityTest
-{
- private byte[][] old;
- private byte[][] med;
- private Random rand;
-
- private int oldDataSize;
- private int medDataSize;
- private int iterCount;
- private int meanAllocSize;
- private int medTime;
- private int youngTime;
-
-
- public PriorityTest(int oldDataSize, int medDataSize,
- int iterCount, int meanAllocSize,
- int medTime, int youngTime)
- {
- rand = new Random(314159);
- this.oldDataSize = oldDataSize;
- this.medDataSize = medDataSize;
- this.iterCount = iterCount;
- this.meanAllocSize = meanAllocSize;
- this.medTime = medTime;
- this.youngTime = youngTime;
- }
-
- // creates initial arrays
- void AllocTest(int oldDataSize, int medDataSize, int meanAllocSize)
- {
- old = new byte[oldDataSize][];
- med = new byte[medDataSize][];
-
- for (int i = 0; i < old.Length; i++)
- {
- old[i] = new byte[meanAllocSize];
- }
-
- for (int i = 0; i < med.Length; i++)
- {
- med[i] = new byte[meanAllocSize];
- }
- }
-
- // churns data in the heap by replacing byte arrays with new ones of random length
- // this should induce concurrent GCs
- void SteadyState(int oldDataSize, int medDataSize,
- int iterCount, int meanAllocSize,
- int medTime, int youngTime)
- {
-
- for (int i = 0; i < iterCount; i++)
- {
- byte[] newarray = new byte[meanAllocSize];
-
- if ((i % medTime) == 0)
- {
- old[rand.Next(0, old.Length)] = newarray;
- }
- if ((i % youngTime) == 0)
- {
- med[rand.Next(0, med.Length)] = newarray;
- }
- //if (((i % 5000) == 0) && (Thread.CurrentThread.Priority != ThreadPriority.Lowest))
- //{
- // Thread.Sleep(200);
- //}
- }
- }
-
- // method that runs the test
- public void RunTest()
- {
- for (int iteration = 0; iteration < iterCount; iteration++)
- {
- AllocTest(oldDataSize, medDataSize, meanAllocSize);
-
- SteadyState(oldDataSize, medDataSize,
- iterCount, meanAllocSize,
- medTime, youngTime);
-
- if (((iteration + 1) % 20) == 0)
- Console.WriteLine("Thread: {1} Finished iteration {0}", iteration, System.Threading.Thread.CurrentThread.Name);
- }
-
- }
-
-}
-
-
-class ConcurrentRepro
-{
-
- public static void Usage()
- {
- Console.WriteLine("Usage:");
- Console.WriteLine("\t<num iterations> <num threads>");
- }
-
- public static int[] ParseArgs(string[] args)
- {
- int[] parameters = new int[2];
-
- // set defaults
- parameters[0] = 100;
- parameters[1] = 4;
-
- if (args.Length == 0)
- {
- //use defaults
- Console.WriteLine("Using defaults: 100 iterations, 4 threads");
- return parameters;
- }
- if (args.Length == parameters.Length)
- {
- for (int i = 0; i < args.Length; i++)
- {
- int j = 0;
- if (!int.TryParse(args[i], out j))
- {
- Usage();
- return null;
- }
- parameters[i] = j;
- }
-
- return parameters;
- }
-
- // incorrect number of arguments
- Usage();
- return null;
- }
-
-
- public static int Main(string[] args)
- {
-
- // parse arguments
- int[] parameters = ParseArgs(args);
- if (parameters == null)
- {
- return 0;
- }
-
- // set process affinity to 1 to repro bug easier
- //Process.GetCurrentProcess().ProcessorAffinity = (IntPtr)1;
-
-
- PriorityTest priorityTest = new PriorityTest(1000000, 5000, parameters[0], 17, 30, 3);
- ThreadStart startDelegate = new ThreadStart(priorityTest.RunTest);
-
- // create threads
- Thread[] threads = new Thread[parameters[1]];
- for (int i = 0; i < threads.Length; i++)
- {
- threads[i] = new Thread(startDelegate);
- threads[i].Name = String.Format("Thread{0}", i);
- //if (i % 2 == 0)
- //{
- // threads[i].Priority = ThreadPriority.Lowest;
- //}
- threads[i].Start();
- }
-
- // wait for threads to complete
- for (int i = 0; i < threads.Length; i++)
- {
- threads[i].Join();
- }
-
- return 100;
- }
-}
-
-
diff --git a/tests/src/GC/Coverage/concurrentspin2.csproj b/tests/src/GC/Coverage/concurrentspin2.csproj
deleted file mode 100644
index 7e63affeba..0000000000
--- a/tests/src/GC/Coverage/concurrentspin2.csproj
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
- <PropertyGroup>
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <SchemaVersion>2.0</SchemaVersion>
- <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
- <OutputType>Exe</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <FileAlignment>512</FileAlignment>
- <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
- <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
- <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
- <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
- </PropertyGroup>
- <!-- Default configurations to help VS understand the configurations -->
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- </PropertyGroup>
- <ItemGroup>
- <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
- <Visible>False</Visible>
- </CodeAnalysisDependentAssemblyPaths>
- </ItemGroup>
- <ItemGroup>
- <!-- Add Compile Object Here -->
- <Compile Include="ConcurrentSpin2.cs" />
- </ItemGroup>
- <ItemGroup>
- <None Include="app.config" />
- <None Include="$(GCPackagesConfigFileDirectory)minimal\project.json" />
- </ItemGroup>
- <PropertyGroup>
- <ProjectJson>$(GCPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
- <ProjectLockJson>$(GCPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
- </PropertyGroup>
- <ItemGroup>
- <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
- </ItemGroup>
- <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
- <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
- </PropertyGroup>
-</Project> \ No newline at end of file
diff --git a/tests/src/GC/Features/BackgroundGC/concurrentspin2.csproj b/tests/src/GC/Features/BackgroundGC/concurrentspin2.csproj
index 5e585cf88d..3158d18490 100644
--- a/tests/src/GC/Features/BackgroundGC/concurrentspin2.csproj
+++ b/tests/src/GC/Features/BackgroundGC/concurrentspin2.csproj
@@ -13,6 +13,7 @@
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
<NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+ <IsLongRunningGCTest>true</IsLongRunningGCTest>
</PropertyGroup>
<!-- Default configurations to help VS understand the configurations -->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
diff --git a/tests/src/GC/Features/LOHCompaction/lohcompact_stress.csproj b/tests/src/GC/Features/LOHCompaction/lohcompact_stress.csproj
index f3adce1741..3da854d84c 100644
--- a/tests/src/GC/Features/LOHCompaction/lohcompact_stress.csproj
+++ b/tests/src/GC/Features/LOHCompaction/lohcompact_stress.csproj
@@ -13,6 +13,7 @@
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
<NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+ <IsLongRunningGCTest>true</IsLongRunningGCTest>
</PropertyGroup>
<!-- Default configurations to help VS understand the configurations -->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
diff --git a/tests/src/GC/Features/LOHCompaction/lohcompactapi2.csproj b/tests/src/GC/Features/LOHCompaction/lohcompactapi2.csproj
index a3609305cf..9dc2e8a791 100644
--- a/tests/src/GC/Features/LOHCompaction/lohcompactapi2.csproj
+++ b/tests/src/GC/Features/LOHCompaction/lohcompactapi2.csproj
@@ -13,6 +13,7 @@
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
<NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+ <IsLongRunningGCTest>true</IsLongRunningGCTest>
</PropertyGroup>
<!-- Default configurations to help VS understand the configurations -->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
diff --git a/tests/src/GC/Features/LOHCompaction/lohcompactscenariorepro.csproj b/tests/src/GC/Features/LOHCompaction/lohcompactscenariorepro.csproj
index e4962bbbce..6e0f5e7036 100644
--- a/tests/src/GC/Features/LOHCompaction/lohcompactscenariorepro.csproj
+++ b/tests/src/GC/Features/LOHCompaction/lohcompactscenariorepro.csproj
@@ -13,6 +13,7 @@
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
<NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+ <IsLongRunningGCTest>true</IsLongRunningGCTest>
</PropertyGroup>
<!-- Default configurations to help VS understand the configurations -->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
diff --git a/tests/src/GC/Features/PartialCompaction/eco1.csproj b/tests/src/GC/Features/PartialCompaction/eco1.csproj
index c6021a3625..74314e8cb9 100644
--- a/tests/src/GC/Features/PartialCompaction/eco1.csproj
+++ b/tests/src/GC/Features/PartialCompaction/eco1.csproj
@@ -13,6 +13,7 @@
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
<NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+ <IsLongRunningGCTest>true</IsLongRunningGCTest>
</PropertyGroup>
<!-- Default configurations to help VS understand the configurations -->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
diff --git a/tests/src/GC/Features/PartialCompaction/partialcompactiontest.csproj b/tests/src/GC/Features/PartialCompaction/partialcompactiontest.csproj
index 8ccc632a07..ec9e5949e7 100644
--- a/tests/src/GC/Features/PartialCompaction/partialcompactiontest.csproj
+++ b/tests/src/GC/Features/PartialCompaction/partialcompactiontest.csproj
@@ -13,6 +13,7 @@
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
<NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+ <IsLongRunningGCTest>true</IsLongRunningGCTest>
</PropertyGroup>
<!-- Default configurations to help VS understand the configurations -->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
diff --git a/tests/src/GC/Features/PartialCompaction/partialcompactionwloh.csproj b/tests/src/GC/Features/PartialCompaction/partialcompactionwloh.csproj
index 905da65e56..9c2b2ddde6 100644
--- a/tests/src/GC/Features/PartialCompaction/partialcompactionwloh.csproj
+++ b/tests/src/GC/Features/PartialCompaction/partialcompactionwloh.csproj
@@ -13,6 +13,7 @@
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
<NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+ <IsLongRunningGCTest>true</IsLongRunningGCTest>
</PropertyGroup>
<!-- Default configurations to help VS understand the configurations -->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
diff --git a/tests/src/GC/Features/SustainedLowLatency/sustainedlowlatency_race.csproj b/tests/src/GC/Features/SustainedLowLatency/sustainedlowlatency_race.csproj
index 7048a0cbf2..92728a0c3b 100644
--- a/tests/src/GC/Features/SustainedLowLatency/sustainedlowlatency_race.csproj
+++ b/tests/src/GC/Features/SustainedLowLatency/sustainedlowlatency_race.csproj
@@ -13,6 +13,7 @@
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
<NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+ <IsLongRunningGCTest>true</IsLongRunningGCTest>
</PropertyGroup>
<!-- Default configurations to help VS understand the configurations -->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
diff --git a/tests/src/GC/Features/SustainedLowLatency/sustainedlowlatency_race_reverse.csproj b/tests/src/GC/Features/SustainedLowLatency/sustainedlowlatency_race_reverse.csproj
index 868ee9c689..b9843cecc8 100644
--- a/tests/src/GC/Features/SustainedLowLatency/sustainedlowlatency_race_reverse.csproj
+++ b/tests/src/GC/Features/SustainedLowLatency/sustainedlowlatency_race_reverse.csproj
@@ -13,6 +13,7 @@
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
<NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+ <IsLongRunningGCTest>true</IsLongRunningGCTest>
</PropertyGroup>
<!-- Default configurations to help VS understand the configurations -->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
diff --git a/tests/src/GC/Scenarios/BaseFinal/basefinal.csproj b/tests/src/GC/Scenarios/BaseFinal/basefinal.csproj
index a6b0e5d3e9..a11454acde 100644
--- a/tests/src/GC/Scenarios/BaseFinal/basefinal.csproj
+++ b/tests/src/GC/Scenarios/BaseFinal/basefinal.csproj
@@ -13,6 +13,7 @@
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
<NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+ <IsLongRunningGCTest>true</IsLongRunningGCTest>
</PropertyGroup>
<!-- Default configurations to help VS understand the configurations -->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
diff --git a/tests/src/GC/Scenarios/DoublinkList/doublinknoleak.csproj b/tests/src/GC/Scenarios/DoublinkList/doublinknoleak.csproj
index 574213978f..5ac2e521e6 100644
--- a/tests/src/GC/Scenarios/DoublinkList/doublinknoleak.csproj
+++ b/tests/src/GC/Scenarios/DoublinkList/doublinknoleak.csproj
@@ -13,6 +13,7 @@
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
<NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+ <IsLongRunningGCTest>true</IsLongRunningGCTest>
</PropertyGroup>
<!-- Default configurations to help VS understand the configurations -->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
diff --git a/tests/tests.targets b/tests/tests.targets
index 79b60bd9ce..56c6c5d711 100644
--- a/tests/tests.targets
+++ b/tests/tests.targets
@@ -37,6 +37,7 @@
<PropertyGroup>
<ExcludeTraits Condition="'$(ExcludeTraits)'==''">category=outerloop;category=failing</ExcludeTraits>
+ <ParallelRun Condition="'$(ParallelRun)'==''">true</ParallelRun>
</PropertyGroup>
<ItemGroup>
<IncludeTraitsItems Include="$(IncludeTraits)" />
@@ -44,8 +45,8 @@
</ItemGroup>
<xunit Assemblies="@(TestAssemblies)"
- ParallelizeAssemblies="True"
- ParallelizeTestCollections="True"
+ ParallelizeAssemblies="$(ParallelRun)"
+ ParallelizeTestCollections="$(ParallelRun)"
Html="$(__TestRunHtmlLog)"
Xml="$(__TestRunXmlLog)"
IncludeTraits="@(IncludeTraitsItems)"
diff --git a/tests/testsFailingOutsideWindows.txt b/tests/testsFailingOutsideWindows.txt
index e93fc3a1c3..a2bd6703e2 100644
--- a/tests/testsFailingOutsideWindows.txt
+++ b/tests/testsFailingOutsideWindows.txt
@@ -178,7 +178,6 @@ GC/LargeMemory/API/gc/collect/collect.sh
GC/LargeMemory/API/gc/getgeneration/getgeneration.sh
GC/Scenarios/DoublinkList/doublinknoleak/doublinknoleak.sh
GC/Scenarios/BaseFinal/basefinal/basefinal.sh
-GC/Coverage/concurrentspin2/concurrentspin2.sh
GC/Coverage/smalloom/smalloom.sh
GC/Coverage/271010/271010.sh
GC/Features/BackgroundGC/concurrentspin2/concurrentspin2.sh
@@ -194,6 +193,5 @@ GC/Features/SustainedLowLatency/sustainedlowlatency_race_reverse/sustainedlowlat
GC/Features/SustainedLowLatency/scenario/scenario.sh
GC/Features/SustainedLowLatency/sustainedlowlatency_race/sustainedlowlatency_race.sh
GC/Regressions/dev10bugs/536168/536168/536168.sh
-
JIT/Regression/CLR-x86-EJIT/V1-M09.5-PDC/b14426/b14426/b14426.sh
JIT/Performance/CodeQuality/BenchmarksGame/pidigits/pi-digits/pi-digits.sh
diff --git a/tests/x86_legacy_backend_issues.targets b/tests/x86_legacy_backend_issues.targets
index 5229bd40a9..bcfa557f2b 100644
--- a/tests/x86_legacy_backend_issues.targets
+++ b/tests/x86_legacy_backend_issues.targets
@@ -490,9 +490,6 @@
<ExcludeList Include="$(XunitTestBinBase)\GC\Scenarios\BaseFinal\basefinal\*">
<Issue>3392</Issue>
</ExcludeList>
- <ExcludeList Include="$(XunitTestBinBase)\GC\Coverage\concurrentspin2\*">
- <Issue>3392</Issue>
- </ExcludeList>
<ExcludeList Include="$(XunitTestBinBase)\GC\Coverage\smalloom\*">
<Issue>3392</Issue>
</ExcludeList>