You've already forked linux-packaging-mono
Imported Upstream version 5.10.0.47
Former-commit-id: d0813289fa2d35e1f8ed77530acb4fb1df441bc0
This commit is contained in:
parent
88ff76fe28
commit
e46a49ecf1
@ -99,6 +99,7 @@ namespace MonoTests.System.Threading
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Category ("InterpreterNotWorking")] /* crashes on linux/armv7 */
|
||||
public void TestCompareExchange_Flt ()
|
||||
{
|
||||
flt = flt_1;
|
||||
|
@ -156,6 +156,23 @@ namespace MonoTests.System.Threading
|
||||
Assert.IsTrue (workerThreads == workerThreads_new, "#3");
|
||||
Assert.IsTrue (completionPortThreads == completionPortThreads_new, "#4");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SetMaxPossibleThreads ()
|
||||
{
|
||||
var maxPossibleThreads = 0x7fff;
|
||||
int maxWt, macCpt;
|
||||
|
||||
ThreadPool.SetMaxThreads (maxPossibleThreads, maxPossibleThreads);
|
||||
ThreadPool.GetMaxThreads (out maxWt, out macCpt);
|
||||
Assert.AreEqual (maxPossibleThreads, maxWt);
|
||||
Assert.AreEqual (maxPossibleThreads, macCpt);
|
||||
|
||||
ThreadPool.SetMaxThreads (maxPossibleThreads + 1, maxPossibleThreads + 1);
|
||||
ThreadPool.GetMaxThreads (out maxWt, out macCpt);
|
||||
Assert.AreEqual (maxPossibleThreads, maxWt);
|
||||
Assert.AreEqual (maxPossibleThreads, macCpt);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetAvailableThreads ()
|
||||
@ -199,5 +216,44 @@ namespace MonoTests.System.Threading
|
||||
|
||||
mre.WaitOne ();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AsyncLocalCapture ()
|
||||
{
|
||||
var asyncLocal = new AsyncLocal<int>();
|
||||
asyncLocal.Value = 1;
|
||||
int var_0, var_1, var_2, var_3;
|
||||
var_0 = var_1 = var_2 = var_3 = 99;
|
||||
var cw = new CountdownEvent (4);
|
||||
|
||||
var evt = new AutoResetEvent (false);
|
||||
ThreadPool.QueueUserWorkItem(state => {
|
||||
var_0 = asyncLocal.Value;
|
||||
cw.Signal ();
|
||||
}, null);
|
||||
|
||||
ThreadPool.UnsafeQueueUserWorkItem(state => {
|
||||
var_1 = asyncLocal.Value;
|
||||
cw.Signal ();
|
||||
}, null);
|
||||
|
||||
ThreadPool.RegisterWaitForSingleObject (evt, (state, to) => {
|
||||
var_2 = asyncLocal.Value;
|
||||
cw.Signal ();
|
||||
}, null, millisecondsTimeOutInterval: 1, executeOnlyOnce: true);
|
||||
|
||||
ThreadPool.UnsafeRegisterWaitForSingleObject (evt, (state, to) => {
|
||||
var_3 = asyncLocal.Value;
|
||||
cw.Signal ();
|
||||
}, null, millisecondsTimeOutInterval: 1, executeOnlyOnce: true);
|
||||
|
||||
Assert.IsTrue (cw.Wait (2000), "cw_wait");
|
||||
|
||||
Assert.AreEqual (1, var_0, "var_0");
|
||||
Assert.AreEqual (0, var_1, "var_1");
|
||||
Assert.AreEqual (1, var_2, "var_2");
|
||||
Assert.AreEqual (0, var_3, "var_3");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -307,6 +307,7 @@ namespace MonoTests.System.Threading
|
||||
|
||||
[Test]
|
||||
[Category ("NotDotNet")] // it hangs.
|
||||
[Category ("InterpreterNotWorking")] /* crashes on linux/arm64 */
|
||||
public void TestStart()
|
||||
{
|
||||
{
|
||||
@ -449,6 +450,7 @@ namespace MonoTests.System.Threading
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Category ("InterpreterNotWorking")]
|
||||
public void TestUndivisibleByPageSizeMaxStackSize ()
|
||||
{
|
||||
const int undivisible_stacksize = 1048573;
|
||||
@ -1016,6 +1018,27 @@ namespace MonoTests.System.Threading
|
||||
Assert.IsNotNull (ex.Message, "#B8");
|
||||
}
|
||||
}
|
||||
|
||||
[Test] // bug #60031
|
||||
public void StoppedThreadsThrowThreadStateException ()
|
||||
{
|
||||
var t = new Thread (() => { });
|
||||
t.Start ();
|
||||
t.Join ();
|
||||
|
||||
Assert.Throws<ThreadStateException> (() => { var isb = t.IsBackground; }, "IsBackground getter");
|
||||
Assert.Throws<ThreadStateException> (() => { var isb = t.ApartmentState; }, "ApartmentState getter");
|
||||
Assert.Throws<ThreadStateException> (() => t.ApartmentState = ApartmentState.MTA, "ApartmentState setter");
|
||||
Assert.Throws<ThreadStateException> (() => t.IsBackground = false, "IsBackground setter");
|
||||
Assert.Throws<ThreadStateException> (() => t.Start (), "Start ()");
|
||||
#if MONO_FEATURE_THREAD_SUSPEND_RESUME
|
||||
Assert.Throws<ThreadStateException> (() => t.Resume (), "Resume ()");
|
||||
Assert.Throws<ThreadStateException> (() => t.Suspend (), "Suspend ()");
|
||||
#endif
|
||||
Assert.Throws<ThreadStateException> (() => t.GetApartmentState (), "GetApartmentState ()");
|
||||
Assert.Throws<ThreadStateException> (() => t.SetApartmentState (ApartmentState.MTA), "SetApartmentState ()");
|
||||
Assert.Throws<ThreadStateException> (() => t.TrySetApartmentState (ApartmentState.MTA), "TrySetApartmentState ()");
|
||||
}
|
||||
}
|
||||
|
||||
[TestFixture]
|
||||
|
@ -325,5 +325,14 @@ namespace MonoTests.System.Threading {
|
||||
t.Change (new TimeSpan (UInt32.MaxValue), new TimeSpan (UInt32.MaxValue));
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
[ExpectedException (typeof (ObjectDisposedException))]
|
||||
public void Change_After_Dispose ()
|
||||
{
|
||||
var t = new Timer (o => DoNothing (o), null, 0, 0);
|
||||
t.Dispose ();
|
||||
t.Change (1, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user