Example #1
0
        private static Job CreateJob(string id, int launchCount, int warmupCount, int targetCount, int invocationCount, RunStrategy?runStrategy,
                                     bool baseline, RuntimeMoniker runtimeMoniker = RuntimeMoniker.HostProcess)
        {
            var job = new Job(id);
            int manualValuesCount = 0;

            if (launchCount != DefaultValue)
            {
                job.Run.LaunchCount = launchCount;
                manualValuesCount++;
            }

            if (warmupCount != DefaultValue)
            {
                job.Run.WarmupCount = warmupCount;
                manualValuesCount++;
            }

            if (targetCount != DefaultValue)
            {
                job.Run.IterationCount = targetCount;
                manualValuesCount++;
            }
            if (invocationCount != DefaultValue)
            {
                job.Run.InvocationCount = invocationCount;
                manualValuesCount++;

                int unrollFactor = job.Run.ResolveValue(RunMode.UnrollFactorCharacteristic, EnvironmentResolver.Instance);
                if (invocationCount % unrollFactor != 0)
                {
                    job.Run.UnrollFactor = 1;
                    manualValuesCount++;
                }
            }

            if (runStrategy != null)
            {
                job.Run.RunStrategy = runStrategy.Value;
                manualValuesCount++;
            }

            if (baseline)
            {
                job.Meta.Baseline = true;
            }

            if (runtimeMoniker != RuntimeMoniker.HostProcess)
            {
                job.Environment.Runtime = runtimeMoniker.GetRuntime();
                manualValuesCount++;
            }

            if (id == null && manualValuesCount == 1 && runtimeMoniker != RuntimeMoniker.HostProcess)
            {
                job = job.WithId(runtimeMoniker.GetRuntime().Name);
            }

            return(job.Freeze());
        }
        public void TryGetVersionFromProductInfoHandlesValidInput(RuntimeMoniker expectedTfm, string expectedMsBuildMoniker, string productName, string productVersion)
        {
            Assert.True(CoreRuntime.TryGetVersionFromProductInfo(productVersion, productName, out Version version));

            var runtime = CoreRuntime.FromVersion(version);

            Assert.Equal(expectedTfm, runtime.RuntimeMoniker);
            Assert.Equal(expectedMsBuildMoniker, runtime.MsBuildMoniker);
        }
Example #3
0
 public SimpleJobAttribute(
     RuntimeMoniker runtimeMoniker,
     int launchCount     = DefaultValue,
     int warmupCount     = DefaultValue,
     int targetCount     = DefaultValue,
     int invocationCount = DefaultValue,
     string id           = null,
     bool baseline       = false
     ) : base(CreateJob(id, launchCount, warmupCount, targetCount, invocationCount, null, baseline, runtimeMoniker))
 {
 }
Example #4
0
        protected Runtime(RuntimeMoniker runtimeMoniker, string msBuildMoniker, string displayName)
        {
            if (string.IsNullOrEmpty(displayName))
            {
                throw new ArgumentNullException(nameof(displayName));
            }
            if (string.IsNullOrEmpty(msBuildMoniker))
            {
                throw new ArgumentNullException(nameof(msBuildMoniker));
            }

            RuntimeMoniker = runtimeMoniker;
            MsBuildMoniker = msBuildMoniker;
            Name           = displayName;
        }
        private static Job GetJob(RuntimeMoniker runtimeMoniker, Jit?jit, Platform?platform)
        {
            var runtime = runtimeMoniker.GetRuntime();
            var baseJob = Job.Dry.WithRuntime(runtime).WithId($"Dry-{runtime.Name}");
            var id      = baseJob.Id;

            if (jit.HasValue)
            {
                baseJob = baseJob.WithJit(jit.Value);
                id     += "-" + jit.Value;
            }

            if (platform.HasValue)
            {
                baseJob = baseJob.WithPlatform(platform.Value);
                id     += "-" + platform.Value;
            }

            return(baseJob.WithId(id).Freeze());
        }
Example #6
0
 private ClrRuntime(RuntimeMoniker targetFrameworkMoniker, string msBuildMoniker, string displayName, string version = null)
     : base(targetFrameworkMoniker, msBuildMoniker, displayName)
 {
     Version = version;
 }
Example #7
0
 /// <summary>
 /// defines a new MediumRun Job that targets specified Framework
 /// </summary>
 /// <param name="runtimeMoniker">Target Framework to test.</param>
 public MediumRunJobAttribute(RuntimeMoniker runtimeMoniker)
     : base(GetJob(Job.MediumRun, runtimeMoniker, null, null))
 {
 }
        private static IToolchain GetToolchain(RuntimeMoniker targetFrameworkMoniker)
        {
            switch (targetFrameworkMoniker)
            {
            case RuntimeMoniker.Net461:
                return(CsProjClassicNetToolchain.Net461);

            case RuntimeMoniker.Net462:
                return(CsProjClassicNetToolchain.Net462);

            case RuntimeMoniker.Net47:
                return(CsProjClassicNetToolchain.Net47);

            case RuntimeMoniker.Net471:
                return(CsProjClassicNetToolchain.Net471);

            case RuntimeMoniker.Net472:
                return(CsProjClassicNetToolchain.Net472);

            case RuntimeMoniker.Net48:
                return(CsProjClassicNetToolchain.Net48);

            case RuntimeMoniker.NetCoreApp20:
                return(CsProjCoreToolchain.NetCoreApp20);

            case RuntimeMoniker.NetCoreApp21:
                return(CsProjCoreToolchain.NetCoreApp21);

            case RuntimeMoniker.NetCoreApp22:
                return(CsProjCoreToolchain.NetCoreApp22);

            case RuntimeMoniker.NetCoreApp30:
                return(CsProjCoreToolchain.NetCoreApp30);

            case RuntimeMoniker.NetCoreApp31:
                return(CsProjCoreToolchain.NetCoreApp31);

            case RuntimeMoniker.NetCoreApp50:
                return(CsProjCoreToolchain.NetCoreApp50);

            case RuntimeMoniker.CoreRt20:
                return(CoreRtToolchain.Core20);

            case RuntimeMoniker.CoreRt21:
                return(CoreRtToolchain.Core21);

            case RuntimeMoniker.CoreRt22:
                return(CoreRtToolchain.Core22);

            case RuntimeMoniker.CoreRt30:
                return(CoreRtToolchain.Core30);

            case RuntimeMoniker.CoreRt31:
                return(CoreRtToolchain.Core31);

            case RuntimeMoniker.CoreRt50:
                return(CoreRtToolchain.Core50);

            default:
                throw new ArgumentOutOfRangeException(nameof(targetFrameworkMoniker), targetFrameworkMoniker, "Target Framework Moniker not supported");
            }
        }
 /// <summary>
 /// defines a new Dry Job that targets specified Framework, JIT and Platform
 /// </summary>
 /// <param name="runtimeMoniker">Target Framework to test.</param>
 /// <param name="jit">Jit to test.</param>
 /// <param name="platform">Platform to test.</param>
 public DryJobAttribute(RuntimeMoniker runtimeMoniker, Jit jit, Platform platform)
     : base(GetJob(Job.Dry, runtimeMoniker, jit, platform))
 {
 }
Example #10
0
        /// <summary>
        /// creates new instance of WasmRuntime
        /// </summary>
        /// <param name="javaScriptEngine">Full path to a java script engine used to run the benchmarks. "v8" by default</param>
        /// <param name="javaScriptEngineArguments">Arguments for the javascript engine. "--expose_wasm" by default</param>
        /// <param name="msBuildMoniker">moniker, default: "net5.0"</param>
        /// <param name="displayName">default: "Wasm"</param>
        /// <param name="aot">Specifies whether AOT or Interpreter (default) project should be generated.</param>
        /// <param name="wasmDataDir">Specifies a wasm data directory surfaced as $(WasmDataDir) for the project</param>
        /// <param name="moniker">Runtime moniker</param>
        public WasmRuntime(string msBuildMoniker = "net5.0", string displayName = "Wasm", string javaScriptEngine = "v8", string javaScriptEngineArguments = "--expose_wasm", bool aot = false, string wasmDataDir = null, RuntimeMoniker moniker = RuntimeMoniker.Wasm) : base(moniker, msBuildMoniker, displayName)
        {
            if (!string.IsNullOrEmpty(javaScriptEngine) && javaScriptEngine != "v8" && !File.Exists(javaScriptEngine))
            {
                throw new FileNotFoundException($"Provided {nameof(javaScriptEngine)} file: \"{javaScriptEngine}\" doest NOT exist");
            }

            JavaScriptEngine          = javaScriptEngine;
            JavaScriptEngineArguments = javaScriptEngineArguments;
            Aot         = aot;
            WasmDataDir = wasmDataDir;
        }
Example #11
0
 /// <summary>
 /// defines a new LongRun Job that targets specified Framework
 /// </summary>
 /// <param name="runtimeMoniker">Target Framework to test.</param>
 public LongRunJobAttribute(RuntimeMoniker runtimeMoniker)
     : base(GetJob(Job.LongRun, runtimeMoniker, null, null))
 {
 }
Example #12
0
 private ClrRuntime(RuntimeMoniker runtimeMoniker, string msBuildMoniker, string displayName, string version = null)
     : base(runtimeMoniker, msBuildMoniker, displayName)
 {
     Version = version;
 }
 /// <summary>
 /// defines a new ShortRun Job that targets specified Framework
 /// </summary>
 /// <param name="runtimeMoniker">Target Framework to test.</param>
 public ShortRunJobAttribute(RuntimeMoniker runtimeMoniker)
     : base(GetJob(Job.ShortRun, runtimeMoniker, null, null))
 {
 }
        public void TryGetVersionFromRuntimeDirectoryHandlesValidInput(string runtimeDirectory, RuntimeMoniker expectedTfm, string expectedMsBuildMoniker)
        {
            Assert.True(CoreRuntime.TryGetVersionFromRuntimeDirectory(runtimeDirectory, out Version version));

            var runtime = CoreRuntime.FromVersion(version);

            Assert.Equal(expectedTfm, runtime.RuntimeMoniker);
            Assert.Equal(expectedMsBuildMoniker, runtime.MsBuildMoniker);
        }
        public void TryGetVersionFromFrameworkNameHandlesValidInput(string frameworkName, RuntimeMoniker expectedTfm, string expectedMsBuildMoniker)
        {
            Assert.True(CoreRuntime.TryGetVersionFromFrameworkName(frameworkName, out Version version));

            var runtime = CoreRuntime.FromVersion(version);

            Assert.Equal(expectedTfm, runtime.RuntimeMoniker);
            Assert.Equal(expectedMsBuildMoniker, runtime.MsBuildMoniker);
        }
        internal static Runtime GetRuntime(this RuntimeMoniker runtimeMoniker)
        {
            switch (runtimeMoniker)
            {
            case RuntimeMoniker.Net461:
                return(ClrRuntime.Net461);

            case RuntimeMoniker.Net462:
                return(ClrRuntime.Net462);

            case RuntimeMoniker.Net47:
                return(ClrRuntime.Net47);

            case RuntimeMoniker.Net471:
                return(ClrRuntime.Net471);

            case RuntimeMoniker.Net472:
                return(ClrRuntime.Net472);

            case RuntimeMoniker.Net48:
                return(ClrRuntime.Net48);

            case RuntimeMoniker.NetCoreApp20:
                return(CoreRuntime.Core20);

            case RuntimeMoniker.NetCoreApp21:
                return(CoreRuntime.Core21);

            case RuntimeMoniker.NetCoreApp22:
                return(CoreRuntime.Core22);

            case RuntimeMoniker.NetCoreApp30:
                return(CoreRuntime.Core30);

            case RuntimeMoniker.NetCoreApp31:
                return(CoreRuntime.Core31);

            case RuntimeMoniker.NetCoreApp50:
                return(CoreRuntime.Core50);

            case RuntimeMoniker.Mono:
                return(MonoRuntime.Default);

            case RuntimeMoniker.CoreRt20:
                return(CoreRtRuntime.CoreRt20);

            case RuntimeMoniker.CoreRt21:
                return(CoreRtRuntime.CoreRt21);

            case RuntimeMoniker.CoreRt22:
                return(CoreRtRuntime.CoreRt22);

            case RuntimeMoniker.CoreRt30:
                return(CoreRtRuntime.CoreRt30);

            case RuntimeMoniker.CoreRt31:
                return(CoreRtRuntime.CoreRt31);

            case RuntimeMoniker.CoreRt50:
                return(CoreRtRuntime.CoreRt50);

            default:
                throw new ArgumentOutOfRangeException(nameof(runtimeMoniker), runtimeMoniker, "Runtime Moniker not supported");
            }
        }
Example #17
0
        internal static Runtime GetRuntime(this RuntimeMoniker runtimeMoniker)
        {
            switch (runtimeMoniker)
            {
            case RuntimeMoniker.Net461:
                return(ClrRuntime.Net461);

            case RuntimeMoniker.Net462:
                return(ClrRuntime.Net462);

            case RuntimeMoniker.Net47:
                return(ClrRuntime.Net47);

            case RuntimeMoniker.Net471:
                return(ClrRuntime.Net471);

            case RuntimeMoniker.Net472:
                return(ClrRuntime.Net472);

            case RuntimeMoniker.Net48:
                return(ClrRuntime.Net48);

            case RuntimeMoniker.Net481:
                return(ClrRuntime.Net481);

            case RuntimeMoniker.NetCoreApp20:
                return(CoreRuntime.Core20);

            case RuntimeMoniker.NetCoreApp21:
                return(CoreRuntime.Core21);

            case RuntimeMoniker.NetCoreApp22:
                return(CoreRuntime.Core22);

            case RuntimeMoniker.NetCoreApp30:
                return(CoreRuntime.Core30);

            case RuntimeMoniker.NetCoreApp31:
                return(CoreRuntime.Core31);

            case RuntimeMoniker.Net50:
#pragma warning disable CS0618 // Type or member is obsolete
            case RuntimeMoniker.NetCoreApp50:
#pragma warning restore CS0618 // Type or member is obsolete
                return(CoreRuntime.Core50);

            case RuntimeMoniker.Net60:
                return(CoreRuntime.Core60);

            case RuntimeMoniker.Net70:
                return(CoreRuntime.Core70);

            case RuntimeMoniker.Mono:
                return(MonoRuntime.Default);

            case RuntimeMoniker.NativeAot60:
                return(NativeAotRuntime.Net60);

            case RuntimeMoniker.NativeAot70:
                return(NativeAotRuntime.Net70);

            default:
                throw new ArgumentOutOfRangeException(nameof(runtimeMoniker), runtimeMoniker, "Runtime Moniker not supported");
            }
        }
 private CoreRuntime(RuntimeMoniker targetFrameworkMoniker, string msBuildMoniker, string displayName)
     : base(targetFrameworkMoniker, msBuildMoniker, displayName)
 {
 }
 private CoreRuntime(RuntimeMoniker runtimeMoniker, string msBuildMoniker, string displayName)
     : base(runtimeMoniker, msBuildMoniker, displayName)
 {
 }
 private NativeAotRuntime(RuntimeMoniker runtimeMoniker, string msBuildMoniker, string displayName)
     : base(runtimeMoniker, msBuildMoniker, displayName)
 {
 }
Example #21
0
 /// <summary>
 /// defines a new LongRun Job that targets specified Framework, JIT and Platform
 /// </summary>
 /// <param name="runtimeMoniker">Target Framework to test.</param>
 /// <param name="jit">Jit to test.</param>
 /// <param name="platform">Platform to test.</param>
 public LongRunJobAttribute(RuntimeMoniker runtimeMoniker, Jit jit, Platform platform)
     : base(GetJob(Job.LongRun, runtimeMoniker, jit, platform))
 {
 }
 /// <summary>
 /// defines a new Dry Job that targets specified Framework
 /// </summary>
 /// <param name="runtimeMoniker">Target Framework to test.</param>
 public DryJobAttribute(RuntimeMoniker runtimeMoniker)
     : base(GetJob(Job.Dry, runtimeMoniker, null, null))
 {
 }