[tests] Add stress testing and reduce sgen normal testing time (#4653)
[mono.git] / mono / tests / sgen-domain-unload-2.cs
index f1f6c2f932069f57ae67e85f017d8f47b9f50fc6..a27b22af907fb0f889bfa604e4071d4af262c203 100644 (file)
@@ -23,30 +23,23 @@ class Driver {
        }
 
        static void Main () {
-               var testTimeout = new TestTimeout ();
-               testTimeout.Start ();
                for (int i = 0; i < Math.Max (1, Environment.ProcessorCount / 2); ++i) {
                // for (int i = 0; i < 4; ++i) {
                        var t = new Thread (BackgroundNoise);
                        t.IsBackground = true;
                        t.Start ();
                }
-               
-               const int TOTAL_ITERATIONS = 100;
-               for (int i = 0; i < TOTAL_ITERATIONS; ++i) {
-                       var ad = AppDomain.CreateDomain ("domain_" + i);
+
+               int iterations = 0;
+
+               for (TestTimeout timeout = TestTimeout.Start(TimeSpan.FromSeconds(TestTimeout.IsStressTest ? 60 : 1)); timeout.HaveTimeLeft;) {
+                       var ad = AppDomain.CreateDomain ("domain_" + iterations);
                        ad.DoCallBack (new CrossAppDomainDelegate (AllocStuff));
                        AppDomain.Unload (ad);
 
                        Console.Write (".");
-                       if (i > 0 && i % 20 == 0) Console.WriteLine ();
-
-                       if (!testTimeout.HaveTimeLeft ()) {
-                               var finishTime = DateTime.UtcNow;
-                               var ranFor = finishTime - testTimeout.StartTime;
-                               Console.WriteLine ("Will run out of time soon. ran for {0}, finished {1}/{2} iterations", ranFor, i+1, TOTAL_ITERATIONS);
-                       }
+                       if ((++iterations) % 20 == 0) Console.WriteLine ();
                }
-               Console.WriteLine ("\ndone");
+               Console.WriteLine ($"\ndone {iterations} iterations");
        }
 }