summaryrefslogtreecommitdiffstats
path: root/tests/thread.test
diff options
context:
space:
mode:
authorJoe Mistachkin <joe@mistachkin.com>2015-06-05 19:56:12 (GMT)
committerJoe Mistachkin <joe@mistachkin.com>2015-06-05 19:56:12 (GMT)
commit43df5e31605343be0c0fb479d528257bca53515e (patch)
tree13506882aa27cdea8ae69d6d6434459d43a923c3 /tests/thread.test
parentb56bbbb5de64f038ea17023cc8aa5afff73bbb10 (diff)
downloadtcl-43df5e31605343be0c0fb479d528257bca53515e.zip
tcl-43df5e31605343be0c0fb479d528257bca53515e.tar.gz
tcl-43df5e31605343be0c0fb479d528257bca53515e.tar.bz2
Add stress test.
Diffstat (limited to 'tests/thread.test')
-rw-r--r--tests/thread.test26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/thread.test b/tests/thread.test
index f32ef61..ee09020 100644
--- a/tests/thread.test
+++ b/tests/thread.test
@@ -1412,6 +1412,32 @@ test thread-7.37 {cancel: send async thread cancel nested catch inside pure insi
unset -nocomplain ::threadSawError ::threadError ::threadId ::threadIdStarted
} -result {{} 1 1 {eval unwound}}
+test thread-8.1 {threaded fork stress} -constraints {thread} -setup {
+ unset -nocomplain ::threadCount ::execCount ::threads ::thread
+ set ::threadCount 10
+ set ::execCount 10
+} -body {
+ set ::threads [list]
+ for {set i 0} {$i < $::threadCount} {incr i} {
+ lappend ::threads [thread::create -joinable [string map \
+ [list %execCount% $::execCount] {
+ proc execLs {} {
+ if {$::tcl_platform(platform) eq "windows"} then {
+ return [exec $::env(COMSPEC) /c DIR]
+ } else {
+ return [exec /bin/ls]
+ }
+ }
+ set j {%execCount%}; while {[incr j -1]} {execLs}
+ }]]
+ }
+ foreach ::thread $::threads {
+ thread::join $::thread
+ }
+} -cleanup {
+ unset -nocomplain ::threadCount ::execCount ::threads ::thread
+} -result {}
+
# cleanup
::tcltest::cleanupTests
return