Merge pull request #5198 from BrzVlad/fix-binprot-stats
[mono.git] / mcs / class / corlib / Test / System.Threading / ThreadTest.cs
index 4c6694f1e17f137b4112f86e51c0081a24041b53..c45938e5be7af4c6976fe79ed12e25eead9ab123 100644 (file)
@@ -13,6 +13,7 @@ using System;
 using System.Globalization;
 using System.Security.Principal;
 using System.Threading;
+using System.Threading.Tasks;
 using System.Reflection;
 using System.Collections.Generic;
 using SD = System.Diagnostics;
@@ -908,6 +909,23 @@ namespace MonoTests.System.Threading
                }
 #endif // MONO_FEATURE_MULTIPLE_APPDOMAINS
 
+               [Test]
+               public void SetNameInThreadPoolThread ()
+               {
+                       Task t = Task.Run (delegate () {
+                               Thread.CurrentThread.Name = "ThreadName1";
+                               Assert.AreEqual (Thread.CurrentThread.Name, "ThreadName1", "#1");
+
+                               try {
+                                       Thread.CurrentThread.Name = "ThreadName2";
+                                       Assert.Fail ("#2");
+                               } catch (InvalidOperationException) {
+                               }
+                       });
+
+                       t.Wait ();
+               }
+
                void CheckIsRunning (string s, Thread t)
                {
                        int c = counter;
@@ -1331,9 +1349,9 @@ namespace MonoTests.System.Threading
                
                public static void WhileAlive (Thread t, bool alive, string s)
                {
-                       DateTime ti = DateTime.Now;
+                       var sw = SD.Stopwatch.StartNew ();
                        while (t.IsAlive == alive) {
-                               if ((DateTime.Now - ti).TotalSeconds > 10) {
+                               if (sw.Elapsed.TotalSeconds > 10) {
                                        if (alive) Assert.Fail ("Timeout while waiting for not alive state. " + s);
                                        else Assert.Fail ("Timeout while waiting for alive state. " + s);
                                }
@@ -1342,12 +1360,12 @@ namespace MonoTests.System.Threading
 
                public static bool WhileAliveOrStop (Thread t, bool alive, string s)
                {
-                       DateTime ti = DateTime.Now;
+                       var sw = SD.Stopwatch.StartNew ();
                        while (t.IsAlive == alive) {
                                if (t.ThreadState == ThreadState.Stopped)
                                        return false;
 
-                               if ((DateTime.Now - ti).TotalSeconds > 10) {
+                               if (sw.Elapsed.TotalSeconds > 10) {
                                        if (alive) Assert.Fail ("Timeout while waiting for not alive state. " + s);
                                        else Assert.Fail ("Timeout while waiting for alive state. " + s);
                                }