[llvm-commits] [hlvm] r38373 - in /hlvm/trunk/test: SConscript generate/ generate/dg.exp lib/generate.exp

Reid Spencer reid at x10sys.com
Sat Jul 7 17:02:46 PDT 2007


Author: reid
Date: Sat Jul  7 19:02:46 2007
New Revision: 38373

URL: http://llvm.org/viewvc/llvm-project?rev=38373&view=rev
Log:
Add a test suite for automated random testing of test cases.
Run this too many times and it will fill up your disk. Right
now it selects 75 smallish tests at random based on seeding
the random number generator with the current time. If you 
find an interesting one, let me know and I'll add it to 
the list of "always run" cases.

Added:
    hlvm/trunk/test/generate/   (with props)
    hlvm/trunk/test/generate/dg.exp
    hlvm/trunk/test/lib/generate.exp
Modified:
    hlvm/trunk/test/SConscript

Modified: hlvm/trunk/test/SConscript
URL: http://llvm.org/viewvc/llvm-project/hlvm/trunk/test/SConscript?rev=38373&r1=38372&r2=38373&view=diff

==============================================================================
--- hlvm/trunk/test/SConscript (original)
+++ hlvm/trunk/test/SConscript Sat Jul  7 19:02:46 2007
@@ -25,7 +25,7 @@
 if 'check' in COMMAND_LINE_TARGETS:
   from build import check
   if env['suites'] == 'all':
-    check.Check(env,['xml2xml','invalid','return0'])
+    check.Check(env,['xml2xml','invalid','return0','generate'])
   else:
     suites = env['suites'].split(' ')
     print "Suites To Run=",suites

Propchange: hlvm/trunk/test/generate/

------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Jul  7 19:02:46 2007
@@ -0,0 +1 @@
+gen-*

Added: hlvm/trunk/test/generate/dg.exp
URL: http://llvm.org/viewvc/llvm-project/hlvm/trunk/test/generate/dg.exp?rev=38373&view=auto

==============================================================================
--- hlvm/trunk/test/generate/dg.exp (added)
+++ hlvm/trunk/test/generate/dg.exp Sat Jul  7 19:02:46 2007
@@ -0,0 +1,14 @@
+load_lib generate.exp
+
+hlvm-generate-test 1 1 1 0
+
+set seed [ clock seconds ]
+
+for { set complexity 1 } { $complexity < 5 } { incr complexity } {
+  for { set typecmplxt 1 } { $typecmplxt < 5 } { incr typecmplxt } {
+    for { set size 1 } { $size < 5 } { incr size } {
+      hlvm-generate-test $complexity $typecmplxt $size $seed
+    }
+  }
+}
+

Added: hlvm/trunk/test/lib/generate.exp
URL: http://llvm.org/viewvc/llvm-project/hlvm/trunk/test/lib/generate.exp?rev=38373&view=auto

==============================================================================
--- hlvm/trunk/test/lib/generate.exp (added)
+++ hlvm/trunk/test/lib/generate.exp Sat Jul  7 19:02:46 2007
@@ -0,0 +1,78 @@
+#===-test/lib/identity.exp - Script for identity tests ---------------------===#
+#
+#                      High Level Virtual Machine (HLVM)
+# 
+#  Copyright (C) 2006 Reid Spencer. All Rights Reserved.
+# 
+#  This software is free software; you can redistribute it and/or modify it 
+#  under the terms of the GNU Lesser General Public License as published by 
+#  the Free Software Foundation; either version 2.1 of the License, or (at 
+#  your option) any later version.
+# 
+#  This software is distributed in the hope that it will be useful, but WITHOUT
+#  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+#  FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for 
+#  more details.
+# 
+#  You should have received a copy of the GNU Lesser General Public License 
+#  along with this library in the file named LICENSE.txt; if not, write to the 
+#  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+#  MA 02110-1301 USA
+# 
+#===------------------------------------------------------------------------===#
+proc hlvm-generate-test { complexity typecomplexity size seed } {
+  global srcdir subdir objdir tmpdir objrootdir llc gccld gxx APR_lib
+  set outdir [file join $objdir $subdir]
+  set gentc [ file join $objrootdir tools hlvm-gentestcase hlvm-gentestcase ]
+  set compiler [file join $objrootdir tools hlvm-compiler hlvm-compiler ]
+  set source [file join $srcdir $subdir ]
+  set rtlib [file join $objrootdir hlvm Runtime HLVMRuntime.bca ]
+  set baselib [file join $objrootdir hlvm Base HLVMBase.bca ]
+  set vmmain [file join $objrootdir tools hlvm hlvm.bc ]
+
+  set test "gen-$complexity-$typecomplexity-$size-$seed"
+  set output [file join $outdir ${test}.out]
+  set testname      [file rootname $test]
+  set testsrc       [file join $source ${test}.hlx ]
+  set testexe       [file join $outdir $testname ]
+  set testbc        [file join $outdir ${test}.bc ]
+  set testlinked    [file join $outdir ${test}.linked ]
+  set testlinkedbc  [file join $outdir ${test}.linked.bc ]
+  set tests         [file join $outdir ${test}.s ]
+  set retval [ catch { exec $gentc -seed $seed -size $size -complexity $complexity -type-complexity $typecomplexity -bundle "$test" -o $testsrc } msg ]
+  if { $retval != 0 } {
+    fail "$test: hlvm-gentestcase return $retval:\n$msg"
+  } else {
+    set retval [ catch { exec $compiler $testsrc -llvmbc -o $testbc } msg ] 
+    if { $retval != 0 } {
+      fail "$test: hlvm-compiler returned $retval:\n$msg"
+    } else {
+      set retval [ catch { exec $gccld -o $testlinked $testbc $vmmain $rtlib } msg ]
+      if { $retval != 0 } {
+        fail "$test: gccld returned $retval:\n$msg"
+      } else {
+        set retval [ catch { exec $llc -fast -f -o $tests $testlinkedbc } msg ]
+        if { $retval != 0 } {
+          fail "$test: llc returned $retval:\n$msg"
+        } else {
+          set retval [ catch { exec $gxx -g -o $testexe $tests -L$APR_lib -lapr-1 -laprutil-1 } msg ]
+          if { $retval != 0 } {
+            fail "$test: gxx returned $retval:\n$msg"
+          } else {
+            set retval [ catch {exec $testexe $testname } msg ]
+            if { $retval != 0 } {
+              if {[lindex $::errorCode 0] eq "CHILDSTATUS"} {
+                set status [lindex $::errorCode 2]
+                pass "$test: $testexe returned $status"
+              } else {
+                fail "$test: $testexe return $::errorCode\n$msg"
+              } 
+            } else {
+              fail "$test: $testexe return $retval\n$msg"
+            }
+          }
+        }
+      }
+    }
+  }
+}





More information about the llvm-commits mailing list