+ var successes = results.Count (r => r.ExitCode == 0);
+ var failures = results.Count (r => r.ExitCode != null && r.ExitCode != 0);
+ var timeouts = results.Count (r => r.ExitCode == null);
+
+ var settings = new XmlWriterSettings {
+ NewLineOnAttributes = true,
+ Indent = true,
+ };
+
+ using (var writer = XmlWriter.Create ("TestResult-profiler-stress.xml", settings)) {
+ writer.WriteStartDocument ();
+ writer.WriteComment ("This file represents the results of running a test suite");
+
+ writer.WriteStartElement ("test-results");
+ writer.WriteAttributeString ("name", "profiler-stress-tests.dummy");
+ writer.WriteAttributeString ("total", results.Count.ToString ());
+ writer.WriteAttributeString ("failures", failures.ToString ());
+ writer.WriteAttributeString ("not-run", "0");
+ writer.WriteAttributeString ("date", DateTime.Now.ToString ("yyyy-MM-dd"));
+ writer.WriteAttributeString ("time", DateTime.Now.ToString ("HH:mm:ss"));
+
+ writer.WriteStartElement ("environment");
+ writer.WriteAttributeString ("nunit-version", "2.4.8.0");
+ writer.WriteAttributeString ("clr-version", Environment.Version.ToString ());
+ writer.WriteAttributeString ("os-version", Environment.OSVersion.ToString ());
+ writer.WriteAttributeString ("platform", Environment.OSVersion.Platform.ToString ());
+ writer.WriteAttributeString ("cwd", Environment.CurrentDirectory);
+ writer.WriteAttributeString ("machine-name", Environment.MachineName);
+ writer.WriteAttributeString ("user", Environment.UserName);
+ writer.WriteAttributeString ("user-domain", Environment.UserDomainName);
+ writer.WriteEndElement ();
+
+ writer.WriteStartElement ("culture-info");
+ writer.WriteAttributeString ("current-culture", CultureInfo.CurrentCulture.Name);
+ writer.WriteAttributeString ("current-uiculture", CultureInfo.CurrentUICulture.Name);
+ writer.WriteEndElement ();
+
+ writer.WriteStartElement ("test-suite");
+ writer.WriteAttributeString ("name", "profiler-stress-tests.dummy");
+ writer.WriteAttributeString ("success", (failures + timeouts == 0).ToString ());
+ writer.WriteAttributeString ("time", ((int) sw.Elapsed.TotalSeconds).ToString ());
+ writer.WriteAttributeString ("asserts", (failures + timeouts).ToString ());
+ writer.WriteStartElement ("results");
+
+ writer.WriteStartElement ("test-suite");
+ writer.WriteAttributeString ("name", "MonoTests");
+ writer.WriteAttributeString ("success", (failures + timeouts == 0).ToString ());
+ writer.WriteAttributeString ("time", ((int) sw.Elapsed.TotalSeconds).ToString ());
+ writer.WriteAttributeString ("asserts", (failures + timeouts).ToString ());
+ writer.WriteStartElement ("results");
+
+ writer.WriteStartElement ("test-suite");
+ writer.WriteAttributeString ("name", "profiler-stress");
+ writer.WriteAttributeString ("success", (failures + timeouts == 0).ToString ());
+ writer.WriteAttributeString ("time", ((int) sw.Elapsed.TotalSeconds).ToString ());
+ writer.WriteAttributeString ("asserts", (failures + timeouts).ToString ());
+ writer.WriteStartElement ("results");
+
+ foreach (var result in results) {
+ var timeoutStr = result.ExitCode == null ? "_timeout" : string.Empty;
+
+ writer.WriteStartElement ("test-case");
+ writer.WriteAttributeString ("name", $"MonoTests.profiler-stress.{result.Benchmark.Name}{timeoutStr}");
+ writer.WriteAttributeString ("executed", "True");
+ writer.WriteAttributeString ("success", (result.ExitCode == 0).ToString ());
+ writer.WriteAttributeString ("time", ((int) result.Stopwatch.Elapsed.TotalSeconds).ToString ());
+ writer.WriteAttributeString ("asserts", result.ExitCode == 0 ? "0" : "1");
+
+ if (result.ExitCode != 0) {
+ writer.WriteStartElement ("failure");
+
+ writer.WriteStartElement ("message");
+ writer.WriteCData (FilterInvalidXmlChars (result.StandardOutput.ToString ()));
+ writer.WriteEndElement ();
+
+ writer.WriteStartElement ("stack-trace");
+ writer.WriteCData (FilterInvalidXmlChars (result.StandardError.ToString ()));
+ writer.WriteEndElement ();
+
+ writer.WriteEndElement ();
+ }
+
+ writer.WriteEndElement ();
+ }
+
+ writer.WriteEndElement ();
+ writer.WriteEndElement ();
+
+ writer.WriteEndElement ();
+ writer.WriteEndElement ();
+
+ writer.WriteEndElement ();
+ writer.WriteEndElement ();
+
+ writer.WriteEndElement ();
+
+ writer.WriteEndDocument ();
+ }
+
+ var failureStr = failures + timeouts != 0 ? $" ({failures} failures, {timeouts} timeouts)" : string.Empty;
+
+ Console.ForegroundColor = failures + timeouts != 0 ? ConsoleColor.Red : ConsoleColor.Green;
+ Console.WriteLine ($"[{sw.Elapsed.ToString ("G")}] Finished with {successes}/{results.Count} passing tests{failureStr}");