From: Alex Rønne Petersen Date: Wed, 7 Sep 2016 23:57:07 +0000 (+0200) Subject: [acceptance-tests] Add profiler-stress suite. X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=7d7b674ac5e521af8abd3bf1388d62d9e9b50953;p=mono.git [acceptance-tests] Add profiler-stress suite. --- diff --git a/acceptance-tests/Makefile.am b/acceptance-tests/Makefile.am index 522cb36c9ea..c03adcc0c45 100644 --- a/acceptance-tests/Makefile.am +++ b/acceptance-tests/Makefile.am @@ -1,4 +1,5 @@ ACCEPTANCE_TESTS_PATH=external +BENCHMARKER_PATH=$(ACCEPTANCE_TESTS_PATH)/benchmarker ROSLYN_PATH=$(ACCEPTANCE_TESTS_PATH)/roslyn CORECLR_PATH=$(ACCEPTANCE_TESTS_PATH)/coreclr MSTESTSUITE_PATH=$(ACCEPTANCE_TESTS_PATH)/ms-test-suite @@ -14,10 +15,11 @@ MCS = $(RUNTIME) $(mcs_topdir)/class/lib/build/mcs.exe ILASM = $(RUNTIME) $(CLASS)/ilasm.exe include versions.mk +include profiler-stress.mk include roslyn.mk include coreclr.mk include ms-test-suite.mk -check-full: check-roslyn check-coreclr check-ms-test-suite +check-full: check-profiler-stress check-roslyn check-coreclr check-ms-test-suite clean-local: clean-local-coreclr diff --git a/acceptance-tests/SUBMODULES.json b/acceptance-tests/SUBMODULES.json index 8f4b13eb0c5..01faee39c98 100644 --- a/acceptance-tests/SUBMODULES.json +++ b/acceptance-tests/SUBMODULES.json @@ -22,5 +22,13 @@ "remote-branch": "origin/master", "branch": "master", "directory": "ms-test-suite" + }, + { + "name": "benchmarker", + "url": "git://github.com/xamarin/benchmarker.git", + "rev": "97f618cd585af549dd861b7c142656c496f6a89b", + "remote-branch": "origin/master", + "branch": "master", + "directory": "benchmarker" } ] diff --git a/acceptance-tests/profiler-stress.mk b/acceptance-tests/profiler-stress.mk new file mode 100644 index 00000000000..9188b174a95 --- /dev/null +++ b/acceptance-tests/profiler-stress.mk @@ -0,0 +1,12 @@ +SYS_REFS = \ + System.dll \ + System.Core.dll \ + System.Data.dll \ + System.Runtime.Serialization.dll \ + System.Xml.dll \ + System.Xml.Linq.dll + +check-profiler-stress: + @$(MAKE) validate-benchmarker RESET_VERSIONS=1 + cd profiler-stress && $(MCS) -target:exe $(addprefix -r:, $(SYS_REFS)) -out:runner.exe @runner.exe.sources + cd profiler-stress && $(RUNTIME) runner.exe diff --git a/acceptance-tests/profiler-stress/runner.cs b/acceptance-tests/profiler-stress/runner.cs new file mode 100644 index 00000000000..b2638c1273a --- /dev/null +++ b/acceptance-tests/profiler-stress/runner.cs @@ -0,0 +1,108 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using Newtonsoft.Json; + +// Shut up CLS compliance warnings from Json.NET. +[assembly: CLSCompliant (true)] + +namespace Mono.Profiling.Tests.Stress { + + // https://github.com/xamarin/benchmarker/blob/master/tools/libdbmodel/Benchmark.cs + class Benchmark { + public string Name { get; set; } + public string TestDirectory { get; set; } + public bool OnlyExplicit { get; set; } + public string[] CommandLine { get; set; } + public string[] ClientCommandLine { get; set; } + public string[] AOTAssemblies { get; set; } + + public static Benchmark Load (string file) + { + return JsonConvert.DeserializeObject (File.ReadAllText (file)); + } + } + + static class Program { + + static int Main () + { + var depDir = Path.Combine ("..", "external", "benchmarker"); + var benchDir = Path.Combine (depDir, "benchmarks"); + var testDir = Path.Combine (depDir, "tests"); + + var benchmarks = Directory.EnumerateFiles (benchDir, "*.benchmark") + .Select (Benchmark.Load) + .Where (b => !b.OnlyExplicit && b.ClientCommandLine == null) + .OrderBy (b => b.Name) + .ToArray (); + + var monoPath = Path.GetFullPath (Path.Combine ("..", "..", "runtime", "mono-wrapper")); + var classDir = Path.GetFullPath (Path.Combine ("..", "..", "mcs", "class", "lib", "net_4_x")); + + var rand = new Random (); + var cpus = Environment.ProcessorCount; + + var successes = 0; + var failures = 0; + + var sw = Stopwatch.StartNew (); + + for (var i = 0; i < benchmarks.Length; i++) { + var bench = benchmarks [i]; + + var sampleFreq = rand.Next (0, 1001); + var sampleMode = rand.Next (0, 2) == 1 ? "real" : "process"; + var maxSamples = rand.Next (0, cpus * 2000 + 1); + var heapShotFreq = rand.Next (0, 11); + var maxFrames = rand.Next (0, 33); + var allocMode = rand.Next (0, 2) == 1 ? "alloc" : "noalloc"; + + var profOptions = $"sample=cycles/{sampleFreq},sampling-{sampleMode},maxsamples={maxSamples},heapshot={heapShotFreq}gc,maxframes={maxFrames},{allocMode},output=/dev/null"; + + var info = new ProcessStartInfo { + UseShellExecute = false, + WorkingDirectory = Path.Combine (testDir, bench.TestDirectory), + FileName = monoPath, + Arguments = $"--debug --profile=log:{profOptions} " + string.Join (" ", bench.CommandLine), + }; + + info.EnvironmentVariables.Clear (); + info.EnvironmentVariables.Add ("MONO_PATH", classDir); + + var progress = $"({i + 1}/{benchmarks.Length})"; + + Console.ForegroundColor = ConsoleColor.Blue; + Console.WriteLine ($"[{sw.Elapsed.ToString ("G")}] {progress} Running {bench.Name} with profiler options: {profOptions}"); + Console.ResetColor (); + + var sw2 = Stopwatch.StartNew (); + + using (var proc = Process.Start (info)) { + proc.WaitForExit (); + sw2.Stop (); + + Console.WriteLine (); + + if (proc.ExitCode != 0) + failures++; + else + successes++; + + Console.ForegroundColor = proc.ExitCode != 0 ? ConsoleColor.Red : ConsoleColor.Green; + Console.WriteLine ($"[{sw.Elapsed.ToString ("G")}] {progress} {bench.Name} took {sw2.Elapsed.ToString ("G")} and exited with code: {proc.ExitCode}"); + Console.ResetColor (); + } + } + + sw.Stop (); + + Console.ForegroundColor = failures != 0 ? ConsoleColor.Red : ConsoleColor.Green; + Console.WriteLine ($"[{sw.Elapsed.ToString ("G")}] Finished with {successes}/{benchmarks.Length} passing tests"); + Console.ResetColor (); + + return failures; + } + } +} diff --git a/acceptance-tests/profiler-stress/runner.exe.sources b/acceptance-tests/profiler-stress/runner.exe.sources new file mode 100644 index 00000000000..fc734ed45e7 --- /dev/null +++ b/acceptance-tests/profiler-stress/runner.exe.sources @@ -0,0 +1,156 @@ +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonBinaryType.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonBinaryWriter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonReader.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonToken.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonType.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonWriter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonObjectId.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/BinaryConverter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/DataSetConverter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/DataTableConverter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/CustomCreationConverter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/DateTimeConverterBase.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/EntityKeyMemberConverter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/ExpandoObjectConverter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/KeyValuePairConverter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/BsonObjectIdConverter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/RegexConverter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/StringEnumConverter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/ConstructorHandling.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/VersionConverter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/DateFormatHandling.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/DateTimeZoneHandling.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Formatting.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonConstructorAttribute.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonPosition.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JPropertyKeyedCollection.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DynamicProxy.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JPath.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JRaw.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Required.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonDynamicContract.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonFormatterConverter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonISerializableContract.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonLinqContract.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonPrimitiveContract.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/DynamicValueProvider.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/ErrorEventArgs.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JPropertyDescriptor.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/DefaultReferenceResolver.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/PreserveReferencesHandling.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/IJsonLineInfo.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonArrayAttribute.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonContainerAttribute.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/DefaultValueHandling.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonConverterAttribute.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonObjectAttribute.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonSerializerSettings.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonValidatingReader.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/IJEnumerable.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JTokenEqualityComparer.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/MemberSerialization.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/ObjectCreationHandling.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/IsoDateTimeConverter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/JavaScriptDateTimeConverter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonTextReader.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonPropertyAttribute.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonIgnoreAttribute.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonTextWriter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonWriterException.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonReaderException.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonConverter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonConverterCollection.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonReader.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonConvert.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonSerializationException.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonSerializer.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/Extensions.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JConstructor.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JContainer.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JEnumerable.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JObject.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JArray.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JTokenReader.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JTokenWriter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JToken.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JProperty.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JTokenType.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JValue.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/Extensions.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaException.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaModel.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaModelBuilder.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaNodeCollection.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaNode.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaResolver.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaWriter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/UndefinedSchemaIdHandling.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/ValidationEventArgs.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/ValidationEventHandler.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/CamelCasePropertyNamesContractResolver.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/DefaultSerializationBinder.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/ErrorContext.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/IContractResolver.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/IValueProvider.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonArrayContract.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonContract.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonDictionaryContract.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonProperty.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonPropertyCollection.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/MissingMemberHandling.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/NullValueHandling.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/ReferenceLoopHandling.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchema.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaBuilder.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaConstants.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaGenerator.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/IReferenceResolver.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaType.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonObjectContract.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalBase.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalWriter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonSerializerProxy.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonStringContract.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonTypeReflector.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/CachedAttributeGetter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/LateBoundMetadataTypeAttribute.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/ReflectionValueProvider.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/OnErrorAttribute.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/Base64Encoder.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DynamicProxyMetaObject.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DynamicUtils.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DynamicWrapper.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DynamicReflectionDelegateFactory.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/ObjectConstructor.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ILGeneratorExtensions.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ReflectionDelegateFactory.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/LateBoundReflectionDelegateFactory.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/MethodCall.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/StringReference.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ThreadSafeStore.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/TypeNameHandling.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/BidirectionalDictionary.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ConvertUtils.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/CollectionWrapper.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DateTimeUtils.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DictionaryWrapper.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/EnumUtils.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/EnumValue.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/EnumValues.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/JavaScriptUtils.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonToken.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonWriter.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/StringBuffer.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/CollectionUtils.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ListWrapper.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/MathUtils.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/MiscellaneousUtils.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/StringUtils.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/TypeExtensions.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ValidationUtils.cs +../../external/Newtonsoft.Json/Src/Newtonsoft.Json/WriteState.cs +runner.cs diff --git a/acceptance-tests/versions.mk b/acceptance-tests/versions.mk index 84b4f85c6cd..0c070a0f114 100644 --- a/acceptance-tests/versions.mk +++ b/acceptance-tests/versions.mk @@ -3,28 +3,35 @@ SUBMODULES_CONFIG_FILE = $(top_srcdir)/acceptance-tests/SUBMODULES.json include $(top_srcdir)/scripts/submodules/versions.mk +$(eval $(call ValidateVersionTemplate,benchmarker,BENCHMARKER)) $(eval $(call ValidateVersionTemplate,roslyn,ROSLYN)) $(eval $(call ValidateVersionTemplate,coreclr,CORECLR)) $(eval $(call ValidateVersionTemplate,ms-test-suite,MSTESTSUITE)) # Bump the given submodule to the revision given by the REV make variable # If COMMIT is 1, commit the change +bump-benchmarker: __bump-benchmarker bump-roslyn: __bump-version-roslyn bump-coreclr: __bump-version-coreclr bump-ms-test-suite: __bump-version-ms-test-suite # Bump the given submodule to the branch given by the BRANCH/REMOTE_BRANCH make variables # If COMMIT is 1, commit the change +bump-branch-benchmarker: __bump-branch-benchmarker bump-branch-roslyn: __bump-branch-roslyn bump-branch-coreclr: __bump-branch-coreclr bump-branch-ms-test-suite: __bump-branch-ms-test-suite # Bump the given submodule to its current GIT version # If COMMIT is 1, commit the change +bump-current-benchmarker: __bump-current-benchmarker bump-current-roslyn: __bump-current-version-roslyn bump-current-coreclr: __bump-current-version-coreclr bump-current-ms-test-suite: __bump-current-version-ms-test-suite +commit-bump-benchmarker: + $(MAKE) bump-benchmarker COMMIT=1 + commit-bump-roslyn: $(MAKE) bump-roslyn COMMIT=1 @@ -34,6 +41,9 @@ commit-bump-coreclr: commit-bump-ms-test-suite: $(MAKE) bump-ms-test-suite COMMIT=1 +commit-bump-current-benchmarker: + $(MAKE) bump-current-benchmarker COMMIT=1 + commit-bump-current-roslyn: $(MAKE) bump-current-roslyn COMMIT=1 diff --git a/scripts/ci/run-jenkins.sh b/scripts/ci/run-jenkins.sh index b202c2493fb..74f0d1bbf38 100755 --- a/scripts/ci/run-jenkins.sh +++ b/scripts/ci/run-jenkins.sh @@ -59,6 +59,11 @@ if [[ -n "${ghprbPullId}" ]] && [[ ${label} == w* ]]; fi if [[ ${CI_TAGS} == *'acceptance-tests'* ]]; -then $(dirname "${BASH_SOURCE[0]}")/run-test-acceptance-tests.sh -else make check-ci -fi \ No newline at end of file + then + $(dirname "${BASH_SOURCE[0]}")/run-test-acceptance-tests.sh +elif [[ ${CI_TAGS} == *'profiler-stress-tests'* ]]; + then + $(dirname "${BASH_SOURCE[0]}")/run-test-profiler-stress-tests.sh +else + make check-ci +fi diff --git a/scripts/ci/run-test-profiler-stress-tests.sh b/scripts/ci/run-test-profiler-stress-tests.sh new file mode 100755 index 00000000000..52d6f166800 --- /dev/null +++ b/scripts/ci/run-test-profiler-stress-tests.sh @@ -0,0 +1,5 @@ +#!/bin/bash -e + +export TESTCMD=`dirname "${BASH_SOURCE[0]}"`/run-step.sh + +${TESTCMD} --label=check-profiler-stress --timeout=20h make -C acceptance-tests check-profiler-stress