//
using NUnit.Framework;
-#if !MONODROID
-using NUnit.Framework.SyntaxHelpers;
-#endif
+
using System;
using System.Text;
using System.Threading;
using Mono.Unix;
using Mono.Unix.Android;
using Mono.Unix.Native;
-#if !MONODROID
-namespace NUnit.Framework.SyntaxHelpers { class Dummy {} }
-#endif
+
namespace MonoTests.Mono.Unix {
- [TestFixture]
+ [TestFixture, Category ("NotOnWindows")]
public class UnixSignalTest {
// helper method to create a thread waiting on a UnixSignal
}
[Test]
- [ExpectedException]
[Category ("NotOnMac")]
public void TestSignumPropertyThrows ()
{
if (!TestHelper.CanUseRealTimeSignals ())
return;
- UnixSignal signal1 = new UnixSignal (new RealTimeSignum (0));
- Signum s = signal1.Signum;
+
+ Assert.Throws<InvalidOperationException> (() => {
+ UnixSignal signal1 = new UnixSignal (new RealTimeSignum (0));
+ Signum s = signal1.Signum;
+ });
}
[Test]
}
[Test]
- [ExpectedException]
[Category ("NotOnMac")]
public void TestRealTimePropertyThrows ()
{
if (!TestHelper.CanUseRealTimeSignals ())
- return;
- UnixSignal signal1 = new UnixSignal (Signum.SIGSEGV);
- RealTimeSignum s = signal1.RealTimeSignum;
+ return;
+
+ Assert.Throws<InvalidOperationException> (() => {
+ UnixSignal signal1 = new UnixSignal (Signum.SIGSEGV);
+ RealTimeSignum s = signal1.RealTimeSignum;
+ });
}
[Test]
foreach (Thread t in threads)
t.Join ();
AssertCountSet (usignals);
+ // signal delivery might take some time, wait a bit before closing
+ // the UnixSignal so we can ignore it and not terminate the process
+ // when a SIGHUP/SIGTERM arrives afterwards
+ Thread.Sleep (1000);
CloseSignals (usignals);
}
s.Close ();
}
+ // Create thread that issues many signals from a set of harmless signals
static Thread CreateRaiseStormThread (int max)
{
return new Thread (delegate () {
CloseSignals (usignals);
}
+ // Create thread that repeatedly registers then unregisters signal handlers
static Thread CreateSignalCreatorThread ()
{
return new Thread (delegate () {
CloseSignals (usignals);
}
+ // Create thread that blocks until at least one of the given signals is received
static Thread CreateWaitAnyThread (params UnixSignal[] usignals)
{
return new Thread (delegate () {