From: <ky...@us...> - 2007-03-08 05:36:58
|
Revision: 339 http://svn.sourceforge.net/crackerjack/?rev=339&view=rev Author: kyagi Date: 2007-03-07 21:36:54 -0800 (Wed, 07 Mar 2007) Log Message: ----------- modify Modified Paths: -------------- trunk/crackerjack/lib/CompareProgram.rb trunk/crackerjack/lib/Framework.rb trunk/crackerjack/make_report.rb Modified: trunk/crackerjack/lib/CompareProgram.rb =================================================================== --- trunk/crackerjack/lib/CompareProgram.rb 2007-03-07 05:49:41 UTC (rev 338) +++ trunk/crackerjack/lib/CompareProgram.rb 2007-03-08 05:36:54 UTC (rev 339) @@ -28,6 +28,11 @@ @log_stdout = [@dir_result, @kernel_version, id, @syscallname, "cout.log"].join('/') @log_stderr = [@dir_result, @kernel_version, id, @syscallname, "cerr.log"].join('/') @log_status = [@dir_result, @kernel_version, id, @syscallname, "cstatus.log"].join('/') + + cur_kerv = log2kerv(@arguments[0]) + @log_stdout = [@dir_result, cur_kerv, id, @syscallname, "cout.log"].join('/') + @log_stderr = [@dir_result, cur_kerv, id, @syscallname, "cerr.log"].join('/') + @log_status = [@dir_result, cur_kerv, id, @syscallname, "cstatus.log"].join('/') @is_ok = nil @is_def = nil Modified: trunk/crackerjack/lib/Framework.rb =================================================================== --- trunk/crackerjack/lib/Framework.rb 2007-03-07 05:49:41 UTC (rev 338) +++ trunk/crackerjack/lib/Framework.rb 2007-03-08 05:36:54 UTC (rev 339) @@ -9,6 +9,7 @@ require 'find' require 'Message' require 'Conv' +require 'fileutils' module Framework include Message @@ -273,8 +274,9 @@ FileUtils.mkdir_p(File.dirname(result_expected)) end - File.symlink(result_current, result_expected) - + #File.symlink(result_current, result_expected) + FileUtils.cp(result_current, result_expected) + syscallname = result_current.slice(%r!\d{14}/(.*)/tout.log!,1) id = result_current.slice(%r!.*(\d{14}).*!,1) printf("%-10s %-30s %-15s\n", "E", syscallname, id) Modified: trunk/crackerjack/make_report.rb =================================================================== --- trunk/crackerjack/make_report.rb 2007-03-07 05:49:41 UTC (rev 338) +++ trunk/crackerjack/make_report.rb 2007-03-08 05:36:54 UTC (rev 339) @@ -2,67 +2,9 @@ require 'find' -dir_result = File.join(Dir.pwd, "results") -dir_expected = File.join(Dir.pwd, "expected") - -dir_result_kerv_list = Dir.entries(dir_result).delete_if { |x| x =~ /^\./} -dir_expected_kerv_list = Dir.entries(dir_expected).delete_if { |x| x =~ /^\./} - -puts dir_result_kerv_list -puts dir_expected_kerv_list - -hr = Hash.new() -dir_result_kerv_list.sort.each do |d| - hr[d] = Array.new() - hr[d] = Dir.entries(File.join(dir_result,d)).delete_if {|x| x =~ /^\./ } -end - -hr.each do |kerv, id_list| - print kerv, " " - id_list.each do |id| - print id, " " - end - print "\n" -end - -he = Hash.new() -dir_expected_kerv_list.sort.each do |d| - he[d] = Array.new() - he[d] = Dir.entries(File.join(dir_expected,d)).delete_if {|x| x =~ /^\./ } -end - -he.each do |kerv, id_list| - print kerv, " " - id_list.each do |id| - print id, " " - end - print "\n" -end - -h_result = Hash.new() -hr.each do |kerv, id_list| - latest_id = id_list[-1] - print kerv, latest_id, "\n" - h_result[kerv] = latest_id -end - -h_expected = Hash.new() -he.each do |kerv, id_list| - latest_id = id_list[-1] - print kerv, latest_id, "\n" - h_expected[kerv] = latest_id -end - -h_result.each do |r_kerv, r_id| - h_expected.each do |e_kerv, e_id| - #unless (r_kerv == e_kerv) - cl = "./crackerjack -c #{r_kerv},#{r_id},#{e_kerv},#{e_id}" - puts cl - system(cl) - #end - end -end - +###################################################################### +# sub routine +###################################################################### def judge(log) File.open(log) do |f| line = f.gets.chomp @@ -89,8 +31,77 @@ return File.dirname(File.expand_path(path)).sub(%r!.*\d{14}/(.*)!, '\1') end +###################################################################### +# Data structure image +###################################################################### -######################################### +# +# results --- 2.4.10 --- 200703... +# | |- 200704... +# | `- 200705... +# |- 2.6.15 --- 200703.. +# | |- 200704... +# | `- 200705... +# `- 2.8.10 --- 200703.. +# |- 200704... +# `- 200705... +# expected --- 2.4.10 --- 200703... +# | |- 200704... +# | `- 200705... +# |- 2.6.15 --- 200703.. +# | |- 200704... +# | `- 200705... +# `- 2.8.10 --- 200703.. +# |- 200704... +# `- 200705... +# +# HASH KEY: String : kernerl version +# HASH VALUE: Array : id(date) +# hr[2.4.10] = [200703..., 200704..., 200705...] +# hr[2.6.15] = [200703..., 200704..., 200705...] +# hr[2.8.10] = [200703..., 200704..., 200705...] +# he[2.4.10] = [200703..., 200704..., 200705...] +# he[2.6.15] = [200703..., 200704..., 200705...] +# he[2.8.10] = [200703..., 200704..., 200705...] +# + +###################################################################### +# main +###################################################################### + +dir_result = File.join(Dir.pwd, "results") +dir_expected = File.join(Dir.pwd, "expected") + +dir_result_kerv_list = Dir.entries(dir_result).delete_if { |x| x =~ /^\./} +dir_expected_kerv_list = Dir.entries(dir_expected).delete_if { |x| x =~ /^\./} + +## make hash +hr = Hash.new() +dir_result_kerv_list.sort.each do |d| + hr[d] = Array.new() + hr[d] = Dir.entries(File.join(dir_result,d)).delete_if {|x| x =~ /^\./ } + hr[d].sort! +end + +he = Hash.new() +dir_expected_kerv_list.sort.each do |d| + he[d] = Array.new() + he[d] = Dir.entries(File.join(dir_expected,d)).delete_if {|x| x =~ /^\./ } + he[d].sort! +end + +## execute crackerjack +hr.each do |r_kerv, r_id| + he.each do |e_kerv, e_id| + #unless (r_kerv == e_kerv) + cl = "./crackerjack -c #{r_kerv},#{r_id[-1]},#{e_kerv},#{e_id[-1]}" + puts cl + system(cl) + #end + end +end + +## generate top html STDOUT.reopen("report.html") print <<EOF @@ -100,35 +111,34 @@ <table border="1" cellpadding="5" cellspacing="0"> EOF -print "<tr><td>---</td>" -h_result.each do |r_kerv, r_id| - print "<td>", r_kerv, "</td>" +print "<tr><td align=\"center\">---</td>" +he.each do |e_kerv, e_id| + print "<td align=\"center\">", "(E)#{e_kerv},#{e_id[-1]}", "</td>" end print "</tr>", "\n" - -h_html = Hash.new() -h_result.each do |r_kerv, r_id| - print "<tr><td>#{r_kerv}</td>" - h_expected.each do |e_kerv, e_id| - dir = File.join(Dir.pwd, "results", r_kerv, r_id) - #puts dir - flag = "OK" +hr.each do |r_kerv, r_id| + print "<tr><td align=\"center\">(R)#{r_kerv}, #{r_id[-1]}</td>" + flag = "OK" + he.each do |e_kerv, e_id| + dir = File.join(Dir.pwd, "results", r_kerv, r_id[-1]) Find.find(dir) do |f| - if (File.basename(f) =~ /cout.log/) - if (File.basename(f).split(".")[-1] == e_id) - #puts f - unless(judge(f)) - flag = "NG" - end + if (File.basename(f) =~ /^cout\.log\.#{e_kerv}\.#{e_id[-1]}/) + if (judge(f) == false) + flag = "NG" end end end if (r_kerv == e_kerv) - #print "<td>---</td>" - print "<td>#{flag}</td>" + print "<td align=\"center\">---</td>" + #print "<td>#{flag}</td>" else - print "<td>#{flag}</td>" + filename= [r_kerv, r_id[-1], e_kerv, e_id[-1]].join("-") + if (flag == "OK") + print "<td align=\"center\"><a href=\"#{filename}.html\">#{flag}</a></td>" + else + print "<td align=\"center\" style=\"background:#ff0000\"><a href=\"#{filename}.html\">#{flag}</a></td>" + end end end print "</tr>\n" @@ -140,14 +150,53 @@ </html> EOF +## generate sub html +hr.each do |r_kerv, r_id| + he.each do |e_kerv, e_id| + if (r_kerv == e_kerv) + next + end + filename= [r_kerv, r_id[-1], e_kerv, e_id[-1]].join("-") + STDOUT.reopen("#{filename}.html") + print "<html><head><title>#{filename}{report</title></head><body>" + print "<table border=\"1\" cellpadding=\"5\" cellspacing=\"0\">" + print "<tr><td>System Call</td>" + print "<td>Compatibility</td>" + print "<td>Expected</td>" + print "<td>Result</td>" + print "<td>Compare</td>" + print "<td>Comare Program</td></tr>" + + dir = File.join(Dir.pwd, "results", r_kerv, r_id[-1]) + Find.find(dir) do |f| + if (File.basename(f) =~ /^cout\.log\.#{e_kerv}\.#{e_id[-1]}/) + print "<tr>" + syscallname = log2syscallname(f) + print "<td>#{syscallname}</td>" + if (judge(f) == true) + print "<td>compatible</td>" + else + print "<td style=\"background:#ff0000\">regeression</td>" + end + link_exp = File.join(Dir.pwd, "expected",e_kerv, e_id[-1], log2syscallname(f), "tout.log") + print "<td><a href=\"#{link_exp}\">link</a></td>" + link_result = f.sub(%r!cout.log.*!, 'tout.log') + print "<td><a href=\"#{link_result}\">link</a></td>" + link_compare = f + print "<td><a href=\"#{link_compare}\">link</a></td>" + label_cp = "User Defined" + link_cp = File.join(Dir.pwd, "testcases", syscallname, "compare") + unless (File.exists?(link_cp)) + label_cp = "Original" + link_cp = File.join(Dir.pwd, "bin", "default-compare") + end + print "<td><a href=\"#{link_cp}\">#{label_cp}</a></td></tr>" + end + end + print "</table></body></html>" + end - - - - - - - +end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |