merged Sys.Web.Services 2.0 support in my branch:
[mono.git] / mono / tests / cas / threads / README
1 The basic idea of the tests are to try to exit the running process by calling
2 Environment.Exit(int). The entry point, Main, denies UnmanagedCode from being
3 executed. UnmanagedCode is required to call Environment.Exit(int). Then we try
4 to call Environment.Exit(int) from other threads which "should" have inherited
5 the restriction from the "main" (i.e. original) thread.
6
7 This security stack "inheritance" is called "stack propagation".
8
9 * delegate1.cs  Use a static delegate to test stack propagation.
10 * delegate2.cs  Use an instance delegate to test stack propagation.
11
12 * thread1.cs    Deny unmanaged code before creating the thread object.
13 * thread2.cs    Deny unmanaged code after creating the thread object but 
14                 before calling Start.
15 * thread3.cs    Deny unmanaged code after creating the thread object and 
16                 calling Start. 
17
18 * timer1.cs:    Use System.Threading.Timer (Thread.Start) to test stack 
19                 propagation.
20 * timer2.cs:    Use System.Timers.Timer (ThreadPool.QueueUserWorkItem) to test
21                 stack propagation.
22
23 * swf-timer3.cs: Use System.Timers.Timer (ThreadPool.QueueUserWorkItem) with a 
24                 SynchonizingObject (like required for SWF) to test stack 
25                 propagation.
26 * swf-timer4.cs: Use System.Windows.Forms.Timer to test stack propagation.
27
28 * swf-control1.cs: Use Control.BeginInvoke to test stack propagation.
29
30 * tpool1.cs:    Use ThreadPool.QueueUserWorkItem to test stack propagation.
31 * tpool2.cs:    Use ThreadPool.UnsafeQueueUserWorkItem to test non-propagation
32                 of the stack.
33
34 Notes:
35
36 * swf-*.cs test cases requires SWF (and it's dependancies) to be installed 
37 (and functional) to succeed.