Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / acceptance-tests / profiler-stress / runner.cs
index bb03a946e7443be018cc16b600c82dc288245c4f..e4a609b995f259e5cb45c144fb1a3b0076fc8fe5 100644 (file)
@@ -57,9 +57,13 @@ namespace Mono.Profiling.Tests.Stress {
                        "jit",
                };
 
-               static readonly TimeSpan _timeout = TimeSpan.FromHours (10);
+               static readonly TimeSpan _timeout = TimeSpan.FromHours (9);
 
-               static readonly Dictionary<string, Action<TestResult>> _processors = new Dictionary<string, Action<TestResult>> () {
+               static readonly Dictionary<string, Predicate<Benchmark>> _filters = new Dictionary<string, Predicate<Benchmark>> {
+                       { "ironjs-v8", FilterArmArchitecture },
+               };
+
+               static readonly Dictionary<string, Action<TestResult>> _processors = new Dictionary<string, Action<TestResult>> {
                        { "msbiology", Process32BitOutOfMemory },
                };
 
@@ -67,6 +71,15 @@ namespace Mono.Profiling.Tests.Stress {
                        return Regex.Replace (text, @"[^\x09\x0A\x0D\x20-\uD7FF\uE000-\uFFFD\u10000-\u10FFFF]", string.Empty);
                }
 
+               static bool FilterArmArchitecture (Benchmark benchmark)
+               {
+#if ARCH_arm || ARCH_arm64
+                       return false;
+#else
+                       return true;
+#endif
+               }
+
                static void Process32BitOutOfMemory (TestResult result)
                {
                        if (Environment.Is64BitProcess)
@@ -79,6 +92,11 @@ namespace Mono.Profiling.Tests.Stress {
                                result.ExitCode = 0;
                }
 
+               static bool IsSupported (Benchmark benchmark)
+               {
+                       return _filters.TryGetValue (benchmark.Name, out var filter) ? filter (benchmark) : true;
+               }
+
                static int Main ()
                {
                        var depDir = Path.Combine ("..", "external", "benchmarker");
@@ -87,7 +105,7 @@ namespace Mono.Profiling.Tests.Stress {
 
                        var benchmarks = Directory.EnumerateFiles (benchDir, "*.benchmark")
                                         .Select (Benchmark.Load)
-                                        .Where (b => !b.OnlyExplicit && b.ClientCommandLine == null)
+                                        .Where (b => !b.OnlyExplicit && b.ClientCommandLine == null && IsSupported (b))
                                         .OrderBy (b => b.Name)
                                         .ToArray ();
 
@@ -152,12 +170,14 @@ namespace Mono.Profiling.Tests.Stress {
 
                                        proc.OutputDataReceived += (sender, args) => {
                                                if (args.Data != null)
-                                                       stdout.AppendLine (args.Data);
+                                                       lock (result)
+                                                               stdout.AppendLine (args.Data);
                                        };
 
                                        proc.ErrorDataReceived += (sender, args) => {
                                                if (args.Data != null)
-                                                       stderr.AppendLine (args.Data);
+                                                       lock (result)
+                                                               stderr.AppendLine (args.Data);
                                        };
 
                                        result.Stopwatch.Start ();
@@ -181,8 +201,10 @@ namespace Mono.Profiling.Tests.Stress {
 
                                        result.Stopwatch.Stop ();
 
-                                       result.StandardOutput = stdout.ToString ();
-                                       result.StandardError = stderr.ToString ();
+                                       lock (result) {
+                                               result.StandardOutput = stdout.ToString ();
+                                               result.StandardError = stderr.ToString ();
+                                       }
                                }
 
                                var resultStr = result.ExitCode == null ? "timed out" : $"exited with code: {result.ExitCode}";