123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #! /usr/bin/env python
- import sys
- import re
- import subprocess
- import optparse
- import tm5_test
- import pdb
- def main():
- """
- TM6 testing suite
- (1) create a tm5.rc from tm6.rc
- (2) compare TM6 with TM5
- (3) compare TM6 with 1, 4, and 10 processors [commented]
- (4) compare TM6 with extra restart [commented]
- Call:
- > test_tm6.py [-n] [-q]
- then tear the test down :
- > test_tm6.py -t
- There is two steps, because you may want to look at the models outputs
- before cleaning up (eg when a test is not successful).
-
- """
- p = optparse.OptionParser()
- p.add_option("-t", "--teardown", action="store_true", dest="teardown",
- help="cleanup test: remove restart and files in rundir")
-
- p.add_option("-n", "--new", action="store_true", dest="new",
- help="recompile everything fresh (a la realclean)")
- p.add_option("-q", "--queue", action="store_true", dest="queue",
- help="submit jobs to queue instead of foreground")
- options, args = p.parse_args()
- # 1st create a tm5.rc from tm6.rc
- #---------------------------------
- # to replace:
- tm6str=('my.source.CHEM : proj/chem/base/${my.tm6branch}',
- 'my.source.BASE : base/${my.branch} base/${my.tm6branch}',
- 'my.project.dir : ${my.scratch}/TM5/tm6',
- 'my.defs_chem : ')
- # with:
- tm5str=('my.source.CHEM : proj/chem/base/${my.branch}',
- 'my.source.BASE : base/${my.branch}',
- 'my.project.dir : ${my.scratch}/TM5/standard',
- 'my.defs_chem : with_tracerorder')
- # simply use:
- regex = ( r"^my\.source\.CHEM", r"^my\.source\.BASE", r"^my.project.dir" )
- infile=open('tm6.rc', 'r')
- outfile=open('tm5.rc', 'w')
- for line in infile:
- seded=False
- for (klm,r) in enumerate(regex):
- match = re.search(r, line)
- if match:
- outfile.write( tm5str[klm]+'\n' )
- seded=True
- if not seded: outfile.write( line )
- infile.close()
- outfile.close()
- # compare TM6 and TM5
- #---------------------------------
- try:
- tm5_test.testtm(['tm6.rc', 'tm5.rc'], teardown=options.teardown,
- new=options.new, queue=options.queue)
- except:
- print "FAIL : tm6 & tm5 are different"
- return 1
-
-
-
-
-
- # # compare results with different number of processors
- # #---------------------------------
- # try:
- # tm5_test.testtm(['tm6.rc'], teardown=options.teardown,
- # new=options.new, queue=options.queue, tm6=True, mpi=True)
- # except:
- # print "FAIL : tm6 gives different results on different number of processors"
- # return 1
- #
-
-
-
- # # compare results with extra restart
- # #---------------------------------
- # try:
- # tm5_test.testtm(['tm6.rc'], teardown=options.teardown, new=options.new,
- # queue=options.queue, restart=True)
- # except:
- # print "FAIL : tm6 gives different results with extra restart"
- # return 1
-
- return 0
- if __name__ == '__main__':
- sys.exit(main())
|