ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/resources/test_lib.rb
Revision: 1.2
Committed: Mon Jun 10 22:31:53 2019 UTC (4 years, 11 months ago) by greg
Branch: MAIN
CVS Tags: rad5R4, rad5R3, HEAD
Changes since 1.1: +72 -9 lines
Log Message:
Update from Rob G.

File Contents

# User Rev Content
1 greg 1.1 #!/usr/bin/ruby
2    
3     # Radiance test library
4    
5     # Use with cmake build system deployed by NREL
6     # Run from [build]/resources
7 greg 1.2 # usage: [ruby]test_lib[.rb] (runs all tests)
8 greg 1.1 # usage: [ruby]test_lib[.rb] -n [n] -t ['testname', 'all']
9    
10    
11     $stderr.sync = true
12     require 'optparse'
13     require 'etc'
14     # default options
15     flag = false
16 greg 1.2
17 greg 1.1 tst = "all"
18    
19 greg 1.2
20 greg 1.1 tproc = Etc.nprocessors
21     nproc = tproc / 2 # half cores by default, override with -n
22     list = ["x", "y", "z"]
23    
24 greg 1.2 clean = false
25    
26 greg 1.1 # parse arguments
27     file = __FILE__
28     ARGV.options do |opts|
29     opts.on("-t", "--test=val", String) { |val| tst = val }
30     opts.on("-n", "--nproc=val", Integer) { |val| nproc = val }
31 greg 1.2
32     opts.on("-c", "--clean") { |val| clean = val}
33 greg 1.1 opts.parse!
34     end
35    
36 greg 1.2 # print banner
37     warn "Radiance Test Library"
38    
39     ### Cleanup ###
40    
41     if clean == true
42    
43     puts "cleaning up"
44    
45     clean_list = []
46    
47     globs = [
48     '../test/renders/*.oct',
49     '../test/renders/*.amb',
50     '../test/renders/*_ill.dat',
51     '../test/renders/blinds_ill?.dat',
52     '../test/renders/*_*.hdr',
53     '../test/renders/*.unf',
54     './test/gen/gen*.rad'
55     ]
56    
57     globs.each do |glob|
58     add_list = Dir.glob(glob)
59     (clean_list << add_list).flatten!
60     end
61    
62     #*.[cg]pm{,.leaf}
63    
64     add_files = [
65    
66     '../test/renders/inst_rad.txt',
67     '../test/renders/combined.rad',
68     '../test/renders/fmirror.mtx',
69     '../test/gen/replmarks.rad',
70     '../test/util/test.mtx',
71     '../test/cal/cnt.txt',
72     '../test/cal/rcalc.txt',
73     '../test/cal/total.txt',
74     '../test/cal/histo.txt',
75     '../test/cal/rlam.txt'
76    
77     ]
78     (clean_list << add_files).flatten!
79    
80     clean_list.each do |rmfile|
81     if File.exist?(rmfile)
82     File.delete(rmfile)
83     puts "deleted #{rmfile}"
84     end
85     end
86     exit
87    
88     end
89    
90     ## END Cleanup ##
91    
92 greg 1.1 # print opts
93 greg 1.2 warn "test: #{tst.inspect}"
94     warn "using #{nproc.inspect} cores (of #{tproc} total)"
95 greg 1.1
96     test_in = tst
97    
98     test_total = 0
99     @test_pass = 0
100     @test_fail = 0
101    
102     all_tests = [
103     'test_xform' , 'test_rad' , 'test_rtrace' , 'test_vwright' , 'test_rcollate' , 'test_dctimestep',
104     'test_getinfo' , 'test_rmtxop' , 'test_oconv' , 'test_rfluxmtx' , 'test_dielectric_def' ,
105     'test_dielectric_fish', 'test_replmarks', 'test_gensky', 'test_gendaymtx','test_genbox',
106     'test_genrev', 'test_genworm', 'test_genprism', 'test_gensurf', 'test_cnt', 'test_rcalc',
107     'test_total', 'test_histo', 'test_rlam'
108     ]
109    
110 greg 1.2
111     # report pass/fail status
112    
113 greg 1.1 def rcpf
114     if $?.exitstatus == 0
115     @test_pass +=1
116    
117 greg 1.2 puts "result: PASS"
118 greg 1.1 else
119     @test_fail +=1
120 greg 1.2 puts "result: FAIL"
121    
122 greg 1.1 end
123     end
124    
125     # Number of processes to use on tests that run multi-core
126     NPROC = nproc
127    
128     # Image reduction for comparisons
129     RDU_PFILT = "pfilt -1 -r 1 -x 128 -y 128 -pa 1"
130    
131     # Image comparison command
132     IMG_CMP = "radcompare -v -rms 0.07 -max 1.5"
133    
134     ## tests from test/util
135    
136     def test_vwright
137    
138     Dir.chdir('../test/util') do
139     # generate test input
140     cmd = "vwright -vf test.vf 3.5 > vwright.txt"
141     system(cmd)
142    
143     # compare to reference
144     cmd = "radcompare -v ref/vwright.txt vwright.txt"
145     system(cmd)
146    
147     # report pass/fail
148     rcpf
149    
150     # cleanup
151     # File.delete("vwright.mtx")
152     end
153    
154     end
155    
156     def make_test_mtx
157    
158     Dir.chdir('../test/util') do
159    
160     cmd = "rcollate -t ../renders/ref/rfmirror.mtx > test.mtx"
161     system(cmd)
162    
163     end
164    
165     end
166    
167     def test_rcollate
168    
169     make_test_mtx if !File.exist?("../test/util/test.mtx")
170    
171     Dir.chdir('../test/util') do
172     cmd = "radcompare -v ref/test.mtx test.mtx"
173     system(cmd)
174     end
175    
176     rcpf
177    
178     #File.delete("#{t}/test.mtx")
179    
180     end
181    
182     def test_dctimestep
183    
184     make_test_mtx if !File.exist?("../test/util/test.mtx")
185    
186     Dir.chdir('../test/util') do
187     cmd = "gensky 3 21 10:15PST +s -g .3 -g 2.5 -a 36 -o 124 | genskyvec -m 1 -c .92 1.03 1.2 | dctimestep '!rmtxop -ff -t test.mtx' > dctimestep.mtx"
188     system(cmd)
189     cmd = "radcompare -v ref/dctimestep.mtx dctimestep.mtx"
190     system(cmd)
191     end
192    
193     rcpf
194    
195     #File.delete("#{t}/dctimestep.mtx")
196    
197     end
198    
199     def test_getinfo
200    
201     make_test_mtx if !File.exist?("../test/util/test.mtx")
202    
203     Dir.chdir('../test/util') do
204     cmd = "getinfo -a Guppies 'Fredo the Frog' < test.mtx | getinfo > getinfo.txt"
205     system(cmd)
206     cmd = "radcompare -v ref/getinfo.txt getinfo.txt"
207     system(cmd)
208     end
209    
210     rcpf
211    
212     #File.delete("#{t}/getinfo.txt")
213    
214     end
215    
216     def test_rmtxop
217    
218     make_test_mtx if !File.exist?("../test/util/test.mtx")
219    
220     Dir.chdir('../test/util') do
221     cmd = "rmtxop -ff -c .3 .9 .2 test.mtx -c .7 .2 .3 -t test.mtx > rmtxop.mtx"
222     puts("command: #{cmd}")
223     system(cmd)
224     cmd = "radcompare -v ref/rmtxop.mtx rmtxop.mtx"
225     puts("command: #{cmd}")
226     system(cmd)
227     end
228    
229     rcpf
230     #File.delete("#{t}/rmtxop.mtx")
231    
232     end
233    
234     ### END test/util ###
235    
236    
237     ### test/renders ###
238    
239     def inst_oct
240     Dir.chdir('../test/renders') do
241     cmd = "rad -v 0 inst.rif"
242     puts("command: #{cmd}")
243     system(cmd)
244     end
245     end
246    
247     def test_xform
248     combined_rad if !File.exist?("../test/renders/combined.rad")
249     Dir.chdir('../test/renders') do
250     cmd = "radcompare -v -max 0.04 ref/combined.rad combined.rad"
251     puts("command: #{cmd}")
252     system(cmd)
253     rcpf
254     end
255     end
256    
257     def combined_rad
258     Dir.chdir('../test/renders') do
259     cmd = "xform -f combined_scene.rad | grep -v '^[ ]*#' > combined.rad"
260     puts("command: #{cmd}")
261     system(cmd)
262     end
263     end
264    
265     def test_rad
266     Dir.chdir('../test/renders') do
267     cmd = 'rad -n -s -e inst.rif > inst_rad.txt'
268     system(cmd)
269     cmd = 'radcompare -v ref/inst_rad.txt inst_rad.txt'
270     puts("command: #{cmd}")
271     system(cmd)
272     rcpf
273     end
274     end
275    
276     def test_oconv
277     inst_oct if !File.exist?("../test/renders/inst.oct")
278     Dir.chdir('../test/renders') do
279     cmd="radcompare -v ref/inst.oct inst.oct"
280     system(cmd)
281     end
282     rcpf
283     end
284    
285     def gen_rtmirror_fish_hdr
286     Dir.chdir('../test/renders') do
287     puts "generating input file: rtmirror_fish.hdr"
288     cmd = "rad -v 0 mirror.rif OPT=mirror.opt"
289     system(cmd)
290     cmd = "vwrays -ff -vf fish.vf -x 2048 -y 2048 | rtrace -n #{NPROC} @mirror.opt -ffc -x 2048 -y 2048 mirror.oct | pfilt -1 -e +3 -r .6 -x /2 -y /2 > rtmirror_fish.hdr"
291     # rm -f mirror.opt
292     puts("command: #{cmd}")
293     system(cmd)
294     end
295     end
296    
297     def test_rtrace
298     gen_rtmirror_fish_hdr if !File.exist?("../test/renders/rtmirror_fish.hdr")
299     Dir.chdir('../test/renders') do
300     cmd = "#{RDU_PFILT} rtmirror_fish.hdr | #{IMG_CMP} -h ref/mirror_fish.hdr -"
301     puts("command: #{cmd}")
302     system(cmd)
303     rcpf
304     end
305     end
306    
307     def test_rfluxmtx
308     gen_rfmirror_mtx if !File.exist?("../test/renders/rfmirror.mtx")
309     Dir.chdir('../test/renders') do
310     cmd = 'radcompare -v -max .4 -rms .05 ref/rfmirror.mtx rfmirror.mtx'
311     puts("command: #{cmd}")
312     system(cmd)
313     rcpf
314     end
315     end
316    
317     def gen_rfmirror_mtx
318     Dir.chdir('../test/renders') do
319     cmd = "rfluxmtx -n #{NPROC} -ab 2 -lw 1e-4 mirror.rad dummysky.rad basic.mat diorama_walls.rad closed_end.rad front_cap.rad glass_pane.rad antimatter_portal.rad > rfmirror.mtx"
320     puts("command: #{cmd}")
321     system(cmd)
322     end
323     end
324    
325     def gen_dielectric_oct
326     Dir.chdir('../test/renders') do
327     cmd = 'rad -v 0 dielectric.rif'
328     puts("command: #{cmd}")
329     system(cmd)
330     end
331     end
332    
333     def test_dielectric_def #ref/dielectric_def.hdr dielectric_def.hdr
334     gen_dielectric_def if !File.exist?("../test/renders/dielectric_def.hdr")
335     gen_dielectric_def_ref if !File.exist?("../test/renders/ref/dielectric_def.hdr")
336     Dir.chdir('../test/renders') do
337     cmd = "#{RDU_PFILT} dielectric_def.hdr | #{IMG_CMP} ref/dielectric_def.hdr -"
338     puts("command: #{cmd}")
339     system(cmd)
340     rcpf
341     end
342     end
343    
344     def gen_dielectric_def_ref
345     gen_dielectric_def if !File.exist?('../test/renders/dielectric_def.hdr')
346     Dir.chdir('../test/renders') do
347     cmd = '#{RDU_PFILT} dielectric_def.hdr > ref/dielectric_def.hdr'
348     puts("command: #{cmd}")
349     system(cmd)
350     end
351     end
352    
353     def gen_dielectric_def #dielectric.oct
354     gen_dielectric_oct if !File.exist?('../test/renders/dielectric.oct')
355     Dir.chdir('../test/renders') do
356     cmd = 'rad -v def dielectric.rif'
357     puts("command: #{cmd}")
358     system(cmd)
359     end
360     end
361    
362    
363     ### Reference and test for dielectric view fish ###
364    
365     def test_dielectric_fish # ref/dielectric_fish.hdr dielectric_fish.hdr
366     gen_dielectric_fish_hdr if !File.exist?('../test/renders/dielectric_fish.hdr')
367     gen_ref_dielectric_fish_hdr if !File.exist?('../test/renders/ref/dielectric_fish.hdr')
368     Dir.chdir('../test/renders') do
369     cmd = "#{RDU_PFILT} dielectric_fish.hdr | #{IMG_CMP} ref/dielectric_fish.hdr -"
370     puts("command: #{cmd}")
371     system(cmd)
372     rcpf
373     end
374     end
375    
376     def gen_ref_dielectric_fish_hdr #dielectric.oct
377     gen_dielectric_fish_hdr if !File.exist?('../test/renders/dielectric_fish.hdr')
378     Dir.chdir('../test/renders') do
379     cmd = "#{RDU_PFILT} dielectric_fish.hdr > ref/dielectric_fish.hdr"
380     puts("command: #{cmd}")
381     system(cmd)
382     end
383     end
384    
385     def gen_dielectric_fish_hdr
386     gen_dielectric_oct if !File.exist?('../test/renders/dielectric.oct')
387     Dir.chdir('../test/renders') do
388     cmd = 'rad -v fish dielectric.rif'
389     puts("command: #{cmd}")
390     system(cmd)
391     end
392     end
393    
394     ### End dielectric-fish tests
395    
396    
397     ### END test/renders ###
398    
399    
400     ### test/gen ###
401    
402     def test_replmarks
403     Dir.chdir('../test/gen') do
404     cmd = "replmarks -s 1 -x dummy.rad rmod markers.rad | grep -v '^[ ]*#' > replmarks.rad"
405     puts("command: #{cmd}")
406     system(cmd)
407    
408     rcpf
409     end
410     #rm -f replmarks.rad
411     end
412    
413    
414     def test_gensky
415     Dir.chdir('../test/gen') do
416     cmd = 'gensky 11 15 14:21EST +s -g .25 -t 3.5 -a 40.7128 -o 74.006 > NYC11-15-14-21.rad'
417     puts("command: #{cmd}")
418     system(cmd)
419    
420     cmd = 'radcompare ref/NYC11-15-14-21.rad NYC11-15-14-21.rad'
421     puts("command: #{cmd}")
422     system(cmd)
423    
424     rcpf
425     end
426     #rm -f NYC11-15-14-21.rad
427     end
428    
429    
430     def test_gendaymtx
431     Dir.chdir('../test/gen') do
432     cmd = 'gendaymtx -r 90 -m 1 -g .3 .2 .1 -c .9 .9 1.2 test.wea > test.smx'
433     puts("command: #{cmd}")
434     system(cmd)
435    
436     cmd = 'radcompare ref/test.smx test.smx'
437     puts("command: #{cmd}")
438     system(cmd)
439    
440     rcpf
441     end
442     #rm -f test.smx
443     end
444    
445     def test_genbox
446     Dir.chdir('../test/gen') do
447     cmd = 'genbox tmat tbox 1 2 3 -i -b .1 > genbox.rad'
448     puts("command: #{cmd}")
449     system(cmd)
450    
451     cmd = 'radcompare ref/genbox.rad genbox.rad'
452     puts("command: #{cmd}")
453     system(cmd)
454    
455     rcpf
456     end
457     #rm -f genbox.rad
458     end
459    
460     def test_genrev
461     Dir.chdir('../test/gen') do
462     cmd = "genrev tmat trev 'sin(2*PI*t)' '2+cos(2*PI*t)' 16 -s > genrev.rad"
463     puts("command: #{cmd}")
464     system(cmd)
465    
466     cmd = 'radcompare ref/genrev.rad genrev.rad'
467     puts("command: #{cmd}")
468     system(cmd)
469    
470     rcpf
471     end
472     #rm -f genrev.rad
473     end
474    
475     def test_genworm
476     Dir.chdir('../test/gen') do
477     cmd = "genworm tmat tworm '0' '5*sin(t)' '5*cos(t)' '.4-(.5-t)*(.5-t)' 8 > genworm.rad"
478     puts("command: #{cmd}")
479     system(cmd)
480    
481     cmd = 'radcompare ref/genworm.rad genworm.rad'
482     puts("command: #{cmd}")
483     system(cmd)
484    
485     rcpf
486     end
487     #rm -f genworm.rad
488     end
489    
490     def test_genprism
491     Dir.chdir('../test/gen') do
492     cmd = "genprism tmat tprism 8 0 5 4 5 4 4 24.5 4 24.5 3 30 1.5 30 22 0 22 -l 0 0 -1.5 -r .2 > genprism.rad"
493     puts("command: #{cmd}")
494     system(cmd)
495    
496     cmd = 'radcompare ref/genprism.rad genprism.rad'
497     puts("command: #{cmd}")
498     system(cmd)
499    
500     rcpf
501     end
502     #rm -f genprism.rad
503     end
504    
505     def test_gensurf
506     Dir.chdir('../test/gen') do
507     cmd = "gensurf tmat tsurf '15.5+x(theta(s),phi(t))' '10.5+y(theta(s),phi(t))' '30.75+z(theta(s),phi(t))' 4 15 -f basin.cal -s > gensurf.rad"
508     puts("command: #{cmd}")
509     system(cmd)
510    
511     cmd = 'radcompare ref/gensurf.rad gensurf.rad'
512     puts("command: #{cmd}")
513     system(cmd)
514    
515     rcpf
516     end
517     #rm -f gensurf.rad
518     end
519    
520    
521     ### END test/gen ###
522    
523    
524     ### test/cal ###
525    
526     def test_cnt
527     gen_cnt_txt if !File.exist?('../test/cal/cnt.txt')
528     Dir.chdir('../test/cal') do
529     cmd = 'radcompare ref/cnt.txt cnt.txt'
530     puts("command: #{cmd}")
531     system(cmd)
532    
533     rcpf
534     end
535     end
536    
537     def gen_cnt_txt
538     Dir.chdir('../test/cal') do
539     cmd = 'cnt 5 3 2 > cnt.txt'
540     puts("command: #{cmd}")
541     system(cmd)
542     end
543     end
544    
545     def gen_rcalc_txt
546     Dir.chdir('../test/cal') do
547     cmd = "rcalc -o 'Test $${v1} $$(s1) $${v2}' -e 'v1=$$1*$$2;v2=($$2-$$1)*exp($$3)' -s s1=HEY cnt.txt > rcalc.txt"
548     puts("command: #{cmd}")
549     system(cmd)
550     end
551     end
552    
553     def test_rcalc
554     gen_rcalc_txt if !File.exist?('../test/cal/rcalc.txt')
555     Dir.chdir('../test/cal') do
556     cmd = 'radcompare ref/rcalc.txt rcalc.txt'
557     puts("command: #{cmd}")
558     system(cmd)
559    
560     rcpf
561     end
562     end
563    
564     def gen_total_txt
565     gen_cnt_txt if !File.exist?('../test/cal/cnt.txt')
566     Dir.chdir('../test/cal') do
567     build = [
568     'total cnt.txt > total.txt',
569     'total -l cnt.txt >> total.txt',
570     'total -u cnt.txt >> total.txt',
571     'total -m cnt.txt >> total.txt',
572     'total -s2.5 cnt.txt >> total.txt',
573     'total -3 -r cnt.txt >> total.txt'
574     ]
575     build.each do |cmd|
576     system(cmd)
577     end
578     end
579     end
580    
581     def test_total
582     gen_total_txt if !File.exist?('../test/cal/total.txt')
583     Dir.chdir('../test/cal') do
584     cmd = 'radcompare ref/total.txt total.txt'
585     puts("command: #{cmd}")
586     system(cmd)
587    
588     rcpf
589     end
590     end
591    
592     def gen_histo_txt
593     gen_total_txt if !File.exist?('../test/cal/total.txt')
594     Dir.chdir('../test/cal') do
595     cmd = 'histo 0 60 5 < total.txt > histo.txt'
596     puts("command: #{cmd}")
597     system(cmd)
598    
599     end
600     end
601    
602     def test_histo
603     gen_histo_txt if !File.exist?('../test/cal/histo.txt')
604     Dir.chdir('../test/cal') do
605     cmd = 'radcompare ref/histo.txt histo.txt'
606     puts("command: #{cmd}")
607     system(cmd)
608    
609     rcpf
610     end
611     end
612    
613     def gen_rlam_txt
614     gen_total_txt if !File.exist?('../test/cal/total.txt')
615     gen_cnt_txt if !File.exist?('../test/cal/cnt.txt')
616     gen_histo_txt if !File.exist?('../test/cal/histo.txt')
617    
618     Dir.chdir('../test/cal') do
619     cmd = 'rlam -in 5 total.txt cnt.txt histo.txt > rlam.txt'
620     puts("command: #{cmd}")
621     system(cmd)
622    
623     end
624     end
625    
626     def test_rlam
627     gen_rlam_txt if !File.exist?('../test/cal/rlam.txt')
628     Dir.chdir('../test/cal') do
629     cmd = 'radcompare ref/rlam.txt rlam.txt'
630     puts("command: #{cmd}")
631     system(cmd)
632    
633     rcpf
634     end
635     end
636    
637    
638     ### END test/cal ###
639    
640     ### END test methods ###
641    
642 greg 1.2
643 greg 1.1 # call the test already
644    
645     if test_in == "all"
646     all_tests.each do |test_in|
647     test_total += 1
648     puts "running test: #{test_in}"
649     method(test_in).call
650     puts ''
651     end
652     else
653     test_total += 1
654     puts "running test: #{test_in}"
655     method(test_in).call
656     puts ''
657     end
658    
659     puts "### Total tests: #{test_total} (Passed: #{@test_pass} Failed: #{@test_fail}) ###"
660