go-test.exp: For goroutines.go test if GCCGO_RUN_ALL_TESTS is not set in the environm...
authorJakub Jelinek <jakub@redhat.com>
Tue, 8 Mar 2011 22:04:04 +0000 (23:04 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 8 Mar 2011 22:04:04 +0000 (23:04 +0100)
* go.test/go-test.exp: For goroutines.go test if GCCGO_RUN_ALL_TESTS
is not set in the environment, pass 64 as first argument when not
running expensive tests or pass max($[`ulimit -u`/4], 10000) on
native where ulimit -u is supported.

From-SVN: r170792

gcc/testsuite/ChangeLog
gcc/testsuite/go.test/go-test.exp

index 4cecf2e8c9c35097b691860581641ae3beb42a27..2b171dcd545ad14d4f9069ff2dd4b41f9c200652 100644 (file)
@@ -1,3 +1,10 @@
+2011-03-08  Jakub Jelinek  <jakub@redhat.com>
+
+       * go.test/go-test.exp: For goroutines.go test if GCCGO_RUN_ALL_TESTS
+       is not set in the environment, pass 64 as first argument when not
+       running expensive tests or pass max($[`ulimit -u`/4], 10000) on
+       native where ulimit -u is supported.
+
 2011-03-08  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 
        * gcc.dg/optimize-bswapsi-1.c: Use -march=z900 on s390.
index 8945b0526ca2fdd1afc15b765731966dcd5b666a..19cc0dfc4d352807eae229ddfe351bdc0e04d9af 100644 (file)
@@ -265,6 +265,27 @@ proc go-gc-tests { } {
            verbose -log "$test: go_execute_args is $go_execute_args"
            set index [string last " $progargs" $test_line]
            set test_line [string replace $test_line $index end]
+       } elseif { [string match "*go.test/test/chan/goroutines.go" $test] \
+                  && [getenv GCCGO_RUN_ALL_TESTS] == "" } {
+           # goroutines.go spawns by default 10000 threads, which is too much
+           # for many OSes.
+           if { [getenv GCC_TEST_RUN_EXPENSIVE] == "" } {
+               set go_execute_args 64
+           } elseif { ![is_remote host] && ![is_remote target] } {
+               # When using low ulimit -u limit, use maximum of
+               # a quarter of that limit and 10000 even when running expensive
+               # tests, otherwise parallel tests might fail after fork failures.
+               set nproc [lindex [remote_exec host {sh -c ulimit\ -u}] 1]
+               if { [string is integer -strict $nproc] } {
+                       set nproc [expr $nproc / 4]
+                       if { $nproc > 10000 } { set nproc 10000 }
+                       if { $nproc < 16 } { set nproc 16 }
+                       set go_execute_args $nproc
+               }
+           }
+           if { "$go_execute_args" != "" } {
+               verbose -log "$test: go_execute_args is $go_execute_args"
+           }
        }
 
        if { $test_line == "// \$G \$D/\$F\.go && \$L \$F\.\$A && \./\$A\.out >tmp.go &&" \