From: <ky...@us...> - 2006-11-30 10:57:07
|
Revision: 21 http://svn.sourceforge.net/crackerjack/?rev=21&view=rev Author: kyagi Date: 2006-11-30 02:57:02 -0800 (Thu, 30 Nov 2006) Log Message: ----------- delete the junk file 'trunk/crackerjack/frontend.sh.flight' delete the junk directory 'trunk/crackerjack/RCS/' mkdir 'trunk/crackerjack/testcases' move testprogram directory 'trunk/crackerjack/testcases' Added Paths: ----------- trunk/crackerjack/testcases/ trunk/crackerjack/testcases/nanosleep/ trunk/crackerjack/testcases/syscall_A/ trunk/crackerjack/testcases/syscall_B/ Removed Paths: ------------- trunk/crackerjack/RCS/ trunk/crackerjack/frontend.sh.flight trunk/crackerjack/nanosleep/ trunk/crackerjack/syscall_A/ trunk/crackerjack/syscall_B/ Deleted: trunk/crackerjack/frontend.sh.flight =================================================================== --- trunk/crackerjack/frontend.sh.flight 2006-11-30 10:39:44 UTC (rev 20) +++ trunk/crackerjack/frontend.sh.flight 2006-11-30 10:57:02 UTC (rev 21) @@ -1,47 +0,0 @@ -#!/bin/sh -# -# frontend - This script run the test program, show the menu, -# and collect/save log files. - -# $Id: frontend.sh,v 1.2 2006/11/29 06:45:53 root Exp root $ - -# Changelog: -# -# 2006.11.29 Kazuo YAGI <ky...@ze...> -# - first version, make from scratch. - -###################################################################### -# main -###################################################################### -. functions - -get_kernel_version cur -get_kernel_version pre -#debugecho KERNEL_VERSION_CUR -#debugecho KERNEL_VERSION_PRE - -get_menulist `pwd` -get_order -confirm -#debugecho ROOTDIR -#debugecho MENULIST -#debugecho ORDER - -get_logdir cur -get_logdir pre -#debugecho LOGDIR_CUR -#debugecho LOGDIR_PRE - -make_logdir -get_logfile -#debugecho LOGFILE_CUR -#debugecho LOGFILE_CUR_ERR -#debugecho LOGFILE_PRE - -exe_order - -compare -#debugecho COMPARE -#debugecho COMPARE_LOGDIR -#debugecho COMPARE_LOGFILE -#debugecho COMPARE_STATUSFILE Copied: trunk/crackerjack/testcases/nanosleep (from rev 20, trunk/crackerjack/nanosleep) Copied: trunk/crackerjack/testcases/syscall_A (from rev 20, trunk/crackerjack/syscall_A) Copied: trunk/crackerjack/testcases/syscall_B (from rev 20, trunk/crackerjack/syscall_B) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ky...@us...> - 2006-11-30 11:53:45
|
Revision: 24 http://svn.sourceforge.net/crackerjack/?rev=24&view=rev Author: kyagi Date: 2006-11-30 03:53:43 -0800 (Thu, 30 Nov 2006) Log Message: ----------- set directory layout correctly Modified Paths: -------------- trunk/crackerjack/testcases/syscall_A/test Added Paths: ----------- trunk/crackerjack/results/2.6.17/testcases/ trunk/crackerjack/results/2.6.17/testcases/nanosleep/ trunk/crackerjack/results/2.6.17/testcases/syscall_A/ trunk/crackerjack/results/2.6.17/testcases/syscall_A/result.log Removed Paths: ------------- trunk/crackerjack/results/2.6.17/nanosleep/ Copied: trunk/crackerjack/results/2.6.17/testcases/nanosleep (from rev 23, trunk/crackerjack/results/2.6.17/nanosleep) Added: trunk/crackerjack/results/2.6.17/testcases/syscall_A/result.log =================================================================== --- trunk/crackerjack/results/2.6.17/testcases/syscall_A/result.log (rev 0) +++ trunk/crackerjack/results/2.6.17/testcases/syscall_A/result.log 2006-11-30 11:53:43 UTC (rev 24) @@ -0,0 +1,10 @@ +test 1 +test 2 +test 3 +test 4 +test 5 +test 6 +test 7 +test 8 +test 9 +test 10 Modified: trunk/crackerjack/testcases/syscall_A/test =================================================================== --- trunk/crackerjack/testcases/syscall_A/test 2006-11-30 11:33:43 UTC (rev 23) +++ trunk/crackerjack/testcases/syscall_A/test 2006-11-30 11:53:43 UTC (rev 24) @@ -0,0 +1,3 @@ +#!/bin/sh + +for i in `seq 10 20`; do echo "test" $i; done This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ky...@us...> - 2007-01-17 08:20:01
|
Revision: 104 http://svn.sourceforge.net/crackerjack/?rev=104&view=rev Author: kyagi Date: 2007-01-17 00:19:58 -0800 (Wed, 17 Jan 2007) Log Message: ----------- rejuvenation of framework script files Added Paths: ----------- trunk/crackerjack/crackerjack trunk/crackerjack/lib/CjkProgram.rb trunk/crackerjack/lib/CompareProgram.rb trunk/crackerjack/lib/Errmsg.rb trunk/crackerjack/lib/Framework.rb trunk/crackerjack/lib/FrameworkOption.rb trunk/crackerjack/lib/Program.rb trunk/crackerjack/lib/TestProgram.rb trunk/crackerjack/lib/functions.rb Removed Paths: ------------- trunk/crackerjack/bin/CompareProgram.rb trunk/crackerjack/bin/InvokeOption.rb trunk/crackerjack/bin/Program.rb trunk/crackerjack/bin/TestProgram.rb trunk/crackerjack/bin/crackerjack trunk/crackerjack/bin/functions.rb trunk/crackerjack/include/ Deleted: trunk/crackerjack/bin/CompareProgram.rb =================================================================== --- trunk/crackerjack/bin/CompareProgram.rb 2007-01-16 13:09:31 UTC (rev 103) +++ trunk/crackerjack/bin/CompareProgram.rb 2007-01-17 08:19:58 UTC (rev 104) @@ -1,15 +0,0 @@ -#!/usr/bin/env ruby - -class CompareProgram < Program - attr_accessor:log_stdout - attr_accessor:log_stderr - attr_accessor:log_status - - def initialize(filename, *arguments) - super - @log_stdout = "cout.log" - @log_stderr = "cerr.log" - @log_stdout = "cstatus" - end - -end Deleted: trunk/crackerjack/bin/InvokeOption.rb =================================================================== --- trunk/crackerjack/bin/InvokeOption.rb 2007-01-16 13:09:31 UTC (rev 103) +++ trunk/crackerjack/bin/InvokeOption.rb 2007-01-17 08:19:58 UTC (rev 104) @@ -1,30 +0,0 @@ -#!/usr/bin/env ruby - -require 'optparse' -require 'ostruct' - -class InvokeOption - def self.parse(args) - version = "Crackerjack 0.1.1 (2007/01/15)" - options = OpenStruct.new - opts = OptionParser.new do |opts| - - opts.on("-f STR", "--file STR", String) do |val| - puts val - options.config = val - end - - opts.on("-b STR", "--btrax STR", String) do |val| - options.btrax = val - end - - opts.on("-v", "--version", String) do |val| - puts version - exit 0 - end - - end - opts.parse!(args) - options - end # self.parse(args) -end # class Deleted: trunk/crackerjack/bin/Program.rb =================================================================== --- trunk/crackerjack/bin/Program.rb 2007-01-16 13:09:31 UTC (rev 103) +++ trunk/crackerjack/bin/Program.rb 2007-01-17 08:19:58 UTC (rev 104) @@ -1,19 +0,0 @@ -#!/usr/bin/env ruby - -class Program - attr_accessor:rootdir - attr_accessor:filename - attr_accessor:arguments - attr_accessor:commandline - - def initialize(filename, *arguments) - @rootdir = Dir.pwd - @filename = filename - @arguments = arguments.join(" ") - @commandline = [filename, arguments].flatten.join(" ") - end - - def execute - system(commandline) - end -end Deleted: trunk/crackerjack/bin/TestProgram.rb =================================================================== --- trunk/crackerjack/bin/TestProgram.rb 2007-01-16 13:09:31 UTC (rev 103) +++ trunk/crackerjack/bin/TestProgram.rb 2007-01-17 08:19:58 UTC (rev 104) @@ -1,49 +0,0 @@ -#!/usr/bin/env ruby - -require 'fileutils' - -class TestProgram < Program - attr_accessor:kv_now - attr_accessor:kv_expected - attr_accessor:log_stdout - attr_accessor:log_stderr - attr_accessor:log_status - attr_accessor:cp - - def initialize(filename, *arguments) - super - @kv_now = `uname -r`.chomp! - @log_stdout = "tout.log" - @log_stderr = "terr.log" - @log_stdout = "tstatus" - end - - def setCompareProgram(filename, *arguments) - cp_filename = filename.sub('test','compare') - - if ! File.exists?(cp_filename) then - # If there is no compare program, using default shell-script - cp_filename = [@rootdir, "bin", "default-compare"].join('/') - end - - @cp = CompareProgram.new(cp_filename, *arguments) - end - - def execute - log = open(@log_stdout, "w") - log.sync=true - io = IO.popen(@commandline) - while text = io.gets do - log.puts(text) - end - end - - def makeResultDir - str1 = Time.now.strftime("%Y%m%d%H%M%S") - str2 = File.basename(File.dirname(@filename)) - path = [ @rootdir, "results", @kv_now, str1, str2].join("/") - FileUtils.mkdir_p(path) - end - -end - Deleted: trunk/crackerjack/bin/crackerjack =================================================================== --- trunk/crackerjack/bin/crackerjack 2007-01-16 13:09:31 UTC (rev 103) +++ trunk/crackerjack/bin/crackerjack 2007-01-17 08:19:58 UTC (rev 104) @@ -1,45 +0,0 @@ -#!/usr/bin/env ruby - -###################################################################### -# require -###################################################################### -require 'InvokeOption' -require 'Program' -require 'CompareProgram' -require 'TestProgram' -require 'functions' -require 'pp' - -###################################################################### -# main -###################################################################### -Dir.chdir("..") - -begin - options = InvokeOption.parse(ARGV) - - #if (! options.config) then - #tp_list = Crakerjack.getTestProgramListByFile() - #else - tp_list = Crackerjack.getTestProgramList() - #end - - #debug.s - tp_list.each do |tp| - print "tp = ", tp.filename, "\n" - print "cp = ", tp.cp.filename, "\n" - print "rootdir = ", tp.rootdir, "\n" - print "kv = ", tp.kv_now, "\n" - end - #debug.e - - #orderlist = get_orderlist(tplist) - #exe_orderlist(orderlist, tplist) - - #if options.btrax then - # exe_btrax() - #end - - #order = get_pre_kernel_version(tplist) - #exe_compare(order, tplist) -end Deleted: trunk/crackerjack/bin/functions.rb =================================================================== --- trunk/crackerjack/bin/functions.rb 2007-01-16 13:09:31 UTC (rev 103) +++ trunk/crackerjack/bin/functions.rb 2007-01-17 08:19:58 UTC (rev 104) @@ -1,136 +0,0 @@ -#!/usr/bin/env ruby - -require 'find' - -class Crackerjack - attr_accessor:version - - def self.getTestProgramList() - tp_list = Array.new() - Find.find(Dir.pwd) do |f| - # Serach test program by name 'test' - if File.basename(f) == "test" then - - # Create TestProgram instances and make list them - tp = TestProgram.new(f) - tp.setCompareProgram(f) - tp_list.push(tp) - end - end - tp_list - end - - def self.getTestProgramListByFile() - tplist = Array.new() - file = File.open(path) - begin - while line = file.gets do - if File.exists?(line) then - tplist.push(line) - end - end - ensure - file.close - end - return tplist - - - end - -end - -def get_order() - puts "Now, There are tests as follows." - puts "Please Choose test you want to execute." -end - - -def get_pre_kernel_version(tplist) - print "Which kernel version log do you want to compare?" - d = Dir.open(Dir.pwd+"/results") - kernel_version_list = Array.new() - d.each do |e| - kernel_version_list.push(e) - end - - kernel_version_list.each_with_index do |kv, idx| - print idx, ")", kv.sub(Dir.pwd, ''), "\n"; - end - - order = readline.chomp! - - tplist.each do |x| - #FIXME: - x.pre_kernel_version = "2.6.15" - #FIXME: - x.pre_result = "/home/kyagi/proj/rgt/svn/crackerjack/trunk/crackerjack/bin/a" - end - - return order - -end - -def exe_compare(order, tplist) - tplist.each_with_index do |tp, idx| - tp.execute_cp - end -end - -def get_orderlist(tplist) - puts "You can choose test program(s) as follows." - puts "Please select the number of test program(s) which you want to execute," - puts "and finish to select by typing 'q'" - - tplist.each_with_index do |tp, idx| - # FIXME: Dir.pwd - print idx, ")", tp.tppath.sub(Dir.pwd, ''), "\n"; - end - - orderlist = Array.new() - loop do - # FIXME: use catch/throw? - print "\nnumber or 'q' >" - answer = readline.chomp! - if (answer == 'q') then - break - end - - orderlist.push(answer) - - print "Now you selected test program(s) as follows." - orderlist.each do |elem| - print elem, " " - end - - end - return orderlist -end - -def exe_orderlist(orderlist, tplist) - orderlist.each do |num| - tplist.each_with_index do |tp, idx| - if (idx == num.to_i) - tp.mkresultdir - tp.execute_tp - tp.execute_tp_withlog - sleep 1 - end - end - end -end - -def read_config_file(path) - tplist = Array.new() - file = File.open(path) - begin - while line = file.gets do - if File.exists?(line) then - tplist.push(line) - end - end - ensure - file.close - end - return tplist -end - Added: trunk/crackerjack/crackerjack =================================================================== --- trunk/crackerjack/crackerjack (rev 0) +++ trunk/crackerjack/crackerjack 2007-01-17 08:19:58 UTC (rev 104) @@ -0,0 +1,43 @@ +#!/usr/bin/ruby -I./lib + +###################################################################### +# require & include +###################################################################### + +require 'FrameworkOption' +require 'Framework' +require 'Program' +require 'CjkProgram' +require 'TestProgram' +require 'CompareProgram' +require 'functions' +require 'pp' + +###################################################################### +# main +###################################################################### + +begin + options = FrameworkOption.parse(ARGV) + + if (options.config) then + config = options.config + tp_list = Framework.get_testprogram_list_by_file(config) + else + tp_list = Framework.get_testprogram_list() + config = Framework.create_config_interactively(tp_list) + tp_list = Framework.get_testprogram_list_by_file(config) + end + + Framework.exe_testprogram_list(tp_list) + + #orderlist = get_orderlist(tplist) + #exe_orderlist(orderlist, tplist) + + #if options.btrax then + # exe_btrax() + #end + + #order = get_pre_kernel_version(tplist) + #exe_compare(order, tplist) +end Property changes on: trunk/crackerjack/crackerjack ___________________________________________________________________ Name: svn:executable + * Added: trunk/crackerjack/lib/CjkProgram.rb =================================================================== --- trunk/crackerjack/lib/CjkProgram.rb (rev 0) +++ trunk/crackerjack/lib/CjkProgram.rb 2007-01-17 08:19:58 UTC (rev 104) @@ -0,0 +1,9 @@ +#!/usr/bin/env ruby + +class CjkProgram < Program + attr_accessor:kv_now + attr_accessor:kv_expected + attr_accessor:log_stdout + attr_accessor:log_stderr + attr_accessor:log_status +end Added: trunk/crackerjack/lib/CompareProgram.rb =================================================================== --- trunk/crackerjack/lib/CompareProgram.rb (rev 0) +++ trunk/crackerjack/lib/CompareProgram.rb 2007-01-17 08:19:58 UTC (rev 104) @@ -0,0 +1,23 @@ +#!/usr/bin/env ruby + +class CompareProgram < CjkProgram + + def initialize(filename, *arguments) + super + @log_stdout = "cout.log" + @log_stderr = "cerr.log" + @log_stdout = "cstatus" + end + + def setCompareProgram(filename, *arguments) + cp_filename = filename.sub('test','compare') + + if ! File.exists?(cp_filename) then + # If there is no compare program, using default shell-script + cp_filename = [@rootdir, "bin", "default-compare"].join('/') + end + + @cp = CompareProgram.new(cp_filename, *arguments) + end + +end Added: trunk/crackerjack/lib/Errmsg.rb =================================================================== --- trunk/crackerjack/lib/Errmsg.rb (rev 0) +++ trunk/crackerjack/lib/Errmsg.rb 2007-01-17 08:19:58 UTC (rev 104) @@ -0,0 +1,8 @@ +#!/usr/bin/env ruby + +module Errmsg + def errmsg(err) + STDERR.puts "ERROR: " + err.message + end + module_function:errmsg +end Added: trunk/crackerjack/lib/Framework.rb =================================================================== --- trunk/crackerjack/lib/Framework.rb (rev 0) +++ trunk/crackerjack/lib/Framework.rb 2007-01-17 08:19:58 UTC (rev 104) @@ -0,0 +1,136 @@ +#!/usr/bin/env ruby + +require 'find' +require 'Errmsg' + +include Errmsg +class Framework + + def self.get_testprogram_list() + tp_list = Array.new() + Find.find(Dir.pwd) do |f| + # Search testprogram by name 'test' and create TestProgram instance list + if File.basename(f) == "test" then + tp = TestProgram.new(f) + tp_list.push(tp) + end + end + tp_list + end + + def self.get_testprogram_list_by_file(path) + tp_list = Array.new() + begin + f = File.open(path, "r") + rescue Errno::ENOENT => err + errmsg err + exit 1 + end + + begin + while line = f.gets do + # convert relative path name to absolute path name + tp_path = File.expand_path(line.chomp!) + if File.exists?(tp_path) then + tp = TestProgram.new(tp_path) + tp_list.push(tp) + end + end + rescue Errno::ENOENT => err + errmsg err + ensure + f.close + end + + tp_list + end # def + + def self.create_config_interactively(tp_list) + puts "You can choose test program(s) as follows." + puts "Please select the number of test program(s) which you want to execute," + puts "and finish to select by typing 'q'" + + tp_list.each_with_index do |tp, idx| + # FIXME: Dir.pwd + print idx, ")", tp.filename.sub(Dir.pwd, ''), "\n"; + end + + order_list = Array.new() + loop do + # FIXME: use catch/throw? + print "\nnumber or 'q' >" + answer = readline.chomp! + if (answer == 'q') then + break + end + + order_list.push(answer) + + print "Now you selected test program(s) as follows." + order_list.each do |elem| + print elem, " " + end + end # loop + + path = Dir.pwd + "/.config" + f = File.open(path, "w") + f.sync=true + + order_list.each do |num| + tp_list.each_with_index do |tp, idx| + if (idx == num.to_i) + f.puts tp.filename + end + end + end + + path + end # def + + def self.exe_testprogram_list(tp_list) + tp_list.each do |tp| + print "tp = ", tp.filename, "\n" + print "rootdir = ", tp.rootdir, "\n" + print "kv = ", tp.kv_now, "\n" + tp.execute + end + end + +###################################################### + + + + + + def get_pre_kernel_version(tplist) + print "Which kernel version log do you want to compare?" + d = Dir.open(Dir.pwd+"/results") + kernel_version_list = Array.new() + d.each do |e| + kernel_version_list.push(e) + end + + kernel_version_list.each_with_index do |kv, idx| + print idx, ")", kv.sub(Dir.pwd, ''), "\n"; + end + + order = readline.chomp! + + tplist.each do |x| + #FIXME: + x.pre_kernel_version = "2.6.15" + #FIXME: + x.pre_result = "/home/kyagi/proj/rgt/svn/crackerjack/trunk/crackerjack/bin/a" + end + + return order + + end + + def exe_compare(order, tplist) + tplist.each_with_index do |tp, idx| + tp.execute_cp + end + end + +end # class Added: trunk/crackerjack/lib/FrameworkOption.rb =================================================================== --- trunk/crackerjack/lib/FrameworkOption.rb (rev 0) +++ trunk/crackerjack/lib/FrameworkOption.rb 2007-01-17 08:19:58 UTC (rev 104) @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby + +require 'optparse' +require 'ostruct' + +class FrameworkOption + Version = "Crackerjack 0.1.1 (2007/01/15)" + def self.parse(args) + options = OpenStruct.new + opts = OptionParser.new do |opts| + + opts.on("-f STR", "--file STR", String) do |val| + options.config = val + end + + opts.on("-b STR", "--btrax STR", String) do |val| + options.btrax = val + end + + opts.on("-v", "--version", String) do |val| + puts Version + exit 0 + end + + end + opts.parse!(args) + options + end # self.parse(args) +end # class Property changes on: trunk/crackerjack/lib/FrameworkOption.rb ___________________________________________________________________ Name: svn:executable + * Added: trunk/crackerjack/lib/Program.rb =================================================================== --- trunk/crackerjack/lib/Program.rb (rev 0) +++ trunk/crackerjack/lib/Program.rb 2007-01-17 08:19:58 UTC (rev 104) @@ -0,0 +1,19 @@ +#!/usr/bin/env ruby + +class Program + attr_accessor:rootdir + attr_accessor:filename + attr_accessor:arguments + attr_accessor:commandline + + def initialize(filename, *arguments) + @rootdir = Dir.pwd + @filename = filename + @arguments = arguments.join(" ") + @commandline = [filename, arguments].flatten.join(" ") + end + + def execute + system(commandline) + end +end Added: trunk/crackerjack/lib/TestProgram.rb =================================================================== --- trunk/crackerjack/lib/TestProgram.rb (rev 0) +++ trunk/crackerjack/lib/TestProgram.rb 2007-01-17 08:19:58 UTC (rev 104) @@ -0,0 +1,47 @@ +#!/usr/bin/env ruby + +require 'fileutils' +require 'open3' + +class TestProgram < CjkProgram + + def initialize(filename, *arguments) + super + @kv_now = `uname -r`.chomp! + @log_stdout = "tout.log" + @log_stderr = "terr.log" + @log_status = "tstatus" + end + +# def execute +# log = open(@log_stdout, "w") +# log.sync=true +# io = IO.popen(@commandline) +# while text = io.gets do +# log.puts(text) +# end +# end + + + # FIXME: Open3 class cannot get exit_status + def execute + Open3.popen3(commandline) do |stdin, stdout, stderr| + stdin.close + File.open(@log_stdout, "w") do |f| + f.puts stdout.read + end + File.open(@log_stderr, "w") do |f| + f.puts stderr.read + end + end + end + + def make_result_dir + str1 = Time.now.strftime("%Y%m%d%H%M%S") + str2 = File.basename(File.dirname(@filename)) + path = [ @rootdir, "results", @kv_now, str1, str2].join("/") + FileUtils.mkdir_p(path) + end + +end + Added: trunk/crackerjack/lib/functions.rb =================================================================== --- trunk/crackerjack/lib/functions.rb (rev 0) +++ trunk/crackerjack/lib/functions.rb 2007-01-17 08:19:58 UTC (rev 104) @@ -0,0 +1,99 @@ +#!/usr/bin/env ruby + +require 'find' + +def get_order() + puts "Now, There are tests as follows." + puts "Please Choose test you want to execute." +end + + +def get_pre_kernel_version(tplist) + print "Which kernel version log do you want to compare?" + d = Dir.open(Dir.pwd+"/results") + kernel_version_list = Array.new() + d.each do |e| + kernel_version_list.push(e) + end + + kernel_version_list.each_with_index do |kv, idx| + print idx, ")", kv.sub(Dir.pwd, ''), "\n"; + end + + order = readline.chomp! + + tplist.each do |x| + #FIXME: + x.pre_kernel_version = "2.6.15" + #FIXME: + x.pre_result = "/home/kyagi/proj/rgt/svn/crackerjack/trunk/crackerjack/bin/a" + end + + return order + +end + +def exe_compare(order, tplist) + tplist.each_with_index do |tp, idx| + tp.execute_cp + end +end + +def get_orderlist(tplist) + puts "You can choose test program(s) as follows." + puts "Please select the number of test program(s) which you want to execute," + puts "and finish to select by typing 'q'" + + tplist.each_with_index do |tp, idx| + # FIXME: Dir.pwd + print idx, ")", tp.tppath.sub(Dir.pwd, ''), "\n"; + end + + orderlist = Array.new() + loop do + # FIXME: use catch/throw? + print "\nnumber or 'q' >" + answer = readline.chomp! + if (answer == 'q') then + break + end + + orderlist.push(answer) + + print "Now you selected test program(s) as follows." + orderlist.each do |elem| + print elem, " " + end + + end + return orderlist +end + +def exe_orderlist(orderlist, tplist) + orderlist.each do |num| + tplist.each_with_index do |tp, idx| + if (idx == num.to_i) + tp.mkresultdir + tp.execute_tp + tp.execute_tp_withlog + sleep 1 + end + end + end +end + +def read_config_file(path) + tplist = Array.new() + file = File.open(path) + begin + while line = file.gets do + if File.exists?(line) then + tplist.push(line) + end + end + ensure + file.close + end + return tplist +end + Property changes on: trunk/crackerjack/lib/functions.rb ___________________________________________________________________ Name: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ky...@us...> - 2007-01-19 06:39:39
|
Revision: 120 http://svn.sourceforge.net/crackerjack/?rev=120&view=rev Author: kyagi Date: 2007-01-18 22:39:38 -0800 (Thu, 18 Jan 2007) Log Message: ----------- add man file Added Paths: ----------- trunk/crackerjack/man/ trunk/crackerjack/man/confirm.sh trunk/crackerjack/man/crackerjack.1 Added: trunk/crackerjack/man/confirm.sh =================================================================== --- trunk/crackerjack/man/confirm.sh (rev 0) +++ trunk/crackerjack/man/confirm.sh 2007-01-19 06:39:38 UTC (rev 120) @@ -0,0 +1,7 @@ +#!/bin/sh + +gzip crackerjack.1 +cp *.gz /usr/share/man/man1/ +man crackerjack +gunzip *.gz + Property changes on: trunk/crackerjack/man/confirm.sh ___________________________________________________________________ Name: svn:executable + * Added: trunk/crackerjack/man/crackerjack.1 =================================================================== --- trunk/crackerjack/man/crackerjack.1 (rev 0) +++ trunk/crackerjack/man/crackerjack.1 2007-01-19 06:39:38 UTC (rev 120) @@ -0,0 +1,69 @@ +.TH CRACKERJACK 1 "crackerjack - script for running kernel regression test" "January 19, 2007" "LINUX" +.SH NAME +\fBcrackerjack\fP +\- script for running kernel regression test +.SH SYNOPSIS +.br +\fBcrackerjack\fP +[\fB\--version\fP] +[\fB\-f\fP \fIconfig_file\fP] +[\fB\-l\fP \fP] +[\fB\-e\fP \fIexpected_kernel_version\fP] +[\fB\-b\fP] +.SH DESCRIPTION +crackerjack is a script for run kernel regression test. +.SH FEATURES +crackerjack's features are as follows: +.TP +.B "How to invoke" +crackerjack has 2 ways to run, one is interactive way, and another is non-interactive way. + +.br +.B "interactive way:" +.br +$./crackerjack + +.br +crackerjack save the order to file ".config", and you use this next time for +non-interactvie way with using '-f' option. + +.B "non-interactive way(just generate result):" +.br +$./crackejack -f config_file + +.B "non-interactive way(generate result and compare):" +.br +$./crackejack -f config_file -e expected_kernel_version + +.SH OPTIONS +crackerjack accepts following command-line options (switches). + +.TP +\fB\--version\fP +Prints the version of crackerjack framework. + +.TP +\fB\-f\fP \fIfile\fP +Specify config file. + +.TP +\fB\-b\fP \fIbtrax\fP +Specify btrax ON/OFF. + +.TP +\fB\-e\fP \fIexpcted_kernel_version\fP +Specify expected result under the 'results' directory. + +.TP +\fB\-l\fP +list the test programs to STDOUT. + +.SH ENVIRONMENT +.TP +.B TBD +.br +to be determined. + +.SH AUTHOR +.TP +crackerjack is designed and implemented by Kazuo Yagi <ky...@mi...>. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ky...@us...> - 2007-02-07 21:51:41
|
Revision: 251 http://svn.sourceforge.net/crackerjack/?rev=251&view=rev Author: kyagi Date: 2007-02-07 13:51:30 -0800 (Wed, 07 Feb 2007) Log Message: ----------- modify Modified Paths: -------------- trunk/crackerjack/README trunk/crackerjack/SPEC trunk/crackerjack/TODO Modified: trunk/crackerjack/README =================================================================== --- trunk/crackerjack/README 2007-02-07 21:30:42 UTC (rev 250) +++ trunk/crackerjack/README 2007-02-07 21:51:30 UTC (rev 251) @@ -190,7 +190,7 @@ crackerjack invoke non-interactive way with '-f' option. This output table is the same except Id is change. - # ./crackerjack -f .config + # ./crackerjack -f .order Action SystemCallName Id ------------------------------------------------------------ X examples/hello_precision_world 20070207213007 @@ -201,14 +201,14 @@ ///////////////////////////////////////////////////////////////////// * NOTICE * - crackerjack memorize your order and write it down to the config-file - '.config' in interactive-way. So if you want to execute the same - test programs one more time, you can use this config file. + crackerjack memorize your order and write it down to the.order-file + '.order' in interactive-way. So if you want to execute the same + test programs one more time, you can use this.order file. - If you want to create config-file by yourself, you can use '-l' option: - # ./crackerjack -l > myconfig - # ./crackerjack -l | sed -n '1,25p' > myconfig - # ./crackrjack -f myconfig + If you want to create.order-file by yourself, you can use '-l' option: + # ./crackerjack -l > m.order + # ./crackerjack -l | sed -n '1,25p' > m.order + # ./crackrjack -f m.order ///////////////////////////////////////////////////////////////////// @@ -234,14 +234,7 @@ 13. Thirdly, Compare the current result to expected result with '-c' option and '-f' option. (this thing is the equivalent of 9). - # ./crackerjack -f .config -c - Action SystemCallName Id - ------------------------------------------------------------ - X examples/hello_precision_world 20070207221534 - X examples/hello_world 20070207221534 - X syscall_A 20070207221534 - X syscall_C 20070207221534 - + # ./crackerjack -c .current Action SystemCallName CompareProgram Judge --------------------------------------------------------------------- C examples/hello_precision_world DEF compatible @@ -249,14 +242,23 @@ C syscall_A DEF compatible C syscall_C DEF regression occured => See log file: results/2.6.15-27-386/20070207221534/syscall_C/cerr.log + # - 14. - 15. - 16. - 17. - 18. + 14. Use more conveniently, you can write shell script as follows. + --------------------------------------------------------------------- + #!/bin/sh + + ./crackerjack -l | sed -n '1,25p' > myconfig1 + ./crackerjack -l | grep "write" >> myconfig2 + myconfigs="myconfig1 myconfig2" + for f in $myconfigs; do + ./crackerjack -f $f + ./crackerjack -e .current + ./crackerjack -c .current + done + --------------------------------------------------------------------- * Copying Modified: trunk/crackerjack/SPEC =================================================================== --- trunk/crackerjack/SPEC 2007-02-07 21:30:42 UTC (rev 250) +++ trunk/crackerjack/SPEC 2007-02-07 21:51:30 UTC (rev 251) @@ -51,12 +51,16 @@ same directory of the test program. If you don't prepare the compare program, Framwork use the bin/default-compare instead. - - The compare program should print "OK" if compare program judge OK + - The compare program should send "OK" to STDOUT if compare program judge OK on comparing the current result with the expected result. - - The compare program should print "NG" if compare program judge NG + - The compare program should send "NG" to STDOUT if compare program judge NG on comparing the current result with the expected result. + - The compare program should send any message to STDERR. + + - See bin/default-compare informative. + ------------------------------------------------------- Author: Kazuo Yagi <ky...@mi...> created at: Wed Feb 7 23:43:31 JST 2007 Modified: trunk/crackerjack/TODO =================================================================== --- trunk/crackerjack/TODO 2007-02-07 21:30:42 UTC (rev 250) +++ trunk/crackerjack/TODO 2007-02-07 21:51:30 UTC (rev 251) @@ -4,10 +4,10 @@ * Framework code is too ugly. It will be refined. -* Document will be refined. +* Documents will be refined. - README - TODO ------------------------------------------------------- Author: Kazuo Yagi <ky...@mi...> -created at: Wed Feb 8 00:06:05 JST 2007 +created at: Thu Feb 8 05:59:55 JST 2007 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ky...@us...> - 2007-02-13 05:07:01
|
Revision: 264 http://svn.sourceforge.net/crackerjack/?rev=264&view=rev Author: kyagi Date: 2007-02-12 21:06:58 -0800 (Mon, 12 Feb 2007) Log Message: ----------- $ rails crackerjack Added Paths: ----------- trunk/crackerjack/rails/ trunk/crackerjack/rails/crackerjack/ trunk/crackerjack/rails/crackerjack/README trunk/crackerjack/rails/crackerjack/Rakefile trunk/crackerjack/rails/crackerjack/app/ trunk/crackerjack/rails/crackerjack/app/controllers/ trunk/crackerjack/rails/crackerjack/app/controllers/application.rb trunk/crackerjack/rails/crackerjack/app/helpers/ trunk/crackerjack/rails/crackerjack/app/helpers/application_helper.rb trunk/crackerjack/rails/crackerjack/app/models/ trunk/crackerjack/rails/crackerjack/app/views/ trunk/crackerjack/rails/crackerjack/app/views/layouts/ trunk/crackerjack/rails/crackerjack/components/ trunk/crackerjack/rails/crackerjack/config/ trunk/crackerjack/rails/crackerjack/config/boot.rb trunk/crackerjack/rails/crackerjack/config/database.yml trunk/crackerjack/rails/crackerjack/config/environment.rb trunk/crackerjack/rails/crackerjack/config/environments/ trunk/crackerjack/rails/crackerjack/config/environments/development.rb trunk/crackerjack/rails/crackerjack/config/environments/production.rb trunk/crackerjack/rails/crackerjack/config/environments/test.rb trunk/crackerjack/rails/crackerjack/config/routes.rb trunk/crackerjack/rails/crackerjack/db/ trunk/crackerjack/rails/crackerjack/doc/ trunk/crackerjack/rails/crackerjack/doc/README_FOR_APP trunk/crackerjack/rails/crackerjack/doc/api trunk/crackerjack/rails/crackerjack/lib/ trunk/crackerjack/rails/crackerjack/lib/tasks/ trunk/crackerjack/rails/crackerjack/log/ trunk/crackerjack/rails/crackerjack/log/development.log trunk/crackerjack/rails/crackerjack/log/production.log trunk/crackerjack/rails/crackerjack/log/server.log trunk/crackerjack/rails/crackerjack/log/test.log trunk/crackerjack/rails/crackerjack/public/ trunk/crackerjack/rails/crackerjack/public/.htaccess trunk/crackerjack/rails/crackerjack/public/404.html trunk/crackerjack/rails/crackerjack/public/500.html trunk/crackerjack/rails/crackerjack/public/dispatch.cgi trunk/crackerjack/rails/crackerjack/public/dispatch.fcgi trunk/crackerjack/rails/crackerjack/public/dispatch.rb trunk/crackerjack/rails/crackerjack/public/favicon.ico trunk/crackerjack/rails/crackerjack/public/images/ trunk/crackerjack/rails/crackerjack/public/images/rails.png trunk/crackerjack/rails/crackerjack/public/index.html trunk/crackerjack/rails/crackerjack/public/javascripts/ trunk/crackerjack/rails/crackerjack/public/javascripts/application.js trunk/crackerjack/rails/crackerjack/public/javascripts/controls.js trunk/crackerjack/rails/crackerjack/public/javascripts/dragdrop.js trunk/crackerjack/rails/crackerjack/public/javascripts/effects.js trunk/crackerjack/rails/crackerjack/public/javascripts/prototype.js trunk/crackerjack/rails/crackerjack/public/robots.txt trunk/crackerjack/rails/crackerjack/public/stylesheets/ trunk/crackerjack/rails/crackerjack/script/ trunk/crackerjack/rails/crackerjack/script/about trunk/crackerjack/rails/crackerjack/script/breakpointer trunk/crackerjack/rails/crackerjack/script/console trunk/crackerjack/rails/crackerjack/script/destroy trunk/crackerjack/rails/crackerjack/script/generate trunk/crackerjack/rails/crackerjack/script/performance/ trunk/crackerjack/rails/crackerjack/script/performance/benchmarker trunk/crackerjack/rails/crackerjack/script/performance/profiler trunk/crackerjack/rails/crackerjack/script/plugin trunk/crackerjack/rails/crackerjack/script/process/ trunk/crackerjack/rails/crackerjack/script/process/reaper trunk/crackerjack/rails/crackerjack/script/process/spawner trunk/crackerjack/rails/crackerjack/script/runner trunk/crackerjack/rails/crackerjack/script/server trunk/crackerjack/rails/crackerjack/test/ trunk/crackerjack/rails/crackerjack/test/fixtures/ trunk/crackerjack/rails/crackerjack/test/functional/ trunk/crackerjack/rails/crackerjack/test/integration/ trunk/crackerjack/rails/crackerjack/test/mocks/ trunk/crackerjack/rails/crackerjack/test/mocks/development/ trunk/crackerjack/rails/crackerjack/test/mocks/test/ trunk/crackerjack/rails/crackerjack/test/test_helper.rb trunk/crackerjack/rails/crackerjack/test/unit/ trunk/crackerjack/rails/crackerjack/tmp/ trunk/crackerjack/rails/crackerjack/tmp/cache/ trunk/crackerjack/rails/crackerjack/tmp/sessions/ trunk/crackerjack/rails/crackerjack/tmp/sessions/ruby_sess.60aa22de2b4751d2 trunk/crackerjack/rails/crackerjack/tmp/sockets/ trunk/crackerjack/rails/crackerjack/vendor/ trunk/crackerjack/rails/crackerjack/vendor/actionmailer trunk/crackerjack/rails/crackerjack/vendor/actionpack trunk/crackerjack/rails/crackerjack/vendor/actionwebservice trunk/crackerjack/rails/crackerjack/vendor/activerecord trunk/crackerjack/rails/crackerjack/vendor/activesupport trunk/crackerjack/rails/crackerjack/vendor/rails trunk/crackerjack/rails/crackerjack/vendor/railties Added: trunk/crackerjack/rails/crackerjack/README =================================================================== --- trunk/crackerjack/rails/crackerjack/README (rev 0) +++ trunk/crackerjack/rails/crackerjack/README 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,180 @@ +== Welcome to Rails + +Rails is a web-application and persistence framework that includes everything +needed to create database-backed web-applications according to the +Model-View-Control pattern of separation. This pattern splits the view (also +called the presentation) into "dumb" templates that are primarily responsible +for inserting pre-built data in between HTML tags. The model contains the +"smart" domain objects (such as Account, Product, Person, Post) that holds all +the business logic and knows how to persist themselves to a database. The +controller handles the incoming requests (such as Save New Account, Update +Product, Show Post) by manipulating the model and directing data to the view. + +In Rails, the model is handled by what's called an object-relational mapping +layer entitled Active Record. This layer allows you to present the data from +database rows as objects and embellish these data objects with business logic +methods. You can read more about Active Record in +link:files/vendor/rails/activerecord/README.html. + +The controller and view are handled by the Action Pack, which handles both +layers by its two parts: Action View and Action Controller. These two layers +are bundled in a single package due to their heavy interdependence. This is +unlike the relationship between the Active Record and Action Pack that is much +more separate. Each of these packages can be used independently outside of +Rails. You can read more about Action Pack in +link:files/vendor/rails/actionpack/README.html. + + +== Getting started + +1. Start the web server: <tt>ruby script/server</tt> (run with --help for options) +2. Go to http://localhost:3000/ and get "Welcome aboard: You’re riding the Rails!" +3. Follow the guidelines to start developing your application + + +== Web servers + +Rails uses the built-in web server in Ruby called WEBrick by default, so you don't +have to install or configure anything to play around. + +If you have lighttpd installed, though, it'll be used instead when running script/server. +It's considerably faster than WEBrick and suited for production use, but requires additional +installation and currently only works well on OS X/Unix (Windows users are encouraged +to start with WEBrick). We recommend version 1.4.11 and higher. You can download it from +http://www.lighttpd.net. + +If you want something that's halfway between WEBrick and lighttpd, we heartily recommend +Mongrel. It's a Ruby-based web server with a C-component (so it requires compilation) that +also works very well with Windows. See more at http://mongrel.rubyforge.org/. + +But of course its also possible to run Rails with the premiere open source web server Apache. +To get decent performance, though, you'll need to install FastCGI. For Apache 1.3, you want +to use mod_fastcgi. For Apache 2.0+, you want to use mod_fcgid. + +See http://wiki.rubyonrails.com/rails/pages/FastCGI for more information on FastCGI. + +== Example for Apache conf + + <VirtualHost *:80> + ServerName rails + DocumentRoot /path/application/public/ + ErrorLog /path/application/log/server.log + + <Directory /path/application/public/> + Options ExecCGI FollowSymLinks + AllowOverride all + Allow from all + Order allow,deny + </Directory> + </VirtualHost> + +NOTE: Be sure that CGIs can be executed in that directory as well. So ExecCGI +should be on and ".cgi" should respond. All requests from 127.0.0.1 go +through CGI, so no Apache restart is necessary for changes. All other requests +go through FCGI (or mod_ruby), which requires a restart to show changes. + + +== Debugging Rails + +Have "tail -f" commands running on both the server.log, production.log, and +test.log files. Rails will automatically display debugging and runtime +information to these files. Debugging info will also be shown in the browser +on requests from 127.0.0.1. + + +== Breakpoints + +Breakpoint support is available through the script/breakpointer client. This +means that you can break out of execution at any point in the code, investigate +and change the model, AND then resume execution! Example: + + class WeblogController < ActionController::Base + def index + @posts = Post.find_all + breakpoint "Breaking out from the list" + end + end + +So the controller will accept the action, run the first line, then present you +with a IRB prompt in the breakpointer window. Here you can do things like: + +Executing breakpoint "Breaking out from the list" at .../webrick_server.rb:16 in 'breakpoint' + + >> @posts.inspect + => "[#<Post:0x14a6be8 @attributes={\"title\"=>nil, \"body\"=>nil, \"id\"=>\"1\"}>, + #<Post:0x14a6620 @attributes={\"title\"=>\"Rails you know!\", \"body\"=>\"Only ten..\", \"id\"=>\"2\"}>]" + >> @posts.first.title = "hello from a breakpoint" + => "hello from a breakpoint" + +...and even better is that you can examine how your runtime objects actually work: + + >> f = @posts.first + => #<Post:0x13630c4 @attributes={"title"=>nil, "body"=>nil, "id"=>"1"}> + >> f. + Display all 152 possibilities? (y or n) + +Finally, when you're ready to resume execution, you press CTRL-D + + +== Console + +You can interact with the domain model by starting the console through script/console. +Here you'll have all parts of the application configured, just like it is when the +application is running. You can inspect domain models, change values, and save to the +database. Starting the script without arguments will launch it in the development environment. +Passing an argument will specify a different environment, like <tt>script/console production</tt>. + + +== Description of contents + +app + Holds all the code that's specific to this particular application. + +app/controllers + Holds controllers that should be named like weblog_controller.rb for + automated URL mapping. All controllers should descend from + ActionController::Base. + +app/models + Holds models that should be named like post.rb. + Most models will descend from ActiveRecord::Base. + +app/views + Holds the template files for the view that should be named like + weblog/index.rhtml for the WeblogController#index action. All views use eRuby + syntax. This directory can also be used to keep stylesheets, images, and so on + that can be symlinked to public. + +app/helpers + Holds view helpers that should be named like weblog_helper.rb. + +app/apis + Holds API classes for web services. + +config + Configuration files for the Rails environment, the routing map, the database, and other dependencies. + +components + Self-contained mini-applications that can bundle together controllers, models, and views. + +db + Contains the database schema in schema.rb. db/migrate contains all + the sequence of Migrations for your schema. + +lib + Application specific libraries. Basically, any kind of custom code that doesn't + belong under controllers, models, or helpers. This directory is in the load path. + +public + The directory available for the web server. Contains subdirectories for images, stylesheets, + and javascripts. Also contains the dispatchers and the default HTML files. + +script + Helper scripts for automation and generation. + +test + Unit and functional tests along with fixtures. + +vendor + External libraries that the application depends on. Also includes the plugins subdirectory. + This directory is in the load path. Added: trunk/crackerjack/rails/crackerjack/Rakefile =================================================================== --- trunk/crackerjack/rails/crackerjack/Rakefile (rev 0) +++ trunk/crackerjack/rails/crackerjack/Rakefile 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,10 @@ +# Add your own tasks in files placed in lib/tasks ending in .rake, +# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. + +require(File.join(File.dirname(__FILE__), 'config', 'boot')) + +require 'rake' +require 'rake/testtask' +require 'rake/rdoctask' + +require 'tasks/rails' Added: trunk/crackerjack/rails/crackerjack/app/controllers/application.rb =================================================================== --- trunk/crackerjack/rails/crackerjack/app/controllers/application.rb (rev 0) +++ trunk/crackerjack/rails/crackerjack/app/controllers/application.rb 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,4 @@ +# Filters added to this controller will be run for all controllers in the application. +# Likewise, all the methods added will be available for all controllers. +class ApplicationController < ActionController::Base +end \ No newline at end of file Added: trunk/crackerjack/rails/crackerjack/app/helpers/application_helper.rb =================================================================== --- trunk/crackerjack/rails/crackerjack/app/helpers/application_helper.rb (rev 0) +++ trunk/crackerjack/rails/crackerjack/app/helpers/application_helper.rb 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,3 @@ +# Methods added to this helper will be available to all templates in the application. +module ApplicationHelper +end Added: trunk/crackerjack/rails/crackerjack/config/boot.rb =================================================================== --- trunk/crackerjack/rails/crackerjack/config/boot.rb (rev 0) +++ trunk/crackerjack/rails/crackerjack/config/boot.rb 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,44 @@ +# Don't change this file. Configuration is done in config/environment.rb and config/environments/*.rb + +unless defined?(RAILS_ROOT) + root_path = File.join(File.dirname(__FILE__), '..') + + unless RUBY_PLATFORM =~ /mswin32/ + require 'pathname' + root_path = Pathname.new(root_path).cleanpath(true).to_s + end + + RAILS_ROOT = root_path +end + +unless defined?(Rails::Initializer) + if File.directory?("#{RAILS_ROOT}/vendor/rails") + require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer" + else + require 'rubygems' + + environment_without_comments = IO.readlines(File.dirname(__FILE__) + '/environment.rb').reject { |l| l =~ /^#/ }.join + environment_without_comments =~ /[^#]RAILS_GEM_VERSION = '([\d.]+)'/ + rails_gem_version = $1 + + if version = defined?(RAILS_GEM_VERSION) ? RAILS_GEM_VERSION : rails_gem_version + rails_gem = Gem.cache.search('rails', "=#{version}").first + + if rails_gem + require_gem "rails", "=#{version}" + require rails_gem.full_gem_path + '/lib/initializer' + else + STDERR.puts %(Cannot find gem for Rails =#{version}: + Install the missing gem with 'gem install -v=#{version} rails', or + change environment.rb to define RAILS_GEM_VERSION with your desired version. + ) + exit 1 + end + else + require_gem "rails" + require 'initializer' + end + end + + Rails::Initializer.run(:set_load_path) +end \ No newline at end of file Added: trunk/crackerjack/rails/crackerjack/config/database.yml =================================================================== --- trunk/crackerjack/rails/crackerjack/config/database.yml (rev 0) +++ trunk/crackerjack/rails/crackerjack/config/database.yml 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,35 @@ +# MySQL (default setup). Versions 4.1 and 5.0 are recommended. +# +# Install the MySQL driver: +# gem install mysql +# On MacOS X: +# gem install mysql -- --include=/usr/local/lib +# On Windows: +# There is no gem for Windows. Install mysql.so from RubyForApache. +# http://rubyforge.org/projects/rubyforapache +# +# And be sure to use new-style password hashing: +# http://dev.mysql.com/doc/refman/5.0/en/old-client.html +development: + adapter: mysql + database: crackerjack_development + username: root + password: + host: localhost + +# Warning: The database defined as 'test' will be erased and +# re-generated from your development database when you run 'rake'. +# Do not set this db to the same as development or production. +test: + adapter: mysql + database: crackerjack_test + username: root + password: + host: localhost + +production: + adapter: mysql + database: crackerjack_production + username: root + password: + host: localhost Added: trunk/crackerjack/rails/crackerjack/config/environment.rb =================================================================== --- trunk/crackerjack/rails/crackerjack/config/environment.rb (rev 0) +++ trunk/crackerjack/rails/crackerjack/config/environment.rb 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,53 @@ +# Be sure to restart your web server when you modify this file. + +# Uncomment below to force Rails into production mode when +# you don't control web/app server and can't set it the proper way +# ENV['RAILS_ENV'] ||= 'production' + +# Specifies gem version of Rails to use when vendor/rails is not present +RAILS_GEM_VERSION = '1.1.2' + +# Bootstrap the Rails environment, frameworks, and default configuration +require File.join(File.dirname(__FILE__), 'boot') + +Rails::Initializer.run do |config| + # Settings in config/environments/* take precedence those specified here + + # Skip frameworks you're not going to use + # config.frameworks -= [ :action_web_service, :action_mailer ] + + # Add additional load paths for your own custom dirs + # config.load_paths += %W( #{RAILS_ROOT}/extras ) + + # Force all environments to use the same logger level + # (by default production uses :info, the others :debug) + # config.log_level = :debug + + # Use the database for sessions instead of the file system + # (create the session table with 'rake db:sessions:create') + # config.action_controller.session_store = :active_record_store + + # Use SQL instead of Active Record's schema dumper when creating the test database. + # This is necessary if your schema can't be completely dumped by the schema dumper, + # like if you have constraints or database-specific column types + # config.active_record.schema_format = :sql + + # Activate observers that should always be running + # config.active_record.observers = :cacher, :garbage_collector + + # Make Active Record use UTC-base instead of local time + # config.active_record.default_timezone = :utc + + # See Rails::Configuration for more options +end + +# Add new inflection rules using the following format +# (all these examples are active by default): +# Inflector.inflections do |inflect| +# inflect.plural /^(ox)$/i, '\1en' +# inflect.singular /^(ox)en/i, '\1' +# inflect.irregular 'person', 'people' +# inflect.uncountable %w( fish sheep ) +# end + +# Include your application configuration below \ No newline at end of file Added: trunk/crackerjack/rails/crackerjack/config/environments/development.rb =================================================================== --- trunk/crackerjack/rails/crackerjack/config/environments/development.rb (rev 0) +++ trunk/crackerjack/rails/crackerjack/config/environments/development.rb 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,21 @@ +# Settings specified here will take precedence over those in config/environment.rb + +# In the development environment your application's code is reloaded on +# every request. This slows down response time but is perfect for development +# since you don't have to restart the webserver when you make code changes. +config.cache_classes = false + +# Log error messages when you accidentally call methods on nil. +config.whiny_nils = true + +# Enable the breakpoint server that script/breakpointer connects to +config.breakpoint_server = true + +# Show full error reports and disable caching +config.action_controller.consider_all_requests_local = true +config.action_controller.perform_caching = false +config.action_view.cache_template_extensions = false +config.action_view.debug_rjs = true + +# Don't care if the mailer can't send +config.action_mailer.raise_delivery_errors = false Added: trunk/crackerjack/rails/crackerjack/config/environments/production.rb =================================================================== --- trunk/crackerjack/rails/crackerjack/config/environments/production.rb (rev 0) +++ trunk/crackerjack/rails/crackerjack/config/environments/production.rb 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,18 @@ +# Settings specified here will take precedence over those in config/environment.rb + +# The production environment is meant for finished, "live" apps. +# Code is not reloaded between requests +config.cache_classes = true + +# Use a different logger for distributed setups +# config.logger = SyslogLogger.new + +# Full error reports are disabled and caching is turned on +config.action_controller.consider_all_requests_local = false +config.action_controller.perform_caching = true + +# Enable serving of images, stylesheets, and javascripts from an asset server +# config.action_controller.asset_host = "http://assets.example.com" + +# Disable delivery errors if you bad email addresses should just be ignored +# config.action_mailer.raise_delivery_errors = false Added: trunk/crackerjack/rails/crackerjack/config/environments/test.rb =================================================================== --- trunk/crackerjack/rails/crackerjack/config/environments/test.rb (rev 0) +++ trunk/crackerjack/rails/crackerjack/config/environments/test.rb 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,19 @@ +# Settings specified here will take precedence over those in config/environment.rb + +# The test environment is used exclusively to run your application's +# test suite. You never need to work with it otherwise. Remember that +# your test database is "scratch space" for the test suite and is wiped +# and recreated between test runs. Don't rely on the data there! +config.cache_classes = true + +# Log error messages when you accidentally call methods on nil. +config.whiny_nils = true + +# Show full error reports and disable caching +config.action_controller.consider_all_requests_local = true +config.action_controller.perform_caching = false + +# Tell ActionMailer not to deliver emails to the real world. +# The :test delivery method accumulates sent emails in the +# ActionMailer::Base.deliveries array. +config.action_mailer.delivery_method = :test \ No newline at end of file Added: trunk/crackerjack/rails/crackerjack/config/routes.rb =================================================================== --- trunk/crackerjack/rails/crackerjack/config/routes.rb (rev 0) +++ trunk/crackerjack/rails/crackerjack/config/routes.rb 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,22 @@ +ActionController::Routing::Routes.draw do |map| + # The priority is based upon order of creation: first created -> highest priority. + + # Sample of regular route: + # map.connect 'products/:id', :controller => 'catalog', :action => 'view' + # Keep in mind you can assign values other than :controller and :action + + # Sample of named route: + # map.purchase 'products/:id/purchase', :controller => 'catalog', :action => 'purchase' + # This route can be invoked with purchase_url(:id => product.id) + + # You can have the root of your site routed by hooking up '' + # -- just remember to delete public/index.html. + # map.connect '', :controller => "welcome" + + # Allow downloading Web Service WSDL as a file with an extension + # instead of a file named 'wsdl' + map.connect ':controller/service.wsdl', :action => 'wsdl' + + # Install the default route as the lowest priority. + map.connect ':controller/:action/:id' +end Added: trunk/crackerjack/rails/crackerjack/doc/README_FOR_APP =================================================================== --- trunk/crackerjack/rails/crackerjack/doc/README_FOR_APP (rev 0) +++ trunk/crackerjack/rails/crackerjack/doc/README_FOR_APP 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,2 @@ +Use this README file to introduce your application and point to useful places in the API for learning more. +Run "rake appdoc" to generate API documentation for your models and controllers. \ No newline at end of file Added: trunk/crackerjack/rails/crackerjack/doc/api =================================================================== --- trunk/crackerjack/rails/crackerjack/doc/api (rev 0) +++ trunk/crackerjack/rails/crackerjack/doc/api 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1 @@ +link /usr/share/doc/rails/html \ No newline at end of file Property changes on: trunk/crackerjack/rails/crackerjack/doc/api ___________________________________________________________________ Name: svn:special + * Added: trunk/crackerjack/rails/crackerjack/log/development.log =================================================================== --- trunk/crackerjack/rails/crackerjack/log/development.log (rev 0) +++ trunk/crackerjack/rails/crackerjack/log/development.log 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,58 @@ + + +Processing Base#index (for 127.0.0.1 at 2007-02-13 13:51:20) [GET] + Session ID: a42ffa95fe2d11c9cb5ea22a5c96f6f1 + Parameters: {} + + +ActionController::RoutingError (Recognition failed for "/rails/info/properties"): + .//vendor/rails/actionpack/lib/action_controller/routing.rb:522:in `recognition_failed' + .//vendor/rails/actionpack/lib/action_controller/routing.rb:512:in `recognize!' + .//vendor/rails/railties/lib/dispatcher.rb:38:in `dispatch' + .//vendor/rails/railties/lib/webrick_server.rb:115:in `handle_dispatch' + .//vendor/rails/railties/lib/webrick_server.rb:81:in `service' + /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service' + /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run' + /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread' + /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' + /usr/lib/ruby/1.8/webrick/server.rb:95:in `start' + /usr/lib/ruby/1.8/webrick/server.rb:92:in `start' + /usr/lib/ruby/1.8/webrick/server.rb:23:in `start' + /usr/lib/ruby/1.8/webrick/server.rb:82:in `start' + .//vendor/rails/railties/lib/webrick_server.rb:67:in `dispatch' + .//vendor/rails/railties/lib/commands/servers/webrick.rb:59 + .//vendor/rails/activesupport/lib/active_support/dependencies.rb:147:in `require' + .//vendor/rails/railties/lib/commands/server.rb:30 + script/server:3 + + +Rendering ./script/../config/../vendor/rails/actionpack/lib/action_controller/templates/rescues/layout.rhtml (404 Page Not Found) + + +Processing Base#index (for 127.0.0.1 at 2007-02-13 14:03:17) [GET] + Session ID: a42ffa95fe2d11c9cb5ea22a5c96f6f1 + Parameters: {} + + +ActionController::RoutingError (Recognition failed for "/rails/info/properties"): + .//vendor/rails/actionpack/lib/action_controller/routing.rb:522:in `recognition_failed' + .//vendor/rails/actionpack/lib/action_controller/routing.rb:512:in `recognize!' + .//vendor/rails/railties/lib/dispatcher.rb:38:in `dispatch' + .//vendor/rails/railties/lib/webrick_server.rb:115:in `handle_dispatch' + .//vendor/rails/railties/lib/webrick_server.rb:81:in `service' + /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service' + /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run' + /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread' + /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' + /usr/lib/ruby/1.8/webrick/server.rb:95:in `start' + /usr/lib/ruby/1.8/webrick/server.rb:92:in `start' + /usr/lib/ruby/1.8/webrick/server.rb:23:in `start' + /usr/lib/ruby/1.8/webrick/server.rb:82:in `start' + .//vendor/rails/railties/lib/webrick_server.rb:67:in `dispatch' + .//vendor/rails/railties/lib/commands/servers/webrick.rb:59 + .//vendor/rails/activesupport/lib/active_support/dependencies.rb:147:in `require' + .//vendor/rails/railties/lib/commands/server.rb:30 + script/server:3 + + +Rendering ./script/../config/../vendor/rails/actionpack/lib/action_controller/templates/rescues/layout.rhtml (404 Page Not Found) Added: trunk/crackerjack/rails/crackerjack/log/production.log =================================================================== Added: trunk/crackerjack/rails/crackerjack/log/server.log =================================================================== Added: trunk/crackerjack/rails/crackerjack/log/test.log =================================================================== Added: trunk/crackerjack/rails/crackerjack/public/.htaccess =================================================================== --- trunk/crackerjack/rails/crackerjack/public/.htaccess (rev 0) +++ trunk/crackerjack/rails/crackerjack/public/.htaccess 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,40 @@ +# General Apache options +AddHandler fastcgi-script .fcgi +AddHandler cgi-script .cgi +Options +FollowSymLinks +ExecCGI + +# If you don't want Rails to look in certain directories, +# use the following rewrite rules so that Apache won't rewrite certain requests +# +# Example: +# RewriteCond %{REQUEST_URI} ^/notrails.* +# RewriteRule .* - [L] + +# Redirect all requests not available on the filesystem to Rails +# By default the cgi dispatcher is used which is very slow +# +# For better performance replace the dispatcher with the fastcgi one +# +# Example: +# RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] +RewriteEngine On + +# If your Rails application is accessed via an Alias directive, +# then you MUST also set the RewriteBase in this htaccess file. +# +# Example: +# Alias /myrailsapp /path/to/myrailsapp/public +# RewriteBase /myrailsapp + +RewriteRule ^$ index.html [QSA] +RewriteRule ^([^.]+)$ $1.html [QSA] +RewriteCond %{REQUEST_FILENAME} !-f +RewriteRule ^(.*)$ dispatch.cgi [QSA,L] + +# In case Rails experiences terminal errors +# Instead of displaying this message you can supply a file here which will be rendered instead +# +# Example: +# ErrorDocument 500 /500.html + +ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly" \ No newline at end of file Added: trunk/crackerjack/rails/crackerjack/public/404.html =================================================================== --- trunk/crackerjack/rails/crackerjack/public/404.html (rev 0) +++ trunk/crackerjack/rails/crackerjack/public/404.html 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,8 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<body> + <h1>File not found</h1> + <p>Change this error message for pages not found in public/404.html</p> +</body> +</html> \ No newline at end of file Added: trunk/crackerjack/rails/crackerjack/public/500.html =================================================================== --- trunk/crackerjack/rails/crackerjack/public/500.html (rev 0) +++ trunk/crackerjack/rails/crackerjack/public/500.html 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,8 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<body> + <h1>Application error</h1> + <p>Change this error message for exceptions thrown outside of an action (like in Dispatcher setups or broken Ruby code) in public/500.html</p> +</body> +</html> \ No newline at end of file Added: trunk/crackerjack/rails/crackerjack/public/dispatch.cgi =================================================================== --- trunk/crackerjack/rails/crackerjack/public/dispatch.cgi (rev 0) +++ trunk/crackerjack/rails/crackerjack/public/dispatch.cgi 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,12 @@ +#!/usr/bin/ruby1.8 + +#!/usr/local/bin/ruby + +require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT) + +# If you're using RubyGems and mod_ruby, this require should be changed to an absolute path one, like: +# "/usr/local/lib/ruby/gems/1.8/gems/rails-0.8.0/lib/dispatcher" -- otherwise performance is severely impaired +require "dispatcher" + +ADDITIONAL_LOAD_PATHS.reverse.each { |dir| $:.unshift(dir) if File.directory?(dir) } if defined?(Apache::RubyRun) +Dispatcher.dispatch \ No newline at end of file Property changes on: trunk/crackerjack/rails/crackerjack/public/dispatch.cgi ___________________________________________________________________ Name: svn:executable + * Added: trunk/crackerjack/rails/crackerjack/public/dispatch.fcgi =================================================================== --- trunk/crackerjack/rails/crackerjack/public/dispatch.fcgi (rev 0) +++ trunk/crackerjack/rails/crackerjack/public/dispatch.fcgi 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,26 @@ +#!/usr/bin/ruby1.8 + +#!/usr/local/bin/ruby +# +# You may specify the path to the FastCGI crash log (a log of unhandled +# exceptions which forced the FastCGI instance to exit, great for debugging) +# and the number of requests to process before running garbage collection. +# +# By default, the FastCGI crash log is RAILS_ROOT/log/fastcgi.crash.log +# and the GC period is nil (turned off). A reasonable number of requests +# could range from 10-100 depending on the memory footprint of your app. +# +# Example: +# # Default log path, normal GC behavior. +# RailsFCGIHandler.process! +# +# # Default log path, 50 requests between GC. +# RailsFCGIHandler.process! nil, 50 +# +# # Custom log path, normal GC behavior. +# RailsFCGIHandler.process! '/var/log/myapp_fcgi_crash.log' +# +require File.dirname(__FILE__) + "/../config/environment" +require 'fcgi_handler' + +RailsFCGIHandler.process! Property changes on: trunk/crackerjack/rails/crackerjack/public/dispatch.fcgi ___________________________________________________________________ Name: svn:executable + * Added: trunk/crackerjack/rails/crackerjack/public/dispatch.rb =================================================================== --- trunk/crackerjack/rails/crackerjack/public/dispatch.rb (rev 0) +++ trunk/crackerjack/rails/crackerjack/public/dispatch.rb 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,12 @@ +#!/usr/bin/ruby1.8 + +#!/usr/local/bin/ruby + +require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT) + +# If you're using RubyGems and mod_ruby, this require should be changed to an absolute path one, like: +# "/usr/local/lib/ruby/gems/1.8/gems/rails-0.8.0/lib/dispatcher" -- otherwise performance is severely impaired +require "dispatcher" + +ADDITIONAL_LOAD_PATHS.reverse.each { |dir| $:.unshift(dir) if File.directory?(dir) } if defined?(Apache::RubyRun) +Dispatcher.dispatch \ No newline at end of file Property changes on: trunk/crackerjack/rails/crackerjack/public/dispatch.rb ___________________________________________________________________ Name: svn:executable + * Added: trunk/crackerjack/rails/crackerjack/public/favicon.ico =================================================================== Added: trunk/crackerjack/rails/crackerjack/public/images/rails.png =================================================================== (Binary files differ) Property changes on: trunk/crackerjack/rails/crackerjack/public/images/rails.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/crackerjack/rails/crackerjack/public/index.html =================================================================== --- trunk/crackerjack/rails/crackerjack/public/index.html (rev 0) +++ trunk/crackerjack/rails/crackerjack/public/index.html 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,277 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html> + <head> + <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> + <title>Ruby on Rails: Welcome aboard</title> + <style type="text/css" media="screen"> + body { + margin: 0; + margin-bottom: 25px; + padding: 0; + background-color: #f0f0f0; + font-family: "Lucida Grande", "Bitstream Vera Sans", "Verdana"; + font-size: 13px; + color: #333; + } + + h1 { + font-size: 28px; + color: #000; + } + + a {color: #03c} + a:hover { + background-color: #03c; + color: white; + text-decoration: none; + } + + + #page { + background-color: #f0f0f0; + width: 750px; + margin: 0; + margin-left: auto; + margin-right: auto; + } + + #content { + float: left; + background-color: white; + border: 3px solid #aaa; + border-top: none; + padding: 25px; + width: 500px; + } + + #sidebar { + float: right; + width: 175px; + } + + #footer { + clear: both; + } + + + #header, #about, #getting-started { + padding-left: 75px; + padding-right: 30px; + } + + + #header { + background-image: url("images/rails.png"); + background-repeat: no-repeat; + background-position: top left; + height: 64px; + } + #header h1, #header h2 {margin: 0} + #header h2 { + color: #888; + font-weight: normal; + font-size: 16px; + } + + + #about h3 { + margin: 0; + margin-bottom: 10px; + font-size: 14px; + } + + #about-content { + background-color: #ffd; + border: 1px solid #fc0; + margin-left: -11px; + } + #about-content table { + margin-top: 10px; + margin-bottom: 10px; + font-size: 11px; + border-collapse: collapse; + } + #about-content td { + padding: 10px; + padding-top: 3px; + padding-bottom: 3px; + } + #about-content td.name {color: #555} + #about-content td.value {color: #000} + + #about-content.failure { + background-color: #fcc; + border: 1px solid #f00; + } + #about-content.failure p { + margin: 0; + padding: 10px; + } + + + #getting-started { + border-top: 1px solid #ccc; + margin-top: 25px; + padding-top: 15px; + } + #getting-started h1 { + margin: 0; + font-size: 20px; + } + #getting-started h2 { + margin: 0; + font-size: 14px; + font-weight: normal; + color: #333; + margin-bottom: 25px; + } + #getting-started ol { + margin-left: 0; + padding-left: 0; + } + #getting-started li { + font-size: 18px; + color: #888; + margin-bottom: 25px; + } + #getting-started li h2 { + margin: 0; + font-weight: normal; + font-size: 18px; + color: #333; + } + #getting-started li p { + color: #555; + font-size: 13px; + } + + + #search { + margin: 0; + padding-top: 10px; + padding-bottom: 10px; + font-size: 11px; + } + #search input { + font-size: 11px; + margin: 2px; + } + #search-text {width: 170px} + + + #sidebar ul { + margin-left: 0; + padding-left: 0; + } + #sidebar ul h3 { + margin-top: 25px; + font-size: 16px; + padding-bottom: 10px; + border-bottom: 1px solid #ccc; + } + #sidebar li { + list-style-type: none; + } + #sidebar ul.links li { + margin-bottom: 5px; + } + + </style> + <script type="text/javascript" src="javascripts/prototype.js"></script> + <script type="text/javascript" src="javascripts/effects.js"></script> + <script type="text/javascript"> + function about() { + if (Element.empty('about-content')) { + new Ajax.Updater('about-content', 'rails/info/properties', { + method: 'get', + onFailure: function() {Element.classNames('about-content').add('failure')}, + onComplete: function() {new Effect.BlindDown('about-content', {duration: 0.25})} + }); + } else { + new Effect[Element.visible('about-content') ? + 'BlindUp' : 'BlindDown']('about-content', {duration: 0.25}); + } + } + + window.onload = function() { + $('search-text').value = ''; + $('search').onsubmit = function() { + $('search-text').value = 'site:rubyonrails.org ' + $F('search-text'); + } + } + </script> + </head> + <body> + <div id="page"> + <div id="sidebar"> + <ul id="sidebar-items"> + <li> + <form id="search" action="http://www.google.com/search" method="get"> + <input type="hidden" name="hl" value="en" /> + <input type="text" id="search-text" name="q" value="site:rubyonrails.org " /> + <input type="submit" value="Search" /> the Rails site + </form> + </li> + + <li> + <h3>Join the community</h3> + <ul class="links"> + <li><a href="http://www.rubyonrails.org/">Ruby on Rails</a></li> + <li><a href="http://weblog.rubyonrails.org/">Official weblog</a></li> + <li><a href="http://lists.rubyonrails.org/">Mailing lists</a></li> + <li><a href="http://wiki.rubyonrails.org/rails/pages/IRC">IRC channel</a></li> + <li><a href="http://wiki.rubyonrails.org/">Wiki</a></li> + <li><a href="http://dev.rubyonrails.org/">Bug tracker</a></li> + </ul> + </li> + + <li> + <h3>Browse the documentation</h3> + <ul class="links"> + <li><a href="http://api.rubyonrails.org/">Rails API</a></li> + <li><a href="http://stdlib.rubyonrails.org/">Ruby standard library</a></li> + <li><a href="http://corelib.rubyonrails.org/">Ruby core</a></li> + </ul> + </li> + </ul> + </div> + + <div id="content"> + <div id="header"> + <h1>Welcome aboard</h1> + <h2>You’re riding the Rails!</h2> + </div> + + <div id="about"> + <h3><a href="rails/info/properties" onclick="about(); return false">About your application’s environment</a></h3> + <div id="about-content" style="display: none"></div> + </div> + + <div id="getting-started"> + <h1>Getting started</h1> + <h2>Here’s how to get rolling:</h2> + + <ol> + <li> + <h2>Create your databases and edit <tt>config/database.yml</tt></h2> + <p>Rails needs to know your login and password.</p> + </li> + + <li> + <h2>Use <tt>script/generate</tt> to create your models and controllers</h2> + <p>To see all available options, run it without parameters.</p> + </li> + + <li> + <h2>Set up a default route and remove or rename this file</h2> + <p>Routes are setup in config/routes.rb.</p> + </li> + </ol> + </div> + </div> + + <div id="footer"> </div> + </div> + </body> +</html> \ No newline at end of file Added: trunk/crackerjack/rails/crackerjack/public/javascripts/application.js =================================================================== --- trunk/crackerjack/rails/crackerjack/public/javascripts/application.js (rev 0) +++ trunk/crackerjack/rails/crackerjack/public/javascripts/application.js 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,2 @@ +// Place your application-specific JavaScript functions and classes here +// This file is automatically included by javascript_include_tag :defaults Added: trunk/crackerjack/rails/crackerjack/public/javascripts/controls.js =================================================================== --- trunk/crackerjack/rails/crackerjack/public/javascripts/controls.js (rev 0) +++ trunk/crackerjack/rails/crackerjack/public/javascripts/controls.js 2007-02-13 05:06:58 UTC (rev 264) @@ -0,0 +1,815 @@ +// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// (c) 2005 Ivan Krstic (http://blogs.law.harvard.edu/ivan) +// (c) 2005 Jon Tirsen (http://www.tirsen.com) +// Contributors: +// Richard Livsey +// Rahul Bhargava +// Rob Wills +// +// See scriptaculous.js for full license. + +// Autocompleter.Base handles all the autocompletion functionality +// that's independent of the data source for autocompletion. This +// includes drawing the autocompletion menu, observing keyboard +// and mouse events, and similar. +// +// Specific autocompleters need to provide, at the very least, +// a getUpdatedChoices function that will be invoked every time +// the text inside the monitored textbox changes. This method +// should get the text for which to provide autocompletion by +// invoking this.getToken(), NOT by directly accessing +// this.element.value. This is to allow incremental tokenized +// autocompletion. Specific auto-completion logic (AJAX, etc) +// belongs in getUpdatedChoices. +// +// Tokenized incremental autocompletion is enabled automatically +// when an autocompleter is instantiated with the 'tokens' option +// in the options parameter, e.g.: +// new Ajax.Autocompleter('id','upd', '/url/', { tokens: ',' }); +// will incrementally autocomplete with a comma as the token. +// Additionally, ',' in the above example can be replaced with +// a token array, e.g. { tokens: [',', '\n'] } which +// enables autocompletion on multiple tokens. This is most +// useful when one of the tokens is \n (a newline), as it +// allows smart autocompletion after linebreaks. + +var Autocompleter = {} +Autocompleter.Base = function() {}; +Autocompleter.Base.prototype = { + baseInitialize: function(element, update, options) { + this.element = $(element); + this.update = $(update); + this.hasFocus = false; + this.changed = false; + this.active = false; + this.index = 0; + this.entryCount = 0; + + if (this.setOptions) + this.setOptions(options); + else + this.options = options || {}; + + this.options.paramName = this.options.paramName || this.element.name; + this.options.tokens = this.options.tokens || []; + this.options.frequency = this.options.frequency || 0.4; + this.options.minChars = this.options.minChars || 1; + this.options.onShow = this.options.onShow || + function(element, update){ + if(!update.style.position || update.style.position=='absolute') { + update.style.position = 'absolute'; + Position.clone(element, update, {setHeight: false, offsetTop: element.offsetHeight}); + } + Effect.Appear(update,{duration:0.15}); + }; + this.options.onHide = this.options.onHide || + function(element, update){ new Effect.Fade(update,{duration:0.15}) }; + + if (typeof(this.options.tokens) == 'string') + this.options.tokens = new Array(this.options.tokens); + + this.observer = null; + + this.element.setAttribute('autocomplete','off'); + + Element.hide(this.update); + + Event.observe(this.element, "blur", this.onBlur.bindAsEventListener(this)); + Event.observe(this.element, "keypress", this.onKeyPress.bindAsEventListener(this)); + }, + + show: function() { + if(Element.getStyle(this.update, 'display')=='none') this.options.onShow(this.element, this.update); + if(!this.iefix && + (navigator.appVersion.indexOf('MSIE')>0) && + (navigator.userAgent.indexOf('Opera')<0) && + (Element.getStyle(this.update, 'position')=='absolute')) { + new Insertion.After(this.update, + '<iframe id="' + this.update.id + '_iefix" '+ + 'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" ' + + 'src="javascript:false;" frameborder="0" scrolling="no"></iframe>'); + this.iefix = $(this.update.id+'_iefix'); + } + if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50); + }, + + fixIEOverlapping: function() { + Position.clone(this.update, this.iefix); + this.iefix.style.zIndex = 1; + this.update.style.zIndex = 2; + Element.show(this.iefix); + }, + + hide: function() { + this.stopIndicator(); + if(Element.getStyle(this.update, 'display')!='none') this.options.onHide(this.element, this.update); + if(this.iefix) Element.hide(this.iefix); + }, + + startIndicator: function() { + if(this.options.indicator) Element.show(this.options.indicator); + }, + + stopIndicator: function() { + if(this.options.indicator) Element.hide(this.options.indicator); + }, + + onKeyPress: function(event) { + if(this.active) + switch(event.keyCode) { + case Event.KEY_TAB: + case Event.KEY_RETURN: + this.selectEntry(); + Event.stop(event); + case Event.KEY_ESC: + this.hide(); + this.active = false; + Event.stop(event); + return; + case Event.KEY_LEFT: + case Event.KEY_RIGHT: + return; + case Event.KEY_UP: + this.markPrevious(); + this.render(); + if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event); + return; + case Event.KEY_DOWN: + this.markNext(); + this.render(); + if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event); + return; + } + else + if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN || + (navigator.appVersion.indexOf('AppleWebKit') > 0 && event.keyCode == 0)) return; + + this.changed = true; + this.hasFocus = true; + + if(this.observer) clearTimeout(this.observer); + this.observer = + setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000); + }, + + activate: function() { + this.changed = false; + this.hasFocus = true; + this.getUpdatedChoices(); + }, + + onHover: function(event) { + var element = Event.findElement(event, 'LI'); + if(this.index != element.autocompleteIndex) + { + this.index = element.autocompleteIndex; + this.render(); + } + Event.stop(event); + }, + + onClick: function(event) { + var element = Event.findElement(event, 'LI'); + this.index = element.autocompleteIndex; + this.selectEntry(); + this.hide(); + }, + + onBlur: function(event) { + // needed to make click events working + setTimeout(this.hide.bind(this), 250); + this.hasFocus = false; + this.active = false; + }, + + render: function() { + if(this.entryCount > 0) { + for (var i = 0; i < this.entryCount; i++) + this.index==i ? + Element.addClassName(this.getEntry(i),"selected") : + Element.removeClassName(this.getEntry(i),"selected"); + + if(this.hasFocus) { + this.show(); + this.active = true; + } + } else { + this.active = false; + this.hide(); + } + }, + + markPrevious: function() { + if(this.index > 0) this.index-- + else this.index = this.entryCount-1; + }, + + markNext: function() { + if(this.index < this.entryCount-1) this.index++ + else this.index = 0; + }, + + getEntry: function(index) { + return this.update.firstChild.childNodes[index]; + }, + + getCurrentEntry: function() { + return this.getEntry(this.index); + }, + + selectEntry: function() { + this.active = false; + this.updateElement(this.getCurrentEntry()); + }, + + updateElement: function(selectedElement) { + if (this.options.updateElement) { + this.options.updateElement(selectedElement); + return; + } + var value = ''; + if (this.options.select) { + var nodes = document.getElementsByClassName(this.options.select, selectedElement) || []; + if(nodes.length>0) value = Element.collectTextNodes(nodes[0], this.options.select); + } else + value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal'); + + var lastTokenPos = this.findLastToken(); + if (lastTokenPos != -1) { + var newValue = this.element.value.substr(0, lastTokenPos + 1); + var whitespace = this.element.value.substr(lastTokenPos + 1).match(/^\s+/); + if (whitespace) + newValue += whitespace[0]; + this.element.value = newValue + value; + } else { + this.element.value = value; + } + this.element.focus(); + + if (this.options.afterUpdateElement) + this.options.afterUpdateElement(this.element, selectedElement); + }, + + updateChoices: function(choices) { + if(!this.changed && this.hasFocus) { + this.update.innerHTML = choices; + Element.cleanWhitespace(this.update); + Element.cleanWhitespace(this.update.firstChild); + + if(this.update.firstChild && this.update.firstChild.childNodes) { + this.entryCount = + this.update.firstChild.childNodes.length; + for (var i = 0; i < this.entryCount; i++) { + var entry = this.getEntry(i); + entry.autocompleteIndex = i; + this.addObservers(entry); + } + } else { + this.entryCount = 0; + } + + this.stopIndicator(); + + this.index = 0; + this.render(); + } + }, + + addObservers: function(element) { + Event.observe(element, "mouseover", this.onHover.bindAsEventListener(this)); + Event.observe(element, "click", this.onClick.bindAsEventListener(this)); + }, + + onObserverEvent: function() { + this.changed = false; + if(this.getToken().length>=this.options.minChars) { + this.startIndicator(); + this.getUpdatedChoices(); + } else { + this.active = false; + this.hide(); + } + }, + + getToken: function() { + var tokenPos = this.findLastToken(); + if (tokenPos != -1) + var ret = this.element.value.substr(tokenPos + 1).replace(/^\s+/,'').replace(/\s+$/,''); + else + var ret = this.element.value; + + return /\n/.test(ret) ? '' : ret; + }, + + findLastToken: function() { + var lastTokenPos = -1; + + for (var i=0; i<this.options.tokens.length; i++) { + var thisTokenPos = this.element.value.lastIndexOf(this.options.tokens[i]); + if (thisTokenPos > lastTokenPos) + lastTokenPos = thisTokenPos; + } + return lastTokenPos; + } +} + +Ajax.Autocompleter = Class.create(); +Object.extend(Object.extend(Ajax.Autocompleter.prototype, Autocompleter.Base.prototype), { + initialize: function(element, update, url, options) { + this.baseInitialize(element, update, options); + this.options.asynchronous = true; + this.options.onComplete = this.onComplete.bind(this); + this.options.defaultParams = this.options.parameters || null; + this.url = url; + }, + + getUpdatedChoices: function() { + entry = encodeURIComponent(this.options.paramName) + '=' + + encodeURIComponent(this.getToken()); + + this.options.parameters = this.options.callback ? + this.options.callback(this.element, entry) : entry; + + if(this.options.defaultParams) + this.options.parameters += '&' + this.options.defaultParams; + + new Ajax.Request(this.url, this.options); + }, + + onComplete: function(request) { + this.updateChoices(request.responseText); + } + +}); + +// The local array autocompleter. Used when you'd prefer to +// inject an array of autocompletion options into the page, rather +// than sending out Ajax queries, which can be quite slow sometimes. +// +// The constructor takes four parameters. The first two are, as usual, +// the id of the monitored textbox, and id of the autocompletion menu. +// The third is the array you want to autocomplete from, and the fourth +// is the options block. +// +// Extra local autocompletion options: +// - choices - How many autocompletion choices to offer +// +// - partialSearch - If false, the autocompleter will match entered +// text only at the beginning of strings in the +// autocomplete array. Defaults to true, which will +// match text at the beginning of any *word* in the +// strings in the autocomplete array. If you want to +// search anywhere in the string, additionally set +// the option fullSearch to true (default: off). +// +// - fullSsearch - Search anywhere in autocomplete array strings. +// +// - partialChars - How many characters to enter before triggering +// a partial match (unlike minChars, which defines +// how many characters are required to do any match +// at all). Defaults to 2. +// +// - ignoreCase - Whether to ignore case when autocompleting. +// Defaults to true. +// +// It's possible to pass in a custom function as the 'selector' +// option, if you prefer to write your own autocompletion logic. +// In that case, the other options above will not apply unless +// you support them. + +Autocompleter.Local = Class.create(); +Autocompleter.Local.prototype = Object.extend(new Autocompleter.Base(), { + initialize: function(element, update, array, options) { + this.baseInitialize(element, update, options); + this.options.array = array; + }, + + getUpdatedChoices: function() { + this.updateChoices(this.options.selector(this)); + }, + + setOptions: function(options) { + this.options = Object.extend({ + choices: 10, + partialSearch: true, + partialChars: 2, + ignoreCase: true, + fullSearch: false, + selector: function(instance) { + var ret = []; // Beginning matches + var partial = []; // Inside matches + var entry = instance.getToken(); + var count = 0; + + for (var i = 0; i < instance.options.array.length && + ret.length < instance.options.choices ; i++) { + + var elem = instance.options.array[i]; + var foundPos = instance.options.ignoreCase ? + elem.toLowerCase().indexOf(entry.toLowerCase()) : + elem.indexOf(entry); + + while (foundPos != -1) { + if (foundPos == 0 && elem.length != entry.length) { + ret.push("<li><strong>" + elem.substr(0, entry.length) + "</strong>" + + elem.substr(entry.length) + "</li>"); + break; + } else if (entry.length >= instance.options.partialChars && + instance.options.partialSearch && foundPos != -1) { + if (in... [truncated message content] |
From: <ky...@us...> - 2007-03-13 12:35:27
|
Revision: 363 http://svn.sourceforge.net/crackerjack/?rev=363&view=rev Author: kyagi Date: 2007-03-13 05:35:25 -0700 (Tue, 13 Mar 2007) Log Message: ----------- modify Modified Paths: -------------- trunk/crackerjack/make_report.rb trunk/crackerjack/rails/crackerjack/app/helpers/top_helper.rb trunk/crackerjack/rails/crackerjack/app/views/top/execute.rhtml trunk/crackerjack/rails/crackerjack/app/views/top/list.rhtml Modified: trunk/crackerjack/make_report.rb =================================================================== --- trunk/crackerjack/make_report.rb 2007-03-13 12:24:38 UTC (rev 362) +++ trunk/crackerjack/make_report.rb 2007-03-13 12:35:25 UTC (rev 363) @@ -164,8 +164,6 @@ end print "</tr>", "\n" - - hr.sort.each do |r_kerv, r_id| #print "<tr><td align=\"center\">(R)#{r_kerv}, #{r_id[-1]}</td>" print "<tr><td align=\"center\">(R)#{r_kerv}</td>" @@ -241,12 +239,12 @@ STDOUT.reopen("rhtml/#{filename}.rhtml") 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 "<tr><td>System Call Name</td>" + print "<td>Regression</td>" + print "<td>Actual</td>" print "<td>Expected</td>" - print "<td>Result</td>" - print "<td>Compare STDOUT</td>" - print "<td>Compare STDERR</td>" + print "<td>Compare Result</td>" + print "<td>Compare Log</td>" print "<td>Comare Program</td></tr>" dir = File.join(Dir.pwd, "results", r_kerv, r_id[-1]) @@ -257,27 +255,27 @@ make_column_systemcall(f) + link_result = f.sub(%r!cout.log.*!, 'tout.log').sub(Dir.pwd, '..') + print "<td><a href=\"#{link_result}\">Log</a></td>" + link_exp = File.join(Dir.pwd, "expected",e_kerv, e_id[-1], log2syscallname(f), "tout.log") if File.exist?(link_exp) link_exp.sub!(Dir.pwd, '..') - print "<td><a href=\"#{link_exp}\">link</a></td>" + print "<td><a href=\"#{link_exp}\">Log</a></td>" else print "<td>Not found</td>" end - link_result = f.sub(%r!cout.log.*!, 'tout.log').sub(Dir.pwd, '..') - print "<td><a href=\"#{link_result}\">link</a></td>" - link_compare_out = f.sub(Dir.pwd, '..') - print "<td><a href=\"#{link_compare_out}\">link</a></td>" + print "<td><a href=\"#{link_compare_out}\">Log</a></td>" link_compare_err = f.sub('cout', 'cerr').sub(Dir.pwd, '..') - print "<td><a href=\"#{link_compare_err}\">link</a></td>" + print "<td><a href=\"#{link_compare_err}\">Log</a></td>" - label_cp = "User Defined" + label_cp = "user defined" link_cp = File.join(Dir.pwd, "testcases", syscallname, "compare") unless (File.exists?(link_cp)) - label_cp = "Original" + label_cp = "default" link_cp = File.join(Dir.pwd, "bin", "default-compare") end #make_sub_link("gui", label_cp, link_cp) Modified: trunk/crackerjack/rails/crackerjack/app/helpers/top_helper.rb =================================================================== --- trunk/crackerjack/rails/crackerjack/app/helpers/top_helper.rb 2007-03-13 12:24:38 UTC (rev 362) +++ trunk/crackerjack/rails/crackerjack/app/helpers/top_helper.rb 2007-03-13 12:35:25 UTC (rev 363) @@ -37,7 +37,7 @@ end def button_to_clear - button_to "Clear", :action=>"clear" + button_to "Clear stack", :action=>"clear" end def link_to_readme Modified: trunk/crackerjack/rails/crackerjack/app/views/top/execute.rhtml =================================================================== --- trunk/crackerjack/rails/crackerjack/app/views/top/execute.rhtml 2007-03-13 12:24:38 UTC (rev 362) +++ trunk/crackerjack/rails/crackerjack/app/views/top/execute.rhtml 2007-03-13 12:35:25 UTC (rev 363) @@ -1,8 +1,8 @@ -<table border="0" cellpadding="5" cellspacing="0"> +<table border="1" cellpadding="5" cellspacing="0"> <tr> - <th width="150">syscallname</th> - <th width="150">log(stdout)</th> - <th width="150">log(stderr)</th> + <th width="150">System Call Name</th> + <th width="150">Test Result</th> + <th width="150">Execution Log</th> </tr> <% @tp_list.each do |tp| %> <tr> @@ -10,14 +10,11 @@ <%= tp.syscallname %> </td> <td width="150"> - <%= link_to("stdout", {:action=>'view_log', :arg=>tp.log_stdout}, nil) %> + <%= link_to("Log", {:action=>'view_log', :arg=>tp.log_stdout}, nil) %> </td> <td width="150"> - <%= link_to("stderr", {:action=>'view_log', :arg=>tp.log_stderr}, nil) %> + <%= link_to("Log", {:action=>'view_log', :arg=>tp.log_stderr}, nil) %> </td> </tr> <% end %> -</table> - - - +</table> \ No newline at end of file Modified: trunk/crackerjack/rails/crackerjack/app/views/top/list.rhtml =================================================================== --- trunk/crackerjack/rails/crackerjack/app/views/top/list.rhtml 2007-03-13 12:24:38 UTC (rev 362) +++ trunk/crackerjack/rails/crackerjack/app/views/top/list.rhtml 2007-03-13 12:35:25 UTC (rev 363) @@ -6,7 +6,7 @@ <%= check_box_tag "to_be_ordered", tp %> </td> <td> - <%= submit_tag "add" %> + <%= submit_tag "add stack" %> </td> <%= end_form_tag %> <td> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ky...@us...> - 2007-03-21 12:04:26
|
Revision: 405 http://svn.sourceforge.net/crackerjack/?rev=405&view=rev Author: kyagi Date: 2007-03-21 05:04:24 -0700 (Wed, 21 Mar 2007) Log Message: ----------- add comment Modified Paths: -------------- trunk/crackerjack/crackerjack-makereport-html trunk/crackerjack/crackerjack-makereport-rhtml Modified: trunk/crackerjack/crackerjack-makereport-html =================================================================== --- trunk/crackerjack/crackerjack-makereport-html 2007-03-21 11:38:31 UTC (rev 404) +++ trunk/crackerjack/crackerjack-makereport-html 2007-03-21 12:04:24 UTC (rev 405) @@ -1,5 +1,13 @@ #!/usr/bin/env ruby +# +# = crackerjack: crackerjack make html report script +# +# Copyright (C) 2007, Miracle Linux Corporation +# Author:: Kazuo Yagi <ky...@mi...> +# Documentation:: +# + require 'find' ###################################################################### Modified: trunk/crackerjack/crackerjack-makereport-rhtml =================================================================== --- trunk/crackerjack/crackerjack-makereport-rhtml 2007-03-21 11:38:31 UTC (rev 404) +++ trunk/crackerjack/crackerjack-makereport-rhtml 2007-03-21 12:04:24 UTC (rev 405) @@ -1,5 +1,13 @@ #!/usr/bin/env ruby +# +# = crackerjack: crackerjack make rhtml report script +# +# Copyright (C) 2007, Miracle Linux Corporation +# Author:: Kazuo Yagi <ky...@mi...> +# Documentation:: +# + require 'find' ###################################################################### This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ky...@us...> - 2006-11-30 12:11:08
|
Revision: 26 http://svn.sourceforge.net/crackerjack/?rev=26&view=rev Author: kyagi Date: 2006-11-30 04:11:07 -0800 (Thu, 30 Nov 2006) Log Message: ----------- delete the file 'switch_debug.sh' fix the small bug 'debugecho' function Modified Paths: -------------- trunk/crackerjack/functions Removed Paths: ------------- trunk/crackerjack/switch_debug.sh Modified: trunk/crackerjack/functions =================================================================== --- trunk/crackerjack/functions 2006-11-30 12:01:02 UTC (rev 25) +++ trunk/crackerjack/functions 2006-11-30 12:11:07 UTC (rev 26) @@ -42,7 +42,7 @@ { LAST_FUNCNAME=$FUNCNAME - if [ $DEBUG_FLAG = ON ]; then + if [ $DEBUG_FLAG == "ON" ]; then echo -n "#DEBUG: $1:" eval echo \$$1 fi Deleted: trunk/crackerjack/switch_debug.sh =================================================================== --- trunk/crackerjack/switch_debug.sh 2006-11-30 12:01:02 UTC (rev 25) +++ trunk/crackerjack/switch_debug.sh 2006-11-30 12:11:07 UTC (rev 26) @@ -1,13 +0,0 @@ -#!/bin/sh - -SCRIPT=frontend.sh - -if [ $1 == "off" ];then - sed '/^# main/,$s/^\(debugecho.*\)/#\1/' $SCRIPT > ${SCRIPT}.flight - chmod 755 ${SCRIPT}.flight -elif [ $1 == "on" ]; then - sed '/^# main/,$s/^#\(debugecho.*\)/\1/' $SCRIPT > ${SCRIPT}.debug - chmod 755 ${SCRIPT}.debug -fi - - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ta...@us...> - 2006-12-01 17:36:48
|
Revision: 60 http://svn.sourceforge.net/crackerjack/?rev=60&view=rev Author: taru Date: 2006-12-01 09:36:47 -0800 (Fri, 01 Dec 2006) Log Message: ----------- change working directory of compare in the result directory Modified Paths: -------------- trunk/crackerjack/functions trunk/crackerjack/testcases/nanosleep/actual_sleep_time/compare Modified: trunk/crackerjack/functions =================================================================== --- trunk/crackerjack/functions 2006-12-01 17:14:47 UTC (rev 59) +++ trunk/crackerjack/functions 2006-12-01 17:36:47 UTC (rev 60) @@ -254,7 +254,7 @@ LAST_FUNCNAME=$FUNCNAME COMPARE=`dirname $ORDER` - COMPARE="$COMPARE/compare" + COMPARE="`pwd`/$COMPARE/compare" COMPARE_LOGDIR="$LOGDIR_CUR/$KERNEL_VERSION_PRE" COMPARE_LOGFILE="$COMPARE_LOGDIR/detail.log" COMPARE_STATUSFILE="$COMPARE_LOGDIR/status" @@ -263,14 +263,15 @@ mkdir -p $COMPARE_LOGDIR fi - eval $COMPARE $LOGFILE_PRE $LOGFILE_CUR 2>&1 > $COMPARE_LOGFILE - - #FIXME: exit status always 0 - if [ $? == 0 ]; then - echo "compare:TRUE" | tee $COMPARE_STATUSFILE - else - echo "compare:FAILURE" | tee $COMPARE_STATUSFILE - fi + ( + cd $COMPARE_LOGDIR + $COMPARE $LOGFILE_PRE $LOGFILE_CUR 2>&1 > $COMPARE_LOGFILE + if [ $? == 0 ]; then + echo "compare:TRUE" | tee $COMPARE_STATUSFILE + else + echo "compare:FAILURE" | tee $COMPARE_STATUSFILE + fi + ) } rcs_ci () Modified: trunk/crackerjack/testcases/nanosleep/actual_sleep_time/compare =================================================================== --- trunk/crackerjack/testcases/nanosleep/actual_sleep_time/compare 2006-12-01 17:14:47 UTC (rev 59) +++ trunk/crackerjack/testcases/nanosleep/actual_sleep_time/compare 2006-12-01 17:36:47 UTC (rev 60) @@ -129,10 +129,14 @@ tmp2.puts "#{i} #{count[1].count[i]}" end tmp2.close + + title1 = `head -1 #{ARGV[0]} | cut -d' ' -f4`.chop! + title2 = `head -1 #{ARGV[1]} | cut -d' ' -f4`.chop! IO.popen("gnuplot -", "w") { |io| io.puts "set terminal png" io.puts "set output \"compare.png\"" - io.puts "plot \"#{tmp1.path}\", \"#{tmp2.path}\"" + io.puts "plot \"#{tmp1.path}\" title \"#{title1}\", " + + " \"#{tmp2.path}\" title \"#{title2}\"" } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ky...@us...> - 2006-12-14 06:04:59
|
Revision: 83 http://svn.sourceforge.net/crackerjack/?rev=83&view=rev Author: kyagi Date: 2006-12-13 22:04:58 -0800 (Wed, 13 Dec 2006) Log Message: ----------- Add 'udfw' directory at temporary place for framework development. This is just a temporary place. Added Paths: ----------- trunk/crackerjack/udfw/ trunk/crackerjack/udfw/README trunk/crackerjack/udfw/TestTp.rb trunk/crackerjack/udfw/Tp.rb trunk/crackerjack/udfw/main.rb trunk/crackerjack/udfw/test Added: trunk/crackerjack/udfw/README =================================================================== --- trunk/crackerjack/udfw/README (rev 0) +++ trunk/crackerjack/udfw/README 2006-12-14 06:04:58 UTC (rev 83) @@ -0,0 +1,4 @@ +Here is a directory for framework development(Under Development FrameWork). +Forget it, here is just a temporary place. + + Added: trunk/crackerjack/udfw/TestTp.rb =================================================================== --- trunk/crackerjack/udfw/TestTp.rb (rev 0) +++ trunk/crackerjack/udfw/TestTp.rb 2006-12-14 06:04:58 UTC (rev 83) @@ -0,0 +1,21 @@ +#!/usr/bin/ruby + +require 'Tp' +require 'test/unit' + +class TestTp < Test::Unit::TestCase + @@obj = Tp.new("`pwd`/test") + + def test_hello + assert_equal("hello crackerjack", @@obj.hello("crackerjack")) + end + + def test_pre_kernel + assert_equal("2.6.15-27-386", @@obj.pre_kernel) + end + + def test_execute + assert_equal(true, @@obj.execute) + end + +end Property changes on: trunk/crackerjack/udfw/TestTp.rb ___________________________________________________________________ Name: svn:executable + * Added: trunk/crackerjack/udfw/Tp.rb =================================================================== --- trunk/crackerjack/udfw/Tp.rb (rev 0) +++ trunk/crackerjack/udfw/Tp.rb 2006-12-14 06:04:58 UTC (rev 83) @@ -0,0 +1,26 @@ +#!/usr/bin/ruby + +class Tp + attr_accessor :path + + def initialize(path) + @path = path + end + + def hello(name) + "hello " + name + end + + def pre_kernel + `uname -r`.chomp + end + + def cur_kernel + end + + def execute + rtv = system(@path) + rtv + end + +end Property changes on: trunk/crackerjack/udfw/Tp.rb ___________________________________________________________________ Name: svn:executable + * Added: trunk/crackerjack/udfw/main.rb =================================================================== --- trunk/crackerjack/udfw/main.rb (rev 0) +++ trunk/crackerjack/udfw/main.rb 2006-12-14 06:04:58 UTC (rev 83) @@ -0,0 +1,23 @@ +#!/usr/bin/ruby + +require 'find' +require 'Tp' + +rootdir = Dir.pwd + +tp_list = Array.new() +Find.find(rootdir) do |f| + if File.basename(f) =~ /^test$/ then + tp = Tp.new(f) + tp_list.push(tp) + end +end + +#tp_list.each_with_index do |tp, index| +# print index, ")", tp.path, "\n" +#end + +tp_list.each do |tp| + puts tp.path + tp.execute +end Property changes on: trunk/crackerjack/udfw/main.rb ___________________________________________________________________ Name: svn:executable + * Added: trunk/crackerjack/udfw/test =================================================================== --- trunk/crackerjack/udfw/test (rev 0) +++ trunk/crackerjack/udfw/test 2006-12-14 06:04:58 UTC (rev 83) @@ -0,0 +1,5 @@ +#!/bin/sh + +for i in `seq 1 10`; do echo "crackerjack $i"; done +exit 0 +#exit 255 Property changes on: trunk/crackerjack/udfw/test ___________________________________________________________________ Name: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ky...@us...> - 2006-12-26 06:20:02
|
Revision: 97 http://svn.sourceforge.net/crackerjack/?rev=97&view=rev Author: kyagi Date: 2006-12-25 22:20:00 -0800 (Mon, 25 Dec 2006) Log Message: ----------- delete junkfile 'tree.log' add /bin directory move framework script(shell-version) to /bin direcotry Added Paths: ----------- trunk/crackerjack/bin/ trunk/crackerjack/bin/frontend.sh trunk/crackerjack/bin/functions Removed Paths: ------------- trunk/crackerjack/frontend.sh trunk/crackerjack/functions trunk/crackerjack/tree.log Copied: trunk/crackerjack/bin/frontend.sh (from rev 95, trunk/crackerjack/frontend.sh) =================================================================== --- trunk/crackerjack/bin/frontend.sh (rev 0) +++ trunk/crackerjack/bin/frontend.sh 2006-12-26 06:20:00 UTC (rev 97) @@ -0,0 +1,73 @@ +#!/bin/sh + +# +# Crackerjack Project +# +# Copyright (C) 2006 Miracle Linux Corp., All Rights Reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of version 2 of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# Further, this software is distributed without any warranty that it is +# free of the rightful claim of any third person regarding infringement +# or the like. Any license provided herein, whether implied or +# otherwise, applies only to this software file. Patent licenses, if +# any, provided herein do not apply to combinations of this program with +# other software, or any other product whatsoever. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write the Free Software Foundation, Inc., 59 +# Temple Place - Suite 330, Boston MA 02111-1307, USA. +# +# $Id$ +# +# + +###################################################################### +# main +###################################################################### +. functions +cd .. + +set_term +show_header + +get_basedir +debugecho ROOTDIR +debugecho LOGDIR + +get_kernel_version cur +get_kernel_version pre +debugecho KERNEL_VERSION_CUR +debugecho KERNEL_VERSION_PRE + +get_menulist +get_order +confirm +debugecho ROOTDIR +debugecho MENULIST +debugecho ORDER + +get_logdir cur +get_logdir pre +debugecho LOGDIR_CUR +debugecho LOGDIR_PRE + +make_logdir +get_logfile +debugecho LOGFILE_CUR +debugecho LOGFILE_CUR_ERR +debugecho LOGFILE_PRE + +exe_order + +compare +debugecho COMPARE +debugecho COMPARE_LOGDIR +debugecho COMPARE_LOGFILE +debugecho COMPARE_STATUSFILE Copied: trunk/crackerjack/bin/functions (from rev 95, trunk/crackerjack/functions) =================================================================== --- trunk/crackerjack/bin/functions (rev 0) +++ trunk/crackerjack/bin/functions 2006-12-26 06:20:00 UTC (rev 97) @@ -0,0 +1,294 @@ +#!/bin/sh + +# +# Crackerjack Project +# +# Copyright (C) 2006 Miracle Linux Corp., All Rights Reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of version 2 of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# Further, this software is distributed without any warranty that it is +# free of the rightful claim of any third person regarding infringement +# or the like. Any license provided herein, whether implied or +# otherwise, applies only to this software file. Patent licenses, if +# any, provided herein do not apply to combinations of this program with +# other software, or any other product whatsoever. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write the Free Software Foundation, Inc., 59 +# Temple Place - Suite 330, Boston MA 02111-1307, USA. +# +# $Id$ +# + +# functions - This is the library for the frontend. + +###################################################################### +# environment +###################################################################### + +PS3="#FRAMEWORK>" +LANG=C + +###################################################################### +# functions +###################################################################### + +DEBUG_FLAG=ON +debugecho () +{ + LAST_FUNCNAME=$FUNCNAME + + if [ $DEBUG_FLAG == "ON" ]; then + echo -n "#DEBUG: $1:" + eval echo \$$1 + fi +} + +set_term () +{ + LAST_FUNCNAME=$FUNCNAME + + clear + tput cup 20 0 +} + +show_header () +{ + cat <<-EOF + ##### #### ## ##### # # ##### #### ##### ## ##### # # + # # # # # # # # # # # # # # # # # + # ##### # # # #### ##### ##### # # # # #### + # # # ###### # # # # # # # ###### # # # + # # # # # # # # # # # # # # # # # + ##### # # # # ##### # # ##### # # #### # # ##### # # + + Crackerjack Project + + The latest source is always available at: + https://svn.sourceforge.net/svnroot/crackerjack/trunk + + EOF +} + +ferror () +{ + echo "ERROR: $LAST_FUNCNAME" + exit +} + +ROOTDIR= +LOGDIR= +get_basedir () +{ + LAST_FUNCNAME=$FUNCNAME + + ROOTDIR=`pwd` + LOGDIR="${ROOTDIR}/results/" +} + +KERNEL_VERSION_CUR= +KERNEL_VERSION_PRE= +get_kernel_version () +{ + LAST_FUNCNAME=$FUNCNAME + + local kind=$1 + + [ -z $ROOTDIR ] && ferror + [ -z $LOGDIR ] && ferror + + if [ $kind == "cur" ]; then + KERNEL_VERSION_CUR=`uname -r | sed 's#\(.*\..*\..*\)-.*#\1#'` + elif [ $kind == "pre" ]; then + ls -l $LOGDIR | grep $KERNEL_VERSION_CUR 2>&1 > /dev/null + if [ $? != 0 ]; then + KERNEL_VERSION_PRE=`ls -l ${LOGDIR} | tail -n1 | awk '{print $9}'` + else + KERNEL_VERSION_PRE=`ls -l ${LOGDIR} | grep -B2 ${KERNEL_VERSION_CUR} |\ + sed -n '2p' | awk '{print $9}'` + fi + else + ferror + fi +} + +LOGDIR_CUR= +LOGIDR_PRE= +get_logdir () +{ + LAST_FUNCNAME=$FUNCNAME + + local kind=$1 + [ -z $ROOTDIR ] && ferror + + if [ $kind == "cur" ]; then + LOGDIR_CUR="$ROOTDIR/results/$KERNEL_VERSION_CUR" + middle_part=`echo $ORDER | sed "s#$ROOTDIR/##"` + middle_part=${middle_part%/*} + LOGDIR_CUR="$LOGDIR_CUR/$middle_part" + elif [ $kind == "pre" ]; then + LOGDIR_PRE="${ROOTDIR}/results/${KERNEL_VERSION_PRE}" + middle_part=`echo $ORDER | sed "s#$ROOTDIR/##"` + middle_part=${middle_part%/*} + LOGDIR_PRE="$LOGDIR_PRE/$middle_part" + else + ferror + fi +} + +MENULIST= +get_menulist () +{ + LAST_FUNCNAME=$FUNCNAME + + [ -z $ROOTDIR ] && ferror + + MENULIST=`find $ROOTDIR -name "test"` +} + +ORDER= +MENULIST_FORUSER= +get_order () +{ + LAST_FUNCNAME=$FUNCNAME + local menu + local menu_foruser + + cat <<-EOF + Now, There are tests as follows. + Please Choose test you want to execute. + EOF + + for menu in $MENULIST; do + menu_foruser=`echo $menu | sed "s#\$ROOTDIR/##"` + MENULIST_FORUSER="$MENULIST_FORUSER $menu_foruser" + done + + select ORDER in $MENULIST_FORUSER; do + echo $ORDER + break + done +} + +confirm () +{ + LAST_FUNCNAME=$FUNCNAME + + local ansewer + + echo -n "Are you sure to execute \"${ORDER}\"? [y/n]" + read answer + if [ "$answer" != "y" ]; then + ferror + fi +} + +make_logdir () +{ + LAST_FUNCNAME=$FUNCNAME + + [ -z $LOGDIR_CUR ] && ferror + + mkdir -p $LOGDIR_CUR +} + +LOGFILE_CUR= +LOGFILE_CUR_ERR= +LOGFILE_PRE= +get_logfile () +{ + LAST_FUNCNAME=$FUNCNAME + + [ -z $LOGDIR_CUR ] && ferror + [ -z $LOGDIR_PRE ] && ferror + + LOGFILE_CUR="${LOGDIR_CUR}/result.log" + LOGFILE_CUR_ERR="${LOGDIR_CUR}/detail.log" + LOGFILE_PRE="${LOGDIR_PRE}/result.log" +} + +print_date () +{ + LAST_FUNCNAME=$FUNCNAME + + local arg=$1 + echo "#${arg} `date`" +} + +print_uname () +{ + LAST_FUNCNAME=$FUNCNAME + + local arg=$1 + echo "#${arg} `uname -a`" +} + +exe_order () +{ + LAST_FUNCNAME=$FUNCNAME + + [ -z $ORDER ] && ferror + [ -z $LOGFILE_CUR ] && ferror + [ -z $LOGFILE_CUR_ERR ] && ferror + + : > $LOGFILE_CUR + print_uname "KERNEL:" | tee -a $LOGFILE_CUR + print_date "START:" | tee -a $LOGFILE_CUR + eval $ORDER 2>$LOGFILE_CUR_ERR | tee -a $LOGFILE_CUR + print_date "END:" | tee -a $LOGFILE_CUR +} + +COMPARE= +COMPARE_LOGDIR= +COMPARE_LOGFILE= +COMPARE_STATUSFILE= +compare () +{ + LAST_FUNCNAME=$FUNCNAME + + COMPARE=`dirname $ORDER` + COMPARE="`pwd`/$COMPARE/compare" + if [ ! -f $COMPARE ]; then + cat <<-EOF + There is no compare program for this case + So, using UNIX 'diff' for compare program. + EOF + COMPARE="diff" + fi + COMPARE_LOGDIR="$LOGDIR_CUR/$KERNEL_VERSION_PRE" + COMPARE_LOGFILE="$COMPARE_LOGDIR/detail.log" + COMPARE_STATUSFILE="$COMPARE_LOGDIR/status" + + if [ ! -d $COMPARE_LOGDIR ]; then + mkdir -p $COMPARE_LOGDIR + fi + + ( + cd $COMPARE_LOGDIR + $COMPARE $LOGFILE_PRE $LOGFILE_CUR 2>&1 > $COMPARE_LOGFILE + if [ $? == 0 ]; then + echo "compare:TRUE" | tee $COMPARE_STATUSFILE + else + echo "compare:FAILURE" | tee $COMPARE_STATUSFILE + fi + ) +} + +rcs_ci () +{ + LAST_FUNCNAME=$FUNCNAME + ci -m_no_commment $LOGFILE_CUR +} + +rcs_co () +{ + LAST_FUNCNAME=$FUNCNAME + co -l $LOGFILE_CUR +} Deleted: trunk/crackerjack/frontend.sh =================================================================== --- trunk/crackerjack/frontend.sh 2006-12-26 06:02:28 UTC (rev 96) +++ trunk/crackerjack/frontend.sh 2006-12-26 06:20:00 UTC (rev 97) @@ -1,72 +0,0 @@ -#!/bin/sh - -# -# Crackerjack Project -# -# Copyright (C) 2006 Miracle Linux Corp., All Rights Reserved. -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of version 2 of the GNU General Public License as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it would be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -# Further, this software is distributed without any warranty that it is -# free of the rightful claim of any third person regarding infringement -# or the like. Any license provided herein, whether implied or -# otherwise, applies only to this software file. Patent licenses, if -# any, provided herein do not apply to combinations of this program with -# other software, or any other product whatsoever. -# -# You should have received a copy of the GNU General Public License along -# with this program; if not, write the Free Software Foundation, Inc., 59 -# Temple Place - Suite 330, Boston MA 02111-1307, USA. -# -# $Id$ -# -# - -###################################################################### -# main -###################################################################### -. functions - -set_term -show_header - -get_basedir -debugecho ROOTDIR -debugecho LOGDIR - -get_kernel_version cur -get_kernel_version pre -debugecho KERNEL_VERSION_CUR -debugecho KERNEL_VERSION_PRE - -get_menulist -get_order -confirm -debugecho ROOTDIR -debugecho MENULIST -debugecho ORDER - -get_logdir cur -get_logdir pre -debugecho LOGDIR_CUR -debugecho LOGDIR_PRE - -make_logdir -get_logfile -debugecho LOGFILE_CUR -debugecho LOGFILE_CUR_ERR -debugecho LOGFILE_PRE - -exe_order - -compare -debugecho COMPARE -debugecho COMPARE_LOGDIR -debugecho COMPARE_LOGFILE -debugecho COMPARE_STATUSFILE Deleted: trunk/crackerjack/functions =================================================================== --- trunk/crackerjack/functions 2006-12-26 06:02:28 UTC (rev 96) +++ trunk/crackerjack/functions 2006-12-26 06:20:00 UTC (rev 97) @@ -1,294 +0,0 @@ -#!/bin/sh - -# -# Crackerjack Project -# -# Copyright (C) 2006 Miracle Linux Corp., All Rights Reserved. -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of version 2 of the GNU General Public License as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it would be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -# Further, this software is distributed without any warranty that it is -# free of the rightful claim of any third person regarding infringement -# or the like. Any license provided herein, whether implied or -# otherwise, applies only to this software file. Patent licenses, if -# any, provided herein do not apply to combinations of this program with -# other software, or any other product whatsoever. -# -# You should have received a copy of the GNU General Public License along -# with this program; if not, write the Free Software Foundation, Inc., 59 -# Temple Place - Suite 330, Boston MA 02111-1307, USA. -# -# $Id$ -# - -# functions - This is the library for the frontend. - -###################################################################### -# environment -###################################################################### - -PS3="#FRAMEWORK>" -LANG=C - -###################################################################### -# functions -###################################################################### - -DEBUG_FLAG=ON -debugecho () -{ - LAST_FUNCNAME=$FUNCNAME - - if [ $DEBUG_FLAG == "ON" ]; then - echo -n "#DEBUG: $1:" - eval echo \$$1 - fi -} - -set_term () -{ - LAST_FUNCNAME=$FUNCNAME - - clear - tput cup 20 0 -} - -show_header () -{ - cat <<-EOF - ##### #### ## ##### # # ##### #### ##### ## ##### # # - # # # # # # # # # # # # # # # # # - # ##### # # # #### ##### ##### # # # # #### - # # # ###### # # # # # # # ###### # # # - # # # # # # # # # # # # # # # # # - ##### # # # # ##### # # ##### # # #### # # ##### # # - - Crackerjack Project - - The latest source is always available at: - https://svn.sourceforge.net/svnroot/crackerjack/trunk - - EOF -} - -ferror () -{ - echo "ERROR: $LAST_FUNCNAME" - exit -} - -ROOTDIR= -LOGDIR= -get_basedir () -{ - LAST_FUNCNAME=$FUNCNAME - - ROOTDIR=`pwd` - LOGDIR="${ROOTDIR}/results/" -} - -KERNEL_VERSION_CUR= -KERNEL_VERSION_PRE= -get_kernel_version () -{ - LAST_FUNCNAME=$FUNCNAME - - local kind=$1 - - [ -z $ROOTDIR ] && ferror - [ -z $LOGDIR ] && ferror - - if [ $kind == "cur" ]; then - KERNEL_VERSION_CUR=`uname -r | sed 's#\(.*\..*\..*\)-.*#\1#'` - elif [ $kind == "pre" ]; then - ls -l $LOGDIR | grep $KERNEL_VERSION_CUR 2>&1 > /dev/null - if [ $? != 0 ]; then - KERNEL_VERSION_PRE=`ls -l ${LOGDIR} | tail -n1 | awk '{print $9}'` - else - KERNEL_VERSION_PRE=`ls -l ${LOGDIR} | grep -B2 ${KERNEL_VERSION_CUR} |\ - sed -n '2p' | awk '{print $9}'` - fi - else - ferror - fi -} - -LOGDIR_CUR= -LOGIDR_PRE= -get_logdir () -{ - LAST_FUNCNAME=$FUNCNAME - - local kind=$1 - [ -z $ROOTDIR ] && ferror - - if [ $kind == "cur" ]; then - LOGDIR_CUR="$ROOTDIR/results/$KERNEL_VERSION_CUR" - middle_part=`echo $ORDER | sed "s#$ROOTDIR/##"` - middle_part=${middle_part%/*} - LOGDIR_CUR="$LOGDIR_CUR/$middle_part" - elif [ $kind == "pre" ]; then - LOGDIR_PRE="${ROOTDIR}/results/${KERNEL_VERSION_PRE}" - middle_part=`echo $ORDER | sed "s#$ROOTDIR/##"` - middle_part=${middle_part%/*} - LOGDIR_PRE="$LOGDIR_PRE/$middle_part" - else - ferror - fi -} - -MENULIST= -get_menulist () -{ - LAST_FUNCNAME=$FUNCNAME - - [ -z $ROOTDIR ] && ferror - - MENULIST=`find $ROOTDIR -name "test"` -} - -ORDER= -MENULIST_FORUSER= -get_order () -{ - LAST_FUNCNAME=$FUNCNAME - local menu - local menu_foruser - - cat <<-EOF - Now, There are tests as follows. - Please Choose test you want to execute. - EOF - - for menu in $MENULIST; do - menu_foruser=`echo $menu | sed "s#\$ROOTDIR/##"` - MENULIST_FORUSER="$MENULIST_FORUSER $menu_foruser" - done - - select ORDER in $MENULIST_FORUSER; do - echo $ORDER - break - done -} - -confirm () -{ - LAST_FUNCNAME=$FUNCNAME - - local ansewer - - echo -n "Are you sure to execute \"${ORDER}\"? [y/n]" - read answer - if [ "$answer" != "y" ]; then - ferror - fi -} - -make_logdir () -{ - LAST_FUNCNAME=$FUNCNAME - - [ -z $LOGDIR_CUR ] && ferror - - mkdir -p $LOGDIR_CUR -} - -LOGFILE_CUR= -LOGFILE_CUR_ERR= -LOGFILE_PRE= -get_logfile () -{ - LAST_FUNCNAME=$FUNCNAME - - [ -z $LOGDIR_CUR ] && ferror - [ -z $LOGDIR_PRE ] && ferror - - LOGFILE_CUR="${LOGDIR_CUR}/result.log" - LOGFILE_CUR_ERR="${LOGDIR_CUR}/detail.log" - LOGFILE_PRE="${LOGDIR_PRE}/result.log" -} - -print_date () -{ - LAST_FUNCNAME=$FUNCNAME - - local arg=$1 - echo "#${arg} `date`" -} - -print_uname () -{ - LAST_FUNCNAME=$FUNCNAME - - local arg=$1 - echo "#${arg} `uname -a`" -} - -exe_order () -{ - LAST_FUNCNAME=$FUNCNAME - - [ -z $ORDER ] && ferror - [ -z $LOGFILE_CUR ] && ferror - [ -z $LOGFILE_CUR_ERR ] && ferror - - : > $LOGFILE_CUR - print_uname "KERNEL:" | tee -a $LOGFILE_CUR - print_date "START:" | tee -a $LOGFILE_CUR - eval $ORDER 2>$LOGFILE_CUR_ERR | tee -a $LOGFILE_CUR - print_date "END:" | tee -a $LOGFILE_CUR -} - -COMPARE= -COMPARE_LOGDIR= -COMPARE_LOGFILE= -COMPARE_STATUSFILE= -compare () -{ - LAST_FUNCNAME=$FUNCNAME - - COMPARE=`dirname $ORDER` - COMPARE="`pwd`/$COMPARE/compare" - if [ ! -f $COMPARE ]; then - cat <<-EOF - There is no compare program for this case - So, using UNIX 'diff' for compare program. - EOF - COMPARE="diff" - fi - COMPARE_LOGDIR="$LOGDIR_CUR/$KERNEL_VERSION_PRE" - COMPARE_LOGFILE="$COMPARE_LOGDIR/detail.log" - COMPARE_STATUSFILE="$COMPARE_LOGDIR/status" - - if [ ! -d $COMPARE_LOGDIR ]; then - mkdir -p $COMPARE_LOGDIR - fi - - ( - cd $COMPARE_LOGDIR - $COMPARE $LOGFILE_PRE $LOGFILE_CUR 2>&1 > $COMPARE_LOGFILE - if [ $? == 0 ]; then - echo "compare:TRUE" | tee $COMPARE_STATUSFILE - else - echo "compare:FAILURE" | tee $COMPARE_STATUSFILE - fi - ) -} - -rcs_ci () -{ - LAST_FUNCNAME=$FUNCNAME - ci -m_no_commment $LOGFILE_CUR -} - -rcs_co () -{ - LAST_FUNCNAME=$FUNCNAME - co -l $LOGFILE_CUR -} Deleted: trunk/crackerjack/tree.log =================================================================== --- trunk/crackerjack/tree.log 2006-12-26 06:02:28 UTC (rev 96) +++ trunk/crackerjack/tree.log 2006-12-26 06:20:00 UTC (rev 97) @@ -1,36 +0,0 @@ -results -|-- 2.6.18 -| |-- getpid -| | `-- get_pid_range -| | |-- detail.log -| | `-- result.log -| `-- nanosleep -| |-- actual_sleep_time -| | |-- detail.log -| | `-- result.log -| `-- error_test -| |-- detail.log -| `-- result.log -`-- 2.6.19 - |-- getpid - | `-- get_pid_range - | |-- 2.6.18 - | | |-- detail.log - | | `-- status - | |-- detail.log - | `-- result.log - `-- nanosleep - |-- actual_sleep_time - | |-- 2.6.18 - | | |-- detail.log - | | `-- status - | |-- detail.log - | `-- result.log - `-- error_test - |-- 2.6.18 - | |-- detail.log - | `-- status - |-- detail.log - `-- tp > result.log.T 2> detail.log && mv result.log.T result.log - -15 directories, 18 files This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ky...@us...> - 2007-01-19 06:43:57
|
Revision: 121 http://svn.sourceforge.net/crackerjack/?rev=121&view=rev Author: kyagi Date: 2007-01-18 22:43:53 -0800 (Thu, 18 Jan 2007) Log Message: ----------- mv deprecated documents Added Paths: ----------- trunk/crackerjack/old/ trunk/crackerjack/old/CREDITS trunk/crackerjack/old/INSTALL trunk/crackerjack/old/README Copied: trunk/crackerjack/old/CREDITS (from rev 111, trunk/crackerjack/CREDITS) =================================================================== Copied: trunk/crackerjack/old/INSTALL (from rev 111, trunk/crackerjack/INSTALL) =================================================================== Copied: trunk/crackerjack/old/README (from rev 111, trunk/crackerjack/README) =================================================================== --- trunk/crackerjack/old/README (rev 0) +++ trunk/crackerjack/old/README 2007-01-19 06:43:53 UTC (rev 121) @@ -0,0 +1,60 @@ + +Crackerjack Project + + +The latest source is always available at: +https://svn.sourceforge.net/svnroot/crackerjack/trunk + +About the Crackerjack Project +Crackerjack is the project which aims to discover system calls +difference between some kernel versions. +For further information regarding this notice, see: +http://sourceforge.net/projects/crackerjack + + +In the Package +-------------- +Here is a short description of what is included in this package + +INSTALL + Installation documentation and quick start guide + +README + This document + +CREDITS + Credits to those who have contributed to the project. + +COPYING + GNU General Public License + +ChangeLog + An incomplete list of changes to the project. We will try harder to + keep this up to date. + +Makefile + Top level make file for Crackerjack. + +frontend.sh + A simple script to run all of the tests in sequential order and + report the overall result. + +functions + Shell functions for frontend.sh + +doc/* + Documentation for the project including man pages for some of the + tools & library functions, as well as descriptions of every test. + +include/* +lib/* + The include and lib directories contain headers and codes for common + routines used by many of the tests. We have tried to keep this to a + minimum. + +results/* + Contains all tests that run under the LTP as well as the "bin" + directory, which has hardlinks to all the test executables. + +Questions and comments should be sent to the Crackerjack mailing list +located on the project page. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ky...@us...> - 2007-03-06 09:59:15
|
Revision: 335 http://svn.sourceforge.net/crackerjack/?rev=335&view=rev Author: kyagi Date: 2007-03-06 01:59:00 -0800 (Tue, 06 Mar 2007) Log Message: ----------- modify Modified Paths: -------------- trunk/crackerjack/crackerjack trunk/crackerjack/lib/Checkenv.rb trunk/crackerjack/lib/CompareProgram.rb trunk/crackerjack/lib/Framework.rb trunk/crackerjack/lib/Message.rb trunk/crackerjack/lib/Option.rb trunk/crackerjack/rails/crackerjack/app/controllers/top_controller.rb Added Paths: ----------- trunk/crackerjack/lib/Conv.rb Modified: trunk/crackerjack/crackerjack =================================================================== --- trunk/crackerjack/crackerjack 2007-03-05 09:35:52 UTC (rev 334) +++ trunk/crackerjack/crackerjack 2007-03-06 09:59:00 UTC (rev 335) @@ -18,14 +18,14 @@ require 'Checkenv' require 'pp' -Version = "Crackerjack 0.8.8 (2007/02/08)" +Version = "Crackerjack 0.9.0 (2007/03/06)" begin include Message include Checkenv include Framework - check_environ() + Checkenv.checkall() options = Option.parse(ARGV) if (options.version) @@ -38,7 +38,7 @@ tp_list = create_tp_list(options.config) exe_tp_list(tp_list, options.btrax) elsif (options.compare) - cp_list = create_cp_list(options.compare, options.compare_kerv, options.compare_id) + cp_list = create_cp_list(options.compare) exe_cp_list(cp_list, options.expected) elsif (options.expected) # Non-Interactive mode: register @@ -50,12 +50,13 @@ end exit 0 -rescue OptionError +rescue CheckenvError => exception + msg_err(exception) exit 1 -rescue OptionParser::MissingArgument => exception - msg_err "#{exception.message}" - exit 1 +rescue OptionError, OptionParser::InvalidOption => exception + msg_err(exception) + exit 2 rescue => exception - msg_exception(exception) + msg_trace(exception) exit 127 end Modified: trunk/crackerjack/lib/Checkenv.rb =================================================================== --- trunk/crackerjack/lib/Checkenv.rb 2007-03-05 09:35:52 UTC (rev 334) +++ trunk/crackerjack/lib/Checkenv.rb 2007-03-06 09:59:00 UTC (rev 335) @@ -1,5 +1,5 @@ # -# = CheckEnv.rb: Check environment Module +# = Checkenv.rb: Check environment Module # # Copyright (C) 2007, Miracle Linux Corporation # Author:: Kazuo Yagi @@ -9,20 +9,21 @@ require 'Message' include Message +class CheckenvError < StandardError;end + module Checkenv - def check_environ() + def checkall() unless (are_u_root?()) - raise "You need to be root, try again after su -" - #msg "You need to be root, try again after su -" - #exit 1 + raise CheckenvError, "You need to be root, try again after su -" end - #unless (is_relay_dir?()) - # msg "You must make directory, /mnt/relay" - #end + # FIXME: Comment out this part if you check envrionment for btrax. + # unless (is_relay_dir?()) + # raise CheckenvError, "You must make directory, /mnt/relay" + # end end - module_function:check_environ + module_function:checkall def is_relay_dir?() if (File.exist?("/mnt/relay")) Modified: trunk/crackerjack/lib/CompareProgram.rb =================================================================== --- trunk/crackerjack/lib/CompareProgram.rb 2007-03-05 09:35:52 UTC (rev 334) +++ trunk/crackerjack/lib/CompareProgram.rb 2007-03-06 09:59:00 UTC (rev 335) @@ -7,14 +7,14 @@ # require 'Message' +require 'Conv' class CompareProgram < CjkProgram attr_accessor:is_ok attr_accessor:is_def - # 2007.02.28 add - attr_accessor:log_expected include Message + include Conv @@count_instance = 0 @@count_execute = 0 @@ -22,16 +22,13 @@ def initialize(filename, *arguments) super - @syscallname = @arguments[1].sub(%r!.*\d{14}/!,'').sub(%r!/tout.log$!, '') - id = @arguments[1].slice(%r!(\d{14})!, 1) + @syscallname = log2syscallname(@arguments[0]) + id = log2id(@arguments[0]) @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('/') - # 2007.02.28 add - @log_expected = @arguments[1].sub("tout.log", "tout.log.expected") - @is_ok = nil @is_def = nil @@ -43,29 +40,28 @@ if (@@count_execute == 1) printf("%-10s %-30s %-15s %-15s\n", "Action", "SystemCallName", "CompareProgram", "Judge") - 80.times { printf_flush "-" } - printf_flush("\n") + 80.times { print "-" } + print "\n" end printf("%-10s %-30s ", "C", @syscallname) re = Regexp.new('.*bin/default-compare$') if (@filename =~ re) @is_def ="DEF" - printf_flush("%-15s", "DEF") + printf("%-15s", "DEF") else @is_def ="OWN" - printf_flush("%-15s", "OWN") + printf("%-15s", "OWN") end + STDOUT.flush - kerv = @arguments[0].slice(%r!expected/(.*)/\d{14}!, 1) - id = @arguments[0].slice(%r!expected/.*/(\d{14})!, 1) - @log_stdout = [@log_stdout, kerv, id].join(".") + exp_kerv = log2kerv(@arguments[1]) + exp_id = log2id(@arguments[1]) + @log_stdout = [@log_stdout, exp_kerv, exp_id].join(".") + @log_stderr = [@log_stderr, exp_kerv, exp_id].join(".") super() - File.delete(@log_expected) if (File.exist?(@log_expected)) - File.symlink(File.readlink(@arguments[0]), @log_expected) - if (judge(@log_stdout)) msg "compatible\n", :cyan else Added: trunk/crackerjack/lib/Conv.rb =================================================================== --- trunk/crackerjack/lib/Conv.rb (rev 0) +++ trunk/crackerjack/lib/Conv.rb 2007-03-06 09:59:00 UTC (rev 335) @@ -0,0 +1,24 @@ +# +# = Conv.rb: Convert module +# +# Copyright (C) 2007, Miracle Linux Corporation +# Author:: Kazuo Yagi <ky...@mi...> +# Documentation:: +# + +module Conv + def log2kerv(path) + return File.expand_path(path).sub(%r!.*/(.*)/\d{14}/.*!, '\1') + end + module_function:log2kerv + + def log2id(path) + return File.expand_path(path).sub(%r!.*(\d{14}).*!, '\1') + end + module_function:log2id + + def log2syscallname(path) + return File.dirname(File.expand_path(path)).sub(%r!.*\d{14}/(.*)!, '\1') + end + module_function:log2syscallname +end Modified: trunk/crackerjack/lib/Framework.rb =================================================================== --- trunk/crackerjack/lib/Framework.rb 2007-03-05 09:35:52 UTC (rev 334) +++ trunk/crackerjack/lib/Framework.rb 2007-03-06 09:59:00 UTC (rev 335) @@ -8,14 +8,17 @@ require 'find' require 'Message' +require 'Conv' module Framework include Message + include Conv def run_interactive() tp_all = find_tp() event_loop(tp_all) end + module_function:run_interactive def print_tp_list tp_all = find_tp() @@ -174,11 +177,8 @@ tp_list.push(tp) end end - rescue Errno::ENOENT => err - msg err - exit 1 - ensure - f.close + rescue + raise end tp_list end # def @@ -190,27 +190,53 @@ end end module_function:exe_tp_list - - def create_cp_list(file, kerv, id) + + def create_cp_list(array) cp_list = Array.new() - File.open(file) do |f| - f.each do |result_current| - result_current.chomp! - filename = result_current.sub(%r!results/.*/\d{14}!, "testcases").sub(%r!result_current.log!, "compare") - unless (File.exists?(filename)) - filename = [Dir.pwd, "bin", "default-compare"].join('/') + cur_kerv, cur_id, exp_kerv, exp_id = array[0 .. 3] + cp_list = Array.new() + + dir_cur = File.join(Dir.pwd, "results", cur_kerv, cur_id) + dir_exp = File.join(Dir.pwd, "expected", exp_kerv, exp_id) + + Find.find(dir_cur) do |f| + if (File.basename(f) == "tout.log") + cp_prog = File.join(Dir.pwd, "testcases", log2syscallname(f), "compare") + unless (File.exists?(cp_prog)) + cp_prog = File.join(Dir.pwd, "bin", "default-compare") end - #expected_result = result_current.sub(%r!results/.*/\d{14}!, "expected") - #result_expected = result_current.sub(%r!/results/(\d.*/\d{14})!, '/expected/\1') - result_expected = result_current.sub(%r!/results/\d.*/\d{14}!, "/expected/#{kerv}/#{id}") - puts result_expected - cp = CompareProgram.new(filename, result_expected, result_current) + result_current = File.expand_path(f) + result_expected = File.join(Dir.pwd, "expected", exp_kerv, exp_id, log2syscallname(f), "tout.log") + #puts result_current + #puts result_expected + cp = CompareProgram.new(cp_prog, result_current, result_expected) cp_list.push(cp) end end cp_list end module_function:create_cp_list + +# def create_cp_list(file, kerv, id) +# cp_list = Array.new() +# File.open(file) do |f| +# f.each do |result_current| +# result_current.chomp! +# filename = result_current.sub(%r!results/.*/\d{14}!, "testcases").sub(%r!result_current.log!, "compare") +# unless (File.exists?(filename)) +# filename = [Dir.pwd, "bin", "default-compare"].join('/') +# end +# #expected_result = result_current.sub(%r!results/.*/\d{14}!, "expected") +# #result_expected = result_current.sub(%r!/results/(\d.*/\d{14})!, '/expected/\1') +# result_expected = result_current.sub(%r!/results/\d.*/\d{14}!, "/expected/#{kerv}/#{id}") +# puts result_expected +# cp = CompareProgram.new(filename, result_expected, result_current) +# cp_list.push(cp) +# end +# end +# cp_list +# end +# module_function:create_cp_list def exe_cp_list(cp_list, is_register) cp_list.each do |cp| Modified: trunk/crackerjack/lib/Message.rb =================================================================== --- trunk/crackerjack/lib/Message.rb 2007-03-05 09:35:52 UTC (rev 334) +++ trunk/crackerjack/lib/Message.rb 2007-03-06 09:59:00 UTC (rev 335) @@ -7,23 +7,16 @@ # module Message - Header = "crackerjack" - Prompt = "cjk> " - Footer = "Send bug report to ky...@mi..." - Color = { :def => "", :red => "\033[0;31m", :green => "\033[0;32m", :brown => "\033[0;33m", :blue => "\033[0;34m", :purple => "\033[0;35m", :cyan => "\033[0;36m", :gray => "\033[0;37m" } - color_r = ["\033[7;31m", "\033[7;32m", "\033[7;33m", - "\033[7;34m", "\033[7;35m", "\033[7;36m", "\033[7;37m"] - color_u = ["\033[4;31m", "\033[4;32m", "\033[4;33m", - "\033[4;34m", "\033[4;35m", "\033[4;36m", "\033[4;37m"] - def printf_flush(*arg) - printf(*arg) - STDOUT.flush - end +# def printf_flush(*arg) +# printf(*arg) +# STDOUT.flush +# end +# module_function:printf_flush def msg(str, color=:def) if (color == :def) @@ -34,29 +27,33 @@ STDOUT.print Color[color] + str + suffix STDOUT.flush end + module_function:msg def msg_wrn(str) STDOUT.puts "WARNING: " + str STDOUT.flush end + module_function:msg_wrn - def msg_err(str) - STDERR.puts "ERROR: " + str + def msg_err(exception) + STDERR.puts "ERROR: " + exception.message STDOUT.flush end + module_function:msg_err - def msg_exception(exception) - STDERR.puts "" - STDERR.puts "=> crackerjack error trace" + def msg_trace(exception) + STDERR.puts "ERROR: " + exception.message + STDERR.puts "=> TRACE START" STDERR.puts " CLASS: " + exception.class.to_s STDERR.puts " MESSAGE: " + exception.message - STDERR.flush exception.backtrace.each do |stack| STDERR.print " BACKTRACE: " STDERR.puts stack STDERR.flush end - STDERR.puts "<= crackerjack error trace" + STDERR.puts "<= TRACE END" STDERR.flush end + module_function:msg_trace + end Modified: trunk/crackerjack/lib/Option.rb =================================================================== --- trunk/crackerjack/lib/Option.rb 2007-03-05 09:35:52 UTC (rev 334) +++ trunk/crackerjack/lib/Option.rb 2007-03-06 09:59:00 UTC (rev 335) @@ -12,86 +12,88 @@ class OptionError < StandardError;end class Option + def self.is_btrax_installed? + if (`which bt_collect_log` != "") + true + else + false + end + end + private_class_method:is_btrax_installed? + def self.parse(args) - begin - options = OpenStruct.new - opts = OptionParser.new do |opts| + options = OpenStruct.new + opts = OptionParser.new do |opts| - opts.on("-l", "--list") do |val| - options.list = true - end + opts.on("-l", "--list") do |val| + options.list = true + end - opts.on("-x STR", "--execute STR", String) do |val| - options.config = val - unless File.exists?(options.config) - raise OptionError, "config file not found" - end - if (options.compare != nil || options.expected != nil) - raise OptionError, "wrong combination of options." - end + opts.on("-x STR", "--execute STR", String) do |val| + options.config = val + unless File.exists?(options.config) + raise OptionError, "config file not found" end - - opts.on("-c x,y,z", "--compare x,y,z", Array) do |val| - val.each {|x| puts x } - options.compare = val[0] - options.compare_kerv = val[1] - options.compare_id = val[2] - - if (options.config != nil || options.expected != nil) - raise OptionError, "wrong combination of options." - end - unless File.exists?(options.compare) - raise OptionError, "file list not found" - end + if (options.compare != nil || options.expected != nil) + raise OptionError, "wrong combination of options." end + end - opts.on("-e STR", "--expected STR", String) do |val| - options.expected = val - if (options.config != nil || options.compare != nil) - raise OptionError, "wrong combination of options." - end - unless File.exists?(options.expected) - raise OptionError, "file list not found" - end + opts.on("-c cur_kerv,cur_id,exp_kerv,exp_id", "--compare cur_kerv,cur_id,exp_kerv,exp_id", Array) do |val| + if (val.length != 4) + raise OptionError, "the number of arguments must be 4." end - - opts.on("-b", "--btrax", String) do |val| - unless (is_btrax_installed?()) - raise OptionError, "btrax is not installed" - end - if (options.expected != nil || options.compare != nil) - raise OptionError, "wrong combination of options." - end - options.btrax = true + options.compare = val + + cur_kerv, cur_id, exp_kerv, exp_id = val[0 .. 3] + dir_cur = File.join(Dir.pwd, "results", cur_kerv, cur_id) + dir_exp = File.join(Dir.pwd, "expected", exp_kerv, exp_id) + unless (File.exists?(dir_cur)) + raise OptionError, "no data #{dir_cur}" end + + unless (File.exists?(dir_exp)) + raise OptionError, "no data #{dir_exp}" + end + + if (options.config != nil || options.expected != nil) + raise OptionError, "wrong combination of options." + end + #unless File.exists?(options.compare) + # raise OptionError, "file list not found" + #end + end - opts.on("-h", "--help", String) do |val| - options.help = true + opts.on("-e STR", "--expected STR", String) do |val| + options.expected = val + if (options.config != nil || options.compare != nil) + raise OptionError, "wrong combination of options." end + unless File.exists?(options.expected) + raise OptionError, "file list not found" + end + end - opts.on("-v", "--version", String) do |val| - options.version = true + opts.on("-b", "--btrax", String) do |val| + unless (is_btrax_installed?()) + raise OptionError, "btrax is not installed" end + if (options.expected != nil || options.compare != nil) + raise OptionError, "wrong combination of options." + end + options.btrax = true end - opts.parse!(args) - options - end # self.parse(args) + opts.on("-h", "--help", String) do |val| + options.help = true + end - rescue OptionError => exception - msg_err "#{exception.message}" - raise - rescue - raise - end - - def self.is_btrax_installed? - if (`which bt_collect_log` != "") - true - else - false + opts.on("-v", "--version", String) do |val| + options.version = true + end end - end - private_class_method:is_btrax_installed? - + opts.parse!(args) + options + end # self.parse(args) + end # class Modified: trunk/crackerjack/rails/crackerjack/app/controllers/top_controller.rb =================================================================== --- trunk/crackerjack/rails/crackerjack/app/controllers/top_controller.rb 2007-03-05 09:35:52 UTC (rev 334) +++ trunk/crackerjack/rails/crackerjack/app/controllers/top_controller.rb 2007-03-06 09:59:00 UTC (rev 335) @@ -40,7 +40,7 @@ File.open(@@order_file, "a+") do |f| f.puts @order end - redirect_to (:action=>'list') + redirect_to(:action=>'list') end def confirm @@ -56,7 +56,7 @@ def clear File.delete(@@order_file) if File.exists?(@@order_file) - redirect_to (:action=>'list') + redirect_to(:action=>'list') end def execute This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
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. |
From: <ky...@us...> - 2007-03-08 07:06:00
|
Revision: 340 http://svn.sourceforge.net/crackerjack/?rev=340&view=rev Author: kyagi Date: 2007-03-07 23:05:58 -0800 (Wed, 07 Mar 2007) Log Message: ----------- modify Modified Paths: -------------- trunk/crackerjack/lib/CompareProgram.rb trunk/crackerjack/lib/Option.rb trunk/crackerjack/make_report.rb Modified: trunk/crackerjack/lib/CompareProgram.rb =================================================================== --- trunk/crackerjack/lib/CompareProgram.rb 2007-03-08 05:36:54 UTC (rev 339) +++ trunk/crackerjack/lib/CompareProgram.rb 2007-03-08 07:05:58 UTC (rev 340) @@ -25,9 +25,9 @@ @syscallname = log2syscallname(@arguments[0]) id = log2id(@arguments[0]) - @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('/') + #@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('/') @@ -66,8 +66,16 @@ @log_stderr = [@log_stderr, exp_kerv, exp_id].join(".") super() - - if (judge(@log_stdout)) + + if(! File.exists?(@arguments[0])) + msg "not found\n", :gray + log = @arguments[0].sub(@dir_root, '').sub(%r!^/!, '') + msg " => Confirm file: #{log}\n", :gray + elsif (! File.exists?(@arguments[1])) + msg "not found\n", :gray + log = @arguments[1].sub(@dir_root, '').sub(%r!^/!, '') + msg " => Confirm file: #{log}\n", :gray + elsif (judge(@log_stdout)) msg "compatible\n", :cyan else msg "regression occured\n", :red Modified: trunk/crackerjack/lib/Option.rb =================================================================== --- trunk/crackerjack/lib/Option.rb 2007-03-08 05:36:54 UTC (rev 339) +++ trunk/crackerjack/lib/Option.rb 2007-03-08 07:05:58 UTC (rev 340) @@ -49,11 +49,11 @@ dir_cur = File.join(Dir.pwd, "results", cur_kerv, cur_id) dir_exp = File.join(Dir.pwd, "expected", exp_kerv, exp_id) unless (File.exists?(dir_cur)) - raise OptionError, "no data #{dir_cur}" + raise OptionError, "no directory #{dir_cur}" end unless (File.exists?(dir_exp)) - raise OptionError, "no data #{dir_exp}" + raise OptionError, "no directory #{dir_exp}" end if (options.config != nil || options.expected != nil) Modified: trunk/crackerjack/make_report.rb =================================================================== --- trunk/crackerjack/make_report.rb 2007-03-08 05:36:54 UTC (rev 339) +++ trunk/crackerjack/make_report.rb 2007-03-08 07:05:58 UTC (rev 340) @@ -6,16 +6,19 @@ # sub routine ###################################################################### def judge(log) - File.open(log) do |f| - line = f.gets.chomp - if (line == "OK") - @is_ok = "OK" - return true - elsif(line == "NG") - @is_ok = "NG" - return false + begin + File.open(log) do |f| + line = f.gets.chomp + if (line == "OK") + return "OK" + elsif(line == "NG") + return "NG" + else + return "NF" + end end - false + rescue SystemCallError::Errno::ENOENT + end end @@ -113,18 +116,20 @@ print "<tr><td align=\"center\">---</td>" he.each do |e_kerv, e_id| - print "<td align=\"center\">", "(E)#{e_kerv},#{e_id[-1]}", "</td>" + #print "<td align=\"center\">", "(E)#{e_kerv},#{e_id[-1]}", "</td>" + print "<td align=\"center\">", "(E)#{e_kerv}", "</td>" end print "</tr>", "\n" hr.each do |r_kerv, r_id| - print "<tr><td align=\"center\">(R)#{r_kerv}, #{r_id[-1]}</td>" + #print "<tr><td align=\"center\">(R)#{r_kerv}, #{r_id[-1]}</td>" + print "<tr><td align=\"center\">(R)#{r_kerv}</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\.#{e_kerv}\.#{e_id[-1]}/) - if (judge(f) == false) + if (judge(f) == "NG") flag = "NG" end end @@ -135,9 +140,9 @@ else 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>" + print "<td align=\"center\" style=\"background:#4682b4\"><a href=\"#{filename}.html\">#{flag}</a></td>" else - print "<td align=\"center\" style=\"background:#ff0000\"><a href=\"#{filename}.html\">#{flag}</a></td>" + print "<td align=\"center\" style=\"background:#dc143c\"><a href=\"#{filename}.html\">#{flag}</a></td>" end end end @@ -166,7 +171,8 @@ print "<td>Compatibility</td>" print "<td>Expected</td>" print "<td>Result</td>" - print "<td>Compare</td>" + print "<td>Compare STDOUT</td>" + print "<td>Compare STDERR</td>" print "<td>Comare Program</td></tr>" dir = File.join(Dir.pwd, "results", r_kerv, r_id[-1]) @@ -175,18 +181,28 @@ print "<tr>" syscallname = log2syscallname(f) print "<td>#{syscallname}</td>" - if (judge(f) == true) - print "<td>compatible</td>" + if (judge(f) == "OK") + print "<td style=\"background:#4682b4\">Compatible</td>" + elsif(judge(f) == "NF") + print "<td style=\"background:#c0c0c0\">Can't judge</td>" else - print "<td style=\"background:#ff0000\">regeression</td>" + print "<td style=\"background:#dc143c\">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>" + if File.exist?(link_exp) + print "<td><a href=\"#{link_exp}\">link</a></td>" + else + print "<td>Not found</td>" + end + 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>" + link_compare_out = f + print "<td><a href=\"#{link_compare_out}\">link</a></td>" + link_compare_err = f.sub('cout', 'cerr') + print "<td><a href=\"#{link_compare_err}\">link</a></td>" + label_cp = "User Defined" link_cp = File.join(Dir.pwd, "testcases", syscallname, "compare") unless (File.exists?(link_cp)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ky...@us...> - 2007-03-12 07:57:04
|
Revision: 348 http://svn.sourceforge.net/crackerjack/?rev=348&view=rev Author: kyagi Date: 2007-03-12 00:57:01 -0700 (Mon, 12 Mar 2007) Log Message: ----------- modify Modified Paths: -------------- trunk/crackerjack/lib/CompareProgram.rb trunk/crackerjack/make_report.rb Modified: trunk/crackerjack/lib/CompareProgram.rb =================================================================== --- trunk/crackerjack/lib/CompareProgram.rb 2007-03-09 04:38:28 UTC (rev 347) +++ trunk/crackerjack/lib/CompareProgram.rb 2007-03-12 07:57:01 UTC (rev 348) @@ -52,11 +52,11 @@ printf("%-10s %-30s ", "C", @syscallname) re = Regexp.new('.*bin/default-compare$') if (@filename =~ re) - @is_def ="DEF" - printf("%-15s", "DEF") + @is_def ="DF" + printf("%-15s", "DF") else - @is_def ="ORG" - printf("%-15s", "ORG") + @is_def ="UF" + printf("%-15s", "UF") end STDOUT.flush Modified: trunk/crackerjack/make_report.rb =================================================================== --- trunk/crackerjack/make_report.rb 2007-03-09 04:38:28 UTC (rev 347) +++ trunk/crackerjack/make_report.rb 2007-03-12 07:57:01 UTC (rev 348) @@ -140,9 +140,9 @@ else filename= [r_kerv, r_id[-1], e_kerv, e_id[-1]].join("-") if (flag == "OK") - print "<td align=\"center\" style=\"background:#4682b4\"><a href=\"html/#{filename}.html\">#{flag}</a></td>" + print "<td align=\"center\" style=\"background:#00ffff\"><a href=\"html/#{filename}.html\">#{flag}</a></td>" else - print "<td align=\"center\" style=\"background:#dc143c\"><a href=\"html/#{filename}.html\">#{flag}</a></td>" + print "<td align=\"center\" style=\"background:#ff00ff\"><a href=\"html/#{filename}.html\">#{flag}</a></td>" end end end @@ -181,19 +181,21 @@ #print "<tr>" syscallname = log2syscallname(f) if (judge(f) == "OK") - print "<tr style=\"background:#4682b4\">" + print "<tr style=\"background:#00ffff\">" print "<td>#{syscallname}</td>" - print "<td style=\"background:#4682b4\">Compatible</td>" + print "<td style=\"background:#00ffff\">Compatible</td>" elsif(judge(f) == "NF") print "<tr style=\"background:#c0c0c0\">" print "<td>#{syscallname}</td>" print "<td style=\"background:#c0c0c0\">Can't judge</td>" else - print "<tr style=\"background:#dc143c\">" + print "<tr style=\"background:#ff00ff\">" print "<td>#{syscallname}</td>" - print "<td style=\"background:#dc143c\">Regeression</td>" + print "<td style=\"background:#ff00ff\">Regeression</td>" end - link_exp = File.join(Dir.pwd, "expected",e_kerv, e_id[-1], log2syscallname(f), "tout.log").sub(Dir.pwd, '..') + #link_exp = File.join(Dir.pwd, "expected",e_kerv, e_id[-1], log2syscallname(f), "tout.log").sub(Dir.pwd, '..') + link_exp = File.join(Dir.pwd, "expected",e_kerv, e_id[-1], log2syscallname(f), "tout.log") + #link_exp = File.join("..", "expected",e_kerv, e_id[-1], log2syscallname(f), "tout.log") if File.exist?(link_exp) print "<td><a href=\"#{link_exp}\">link</a></td>" else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ky...@us...> - 2007-03-14 06:48:17
|
Revision: 364 http://svn.sourceforge.net/crackerjack/?rev=364&view=rev Author: kyagi Date: 2007-03-13 23:48:14 -0700 (Tue, 13 Mar 2007) Log Message: ----------- modify Modified Paths: -------------- trunk/crackerjack/lib/CompareProgram.rb trunk/crackerjack/make_report.rb trunk/crackerjack/rails/crackerjack/app/controllers/top_controller.rb trunk/crackerjack/rails/crackerjack/app/views/top/register.rhtml trunk/crackerjack/rails/crackerjack/config/environment.rb Modified: trunk/crackerjack/lib/CompareProgram.rb =================================================================== --- trunk/crackerjack/lib/CompareProgram.rb 2007-03-13 12:35:25 UTC (rev 363) +++ trunk/crackerjack/lib/CompareProgram.rb 2007-03-14 06:48:14 UTC (rev 364) @@ -30,9 +30,9 @@ #@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('/') + @log_stdout = [@dir_result, cur_kerv, id, @syscallname, "cout"].join('/') + @log_stderr = [@dir_result, cur_kerv, id, @syscallname, "cerr"].join('/') + @log_status = [@dir_result, cur_kerv, id, @syscallname, "cstatus"].join('/') @is_ok = nil @is_def = nil @@ -62,8 +62,8 @@ exp_kerv = log2kerv(@arguments[1]) exp_id = log2id(@arguments[1]) - @log_stdout = [@log_stdout, exp_kerv, exp_id].join(".") - @log_stderr = [@log_stderr, exp_kerv, exp_id].join(".") + @log_stdout = [@log_stdout, exp_kerv, exp_id, "log"].join(".") + @log_stderr = [@log_stderr, exp_kerv, exp_id, "log"].join(".") super() Modified: trunk/crackerjack/make_report.rb =================================================================== --- trunk/crackerjack/make_report.rb 2007-03-13 12:35:25 UTC (rev 363) +++ trunk/crackerjack/make_report.rb 2007-03-14 06:48:14 UTC (rev 364) @@ -39,13 +39,13 @@ isfind = judgements.find { |x| x == "NF" } if (isfind != nil) - linkname = "OK(include NF)" + linkname = "(OK)" end isfind = judgements.find { |x| x == "NG" } if (isfind != nil) if (r_kerv > e_kerv) - linkname = "NG(kaigokan)" + linkname = "(NG)" else linkname = "NG" end @@ -58,9 +58,9 @@ case linkname when "OK" bgcolor = "#00ffff" - when "OK(include NF)" + when "(OK)" bgcolor = "#e0ffff" - when "NG(kaigokan)" + when "(NG)" bgcolor = "#ee82ee" when "NG" bgcolor = "#ff00ff" @@ -176,7 +176,7 @@ judgements = Array.new() 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]}/) + if (File.basename(f) =~ /^cout\.#{e_kerv}\.#{e_id[-1]}\.log/) judgements.push(judge(f)) end end @@ -192,13 +192,15 @@ print "</tr>\n" end +print "</table>" +print "<p>(E) = Expected,(R) = Result</p>" +print "<table border=\"1\" cellpadding=\"5\" cellspacing=\"0\">" +print "<tr><td align=\"center\" style=\"background:#00ffff\">OK</td><td>It means OK</td></tr>" +print "<tr><td align=\"center\" style=\"background:#e0ffff\">(OK)</td><td>It means OK, but it contains any cases whose result compare program can't judge correctly</td></tr>" +print "<tr><td align=\"center\" style=\"background:#ff00ff\">NG</td><td>It means NG</td></tr>" +print "<tr><td align=\"center\" style=\"background:#ee82ee\">(NG)</td><td>It means NG, and not compatible upper version </td></tr>" +print "</table></body></html>" -print <<EOF -</table> -</body> -</html> -EOF - ## generate sub html def make_column_systemcall(file) @@ -248,14 +250,24 @@ print "<td>Comare Program</td></tr>" dir = File.join(Dir.pwd, "results", r_kerv, r_id[-1]) + + require 'fileutils' + FileUtils.cp("bin/default-compare", "bin/default-compare.txt") + Find.find(File.join(Dir.pwd, "testcases")) do |f| + if (File.basename(f) == "compare") + FileUtils.cp(f, f + ".txt") + end + end + Find.find(dir) do |f| - if (File.basename(f) =~ /^cout\.log\.#{e_kerv}\.#{e_id[-1]}/) + if (File.basename(f) =~ /^cout\.#{e_kerv}\.#{e_id[-1]}\.log/) #print "<tr>" syscallname = log2syscallname(f) make_column_systemcall(f) - link_result = f.sub(%r!cout.log.*!, 'tout.log').sub(Dir.pwd, '..') + #link_result = f.sub(%r!cout.*!, 'tout.log').sub(Dir.pwd, '..') + link_result = f.sub(%r!cout.*!, 'tout.log').sub(Dir.pwd, '') print "<td><a href=\"#{link_result}\">Log</a></td>" link_exp = File.join(Dir.pwd, "expected",e_kerv, e_id[-1], log2syscallname(f), "tout.log") @@ -273,10 +285,11 @@ print "<td><a href=\"#{link_compare_err}\">Log</a></td>" label_cp = "user defined" - link_cp = File.join(Dir.pwd, "testcases", syscallname, "compare") + + link_cp = File.join(Dir.pwd, "testcases", syscallname, "compare.txt") unless (File.exists?(link_cp)) label_cp = "default" - link_cp = File.join(Dir.pwd, "bin", "default-compare") + link_cp = File.join(Dir.pwd, "bin", "default-compare.txt") end #make_sub_link("gui", label_cp, link_cp) link_cp.sub!(Dir.pwd, '..') Modified: trunk/crackerjack/rails/crackerjack/app/controllers/top_controller.rb =================================================================== --- trunk/crackerjack/rails/crackerjack/app/controllers/top_controller.rb 2007-03-13 12:35:25 UTC (rev 363) +++ trunk/crackerjack/rails/crackerjack/app/controllers/top_controller.rb 2007-03-14 06:48:14 UTC (rev 364) @@ -66,9 +66,13 @@ def execute @tp_list = Array.new() TestProgram.set_current(File.join(@@dir_pwd, ".current")) - Dir.chdir(@@dir_pwd) do - @tp_list = create_tp_list(@@order_file) - exe_tp_list(@tp_list, nil) + begin + Dir.chdir(@@dir_pwd) do + @tp_list = create_tp_list(@@order_file) + exe_tp_list(@tp_list, nil) + end + rescue Errno::ENOENT + @tp_list end @tp_list end Modified: trunk/crackerjack/rails/crackerjack/app/views/top/register.rhtml =================================================================== --- trunk/crackerjack/rails/crackerjack/app/views/top/register.rhtml 2007-03-13 12:35:25 UTC (rev 363) +++ trunk/crackerjack/rails/crackerjack/app/views/top/register.rhtml 2007-03-14 06:48:14 UTC (rev 364) @@ -1,10 +1,10 @@ <p>update expecte result </p> -<table border="0" cellpadding="5" cellspacing="0"> +<table border="1" cellpadding="5" cellspacing="0"> <tr> - <th width="150">syscallname</th> - <th width="150">id</th> - <th width="150">expected result</th> + <th width="150">System Call Name</th> + <th width="150">Id</th> + <th width="150">Expected</th> </tr> <% @rg_list.each do |rg| %> <tr> @@ -14,7 +14,7 @@ <%= rg.slice(%r!.*(\d{14}).*!,1) %> </td> <td> - <%= link_to("tout.log", {:action=>'view_log', :arg=>rg}, nil) %> + <%= link_to("Log", {:action=>'view_log', :arg=>rg}, nil) %> </td> </tr> <% end %> Modified: trunk/crackerjack/rails/crackerjack/config/environment.rb =================================================================== --- trunk/crackerjack/rails/crackerjack/config/environment.rb 2007-03-13 12:35:25 UTC (rev 363) +++ trunk/crackerjack/rails/crackerjack/config/environment.rb 2007-03-14 06:48:14 UTC (rev 364) @@ -50,4 +50,4 @@ # inflect.uncountable %w( fish sheep ) # end -# Include your application configuration below \ No newline at end of file +# Include your application configuration below This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ky...@us...> - 2007-03-15 09:04:34
|
Revision: 369 http://svn.sourceforge.net/crackerjack/?rev=369&view=rev Author: kyagi Date: 2007-03-15 02:04:32 -0700 (Thu, 15 Mar 2007) Log Message: ----------- modify Added Paths: ----------- trunk/crackerjack/crackerjack-makereport-html trunk/crackerjack/crackerjack-makereport-rhtml Added: trunk/crackerjack/crackerjack-makereport-html =================================================================== --- trunk/crackerjack/crackerjack-makereport-html (rev 0) +++ trunk/crackerjack/crackerjack-makereport-html 2007-03-15 09:04:32 UTC (rev 369) @@ -0,0 +1,305 @@ +#!/usr/bin/env ruby + +require 'find' + +###################################################################### +# sub routine +###################################################################### +def judge(log) + begin + File.open(log) do |f| + line = f.gets.chomp + if (line == "OK") + return "OK" + elsif(line == "NG") + return "NG" + else + return "NF" + end + end + rescue Errno::ENOENT + #return "NF" + end +end + +def log2kerv(path) + return File.expand_path(path).sub(%r!.*/(.*)/\d{14}/.*!, '\1') +end + +def log2id(path) + return File.expand_path(path).sub(%r!.*(\d{14}).*!, '\1') +end + +def log2syscallname(path) + return File.dirname(File.expand_path(path)).sub(%r!.*\d{14}/(.*)!, '\1') +end + +def set_linkname(judgements, r_kerv, e_kerv) + linkname = "OK" + + isfind = judgements.find { |x| x == "NF" } + if (isfind != nil) + linkname = "(OK)" + end + + isfind = judgements.find { |x| x == "NG" } + if (isfind != nil) + if (r_kerv > e_kerv) + linkname = "(NG)" + else + linkname = "NG" + end + end + + return linkname +end + +def make_top_link(ui, linkname, filename) + case linkname + when "OK" + bgcolor = "#00ffff" + when "(OK)" + bgcolor = "#e0ffff" + when "(NG)" + bgcolor = "#ee82ee" + when "NG" + bgcolor = "#ff00ff" + else + bgcolor = "#ffffff" + end + + if (ui == "gui") + print "<td align=\"center\" style=\"background:#{bgcolor}\">" + print "<%= link_to(\"#{linkname}\", {:action=>'view_log', :arg=>\"#{filename}\"}, nil) %>" + print "</td>" + elsif (ui == "cui") + print "<td align=\"center\" style=\"background:#{bgcolor}\"><a href=\"#{filename}\">#{linkname}</a></td>" + end +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.6.20] = [200703..., 200704..., 200705...] +# he[2.4.10] = [200703..., 200704..., 200705...] +# he[2.6.15] = [200703..., 200704..., 200705...] +# he[2.6.20] = [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.sort.each do |r_kerv, r_id| + he.sort.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("index.html") + +print <<EOF +<html> +<head><title>report</title></head> +<body> +<table border="1" cellpadding="5" cellspacing="0"> +EOF + +print "<tr><td align=\"center\">---</td>" +he.sort.each do |e_kerv, e_id| + #print "<td align=\"center\">", "(E)#{e_kerv},#{e_id[-1]}", "</td>" + print "<th align=\"center\">", "(E)#{e_kerv}", "</th>" +end +print "</tr>", "\n" + +hr.sort.each do |r_kerv, r_id| + #print "<tr><th align=\"center\">(R)#{r_kerv}, #{r_id[-1]}</th>" + print "<tr><th align=\"center\">(R)#{r_kerv}</th>" + he.sort.each do |e_kerv, e_id| + if (r_kerv == e_kerv) + print "<td align=\"center\">---</td>" + next + end + + judgements = Array.new() + dir = File.join(Dir.pwd, "results", r_kerv, r_id[-1]) + Find.find(dir) do |f| + if (File.basename(f) =~ /^cout\.#{e_kerv}\.#{e_id[-1]}\.log/) + judgements.push(judge(f)) + end + end + + linkname = set_linkname(judgements, r_kerv, e_kerv) + + filename = [r_kerv, r_id[-1], e_kerv, e_id[-1]].join("-") + filename = File.join(Dir.pwd, "html", "#{filename}.html") + + make_top_link("cui", linkname, filename) + + end + print "</tr>\n" +end + +print "</table>" +print "<p>(E) = Expected,(R) = Result</p>" +print "<table border=\"1\" cellpadding=\"5\" cellspacing=\"0\">" +print "<tr><td align=\"center\" style=\"background:#00ffff\">OK</td><td>It means OK</td></tr>" +print "<tr><td align=\"center\" style=\"background:#e0ffff\">(OK)</td><td>It means OK, but it contains any cases whose result compare program can't judge correctly</td></tr>" +print "<tr><td align=\"center\" style=\"background:#ff00ff\">NG</td><td>It means NG</td></tr>" +print "<tr><td align=\"center\" style=\"background:#ee82ee\">(NG)</td><td>It means NG, and not compatible upper version </td></tr>" +print "</table></body></html>" + +## generate sub html + +def make_column_systemcall(file) + syscallname = log2syscallname(file) + judgement = judge(file) + if (judgement == "OK") + print "<tr style=\"background:#00ffff\">" + print "<td>#{syscallname}</td>" + print "<td style=\"background:#00ffff\">Compatible</td>" + elsif(judgement == "NG") + print "<tr style=\"background:#ff00ff\">" + print "<td>#{syscallname}</td>" + print "<td style=\"background:#ff00ff\">Regeression</td>" + else + print "<tr style=\"background:#c0c0c0\">" + print "<td>#{syscallname}</td>" + print "<td style=\"background:#c0c0c0\">Can't judge</td>" + end +end + +def make_sub_link(ui, linkname, filename) + if (ui == "gui") + print "<td align=\"center\">" + print "<%= link_to(\"#{linkname}\", {:action=>'view_log', :arg=>\"#{filename}\"}, nil) %>" + print "</td>" + elsif (ui == "cui") + print "<td align=\"center\"><a href=\"html/#{filename}\">#{linkname}</a></td>" + end +end + +hr.sort.each do |r_kerv, r_id| + + he.sort.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("html/#{filename}.html") + print "<html><head><title>#{filename}report</title></head><body>" + print "<table border=\"1\" cellpadding=\"5\" cellspacing=\"0\">" + print "<tr><th rowspan=\"2\">System Call Name</th>" + print "<th rowspan=\"2\">Regression</th>" + print "<th>Actual</th>" + print "<th>Expected</th>" + print "<th colspan=\"2\">Compare</th>" + print "<th rowspan=\"2\">Comare Program</th></tr>" + print "<th>Result</th>" + print "<th>Result</th>" + print "<th>Result</th>" + print "<th>Log</th>" + + dir = File.join(Dir.pwd, "results", r_kerv, r_id[-1]) + + require 'fileutils' + FileUtils.cp("bin/default-compare", "bin/default-compare.txt") + Find.find(File.join(Dir.pwd, "testcases")) do |f| + if (File.basename(f) == "compare") + FileUtils.cp(f, f + ".txt") + end + end + + Find.find(dir) do |f| + if (File.basename(f) =~ /^cout\.#{e_kerv}\.#{e_id[-1]}\.log/) + #print "<tr>" + syscallname = log2syscallname(f) + + make_column_systemcall(f) + + #link_result = f.sub(%r!cout.*!, 'tout.log').sub(Dir.pwd, '..') + link_result = f.sub(%r!cout.*!, 'tout.log').sub(Dir.pwd, '..') + print "<td><a href=\"#{link_result}\">Log</a></td>" + + link_exp = File.join(Dir.pwd, "expected",e_kerv, e_id[-1], log2syscallname(f), "tout.log") + if File.exist?(link_exp) + link_exp.sub!(Dir.pwd, '..') + print "<td><a href=\"#{link_exp}\">Log</a></td>" + else + print "<td>Not found</td>" + end + + link_compare_out = f.sub(Dir.pwd, '..') + print "<td><a href=\"#{link_compare_out}\">Log</a></td>" + + link_compare_err = f.sub('cout', 'cerr').sub(Dir.pwd, '..') + print "<td><a href=\"#{link_compare_err}\">Log</a></td>" + + label_cp = "user defined" + + link_cp = File.join(Dir.pwd, "testcases", syscallname, "compare.txt") + unless (File.exists?(link_cp)) + label_cp = "default" + link_cp = File.join(Dir.pwd, "bin", "default-compare.txt") + end + #make_sub_link("gui", label_cp, link_cp) + link_cp.sub!(Dir.pwd, '..') + print "<td><a href=\"#{link_cp}\">#{label_cp}</a></td></tr>" + end + end + print "</table></body></html>" + end + +end Property changes on: trunk/crackerjack/crackerjack-makereport-html ___________________________________________________________________ Name: svn:executable + * Copied: trunk/crackerjack/crackerjack-makereport-rhtml (from rev 365, trunk/crackerjack/make_report.rb) =================================================================== --- trunk/crackerjack/crackerjack-makereport-rhtml (rev 0) +++ trunk/crackerjack/crackerjack-makereport-rhtml 2007-03-15 09:04:32 UTC (rev 369) @@ -0,0 +1,305 @@ +#!/usr/bin/env ruby + +require 'find' + +###################################################################### +# sub routine +###################################################################### +def judge(log) + begin + File.open(log) do |f| + line = f.gets.chomp + if (line == "OK") + return "OK" + elsif(line == "NG") + return "NG" + else + return "NF" + end + end + rescue Errno::ENOENT + #return "NF" + end +end + +def log2kerv(path) + return File.expand_path(path).sub(%r!.*/(.*)/\d{14}/.*!, '\1') +end + +def log2id(path) + return File.expand_path(path).sub(%r!.*(\d{14}).*!, '\1') +end + +def log2syscallname(path) + return File.dirname(File.expand_path(path)).sub(%r!.*\d{14}/(.*)!, '\1') +end + +def set_linkname(judgements, r_kerv, e_kerv) + linkname = "OK" + + isfind = judgements.find { |x| x == "NF" } + if (isfind != nil) + linkname = "(OK)" + end + + isfind = judgements.find { |x| x == "NG" } + if (isfind != nil) + if (r_kerv > e_kerv) + linkname = "(NG)" + else + linkname = "NG" + end + end + + return linkname +end + +def make_top_link(ui, linkname, filename) + case linkname + when "OK" + bgcolor = "#00ffff" + when "(OK)" + bgcolor = "#e0ffff" + when "(NG)" + bgcolor = "#ee82ee" + when "NG" + bgcolor = "#ff00ff" + else + bgcolor = "#ffffff" + end + + if (ui == "gui") + print "<td align=\"center\" style=\"background:#{bgcolor}\">" + print "<%= link_to(\"#{linkname}\", {:action=>'view_log', :arg=>\"#{filename}\"}, nil) %>" + print "</td>" + elsif (ui == "cui") + print "<td align=\"center\" style=\"background:#{bgcolor}\"><a href=\"rhtml/#{filename}\">#{linkname}</a></td>" + end +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.6.20] = [200703..., 200704..., 200705...] +# he[2.4.10] = [200703..., 200704..., 200705...] +# he[2.6.15] = [200703..., 200704..., 200705...] +# he[2.6.20] = [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.sort.each do |r_kerv, r_id| + he.sort.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("index.rhtml") + +print <<EOF +<html> +<head><title>report</title></head> +<body> +<table border="1" cellpadding="5" cellspacing="0"> +EOF + +print "<tr><td align=\"center\">---</td>" +he.sort.each do |e_kerv, e_id| + #print "<td align=\"center\">", "(E)#{e_kerv},#{e_id[-1]}", "</td>" + print "<th align=\"center\">", "(E)#{e_kerv}", "</th>" +end +print "</tr>", "\n" + +hr.sort.each do |r_kerv, r_id| + #print "<tr><th align=\"center\">(R)#{r_kerv}, #{r_id[-1]}</th>" + print "<tr><th align=\"center\">(R)#{r_kerv}</th>" + he.sort.each do |e_kerv, e_id| + if (r_kerv == e_kerv) + print "<td align=\"center\">---</td>" + next + end + + judgements = Array.new() + dir = File.join(Dir.pwd, "results", r_kerv, r_id[-1]) + Find.find(dir) do |f| + if (File.basename(f) =~ /^cout\.#{e_kerv}\.#{e_id[-1]}\.log/) + judgements.push(judge(f)) + end + end + + linkname = set_linkname(judgements, r_kerv, e_kerv) + + filename = [r_kerv, r_id[-1], e_kerv, e_id[-1]].join("-") + filename = File.join(Dir.pwd, "rhtml", "#{filename}.rhtml") + + make_top_link("gui", linkname, filename) + + end + print "</tr>\n" +end + +print "</table>" +print "<p>(E) = Expected,(R) = Result</p>" +print "<table border=\"1\" cellpadding=\"5\" cellspacing=\"0\">" +print "<tr><td align=\"center\" style=\"background:#00ffff\">OK</td><td>It means OK</td></tr>" +print "<tr><td align=\"center\" style=\"background:#e0ffff\">(OK)</td><td>It means OK, but it contains any cases whose result compare program can't judge correctly</td></tr>" +print "<tr><td align=\"center\" style=\"background:#ff00ff\">NG</td><td>It means NG</td></tr>" +print "<tr><td align=\"center\" style=\"background:#ee82ee\">(NG)</td><td>It means NG, and not compatible upper version </td></tr>" +print "</table></body></html>" + +## generate sub html + +def make_column_systemcall(file) + syscallname = log2syscallname(file) + judgement = judge(file) + if (judgement == "OK") + print "<tr style=\"background:#00ffff\">" + print "<td>#{syscallname}</td>" + print "<td style=\"background:#00ffff\">Compatible</td>" + elsif(judgement == "NG") + print "<tr style=\"background:#ff00ff\">" + print "<td>#{syscallname}</td>" + print "<td style=\"background:#ff00ff\">Regeression</td>" + else + print "<tr style=\"background:#c0c0c0\">" + print "<td>#{syscallname}</td>" + print "<td style=\"background:#c0c0c0\">Can't judge</td>" + end +end + +def make_sub_link(ui, linkname, filename) + if (ui == "gui") + print "<td align=\"center\">" + print "<%= link_to(\"#{linkname}\", {:action=>'view_log', :arg=>\"#{filename}\"}, nil) %>" + print "</td>" + elsif (ui == "cui") + print "<td align=\"center\"><a href=\"rhtml/#{filename}\">#{linkname}</a></td>" + end +end + +hr.sort.each do |r_kerv, r_id| + + he.sort.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("rhtml/#{filename}.rhtml") + print "<html><head><title>#{filename}report</title></head><body>" + print "<table border=\"1\" cellpadding=\"5\" cellspacing=\"0\">" + print "<tr><th rowspan=\"2\">System Call Name</th>" + print "<th rowspan=\"2\">Regression</th>" + print "<th>Actual</th>" + print "<th>Expected</th>" + print "<th colspan=\"2\">Compare</th>" + print "<th rowspan=\"2\">Comare Program</th></tr>" + print "<th>Result</th>" + print "<th>Result</th>" + print "<th>Result</th>" + print "<th>Log</th>" + + dir = File.join(Dir.pwd, "results", r_kerv, r_id[-1]) + + require 'fileutils' + FileUtils.cp("bin/default-compare", "bin/default-compare.txt") + Find.find(File.join(Dir.pwd, "testcases")) do |f| + if (File.basename(f) == "compare") + FileUtils.cp(f, f + ".txt") + end + end + + Find.find(dir) do |f| + if (File.basename(f) =~ /^cout\.#{e_kerv}\.#{e_id[-1]}\.log/) + #print "<tr>" + syscallname = log2syscallname(f) + + make_column_systemcall(f) + + #link_result = f.sub(%r!cout.*!, 'tout.log').sub(Dir.pwd, '..') + link_result = f.sub(%r!cout.*!, 'tout.log').sub(Dir.pwd, '..') + print "<td><a href=\"#{link_result}\">Log</a></td>" + + link_exp = File.join(Dir.pwd, "expected",e_kerv, e_id[-1], log2syscallname(f), "tout.log") + if File.exist?(link_exp) + link_exp.sub!(Dir.pwd, '..') + print "<td><a href=\"#{link_exp}\">Log</a></td>" + else + print "<td>Not found</td>" + end + + link_compare_out = f.sub(Dir.pwd, '..') + print "<td><a href=\"#{link_compare_out}\">Log</a></td>" + + link_compare_err = f.sub('cout', 'cerr').sub(Dir.pwd, '..') + print "<td><a href=\"#{link_compare_err}\">Log</a></td>" + + label_cp = "user defined" + + link_cp = File.join(Dir.pwd, "testcases", syscallname, "compare.txt") + unless (File.exists?(link_cp)) + label_cp = "default" + link_cp = File.join(Dir.pwd, "bin", "default-compare.txt") + end + #make_sub_link("gui", label_cp, link_cp) + link_cp.sub!(Dir.pwd, '..') + 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. |
From: <ky...@us...> - 2007-03-15 10:40:40
|
Revision: 371 http://svn.sourceforge.net/crackerjack/?rev=371&view=rev Author: kyagi Date: 2007-03-15 03:40:38 -0700 (Thu, 15 Mar 2007) Log Message: ----------- add report html file directory for cui Added Paths: ----------- trunk/crackerjack/html/ trunk/crackerjack/html/2.6.15-27-386-20070314191112-2.6.9-20070314142858.html trunk/crackerjack/html/2.6.15-27-386-20070314191112-2.6.9-42-20070314142858.html trunk/crackerjack/html/2.6.9-20070314171651-2.6.15-27-386-20070314142858.html trunk/crackerjack/html/2.6.9-20070314171651-2.6.9-42-20070314142858.html trunk/crackerjack/html/2.6.9-42-20070314171651-2.6.15-27-386-20070314142858.html trunk/crackerjack/html/2.6.9-42-20070314171651-2.6.9-20070314142858.html Added: trunk/crackerjack/html/2.6.15-27-386-20070314191112-2.6.9-20070314142858.html =================================================================== --- trunk/crackerjack/html/2.6.15-27-386-20070314191112-2.6.9-20070314142858.html (rev 0) +++ trunk/crackerjack/html/2.6.15-27-386-20070314191112-2.6.9-20070314142858.html 2007-03-15 10:40:38 UTC (rev 371) @@ -0,0 +1 @@ +<html><head><title>2.6.15-27-386-20070314191112-2.6.9-20070314142858report</title></head><body><table border="1" cellpadding="5" cellspacing="0"><tr><th rowspan="2">System Call Name</th><th rowspan="2">Regression</th><th>Actual</th><th>Expected</th><th colspan="2">Compare</th><th rowspan="2">Comare Program</th></tr><th>Result</th><th>Result</th><th>Result</th><th>Log</th><tr style="background:#00ffff"><td>alarm</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.15-27-386/20070314191112/alarm/tout.log">Log</a></td><td><a href="../expected/2.6.9/20070314142858/alarm/tout.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/alarm/cout.2.6.9.20070314142858.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/alarm/cerr.2.6.9.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#00ffff"><td>alarm/whitebox</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.15-27-386/20070314191112/alarm/whitebox/tout.log">Log</a></td><td><a href="../expected/2.6.9/20070314142858/alarm/whitebox/tout.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/alarm/whitebox/cout.2.6.9.20070314142858.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/alarm/whitebox/cerr.2.6.9.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#00ffff"><td>adjtimex</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.15-27-386/20070314191112/adjtimex/tout.log">Log</a></td><td><a href="../expected/2.6.9/20070314142858/adjtimex/tout.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/adjtimex/cout.2.6.9.20070314142858.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/adjtimex/cerr.2.6.9.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#00ffff"><td>adjtimex/whitebox</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.15-27-386/20070314191112/adjtimex/whitebox/tout.log">Log</a></td><td><a href="../expected/2.6.9/20070314142858/adjtimex/whitebox/tout.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/adjtimex/whitebox/cout.2.6.9.20070314142858.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/adjtimex/whitebox/cerr.2.6.9.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#c0c0c0"><td>access</td><td style="background:#c0c0c0">Can't judge</td><td><a href="../results/2.6.15-27-386/20070314191112/access/tout.log">Log</a></td><td><a href="../expected/2.6.9/20070314142858/access/tout.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/access/cout.2.6.9.20070314142858.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/access/cerr.2.6.9.20070314142858.log">Log</a></td><td><a href="../testcases/access/compare.txt">user defined</a></td></tr></table></body></html> \ No newline at end of file Added: trunk/crackerjack/html/2.6.15-27-386-20070314191112-2.6.9-42-20070314142858.html =================================================================== --- trunk/crackerjack/html/2.6.15-27-386-20070314191112-2.6.9-42-20070314142858.html (rev 0) +++ trunk/crackerjack/html/2.6.15-27-386-20070314191112-2.6.9-42-20070314142858.html 2007-03-15 10:40:38 UTC (rev 371) @@ -0,0 +1 @@ +<html><head><title>2.6.15-27-386-20070314191112-2.6.9-42-20070314142858report</title></head><body><table border="1" cellpadding="5" cellspacing="0"><tr><th rowspan="2">System Call Name</th><th rowspan="2">Regression</th><th>Actual</th><th>Expected</th><th colspan="2">Compare</th><th rowspan="2">Comare Program</th></tr><th>Result</th><th>Result</th><th>Result</th><th>Log</th><tr style="background:#ff00ff"><td>alarm</td><td style="background:#ff00ff">Regeression</td><td><a href="../results/2.6.15-27-386/20070314191112/alarm/tout.log">Log</a></td><td><a href="../expected/2.6.9-42/20070314142858/alarm/tout.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/alarm/cout.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/alarm/cerr.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#00ffff"><td>alarm/whitebox</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.15-27-386/20070314191112/alarm/whitebox/tout.log">Log</a></td><td><a href="../expected/2.6.9-42/20070314142858/alarm/whitebox/tout.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/alarm/whitebox/cout.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/alarm/whitebox/cerr.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#00ffff"><td>adjtimex</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.15-27-386/20070314191112/adjtimex/tout.log">Log</a></td><td><a href="../expected/2.6.9-42/20070314142858/adjtimex/tout.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/adjtimex/cout.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/adjtimex/cerr.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#00ffff"><td>adjtimex/whitebox</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.15-27-386/20070314191112/adjtimex/whitebox/tout.log">Log</a></td><td><a href="../expected/2.6.9-42/20070314142858/adjtimex/whitebox/tout.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/adjtimex/whitebox/cout.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/adjtimex/whitebox/cerr.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#c0c0c0"><td>access</td><td style="background:#c0c0c0">Can't judge</td><td><a href="../results/2.6.15-27-386/20070314191112/access/tout.log">Log</a></td><td><a href="../expected/2.6.9-42/20070314142858/access/tout.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/access/cout.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../results/2.6.15-27-386/20070314191112/access/cerr.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../testcases/access/compare.txt">user defined</a></td></tr></table></body></html> \ No newline at end of file Added: trunk/crackerjack/html/2.6.9-20070314171651-2.6.15-27-386-20070314142858.html =================================================================== --- trunk/crackerjack/html/2.6.9-20070314171651-2.6.15-27-386-20070314142858.html (rev 0) +++ trunk/crackerjack/html/2.6.9-20070314171651-2.6.15-27-386-20070314142858.html 2007-03-15 10:40:38 UTC (rev 371) @@ -0,0 +1 @@ +<html><head><title>2.6.9-20070314171651-2.6.15-27-386-20070314142858report</title></head><body><table border="1" cellpadding="5" cellspacing="0"><tr><th rowspan="2">System Call Name</th><th rowspan="2">Regression</th><th>Actual</th><th>Expected</th><th colspan="2">Compare</th><th rowspan="2">Comare Program</th></tr><th>Result</th><th>Result</th><th>Result</th><th>Log</th><tr style="background:#00ffff"><td>alarm</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.9/20070314171651/alarm/tout.log">Log</a></td><td><a href="../expected/2.6.15-27-386/20070314142858/alarm/tout.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/alarm/cout.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/alarm/cerr.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#00ffff"><td>alarm/whitebox</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.9/20070314171651/alarm/whitebox/tout.log">Log</a></td><td><a href="../expected/2.6.15-27-386/20070314142858/alarm/whitebox/tout.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/alarm/whitebox/cout.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/alarm/whitebox/cerr.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#00ffff"><td>adjtimex</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.9/20070314171651/adjtimex/tout.log">Log</a></td><td><a href="../expected/2.6.15-27-386/20070314142858/adjtimex/tout.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/adjtimex/cout.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/adjtimex/cerr.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#00ffff"><td>adjtimex/whitebox</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.9/20070314171651/adjtimex/whitebox/tout.log">Log</a></td><td><a href="../expected/2.6.15-27-386/20070314142858/adjtimex/whitebox/tout.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/adjtimex/whitebox/cout.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/adjtimex/whitebox/cerr.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#c0c0c0"><td>access</td><td style="background:#c0c0c0">Can't judge</td><td><a href="../results/2.6.9/20070314171651/access/tout.log">Log</a></td><td><a href="../expected/2.6.15-27-386/20070314142858/access/tout.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/access/cout.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/access/cerr.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../testcases/access/compare.txt">user defined</a></td></tr></table></body></html> \ No newline at end of file Added: trunk/crackerjack/html/2.6.9-20070314171651-2.6.9-42-20070314142858.html =================================================================== --- trunk/crackerjack/html/2.6.9-20070314171651-2.6.9-42-20070314142858.html (rev 0) +++ trunk/crackerjack/html/2.6.9-20070314171651-2.6.9-42-20070314142858.html 2007-03-15 10:40:38 UTC (rev 371) @@ -0,0 +1 @@ +<html><head><title>2.6.9-20070314171651-2.6.9-42-20070314142858report</title></head><body><table border="1" cellpadding="5" cellspacing="0"><tr><th rowspan="2">System Call Name</th><th rowspan="2">Regression</th><th>Actual</th><th>Expected</th><th colspan="2">Compare</th><th rowspan="2">Comare Program</th></tr><th>Result</th><th>Result</th><th>Result</th><th>Log</th><tr style="background:#ff00ff"><td>alarm</td><td style="background:#ff00ff">Regeression</td><td><a href="../results/2.6.9/20070314171651/alarm/tout.log">Log</a></td><td><a href="../expected/2.6.9-42/20070314142858/alarm/tout.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/alarm/cout.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/alarm/cerr.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#00ffff"><td>alarm/whitebox</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.9/20070314171651/alarm/whitebox/tout.log">Log</a></td><td><a href="../expected/2.6.9-42/20070314142858/alarm/whitebox/tout.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/alarm/whitebox/cout.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/alarm/whitebox/cerr.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#00ffff"><td>adjtimex</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.9/20070314171651/adjtimex/tout.log">Log</a></td><td><a href="../expected/2.6.9-42/20070314142858/adjtimex/tout.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/adjtimex/cout.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/adjtimex/cerr.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#00ffff"><td>adjtimex/whitebox</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.9/20070314171651/adjtimex/whitebox/tout.log">Log</a></td><td><a href="../expected/2.6.9-42/20070314142858/adjtimex/whitebox/tout.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/adjtimex/whitebox/cout.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/adjtimex/whitebox/cerr.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#c0c0c0"><td>access</td><td style="background:#c0c0c0">Can't judge</td><td><a href="../results/2.6.9/20070314171651/access/tout.log">Log</a></td><td><a href="../expected/2.6.9-42/20070314142858/access/tout.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/access/cout.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../results/2.6.9/20070314171651/access/cerr.2.6.9-42.20070314142858.log">Log</a></td><td><a href="../testcases/access/compare.txt">user defined</a></td></tr></table></body></html> \ No newline at end of file Added: trunk/crackerjack/html/2.6.9-42-20070314171651-2.6.15-27-386-20070314142858.html =================================================================== --- trunk/crackerjack/html/2.6.9-42-20070314171651-2.6.15-27-386-20070314142858.html (rev 0) +++ trunk/crackerjack/html/2.6.9-42-20070314171651-2.6.15-27-386-20070314142858.html 2007-03-15 10:40:38 UTC (rev 371) @@ -0,0 +1 @@ +<html><head><title>2.6.9-42-20070314171651-2.6.15-27-386-20070314142858report</title></head><body><table border="1" cellpadding="5" cellspacing="0"><tr><th rowspan="2">System Call Name</th><th rowspan="2">Regression</th><th>Actual</th><th>Expected</th><th colspan="2">Compare</th><th rowspan="2">Comare Program</th></tr><th>Result</th><th>Result</th><th>Result</th><th>Log</th><tr style="background:#00ffff"><td>alarm</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.9-42/20070314171651/alarm/tout.log">Log</a></td><td><a href="../expected/2.6.15-27-386/20070314142858/alarm/tout.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/alarm/cout.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/alarm/cerr.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#00ffff"><td>alarm/whitebox</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.9-42/20070314171651/alarm/whitebox/tout.log">Log</a></td><td><a href="../expected/2.6.15-27-386/20070314142858/alarm/whitebox/tout.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/alarm/whitebox/cout.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/alarm/whitebox/cerr.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#00ffff"><td>adjtimex</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.9-42/20070314171651/adjtimex/tout.log">Log</a></td><td><a href="../expected/2.6.15-27-386/20070314142858/adjtimex/tout.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/adjtimex/cout.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/adjtimex/cerr.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#00ffff"><td>adjtimex/whitebox</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.9-42/20070314171651/adjtimex/whitebox/tout.log">Log</a></td><td><a href="../expected/2.6.15-27-386/20070314142858/adjtimex/whitebox/tout.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/adjtimex/whitebox/cout.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/adjtimex/whitebox/cerr.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#c0c0c0"><td>access</td><td style="background:#c0c0c0">Can't judge</td><td><a href="../results/2.6.9-42/20070314171651/access/tout.log">Log</a></td><td><a href="../expected/2.6.15-27-386/20070314142858/access/tout.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/access/cout.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/access/cerr.2.6.15-27-386.20070314142858.log">Log</a></td><td><a href="../testcases/access/compare.txt">user defined</a></td></tr></table></body></html> \ No newline at end of file Added: trunk/crackerjack/html/2.6.9-42-20070314171651-2.6.9-20070314142858.html =================================================================== --- trunk/crackerjack/html/2.6.9-42-20070314171651-2.6.9-20070314142858.html (rev 0) +++ trunk/crackerjack/html/2.6.9-42-20070314171651-2.6.9-20070314142858.html 2007-03-15 10:40:38 UTC (rev 371) @@ -0,0 +1 @@ +<html><head><title>2.6.9-42-20070314171651-2.6.9-20070314142858report</title></head><body><table border="1" cellpadding="5" cellspacing="0"><tr><th rowspan="2">System Call Name</th><th rowspan="2">Regression</th><th>Actual</th><th>Expected</th><th colspan="2">Compare</th><th rowspan="2">Comare Program</th></tr><th>Result</th><th>Result</th><th>Result</th><th>Log</th><tr style="background:#00ffff"><td>alarm</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.9-42/20070314171651/alarm/tout.log">Log</a></td><td><a href="../expected/2.6.9/20070314142858/alarm/tout.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/alarm/cout.2.6.9.20070314142858.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/alarm/cerr.2.6.9.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#00ffff"><td>alarm/whitebox</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.9-42/20070314171651/alarm/whitebox/tout.log">Log</a></td><td><a href="../expected/2.6.9/20070314142858/alarm/whitebox/tout.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/alarm/whitebox/cout.2.6.9.20070314142858.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/alarm/whitebox/cerr.2.6.9.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#00ffff"><td>adjtimex</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.9-42/20070314171651/adjtimex/tout.log">Log</a></td><td><a href="../expected/2.6.9/20070314142858/adjtimex/tout.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/adjtimex/cout.2.6.9.20070314142858.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/adjtimex/cerr.2.6.9.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#00ffff"><td>adjtimex/whitebox</td><td style="background:#00ffff">Compatible</td><td><a href="../results/2.6.9-42/20070314171651/adjtimex/whitebox/tout.log">Log</a></td><td><a href="../expected/2.6.9/20070314142858/adjtimex/whitebox/tout.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/adjtimex/whitebox/cout.2.6.9.20070314142858.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/adjtimex/whitebox/cerr.2.6.9.20070314142858.log">Log</a></td><td><a href="../bin/default-compare.txt">default</a></td></tr><tr style="background:#c0c0c0"><td>access</td><td style="background:#c0c0c0">Can't judge</td><td><a href="../results/2.6.9-42/20070314171651/access/tout.log">Log</a></td><td><a href="../expected/2.6.9/20070314142858/access/tout.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/access/cout.2.6.9.20070314142858.log">Log</a></td><td><a href="../results/2.6.9-42/20070314171651/access/cerr.2.6.9.20070314142858.log">Log</a></td><td><a href="../testcases/access/compare.txt">user defined</a></td></tr></table></body></html> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ky...@us...> - 2007-03-15 12:09:43
|
Revision: 373 http://svn.sourceforge.net/crackerjack/?rev=373&view=rev Author: kyagi Date: 2007-03-15 05:09:42 -0700 (Thu, 15 Mar 2007) Log Message: ----------- modify Modified Paths: -------------- trunk/crackerjack/README trunk/crackerjack/SPEC Modified: trunk/crackerjack/README =================================================================== --- trunk/crackerjack/README 2007-03-15 10:41:17 UTC (rev 372) +++ trunk/crackerjack/README 2007-03-15 12:09:42 UTC (rev 373) @@ -157,35 +157,13 @@ crackerjack> - 9. Compare the current result to expected result. You registerd expected - result just now, of course test programs result is same, So it doesn't - occur regression). + 9. Quit the crackerjack with 'q' command. - crackerjack>c - Action SystemCallName CompareProgram Judge - --------------------------------------------------------------------- - C examples/hello_precision_world DEF compatible - C examples/hello_world DEF compatible - C syscall_A DEF compatible - C syscall_C DEF compatible - crackerjack> - - ///////////////////////////////////////////////////////////////////// - * NOTICE * 'Compare' column of tables means whether crackerjack use - the user-defined compare program (=OWN) or use default-compare program(=DEF). - You need to store the compare program correspondense to the test program - in the same directory. If there's not, crackerjack use the bin/defautl-compare - instead. - ///////////////////////////////////////////////////////////////////// - - - 10. Quit the crackerjack with 'q' command. - crackerjack>q # - 11. Run the same thing in non-interactive-way. + 10. Run the same thing in non-interactive-way. At first, execute the test programs(this thing is the equivalent of 7). crackerjack invoke non-interactive way with '-x' option. This output table is the same except Id is change. @@ -212,7 +190,7 @@ ///////////////////////////////////////////////////////////////////// - 12. Secondly, Register the current result as expected result in non-interactive-way. + 11. Secondly, Register the current result as expected result in non-interactive-way. (this thing is the equivalent of 8). # ./crackerjack -e .current @@ -231,10 +209,9 @@ ///////////////////////////////////////////////////////////////////// - 13. Thirdly, Compare the current result to expected result with '-c' option. - (this thing is the equivalent of 9). + 12. Thirdly, Compare the current result to expected result with '-c' option. - # ./crackerjack -c .current + # ./crackerjack -c 2.4.10,200703101555,2.6.10,200703101832 Action SystemCallName CompareProgram Judge --------------------------------------------------------------------- C examples/hello_precision_world DEF compatible @@ -256,7 +233,7 @@ for f in $myconfigs; do ./crackerjack -x $f ./crackerjack -e .current - ./crackerjack -c .current + ./crackerjack -c 2.4.10,200703101555,2.6.10,200703101832 done --------------------------------------------------------------------- @@ -267,4 +244,4 @@ ------------------------------------------------------- Author: Kazuo Yagi <ky...@mi...> -created at: Wed Feb 7 18:00:45 JST 2007 +created at: Thu Mar 15 21:09:10 JST 2007 Modified: trunk/crackerjack/SPEC =================================================================== --- trunk/crackerjack/SPEC 2007-03-15 10:41:17 UTC (rev 372) +++ trunk/crackerjack/SPEC 2007-03-15 12:09:42 UTC (rev 373) @@ -13,14 +13,14 @@ - Framework can register the test program's log(='tout.log') as expected result in the following directory. - expcted result => 'expected/SYSTEMCALL_NAME/tout.log' + expcted result => 'expected/KERNEL_VERSION/ID/SYSTEMCALL_NAME/tout.log' So, it is a symbolic link to the previous test program's log. - Framework can compare the current test program's log(=current result) with the previous test program's log(=expected result). - expected result => 'expected/SYSTEMCALL_NAME/tout.log' + expected result => 'expected/KERNEL_VERSION/ID/SYSTEMCALL_NAME/tout.log' ^ | compare v @@ -63,4 +63,4 @@ ------------------------------------------------------- Author: Kazuo Yagi <ky...@mi...> -created at: Wed Feb 7 23:43:31 JST 2007 +created at: Thu Mar 15 21:06:53 JST 2007 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ky...@us...> - 2007-03-21 18:57:55
|
Revision: 438 http://svn.sourceforge.net/crackerjack/?rev=438&view=rev Author: kyagi Date: 2007-03-21 11:57:54 -0700 (Wed, 21 Mar 2007) Log Message: ----------- add Added Paths: ----------- trunk/crackerjack/.order trunk/crackerjack/.order.org Added: trunk/crackerjack/.order =================================================================== --- trunk/crackerjack/.order (rev 0) +++ trunk/crackerjack/.order 2007-03-21 18:57:54 UTC (rev 438) @@ -0,0 +1,64 @@ +/root/crackerjack/testcases/adjtimex/test +/root/crackerjack/testcases/adjtimex/whitebox/test +/root/crackerjack/testcases/alarm/test +/root/crackerjack/testcases/alarm/whitebox/test +/root/crackerjack/testcases/brk/basic/test +/root/crackerjack/testcases/ftruncate/test +/root/crackerjack/testcases/ftruncate/whitebox/test +/root/crackerjack/testcases/ftruncate64/test +/root/crackerjack/testcases/ftruncate64/whitebox/test +/root/crackerjack/testcases/getgroups/test +/root/crackerjack/testcases/getitimer/test +/root/crackerjack/testcases/getpid/basic/test +/root/crackerjack/testcases/getpid/process_time/test +/root/crackerjack/testcases/getresgid/test +/root/crackerjack/testcases/getresuid/test +/root/crackerjack/testcases/getsid/basic/test +/root/crackerjack/testcases/gettimeofday/basic/test +/root/crackerjack/testcases/gettimeofday/process_time/test +/root/crackerjack/testcases/ioperm/test +/root/crackerjack/testcases/ioperm/whitebox/test +/root/crackerjack/testcases/iopl/test +/root/crackerjack/testcases/iopl/whitebox/test +/root/crackerjack/testcases/madvise/test +/root/crackerjack/testcases/mincore/test +/root/crackerjack/testcases/mlock/test +/root/crackerjack/testcases/mlockall/test +/root/crackerjack/testcases/mprotect/test +/root/crackerjack/testcases/mprotect/whitebox/test +/root/crackerjack/testcases/mremap/test +/root/crackerjack/testcases/msync/test +/root/crackerjack/testcases/msync/whitebox/test +/root/crackerjack/testcases/munlock/test +/root/crackerjack/testcases/munlockall/test +/root/crackerjack/testcases/munmap/test +/root/crackerjack/testcases/old_mmap/test +/root/crackerjack/testcases/pipe/basic/test +/root/crackerjack/testcases/pipe/multiple/test +/root/crackerjack/testcases/poll/test +/root/crackerjack/testcases/poll/whitebox/test +/root/crackerjack/testcases/sendfile/test +/root/crackerjack/testcases/setdomainname/test +/root/crackerjack/testcases/setdomainname/whitebox/test +/root/crackerjack/testcases/setgroups/test +/root/crackerjack/testcases/setitimer/test +/root/crackerjack/testcases/setregid/test +/root/crackerjack/testcases/setresgid/test +/root/crackerjack/testcases/setresuid/test +/root/crackerjack/testcases/setreuid/test +/root/crackerjack/testcases/setsid/basic/test +/root/crackerjack/testcases/settimeofday/basic/test +/root/crackerjack/testcases/stime/basic/test +/root/crackerjack/testcases/swapoff/test +/root/crackerjack/testcases/swapoff/whitebox/test +/root/crackerjack/testcases/swapon/test +/root/crackerjack/testcases/swapon/whitebox/test +/root/crackerjack/testcases/sysinfo/test +/root/crackerjack/testcases/sysinfo/whitebox/test +/root/crackerjack/testcases/syslog/test +/root/crackerjack/testcases/time/basic/test +/root/crackerjack/testcases/truncate/test +/root/crackerjack/testcases/truncate/whitebox/test +/root/crackerjack/testcases/truncate64/test +/root/crackerjack/testcases/truncate64/whitebox/test +/root/crackerjack/testcases/utime/basic/test Added: trunk/crackerjack/.order.org =================================================================== --- trunk/crackerjack/.order.org (rev 0) +++ trunk/crackerjack/.order.org 2007-03-21 18:57:54 UTC (rev 438) @@ -0,0 +1,71 @@ +/root/crackerjack/testcases/adjtimex/test +/root/crackerjack/testcases/adjtimex/whitebox/test +/root/crackerjack/testcases/alarm/test +/root/crackerjack/testcases/alarm/whitebox/test +/root/crackerjack/testcases/brk/basic/test +/root/crackerjack/testcases/brk/range/test +/root/crackerjack/testcases/clone/test +/root/crackerjack/testcases/ftruncate/test +/root/crackerjack/testcases/ftruncate/whitebox/test +/root/crackerjack/testcases/ftruncate64/test +/root/crackerjack/testcases/ftruncate64/whitebox/test +/root/crackerjack/testcases/getgroups/test +/root/crackerjack/testcases/getitimer/test +/root/crackerjack/testcases/getpid/basic/test +/root/crackerjack/testcases/getpid/process_time/test +/root/crackerjack/testcases/getresgid/test +/root/crackerjack/testcases/getresuid/test +/root/crackerjack/testcases/getsid/basic/test +/root/crackerjack/testcases/gettimeofday/basic/test +/root/crackerjack/testcases/gettimeofday/process_time/test +/root/crackerjack/testcases/ioperm/test +/root/crackerjack/testcases/ioperm/whitebox/test +/root/crackerjack/testcases/iopl/test +/root/crackerjack/testcases/iopl/whitebox/test +/root/crackerjack/testcases/madvise/test +/root/crackerjack/testcases/mincore/test +/root/crackerjack/testcases/mlock/test +/root/crackerjack/testcases/mlockall/test +/root/crackerjack/testcases/mprotect/test +/root/crackerjack/testcases/mprotect/whitebox/test +/root/crackerjack/testcases/mremap/test +/root/crackerjack/testcases/msync/test +/root/crackerjack/testcases/msync/whitebox/test +/root/crackerjack/testcases/munlock/test +/root/crackerjack/testcases/munlockall/test +/root/crackerjack/testcases/munmap/test +/root/crackerjack/testcases/nanosleep/actual_sleep_time/test +/root/crackerjack/testcases/old_mmap/test +/root/crackerjack/testcases/old_select/test +/root/crackerjack/testcases/pipe/basic/test +/root/crackerjack/testcases/pipe/multiple/test +/root/crackerjack/testcases/poll/test +/root/crackerjack/testcases/poll/whitebox/test +/root/crackerjack/testcases/select/test +/root/crackerjack/testcases/select/whitebox/test +/root/crackerjack/testcases/sendfile/test +/root/crackerjack/testcases/setdomainname/test +/root/crackerjack/testcases/setdomainname/whitebox/test +/root/crackerjack/testcases/setgroups/test +/root/crackerjack/testcases/setitimer/test +/root/crackerjack/testcases/setregid/test +/root/crackerjack/testcases/setresgid/test +/root/crackerjack/testcases/setresuid/test +/root/crackerjack/testcases/setreuid/test +/root/crackerjack/testcases/setsid/basic/test +/root/crackerjack/testcases/settimeofday/basic/test +/root/crackerjack/testcases/settimeofday/process_time/test +/root/crackerjack/testcases/stime/basic/test +/root/crackerjack/testcases/swapoff/test +/root/crackerjack/testcases/swapoff/whitebox/test +/root/crackerjack/testcases/swapon/test +/root/crackerjack/testcases/swapon/whitebox/test +/root/crackerjack/testcases/sysinfo/test +/root/crackerjack/testcases/sysinfo/whitebox/test +/root/crackerjack/testcases/syslog/test +/root/crackerjack/testcases/time/basic/test +/root/crackerjack/testcases/truncate/test +/root/crackerjack/testcases/truncate/whitebox/test +/root/crackerjack/testcases/truncate64/test +/root/crackerjack/testcases/truncate64/whitebox/test +/root/crackerjack/testcases/utime/basic/test This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ky...@us...> - 2007-03-21 18:57:56
|
Revision: 437 http://svn.sourceforge.net/crackerjack/?rev=437&view=rev Author: kyagi Date: 2007-03-21 11:51:20 -0700 (Wed, 21 Mar 2007) Log Message: ----------- add Added Paths: ----------- trunk/crackerjack/order trunk/crackerjack/order.org Added: trunk/crackerjack/order =================================================================== --- trunk/crackerjack/order (rev 0) +++ trunk/crackerjack/order 2007-03-21 18:51:20 UTC (rev 437) @@ -0,0 +1,64 @@ +/root/crackerjack/trunk/crackerjack/testcases/adjtimex/test +/root/crackerjack/trunk/crackerjack/testcases/adjtimex/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/alarm/test +/root/crackerjack/trunk/crackerjack/testcases/alarm/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/brk/basic/test +/root/crackerjack/trunk/crackerjack/testcases/ftruncate/test +/root/crackerjack/trunk/crackerjack/testcases/ftruncate/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/ftruncate64/test +/root/crackerjack/trunk/crackerjack/testcases/ftruncate64/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/getgroups/test +/root/crackerjack/trunk/crackerjack/testcases/getitimer/test +/root/crackerjack/trunk/crackerjack/testcases/getpid/basic/test +/root/crackerjack/trunk/crackerjack/testcases/getpid/process_time/test +/root/crackerjack/trunk/crackerjack/testcases/getresgid/test +/root/crackerjack/trunk/crackerjack/testcases/getresuid/test +/root/crackerjack/trunk/crackerjack/testcases/getsid/basic/test +/root/crackerjack/trunk/crackerjack/testcases/gettimeofday/basic/test +/root/crackerjack/trunk/crackerjack/testcases/gettimeofday/process_time/test +/root/crackerjack/trunk/crackerjack/testcases/ioperm/test +/root/crackerjack/trunk/crackerjack/testcases/ioperm/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/iopl/test +/root/crackerjack/trunk/crackerjack/testcases/iopl/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/madvise/test +/root/crackerjack/trunk/crackerjack/testcases/mincore/test +/root/crackerjack/trunk/crackerjack/testcases/mlock/test +/root/crackerjack/trunk/crackerjack/testcases/mlockall/test +/root/crackerjack/trunk/crackerjack/testcases/mprotect/test +/root/crackerjack/trunk/crackerjack/testcases/mprotect/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/mremap/test +/root/crackerjack/trunk/crackerjack/testcases/msync/test +/root/crackerjack/trunk/crackerjack/testcases/msync/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/munlock/test +/root/crackerjack/trunk/crackerjack/testcases/munlockall/test +/root/crackerjack/trunk/crackerjack/testcases/munmap/test +/root/crackerjack/trunk/crackerjack/testcases/old_mmap/test +/root/crackerjack/trunk/crackerjack/testcases/pipe/basic/test +/root/crackerjack/trunk/crackerjack/testcases/pipe/multiple/test +/root/crackerjack/trunk/crackerjack/testcases/poll/test +/root/crackerjack/trunk/crackerjack/testcases/poll/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/sendfile/test +/root/crackerjack/trunk/crackerjack/testcases/setdomainname/test +/root/crackerjack/trunk/crackerjack/testcases/setdomainname/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/setgroups/test +/root/crackerjack/trunk/crackerjack/testcases/setitimer/test +/root/crackerjack/trunk/crackerjack/testcases/setregid/test +/root/crackerjack/trunk/crackerjack/testcases/setresgid/test +/root/crackerjack/trunk/crackerjack/testcases/setresuid/test +/root/crackerjack/trunk/crackerjack/testcases/setreuid/test +/root/crackerjack/trunk/crackerjack/testcases/setsid/basic/test +/root/crackerjack/trunk/crackerjack/testcases/settimeofday/basic/test +/root/crackerjack/trunk/crackerjack/testcases/stime/basic/test +/root/crackerjack/trunk/crackerjack/testcases/swapoff/test +/root/crackerjack/trunk/crackerjack/testcases/swapoff/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/swapon/test +/root/crackerjack/trunk/crackerjack/testcases/swapon/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/sysinfo/test +/root/crackerjack/trunk/crackerjack/testcases/sysinfo/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/syslog/test +/root/crackerjack/trunk/crackerjack/testcases/time/basic/test +/root/crackerjack/trunk/crackerjack/testcases/truncate/test +/root/crackerjack/trunk/crackerjack/testcases/truncate/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/truncate64/test +/root/crackerjack/trunk/crackerjack/testcases/truncate64/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/utime/basic/test Added: trunk/crackerjack/order.org =================================================================== --- trunk/crackerjack/order.org (rev 0) +++ trunk/crackerjack/order.org 2007-03-21 18:51:20 UTC (rev 437) @@ -0,0 +1,71 @@ +/root/crackerjack/trunk/crackerjack/testcases/adjtimex/test +/root/crackerjack/trunk/crackerjack/testcases/adjtimex/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/alarm/test +/root/crackerjack/trunk/crackerjack/testcases/alarm/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/brk/basic/test +/root/crackerjack/trunk/crackerjack/testcases/brk/range/test +/root/crackerjack/trunk/crackerjack/testcases/clone/test +/root/crackerjack/trunk/crackerjack/testcases/ftruncate/test +/root/crackerjack/trunk/crackerjack/testcases/ftruncate/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/ftruncate64/test +/root/crackerjack/trunk/crackerjack/testcases/ftruncate64/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/getgroups/test +/root/crackerjack/trunk/crackerjack/testcases/getitimer/test +/root/crackerjack/trunk/crackerjack/testcases/getpid/basic/test +/root/crackerjack/trunk/crackerjack/testcases/getpid/process_time/test +/root/crackerjack/trunk/crackerjack/testcases/getresgid/test +/root/crackerjack/trunk/crackerjack/testcases/getresuid/test +/root/crackerjack/trunk/crackerjack/testcases/getsid/basic/test +/root/crackerjack/trunk/crackerjack/testcases/gettimeofday/basic/test +/root/crackerjack/trunk/crackerjack/testcases/gettimeofday/process_time/test +/root/crackerjack/trunk/crackerjack/testcases/ioperm/test +/root/crackerjack/trunk/crackerjack/testcases/ioperm/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/iopl/test +/root/crackerjack/trunk/crackerjack/testcases/iopl/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/madvise/test +/root/crackerjack/trunk/crackerjack/testcases/mincore/test +/root/crackerjack/trunk/crackerjack/testcases/mlock/test +/root/crackerjack/trunk/crackerjack/testcases/mlockall/test +/root/crackerjack/trunk/crackerjack/testcases/mprotect/test +/root/crackerjack/trunk/crackerjack/testcases/mprotect/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/mremap/test +/root/crackerjack/trunk/crackerjack/testcases/msync/test +/root/crackerjack/trunk/crackerjack/testcases/msync/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/munlock/test +/root/crackerjack/trunk/crackerjack/testcases/munlockall/test +/root/crackerjack/trunk/crackerjack/testcases/munmap/test +/root/crackerjack/trunk/crackerjack/testcases/nanosleep/actual_sleep_time/test +/root/crackerjack/trunk/crackerjack/testcases/old_mmap/test +/root/crackerjack/trunk/crackerjack/testcases/old_select/test +/root/crackerjack/trunk/crackerjack/testcases/pipe/basic/test +/root/crackerjack/trunk/crackerjack/testcases/pipe/multiple/test +/root/crackerjack/trunk/crackerjack/testcases/poll/test +/root/crackerjack/trunk/crackerjack/testcases/poll/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/select/test +/root/crackerjack/trunk/crackerjack/testcases/select/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/sendfile/test +/root/crackerjack/trunk/crackerjack/testcases/setdomainname/test +/root/crackerjack/trunk/crackerjack/testcases/setdomainname/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/setgroups/test +/root/crackerjack/trunk/crackerjack/testcases/setitimer/test +/root/crackerjack/trunk/crackerjack/testcases/setregid/test +/root/crackerjack/trunk/crackerjack/testcases/setresgid/test +/root/crackerjack/trunk/crackerjack/testcases/setresuid/test +/root/crackerjack/trunk/crackerjack/testcases/setreuid/test +/root/crackerjack/trunk/crackerjack/testcases/setsid/basic/test +/root/crackerjack/trunk/crackerjack/testcases/settimeofday/basic/test +/root/crackerjack/trunk/crackerjack/testcases/settimeofday/process_time/test +/root/crackerjack/trunk/crackerjack/testcases/stime/basic/test +/root/crackerjack/trunk/crackerjack/testcases/swapoff/test +/root/crackerjack/trunk/crackerjack/testcases/swapoff/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/swapon/test +/root/crackerjack/trunk/crackerjack/testcases/swapon/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/sysinfo/test +/root/crackerjack/trunk/crackerjack/testcases/sysinfo/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/syslog/test +/root/crackerjack/trunk/crackerjack/testcases/time/basic/test +/root/crackerjack/trunk/crackerjack/testcases/truncate/test +/root/crackerjack/trunk/crackerjack/testcases/truncate/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/truncate64/test +/root/crackerjack/trunk/crackerjack/testcases/truncate64/whitebox/test +/root/crackerjack/trunk/crackerjack/testcases/utime/basic/test This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ta...@us...> - 2008-02-17 17:57:22
|
Revision: 557 http://crackerjack.svn.sourceforge.net/crackerjack/?rev=557&view=rev Author: taru Date: 2008-02-17 09:56:20 -0800 (Sun, 17 Feb 2008) Log Message: ----------- add testcases for manpage compatibility Added Paths: ----------- trunk/crackerjack/include/man/ trunk/crackerjack/include/man/crackerjack/ trunk/crackerjack/include/man/crackerjack/crackerjack.h trunk/crackerjack/testcases/adjtimex/man/ trunk/crackerjack/testcases/adjtimex/man/Makefile trunk/crackerjack/testcases/adjtimex/man/adjtimex.c trunk/crackerjack/testcases/alarm/man/ trunk/crackerjack/testcases/alarm/man/Makefile trunk/crackerjack/testcases/alarm/man/alarm.c trunk/crackerjack/testcases/clone/man/ trunk/crackerjack/testcases/clone/man/Makefile trunk/crackerjack/testcases/clone/man/clone.c trunk/crackerjack/testcases/epoll_create/ trunk/crackerjack/testcases/epoll_create/man/ trunk/crackerjack/testcases/epoll_create/man/Makefile trunk/crackerjack/testcases/epoll_create/man/epoll_create.c trunk/crackerjack/testcases/epoll_ctl/ trunk/crackerjack/testcases/epoll_ctl/man/ trunk/crackerjack/testcases/epoll_ctl/man/Makefile trunk/crackerjack/testcases/epoll_ctl/man/epoll_ctl.c trunk/crackerjack/testcases/epoll_wait/ trunk/crackerjack/testcases/epoll_wait/man/ trunk/crackerjack/testcases/epoll_wait/man/Makefile trunk/crackerjack/testcases/epoll_wait/man/epoll_wait.c trunk/crackerjack/testcases/fcntl/ trunk/crackerjack/testcases/fcntl/man/ trunk/crackerjack/testcases/fcntl/man/Makefile trunk/crackerjack/testcases/fcntl/man/fcntl.c trunk/crackerjack/testcases/fcntl/man/fcntl01.c trunk/crackerjack/testcases/fcntl/man/fcntl_lock.c trunk/crackerjack/testcases/fcntl/man/fcntl_notify.c trunk/crackerjack/testcases/ftruncate/man/ trunk/crackerjack/testcases/ftruncate/man/Makefile trunk/crackerjack/testcases/ftruncate/man/ftruncate.c trunk/crackerjack/testcases/getgroups/man/ trunk/crackerjack/testcases/getgroups/man/Makefile trunk/crackerjack/testcases/getgroups/man/getgroups.c trunk/crackerjack/testcases/getresgid/man/ trunk/crackerjack/testcases/getresgid/man/Makefile trunk/crackerjack/testcases/getresgid/man/getresgid.c trunk/crackerjack/testcases/getresuid/man/ trunk/crackerjack/testcases/getresuid/man/Makefile trunk/crackerjack/testcases/getresuid/man/getresuid.c trunk/crackerjack/testcases/io_cancel/ trunk/crackerjack/testcases/io_cancel/man/ trunk/crackerjack/testcases/io_cancel/man/Makefile trunk/crackerjack/testcases/io_cancel/man/io_cancel.c trunk/crackerjack/testcases/io_destroy/ trunk/crackerjack/testcases/io_destroy/man/ trunk/crackerjack/testcases/io_destroy/man/Makefile trunk/crackerjack/testcases/io_destroy/man/io_destroy.c trunk/crackerjack/testcases/io_getevents/ trunk/crackerjack/testcases/io_getevents/man/ trunk/crackerjack/testcases/io_getevents/man/Makefile trunk/crackerjack/testcases/io_getevents/man/io_getevents.c trunk/crackerjack/testcases/io_setup/ trunk/crackerjack/testcases/io_setup/man/ trunk/crackerjack/testcases/io_setup/man/Makefile trunk/crackerjack/testcases/io_setup/man/io_setup.c trunk/crackerjack/testcases/io_submit/ trunk/crackerjack/testcases/io_submit/man/ trunk/crackerjack/testcases/io_submit/man/Makefile trunk/crackerjack/testcases/io_submit/man/io_submit.c trunk/crackerjack/testcases/ioperm/man/ trunk/crackerjack/testcases/ioperm/man/Makefile trunk/crackerjack/testcases/ioperm/man/ioperm.c trunk/crackerjack/testcases/iopl/man/ trunk/crackerjack/testcases/iopl/man/Makefile trunk/crackerjack/testcases/iopl/man/iopl.c trunk/crackerjack/testcases/madvise/man/ trunk/crackerjack/testcases/madvise/man/Makefile trunk/crackerjack/testcases/madvise/man/madvise.c trunk/crackerjack/testcases/mincore/man/ trunk/crackerjack/testcases/mincore/man/Makefile trunk/crackerjack/testcases/mincore/man/mincore.c trunk/crackerjack/testcases/mlock/man/ trunk/crackerjack/testcases/mlock/man/Makefile trunk/crackerjack/testcases/mlock/man/mlock.c trunk/crackerjack/testcases/mlockall/man/ trunk/crackerjack/testcases/mlockall/man/Makefile trunk/crackerjack/testcases/mlockall/man/mlockall.c trunk/crackerjack/testcases/msgctl/ trunk/crackerjack/testcases/msgctl/man/ trunk/crackerjack/testcases/msgctl/man/Makefile trunk/crackerjack/testcases/msgctl/man/msgctl.c trunk/crackerjack/testcases/msgget/ trunk/crackerjack/testcases/msgget/man/ trunk/crackerjack/testcases/msgget/man/Makefile trunk/crackerjack/testcases/msgget/man/msgget.c trunk/crackerjack/testcases/msgrcv/ trunk/crackerjack/testcases/msgrcv/man/ trunk/crackerjack/testcases/msgrcv/man/Makefile trunk/crackerjack/testcases/msgrcv/man/msgrcv.c trunk/crackerjack/testcases/msgsnd/ trunk/crackerjack/testcases/msgsnd/man/ trunk/crackerjack/testcases/msgsnd/man/Makefile trunk/crackerjack/testcases/msgsnd/man/msgsnd.c trunk/crackerjack/testcases/msync/man/ trunk/crackerjack/testcases/msync/man/Makefile trunk/crackerjack/testcases/msync/man/msync.c trunk/crackerjack/testcases/munlock/man/ trunk/crackerjack/testcases/munlock/man/Makefile trunk/crackerjack/testcases/munlock/man/munlock.c trunk/crackerjack/testcases/poll/man/ trunk/crackerjack/testcases/poll/man/Makefile trunk/crackerjack/testcases/poll/man/poll.c trunk/crackerjack/testcases/remap_file_pages/ trunk/crackerjack/testcases/remap_file_pages/man/ trunk/crackerjack/testcases/remap_file_pages/man/Makefile trunk/crackerjack/testcases/remap_file_pages/man/remap_file_pages.c trunk/crackerjack/testcases/semctl/ trunk/crackerjack/testcases/semctl/man/ trunk/crackerjack/testcases/semctl/man/Makefile trunk/crackerjack/testcases/semctl/man/semctl.c trunk/crackerjack/testcases/semget/ trunk/crackerjack/testcases/semget/man/ trunk/crackerjack/testcases/semget/man/Makefile trunk/crackerjack/testcases/semget/man/semget.c trunk/crackerjack/testcases/semop/ trunk/crackerjack/testcases/semop/man/ trunk/crackerjack/testcases/semop/man/Makefile trunk/crackerjack/testcases/semop/man/semop.c trunk/crackerjack/testcases/sendfile/man/ trunk/crackerjack/testcases/sendfile/man/Makefile trunk/crackerjack/testcases/sendfile/man/sendfile.c trunk/crackerjack/testcases/sendfile64/ trunk/crackerjack/testcases/sendfile64/man/ trunk/crackerjack/testcases/sendfile64/man/Makefile trunk/crackerjack/testcases/sendfile64/man/sendfile64.c trunk/crackerjack/testcases/setgroups/man/ trunk/crackerjack/testcases/setgroups/man/Makefile trunk/crackerjack/testcases/setgroups/man/setgroups.c trunk/crackerjack/testcases/setregid/man/ trunk/crackerjack/testcases/setregid/man/Makefile trunk/crackerjack/testcases/setregid/man/setregid.c trunk/crackerjack/testcases/setresgid/man/ trunk/crackerjack/testcases/setresgid/man/Makefile trunk/crackerjack/testcases/setresgid/man/setresgid.c trunk/crackerjack/testcases/setresuid/man/ trunk/crackerjack/testcases/setresuid/man/Makefile trunk/crackerjack/testcases/setresuid/man/setresuid.c trunk/crackerjack/testcases/setreuid/man/ trunk/crackerjack/testcases/setreuid/man/Makefile trunk/crackerjack/testcases/setreuid/man/setreuid.c trunk/crackerjack/testcases/shmat/ trunk/crackerjack/testcases/shmat/man/ trunk/crackerjack/testcases/shmat/man/Makefile trunk/crackerjack/testcases/shmat/man/shmat.c trunk/crackerjack/testcases/shmctl/ trunk/crackerjack/testcases/shmctl/man/ trunk/crackerjack/testcases/shmctl/man/Makefile trunk/crackerjack/testcases/shmctl/man/shmctl.c trunk/crackerjack/testcases/shmdt/ trunk/crackerjack/testcases/shmdt/man/ trunk/crackerjack/testcases/shmdt/man/Makefile trunk/crackerjack/testcases/shmdt/man/shmdt.c trunk/crackerjack/testcases/shmget/ trunk/crackerjack/testcases/shmget/man/ trunk/crackerjack/testcases/shmget/man/Makefile trunk/crackerjack/testcases/shmget/man/shmget.c trunk/crackerjack/testcases/timer_create/ trunk/crackerjack/testcases/timer_create/man/ trunk/crackerjack/testcases/timer_create/man/Makefile trunk/crackerjack/testcases/timer_create/man/timer_create.c trunk/crackerjack/testcases/timer_delete/ trunk/crackerjack/testcases/timer_delete/man/ trunk/crackerjack/testcases/timer_delete/man/Makefile trunk/crackerjack/testcases/timer_delete/man/timer_delete.c trunk/crackerjack/testcases/timer_getoverrun/ trunk/crackerjack/testcases/timer_getoverrun/man/ trunk/crackerjack/testcases/timer_getoverrun/man/Makefile trunk/crackerjack/testcases/timer_getoverrun/man/timer_getoverrun.c trunk/crackerjack/testcases/timer_gettime/ trunk/crackerjack/testcases/timer_gettime/man/ trunk/crackerjack/testcases/timer_gettime/man/Makefile trunk/crackerjack/testcases/timer_gettime/man/timer_gettime.c trunk/crackerjack/testcases/timer_settime/ trunk/crackerjack/testcases/timer_settime/man/ trunk/crackerjack/testcases/timer_settime/man/Makefile trunk/crackerjack/testcases/timer_settime/man/timer_settime.c trunk/crackerjack/testcases/truncate/man/ trunk/crackerjack/testcases/truncate/man/Makefile trunk/crackerjack/testcases/truncate/man/truncate.c Added: trunk/crackerjack/include/man/crackerjack/crackerjack.h =================================================================== --- trunk/crackerjack/include/man/crackerjack/crackerjack.h (rev 0) +++ trunk/crackerjack/include/man/crackerjack/crackerjack.h 2008-02-17 17:56:20 UTC (rev 557) @@ -0,0 +1,104 @@ +#ifndef __CRACKERJACK_H__ +#define __CRACKERJACK_H__ + +#include <stdio.h> +#include <errno.h> +#include <stdlib.h> + +#define LOG( args... ) fprintf( stderr, args ) + +#define OUT( args... ) fprintf( stdout, args ) +#define TEST( t ) do { OUT("%s\n", t?"ok":"error", __FILE__, __LINE__ ); } while(0) + +#define SYSCALL( ret, syscall... ) do { \ + OUT("Checking whether %s at %s:%d... ", #syscall, __FILE__, __LINE__ ); \ + LOG("Calling syscall at %s:%d: %s\n", __FILE__, __LINE__, #syscall ); \ + ret = syscall; \ + LOG("%s = %d\n", #syscall, ret ); \ + } while(0) + +#define OPEN( fd, flags ) do { \ + fd = open( tmpname, flags, 0777 ); \ + if( fd < 0 ) { \ + tst_brkm(TBROK, cleanup, "open failed: %s", \ + strerror(errno)); \ + } \ +} while(0) + +#define LSEEK( fd ) do { \ + if( lseek( fd, 1, SEEK_SET ) < 0 ) { \ + tst_brkm(TBROK, cleanup, "lseek failed: %s", \ + strerror(errno)); \ + } \ +} while(0) + +#define CLOSE( fd ) do { \ + if( close(fd) < 0 ) { \ + tst_brkm(TBROK, cleanup, "close failed: %s", \ + strerror(errno)); \ + } \ +} while(0) + +/* LTP compat */ + +#define TEST_CLEANUP +#define TEST_PAUSE +#define TEST_LOOPING(c) (c < 1) +#define FORK_OR_VFORK fork + +#define CRACKERJACK_PAGE_DISTURBE 1 +#ifdef CRACKERJACK_PAGE_DISTURBE +#define parse_opts(args...) crackerjack_page_disturbe (128 * 1024 * 1024) +#else +#define parse_opts(args...) NULL +#endif + +#define tst_rmdir() +#define tst_exit() exit(0) + +#define tst_resm( level, args... ) do { \ + fprintf( stderr, args ); \ + fprintf( stderr, " at %s:%d\n", __FILE__, __LINE__ ); \ +}while(0) + +#define tst_brkm( level, func, args... ) do { tst_resm( level, args ); func(); exit(1); } while(0) +#define TBROK 0 +#define TINFO 1 +#define TFAIL 2 +#define TPASS 3 + +int Tst_count; +int fail; + +#ifdef CRACKERJACK_PAGE_DISTURBE +#include <stdlib.h> +#include <unistd.h> + +static void +crackerjack_page_disturbe0 (size_t limit, int page_size) +{ + int j; + char * tmp; + + if (limit < page_size) + return; + + if ((tmp = malloc(limit))) { + for (j = 0; j < (limit / page_size); j++) + (tmp + (j * page_size))[0] = 0xFF; + free(tmp); + } + else + crackerjack_page_disturbe0(limit / 2, page_size); +} + +static char* +crackerjack_page_disturbe(size_t limit) +{ + crackerjack_page_disturbe0(limit, getpagesize()); + return NULL; +} + +#endif +#endif + Added: trunk/crackerjack/testcases/adjtimex/man/Makefile =================================================================== --- trunk/crackerjack/testcases/adjtimex/man/Makefile (rev 0) +++ trunk/crackerjack/testcases/adjtimex/man/Makefile 2008-02-17 17:56:20 UTC (rev 557) @@ -0,0 +1,8 @@ +SRC = $(wildcard *.c) + +test: $(SRC) Makefile + $(CC) -I../../../include/man -o $@ $(CFLAGS) $< + +clean: + /bin/rm -f test + Added: trunk/crackerjack/testcases/adjtimex/man/adjtimex.c =================================================================== --- trunk/crackerjack/testcases/adjtimex/man/adjtimex.c (rev 0) +++ trunk/crackerjack/testcases/adjtimex/man/adjtimex.c 2008-02-17 17:56:20 UTC (rev 557) @@ -0,0 +1,257 @@ +/* + * + * Copyright (c) Crackerjack Project., 2007 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * NAME + * template.c + * + * DESCRIPTION + * This is a template file for crackerjack tests. + * + * ALGORITHM + * + * + * USAGE + * + * + * HISTORY + * + * + * RESTRICTIONS + * + */ +#if 0 +#include <usctest.h> +#include <test.h> +#else +#include "crackerjack/crackerjack.h" +#endif + +#include <sys/timex.h> +#include <string.h> + +char tmpname[40]; +int parent; +int block = 1; + +/* + * cleanup() + * performs all the ONE TIME cleanup for this test at completion or + * premature exit + */ +void +cleanup(void) +{ + struct timex buf; + + /* + * print timing status if that option was specified + * print errno log if that option was specified + */ + TEST_CLEANUP; + + tst_rmdir(); + unlink(tmpname); + + memset( &buf, 0, sizeof(struct timex) ); + buf.modes = ADJ_OFFSET; + adjtimex( &buf ); + tst_exit(); +} + +/* + * setup + * performs all ONE TIME setup for this test + */ +void +setup(void) +{ + TEST_PAUSE; + + parent = getpid(); + + /* setup temporary file name */ + sprintf(tmpname, "%s.%d", __FILE__, parent); + +} + +#define ENTER(normal) tst_resm(TINFO, "Enter block %d: test %d (%s)", \ + block, Tst_count, normal?"NORMAL":"ERROR"); + +#define PASS tst_resm(TPASS, "Block %d: test %d PASSED", block, Tst_count ); +#define FAIL tst_resm(TFAIL, "Block %d: test %d FAILED", block, Tst_count ); + +int main(int ac, char **av) +{ + int lc; /* loop counter */ + char *msg; /* message returned from parse_opts */ + int fd, i; + int pid, dummy; + struct timex buf; + + /* parse standard options */ + if ((msg = parse_opts(ac, av, (option_t *)NULL, NULL)) != (char *)NULL){ + tst_brkm(TBROK, cleanup, "OPTION PARSING ERROR - %s", msg); + } + + + setup(); + + /* Check for looping state if -i option is given */ + for (lc = 0; TEST_LOOPING(lc); lc++) { + /* reset Tst_count in case we are looping */ + Tst_count = 0; +#ifdef CRACKERJACK_TEST +ADJTIMEX(2) Linux Programmer's Manual ADJTIMEX(2) + + + +NAME + adjtimex - tune kernel clock + +SYNOPSIS + #include <sys/timex.h> + + int adjtimex(struct timex *buf); + +DESCRIPTION + Linux uses David L. Mills' clock adjustment algorithm (see RFC 1305). + The system call adjtimex() reads and optionally sets adjustment parame- + ters for this algorithm. It takes a pointer to a timex structure, + updates kernel parameters from field values, and returns the same + structure with current kernel values. This structure is declared as + follows: + + struct timex { + int modes; /* mode selector */ + long offset; /* time offset (usec) */ + long freq; /* frequency offset (scaled ppm) */ + long maxerror; /* maximum error (usec) */ + long esterror; /* estimated error (usec) */ + int status; /* clock command/status */ + long constant; /* pll time constant */ + long precision; /* clock precision (usec) (read only) */ + long tolerance; /* clock frequency tolerance (ppm) + (read only) */ + struct timeval time; /* current time (read only) */ + long tick; /* usecs between clock ticks */ + }; + + The modes field determines which parameters, if any, to set. It may + contain a bitwise-or combination of zero or more of the following bits: + + #define ADJ_OFFSET 0x0001 /* time offset */ + #define ADJ_FREQUENCY 0x0002 /* frequency offset */ + #define ADJ_MAXERROR 0x0004 /* maximum time error */ + #define ADJ_ESTERROR 0x0008 /* estimated time error */ + #define ADJ_STATUS 0x0010 /* clock status */ + #define ADJ_TIMECONST 0x0020 /* pll time constant */ + #define ADJ_TICK 0x4000 /* tick value */ + #define ADJ_OFFSET_SINGLESHOT 0x8001 /* old-fashioned adjtime() */ + + Ordinary users are restricted to a zero value for mode. Only the supe- + ruser may set any parameters. + +RETURN VALUE + On success, adjtimex() returns the clock state: + + #define TIME_OK 0 /* clock synchronized */ + #define TIME_INS 1 /* insert leap second */ + #define TIME_DEL 2 /* delete leap second */ + #define TIME_OOP 3 /* leap second in progress */ + #define TIME_WAIT 4 /* leap second has occurred */ + #define TIME_BAD 5 /* clock not synchronized */ + + On failure, adjtimex() returns -1 and sets errno. +#endif + + memset( &buf, 0, sizeof(struct timex) ) ; + ENTER(1); + if( adjtimex( &buf ) >= 0 ) { + PASS; + } else { + FAIL; + } + Tst_count++; + +#ifdef CRACKERJACK_TEST +ERRORS + EFAULT buf does not point to writable memory. +#endif + ENTER(0); + if( adjtimex( NULL ) < 0 && errno == EFAULT ) { + PASS; + } else { + FAIL; + } + Tst_count++; + +#ifdef CRACKERJACK_TEST + + EINVAL An attempt is made to set buf.offset to a value outside the + range -131071 to +131071, or to set buf.status to a value other + than those listed above, or to set buf.tick to a value outside + the range 900000/HZ to 1100000/HZ, where HZ is the system timer + interrupt frequency. +#endif + ENTER(0); + buf.modes = ADJ_OFFSET; + buf.offset = 131072; + if( adjtimex( &buf ) < 0 && errno == EINVAL ) { + PASS; + } else { + FAIL; + } + Tst_count++; + +#ifdef CRACKERJACK_TEST + + EPERM buf.mode is non-zero and the caller does not have sufficient + privilege. Under Linux the CAP_SYS_TIME capability is required. +#endif + ENTER(0); + seteuid( 65535 ); + buf.modes = ADJ_OFFSET; + buf.offset = 10; + if( adjtimex( &buf ) < 0 && errno == EPERM ) { + PASS; + } else { + FAIL; + } + Tst_count++; + seteuid( 0 ); + +#ifdef CRACKERJACK_TEST + +CONFORMING TO + adjtimex() is Linux specific and should not be used in programs + intended to be portable. See adjtime(3) for a more portable, but less + flexible, method of adjusting the system clock. + +SEE ALSO + settimeofday(2), adjtime(3), capabilities(7) + + + +Linux 2.6.6 2004-05-27 ADJTIMEX(2) +#endif + } + cleanup(); + return(0); +} Added: trunk/crackerjack/testcases/alarm/man/Makefile =================================================================== --- trunk/crackerjack/testcases/alarm/man/Makefile (rev 0) +++ trunk/crackerjack/testcases/alarm/man/Makefile 2008-02-17 17:56:20 UTC (rev 557) @@ -0,0 +1,8 @@ +SRC = $(wildcard *.c) + +test: $(SRC) Makefile + $(CC) -I../../../include/man -o $@ $(CFLAGS) $< + +clean: + /bin/rm -f test + Added: trunk/crackerjack/testcases/alarm/man/alarm.c =================================================================== --- trunk/crackerjack/testcases/alarm/man/alarm.c (rev 0) +++ trunk/crackerjack/testcases/alarm/man/alarm.c 2008-02-17 17:56:20 UTC (rev 557) @@ -0,0 +1,205 @@ +/* + * + * Copyright (c) Crackerjack Project., 2007 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * NAME + * template.c + * + * DESCRIPTION + * This is a template file for crackerjack tests. + * + * ALGORITHM + * + * + * USAGE + * + * + * HISTORY + * + * + * RESTRICTIONS + * + */ +#if 0 +#include <usctest.h> +#include <test.h> +#else +#include "crackerjack/crackerjack.h" +#endif + +char tmpname[40]; +int parent; +int block = 1; + +/* + * cleanup() + * performs all the ONE TIME cleanup for this test at completion or + * premature exit + */ +void +cleanup(void) +{ + /* + * print timing status if that option was specified + * print errno log if that option was specified + */ + TEST_CLEANUP; + + tst_rmdir(); + unlink(tmpname); + + tst_exit(); +} + +/* + * setup + * performs all ONE TIME setup for this test + */ +void +setup(void) +{ + TEST_PAUSE; + + parent = getpid(); + + /* setup temporary file name */ + sprintf(tmpname, "%s.%d", __FILE__, parent); + +} + +#define ENTER(normal) tst_resm(TINFO, "Enter block %d: test %d (%s)", \ + block, Tst_count, normal?"NORMAL":"ERROR"); + +#define PASS tst_resm(TPASS, "Block %d: test %d PASSED", block, Tst_count ); +#define FAIL tst_resm(TFAIL, "Block %d: test %d FAILED", block, Tst_count ); + +int main(int ac, char **av) +{ + int lc; /* loop counter */ + char *msg; /* message returned from parse_opts */ + int fd, i; + int pid, dummy; + + /* parse standard options */ + if ((msg = parse_opts(ac, av, (option_t *)NULL, NULL)) != (char *)NULL){ + tst_brkm(TBROK, cleanup, "OPTION PARSING ERROR - %s", msg); + } + + + setup(); + + /* Check for looping state if -i option is given */ + for (lc = 0; TEST_LOOPING(lc); lc++) { + /* reset Tst_count in case we are looping */ + Tst_count = 0; +/* +ALARM(2) Linux Programmer's Manual ALARM(2) + + + +NAME + alarm - set an alarm clock for delivery of a signal + +SYNOPSIS + #include <unistd.h> + + unsigned int alarm(unsigned int seconds); + +DESCRIPTION + alarm() arranges for a SIGALRM signal to be delivered to the process in + seconds seconds. + + If seconds is zero, no new alarm() is scheduled. + + In any event any previously set alarm() is cancelled. + +RETURN VALUE + alarm() returns the number of seconds remaining until any previously + scheduled alarm was due to be delivered, or zero if there was no previ- + ously scheduled alarm. +*/ + ENTER(1); + if( alarm(10) == 0 ) { + PASS; + } else { + FAIL; + } + Tst_count++; + + ENTER(1); + if( alarm(10) > 0 ) { + PASS; + } else { + FAIL; + } + Tst_count++; + + ENTER(1); + if( alarm(0) > 0 ) { + PASS; + } else { + FAIL; + } + Tst_count++; + + ENTER(1); + if( alarm(0) == 0 ) { + PASS; + } else { + FAIL; + } + Tst_count++; + + /* EXTRA TEST CASES */ + for ( i = 2; i < 0xFFFFFFF; i *= 3 ) { + ENTER(1); + if( alarm(i) > 0 ) { + PASS; + } else { + FAIL; + } + Tst_count++; + } + +/* +NOTES + alarm() and setitimer() share the same timer; calls to one will inter- + fere with use of the other. + + sleep() may be implemented using SIGALRM; mixing calls to alarm() and + sleep() is a bad idea. + + Scheduling delays can, as ever, cause the execution of the process to + be delayed by an arbitrary amount of time. + +CONFORMING TO + SVr4, POSIX.1-2001, 4.3BSD + +SEE ALSO + gettimeofday(2), pause(2), select(2), setitimer(2), sigaction(2), sig- + nal(2), sleep(3) + + + +Linux 1993-07-21 ALARM(2) +*/ + } + cleanup(); + return(0); +} Added: trunk/crackerjack/testcases/clone/man/Makefile =================================================================== --- trunk/crackerjack/testcases/clone/man/Makefile (rev 0) +++ trunk/crackerjack/testcases/clone/man/Makefile 2008-02-17 17:56:20 UTC (rev 557) @@ -0,0 +1,8 @@ +SRC = $(wildcard *.c) + +test: $(SRC) Makefile + $(CC) -I../../../include/man -o $@ $(CFLAGS) $< + +clean: + /bin/rm -f test + Added: trunk/crackerjack/testcases/clone/man/clone.c =================================================================== --- trunk/crackerjack/testcases/clone/man/clone.c (rev 0) +++ trunk/crackerjack/testcases/clone/man/clone.c 2008-02-17 17:56:20 UTC (rev 557) @@ -0,0 +1,483 @@ +/* + * + * Copyright (c) Crackerjack Project., 2007 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * NAME + * template.c + * + * DESCRIPTION + * This is a template file for crackerjack tests. + * + * ALGORITHM + * + * + * USAGE + * + * + * HISTORY + * + * + * RESTRICTIONS + * + */ +#if 0 +#include <usctest.h> +#include <test.h> +#else +#include "crackerjack/crackerjack.h" +#endif + +#include <sched.h> + +char tmpname[40]; +int parent; +int block = 1; +void *stack; + +/* + * cleanup() + * performs all the ONE TIME cleanup for this test at completion or + * premature exit + */ +void +cleanup(void) +{ + /* + * print timing status if that option was specified + * print errno log if that option was specified + */ + TEST_CLEANUP; + + tst_rmdir(); + unlink(tmpname); + + tst_exit(); +} + +/* + * setup + * performs all ONE TIME setup for this test + */ +void +setup(void) +{ + TEST_PAUSE; + + parent = getpid(); + + /* setup temporary file name */ + sprintf(tmpname, "%s.%d", __FILE__, parent); + + stack = (void *)malloc( getpagesize() ); + if( stack == NULL ) { + tst_brkm( TBROK, cleanup, "%s", strerror(errno) ); + } + +} + +int clone_func(void *arg) +{ + return 0; +} + + +#define ENTER(normal) tst_resm(TINFO, "Enter block %d: test %d (%s)", \ + block, Tst_count, normal?"NORMAL":"ERROR"); + +#define PASS tst_resm(TPASS, "Block %d: test %d PASSED", block, Tst_count ); +#define FAIL tst_resm(TFAIL, "Block %d: test %d FAILED", block, Tst_count ); + +int main(int ac, char **av) +{ + int lc; /* loop counter */ + char *msg; /* message returned from parse_opts */ + int fd, i; + int pid, dummy; + + /* parse standard options */ + if ((msg = parse_opts(ac, av, (option_t *)NULL, NULL)) != (char *)NULL){ + tst_brkm(TBROK, cleanup, "OPTION PARSING ERROR - %s", msg); + } + + + setup(); + + /* Check for looping state if -i option is given */ + for (lc = 0; TEST_LOOPING(lc); lc++) { + /* reset Tst_count in case we are looping */ + Tst_count = 0; +#ifdef CRACKERJACK_TEST +CLONE(2) Linux Programmer's Manual CLONE(2) + + + +NAME + clone - create a child process + +SYNOPSIS + #include <sched.h> + + int clone(int (*fn)(void *), void *child_stack, int flags, void *arg); + + _syscall2(int, clone, int, flags, void *, child_stack) + + +DESCRIPTION + clone creates a new process, just like fork(2). clone is a library + function layered on top of the underlying clone system call, here- + inafter referred to as sys_clone. A description of sys_clone is given + towards the end of this page. + + Unlike fork(2), these calls allow the child process to share parts of + its execution context with the calling process, such as the memory + space, the table of file descriptors, and the table of signal han- + dlers. (Note that on this manual page, "calling process" normally + corresponds to "parent process". But see the description of + CLONE_PARENT below.) + + The main use of clone is to implement threads: multiple threads of + control in a program that run concurrently in a shared memory space. + + When the child process is created with clone, it executes the function + application fn(arg). (This differs from fork(2), where execution con- + tinues in the child from the point of the fork(2) call.) The fn argu- + ment is a pointer to a function that is called by the child process at + the beginning of its execution. The arg argument is passed to the fn + function. + + When the fn(arg) function application returns, the child process ter- + minates. The integer returned by fn is the exit code for the child + process. The child process may also terminate explicitly by calling + exit(2) or after receiving a fatal signal. + + The child_stack argument specifies the location of the stack used by + the child process. Since the child and calling process may share mem- + ory, it is not possible for the child process to execute in the same + stack as the calling process. The calling process must therefore set + up memory space for the child stack and pass a pointer to this space + to clone. Stacks grow downwards on all processors that run Linux + (except the HP PA processors), so child_stack usually points to the + topmost address of the memory space set up for the child stack. + + The low byte of flags contains the number of the signal sent to the + parent when the child dies. If this signal is specified as anything + other than SIGCHLD, then the parent process must specify the __WALL or + __WCLONE options when waiting for the child with wait(2). If no sig- + nal is specified, then the parent process is not signaled when the + child terminates. + + flags may also be bitwise-or'ed with one or several of the following + constants, in order to specify what is shared between the calling pro- + cess and the child process: + + + CLONE_PARENT + (Linux 2.4 onwards) If CLONE_PARENT is set, then the parent of + the new child (as returned by getppid(2)) will be the same as + that of the calling process. + + If CLONE_PARENT is not set, then (as with fork(2)) the child's + parent is the calling process. + + Note that it is the parent process, as returned by getppid(2), + which is signaled when the child terminates, so that if + CLONE_PARENT is set, then the parent of the calling process, + rather than the calling process itself, will be signaled. + + + CLONE_FS + If CLONE_FS is set, the caller and the child processes share + the same file system information. This includes the root of + the file system, the current working directory, and the umask. + Any call to chroot(2), chdir(2), or umask(2) performed by the + calling process or the child process also takes effect in the + other process. + + If CLONE_FS is not set, the child process works on a copy of + the file system information of the calling process at the time + of the clone call. Calls to chroot(2), chdir(2), umask(2) per- + formed later by one of the processes do not affect the other + process. + + + CLONE_FILES + If CLONE_FILES is set, the calling process and the child pro- + cesses share the same file descriptor table. File descriptors + always refer to the same files in the calling process and in + the child process. Any file descriptor created by the calling + process or by the child process is also valid in the other pro- + cess. Similarly, if one of the processes closes a file + descriptor, or changes its associated flags, the other process + is also affected. + + If CLONE_FILES is not set, the child process inherits a copy of + all file descriptors opened in the calling process at the time + of clone. Operations on file descriptors performed later by + either the calling process or the child process do not affect + the other process. + + + CLONE_NEWNS + (Linux 2.4.19 onwards) Start the child in a new namespace. + + Every process lives in a namespace. The namespace of a process + is the data (the set of mounts) describing the file hierarchy + as seen by that process. After a fork(2) or clone(2) where the + CLONE_NEWNS flag is not set, the child lives in the same names- + pace as the parent. The system calls mount(2) and umount(2) + change the namespace of the calling process, and hence affect + all processes that live in the same namespace, but do not + affect processes in a different namespace. + + After a clone(2) where the CLONE_NEWNS flag is set, the cloned + child is started in a new namespace, initialized with a copy of + the namespace of the parent. + + Only a privileged process may specify the CLONE_NEWNS flag. It + is not permitted to specify both CLONE_NEWNS and CLONE_FS in + the same clone call. + + + CLONE_SIGHAND + If CLONE_SIGHAND is set, the calling process and the child pro- + cesses share the same table of signal handlers. If the calling + process or child process calls sigaction(2) to change the + behavior associated with a signal, the behavior is changed in + the other process as well. However, the calling process and + child processes still have distinct signal masks and sets of + pending signals. So, one of them may block or unblock some + signals using sigprocmask(2) without affecting the other pro- + cess. + + If CLONE_SIGHAND is not set, the child process inherits a copy + of the signal handlers of the calling process at the time clone + is called. Calls to sigaction(2) performed later by one of the + processes have no effect on the other process. + + + CLONE_PTRACE + If CLONE_PTRACE is specified, and the calling process is being + traced, then trace the child also (see ptrace(2)). + + + CLONE_VFORK + If CLONE_VFORK is set, the execution of the calling process is + suspended until the child releases its virtual memory resources + via a call to execve(2) or _exit(2) (as with vfork(2)). + + If CLONE_VFORK is not set then both the calling process and the + child are schedulable after the call, and an application should + not rely on execution occurring in any particular order. + + + CLONE_VM + If CLONE_VM is set, the calling process and the child processes + run in the same memory space. In particular, memory writes + performed by the calling process or by the child process are + also visible in the other process. Moreover, any memory map- + ping or unmapping performed with mmap(2) or munmap(2) by the + child or calling process also affects the other process. + + If CLONE_VM is not set, the child process runs in a separate + copy of the memory space of the calling process at the time of + clone. Memory writes or file mappings/unmappings performed by + one of the processes do not affect the other, as with fork(2). + + + CLONE_PID + (Obsolete) If CLONE_PID is set, the child process is created + with the same process ID as the calling process. This is good + for hacking the system, but otherwise of not much use. Since + 2.3.21 this flag can be specified only by the system boot pro- + cess (PID 0). It disappeared in Linux 2.5.16. + + + CLONE_THREAD + (Linux 2.4 onwards) If CLONE_THREAD is set, the child is placed + in the same thread group as the calling process. + + If CLONE_THREAD is not set, then the child is placed in its own + (new) thread group, whose ID is the same as the process ID. + + (Thread groups are feature added in Linux 2.4 to support the + POSIX threads notion of a set of threads sharing a single PID. + In Linux 2.4, calls to getpid(2) return the thread group ID of + the caller.) + + + sys_clone + The sys_clone system call corresponds more closely to fork(2) in that + execution in the child continues from the point of the call. Thus, + sys_clone only requires the flags and child_stack arguments, which + have the same meaning as for clone. (Note that the order of these + arguments differs from clone.) + + Another difference for sys_clone is that the child_stack argument may + be zero, in which case copy-on-write semantics ensure that the child + gets separate copies of stack pages when either process modifies the + stack. In this case, for correct operation, the CLONE_VM option + should not be specified. + + +RETURN VALUE + On success, the PID of the child process is returned in the caller's + thread of execution. On failure, a -1 will be returned in the + caller's context, no child process will be created, and errno will be + set appropriately. +#endif + ENTER(1); + if( (pid = clone( clone_func, stack + getpagesize(), 0, NULL )) >= 0 ) { + PASS; + wait( &dummy ); + } else { + FAIL; + } + Tst_count++; + +#ifdef CRACKERJACK_TEST + +ERRORS + EAGAIN Too many processes are already running. + + ENOMEM Cannot allocate sufficient memory to allocate a task structure + for the child, or to copy those parts of the caller's context + that need to be copied. + + EINVAL Returned by clone when a zero value is specified for + child_stack. + + EINVAL Both CLONE_FS and CLONE_NEWNS were specified in flags. + +#endif + ENTER(0); + if( (pid = clone( clone_func, + stack + getpagesize(), + CLONE_FS | CLONE_NEWNS, NULL )) < 0 && errno == EINVAL ) + { + PASS; + } else { + FAIL; + wait( &dummy ); + } + Tst_count++; + +#ifdef CRACKERJACK_TEST + + EINVAL CLONE_THREAD was specified, but CLONE_SIGHAND was not. (Since + Linux 2.5.35.) +#endif + + ENTER(0); + if( (pid = clone( clone_func, + stack + getpagesize(), + CLONE_THREAD, NULL )) < 0 && errno == EINVAL ) + { + PASS; + } else { + FAIL; + wait( &dummy ); + } + Tst_count++; + +#ifdef CRACKERJACK_TEST + EINVAL Precisely one of CLONE_DETACHED and CLONE_THREAD was specified. + (Since Linux 2.6.0-test6.) +#endif + + ENTER(0); + if( (pid = clone( clone_func, + stack + getpagesize(), + CLONE_DETACHED | CLONE_THREAD, NULL )) < 0 && errno == EINVAL ) + { + PASS; + } else { + FAIL; + wait( &dummy ); + } + Tst_count++; + +#ifdef CRACKERJACK_TEST + EINVAL CLONE_SIGHAND was specified, but CLONE_VM was not. (Since Linux + 2.6.0-test6.) +#endif + + ENTER(0); + if( (pid = clone( clone_func, + stack + getpagesize(), + CLONE_SIGHAND, NULL )) < 0 && errno == EINVAL ) + { + PASS; + } else { + FAIL; + wait( &dummy ); + } + Tst_count++; + +#ifdef CRACKERJACK_TEST + + EPERM CLONE_NEWNS was specified by a non-root process (process with- + out CAP_SYS_ADMIN). +#endif + setuid( 65535 ); + ENTER(0); + if( (pid = clone( clone_func, + stack + getpagesize(), + CLONE_NEWNS, NULL )) < 0 && errno == EPERM ) + { + PASS; + } else { + FAIL; + wait( &dummy ); + } + Tst_count++; + +#ifdef CRACKERJACK_TEST + + EPERM CLONE_PID was specified by a process other than process 0. + +BUGS + There is no entry for clone in libc version 5. libc 6 (a.k.a. glibc + 2) provides clone as described in this manual page. + + +NOTES + For kernel versions 2.4.7-2.4.18 the CLONE_THREAD flag implied the + CLONE_PARENT flag. + + +CONFORMING TO + The clone and sys_clone calls are Linux-specific and should not be + used in programs intended to be portable. For programming threaded + applications (multiple threads of control in the same memory space), + it is better to use a library implementing the POSIX 1003.1c thread + API, such as the LinuxThreads library (included in glibc2). See + pthread_create(3). + + +SEE ALSO + fork(2), wait(2), pthread_create(3) + + + +Linux 2.4 2001-12-31 CLONE(2) +#endif + } + cleanup(); + return(0); +} Added: trunk/crackerjack/testcases/epoll_create/man/Makefile =================================================================== --- trunk/crackerjack/testcases/epoll_create/man/Makefile (rev 0) +++ trunk/crackerjack/testcases/epoll_create/man/Makefile 2008-02-17 17:56:20 UTC (rev 557) @@ -0,0 +1,8 @@ +SRC = $(wildcard *.c) + +test: $(SRC) Makefile + $(CC) -I../../../include/man -o $@ $(CFLAGS) $< + +clean: + /bin/rm -f test + Added: trunk/crackerjack/testcases/epoll_create/man/epoll_create.c =================================================================== --- trunk/crackerjack/testcases/epoll_create/man/epoll_create.c (rev 0) +++ trunk/crackerjack/testcases/epoll_create/man/epoll_create.c 2008-02-17 17:56:20 UTC (rev 557) @@ -0,0 +1,166 @@ +/* + * + * Copyright (c) Crackerjack Project., 2007 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * NAME + * template.c + * + * DESCRIPTION + * This is a template file for crackerjack tests. + * + * ALGORITHM + * + * + * USAGE + * + * + * HISTORY + * + * + * RESTRICTIONS + * + */ +#if 0 +#include <usctest.h> +#include <test.h> +#else +#include "crackerjack/crackerjack.h" +#endif + +char tmpname[40]; +int parent; +int block = 1; + +/* + * cleanup() + * performs all the ONE TIME cleanup for this test at completion or + * premature exit + */ +void +cleanup(void) +{ + /* + * print timing status if that option was specified + * print errno log if that option was specified + */ + TEST_CLEANUP; + + tst_rmdir(); + unlink(tmpname); + + tst_exit(); +} + +/* + * setup + * performs all ONE TIME setup for this test + */ +void +setup(void) +{ + TEST_PAUSE; + + parent = getpid(); + + /* setup temporary file name */ + sprintf(tmpname, "%s.%d", __FILE__, parent); + +} + +#define ENTER(normal) tst_resm(TINFO, "Enter block %d: test %d (%s)", \ + block, Tst_count, normal?"NORMAL":"ERROR"); + +#define PASS tst_resm(TPASS, "Block %d: test %d PASSED", block, Tst_count ); +#define FAIL tst_resm(TFAIL, "Block %d: test %d FAILED", block, Tst_count ); + +int main(int ac, char **av) +{ + int lc; /* loop counter */ + char *msg; /* message returned from parse_opts */ + int fd, i; + unsigned nr_events, min = 0, max = (unsigned)-1; + int efd; + + /* parse standard options */ + if ((msg = parse_opts(ac, av, (option_t *)NULL, NULL)) != (char *)NULL){ + tst_brkm(TBROK, cleanup, "OPTION PARSING ERROR - %s", msg); + } + + + setup(); + + /* Check for looping state if -i option is given */ + for (lc = 0; TEST_LOOPING(lc); lc++) { + /* reset Tst_count in case we are looping */ + Tst_count = 0; + +/* +SYNOPSIS + #include <sys/epoll.h> + + int epoll_create(int size) + +DESCRIPTION + Open an epoll file descriptor by requesting the kernel allocate an + event backing store dimensioned for size descriptors. The size is not + the maximum size of the backing store but just a hint to the kernel + about how to dimension internal structures. The returned file descrip- + tor will be used for all the subsequent calls to the epoll interface. + The file descriptor returned by epoll_create(2) must be closed by using + close(2). + +RETURN VALUE + When successful, epoll_create(2) returns a non-negative integer identi- + fying the descriptor. When an error occurs, epoll_create(2) returns -1 + and errno is set appropriately. +*/ + ENTER(1); + efd = epoll_create( 10 ); + if( efd >= 0 ) { + PASS; + } else { + FAIL; + } + Tst_count++; +/* + +ERRORS + EINVAL size is not positive. +*/ + ENTER(0); + efd = epoll_create( -1 ); + if( efd < 0 && errno == EINVAL ) { + PASS; + } else { + FAIL; + } + Tst_count++; + +/* + ENFILE The system limit on the total number of open files has + been reached. + + ENOMEM There was insufficient memory to create the kernel + object. +*/ + + } + cleanup(); + return(0); +} Added: trunk/crackerjack/testcases/epoll_ctl/man/Makefile =================================================================== --- trunk/crackerjack/testcases/epoll_ctl/man/Makefile (rev 0) +++ trunk/crackerjack/testcases/epoll_ctl/man/Makefile 2008-02-17 17:56:20 UTC (rev 557) @@ -0,0 +1,8 @@ +SRC = $(wildcard *.c) + +test: $(SRC) Makefile + $(CC) -I../../../include/man -o $@ $(CFLAGS) $< + +clean: + /bin/rm -f test + Added: trunk/crackerjack/testcases/epoll_ctl/man/epoll_ctl.c =================================================================== --- trunk/crackerjack/testcases/epoll_ctl/man/epoll_ctl.c (rev 0) +++ trunk/crackerjack/testcases/epoll_ctl/man/epoll_ctl.c 2008-02-17 17:56:20 UTC (rev 557) @@ -0,0 +1,269 @@ +/* + * + * Copyright (c) Crackerjack Project., 2007 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * NAME + * template.c + * + * DESCRIPTION + * This is a template file for crackerjack tests. + * + * ALGORITHM + * + * + * USAGE + * + * + * HISTORY + * + * + * RESTRICTIONS + * + */ +#if 0 +#include <usctest.h> +#include <test.h> +#else +#include "crackerjack/crackerjack.h" +#endif +#include <sys/epoll.h> + +char tmpname[40]; +int parent; +int block = 1; + +/* + * cleanup() + * performs all the ONE TIME cleanup for this test at completion or + * premature exit + */ +void +cleanup(void) +{ + /* + * print timing status if that option was specified + * print errno log if that option was specified + */ + TEST_CLEANUP; + + tst_rmdir(); + unlink(tmpname); + + tst_exit(); +} + +/* + * setup + * performs all ONE TIME setup for this test + */ +void +setup(void) +{ + TEST_PAUSE; + + parent = getpid(); + + /* setup temporary file name */ + sprintf(tmpname, "%s.%d", __FILE__, parent); + +} + +#define ENTER(normal) tst_resm(TINFO, "Enter block %d: test %d (%s)", \ + block, Tst_count, normal?"NORMAL":"ERROR"); + +#define PASS tst_resm(TPASS, "Block %d: test %d PASSED", block, Tst_count ); +#define FAIL tst_resm(TFAIL, "Block %d: test %d FAILED", block, Tst_count ); + +int main(int ac, char **av) +{ + int lc; /* loop counter */ + char *msg; /* message returned from parse_opts */ + int fd, i; + int pid, dummy; + struct epoll_event event; + + /* parse standard options */ + if ((msg = parse_opts(ac, av, (option_t *)NULL, NULL)) != (char *)NULL){ + tst_brkm(TBROK, cleanup, "OPTION PARSING ERROR - %s", msg); + } + + + setup(); + + /* Check for looping state if -i option is given */ + for (lc = 0; TEST_LOOPING(lc); lc++) { + /* reset Tst_count in case we are looping */ + Tst_count = 0; +#ifdef CRACKERJACK_TEST +EPOLL_CTL(2) Linux Programmer's Manual EPOLL_CTL(2) + + + +NAME + epoll_ctl - control interface for an epoll descriptor + +SYNOPSIS + #include <sys/epoll.h> + + int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event) + +DESCRIPTION + Control an epoll descriptor, epfd, by requesting that the operation op + be performed on the target file descriptor, fd. The event describes + the object linked to the file descriptor fd. The struct epoll_event is + defined as : + + typedef union epoll_data { + void *ptr; + int fd; + __uint32_t u32; + __uint64_t u64; + } epoll_data_t; + + struct epoll_event { + __uint32_t events; /* Epoll events */ + epoll_data_t data; /* User data variable */ + }; + + The events member is a bit set composed using the following available + event types : + + EPOLLIN + The associated file is available for read(2) operations. + + EPOLLOUT + The associated file is available for write(2) operations. + + EPOLLRDHUP + Stream socket peer closed connection, or shut down writing half + of connection. (This flag is especially useful for writing sim- + ple code to detect peer shutdown when using Edge Triggered moni- + toring.) + + EPOLLPRI + There is urgent data available for read(2) operations. + + EPOLLERR + Error condition happened on the associated file descriptor. + epoll_wait(2) will always wait for this event; it is not neces- + sary to set it in events. + + EPOLLHUP + Hang up happened on the associated file descriptor. + epoll_wait(2) will always wait for this event; it is not neces- + sary to set it in events. + + EPOLLET + Sets the Edge Triggered behaviour for the associated file + descriptor. The default behaviour for epoll is Level Triggered. + See epoll(7) for more detailed information about Edge and Level + Triggered event distribution architectures. + + EPOLLONESHOT (since kernel 2.6.2) + Sets the one-shot behaviour for the associated file descriptor. + This means that after an event is pulled out with epoll_wait(2) + the associated file descriptor is internally disabled and no + other events will be reported by the epoll interface. The user + must call epoll_ctl(2) with EPOLL_CTL_MOD to re-enable the file + descriptor with a new event mask. + + The epoll interface supports all file descriptors that support poll(2). + Valid values for the op parameter are : + + EPOLL_CTL_ADD + Add the target file descriptor fd to the epoll descriptor + epfd and associate the event event with the internal file + linked to fd. + + EPOLL_CTL_MOD + Change the event event associated with the target file + descriptor fd. + + EPOLL_CTL_DEL + Remove the target file descriptor fd from the epoll file + descriptor, epfd. The event is ignored and can be NULL + (but see BUGS below). + +RETURN VALUE + When successful, epoll_ctl(2) returns zero. When an error occurs, + epoll_ctl(2) returns -1 and errno is set appropriately. + +ERRORS + EBADF epfd or fd is not a valid file descriptor. +#endif + ENTER(0); + if( epoll_ctl( -1, 0, 0, &event ) < 0 && errno == EBADF ) { + PASS; + } else { + FAIL; + } + Tst_count++; + ENTER(0); + if( epoll_ctl( 0, 0, -1, &event ) < 0 && errno == EBADF ) { + PASS; + } else { + FAIL; + } + Tst_count++; + +#if 0 + EEXIST op was EPOLL_CTL_ADD, and the supplied file descriptor fd is + already in epfd. + + EINVAL epfd is not an epoll file descriptor, or fd is the same as epfd, + or the requested operation op is not supported by this inter- + face. +#endif + + ENTER(0); + if( epoll_ctl( 0, 0, 0, &event ) < 0 && errno == EINVAL ) { + PASS; + } else { + FAIL; + } + Tst_count++; + +#if 0 + ENOENT op was EPOLL_CTL_MOD or EPOLL_CTL_DEL, and fd is not in epfd. + + ENOMEM There was insufficient memory to handle the requested op control + operation. + + EPERM The target file fd does not support epoll. + +CONFORMING TO + epoll_ctl(2) is a new API introduced in Linux kernel 2.5.44. The + interface should be finalized by Linux kernel 2.5.66. + +BUGS + In kernel versions before 2.6.9, the EPOLL_CTL_DEL operation required a + non-NULL pointer in event, even though this argument is ignored. Since + kernel 2.6.9, event can be specified as NULL when using EPOLL_CTL_DEL. + +SEE ALSO + epoll_create(2), poll(2), epoll_wait(2), epoll(7) + + + +Linux 2002-10-23 EPOLL_CTL(2) +#endif + } + cleanup(); + return(0); +} Added: trunk/crackerjack/testcases/epoll_wait/man/Makefile =================================================================== --- trunk/crackerjack/testcases/epoll_wait/man/Makefile (rev 0) +++ trunk/crackerjack/testcases/epoll_wait/man/Makefile 2008-02-17 17:56:20 UTC (rev 557) @@ -0,0 +1,8 @@ +SRC = $(wildcard *.c) + +test: $(SRC) Makefile + $(CC) -I../../../include/man -o $@ $(CFLAGS) $< + +clean: + /bin/rm -f test + Added: trunk/crackerjack/testcases/epoll_wait/man/epoll_wait.c =================================================================== --- trunk/crackerjack/testcases/epoll_wait/man/epoll_wait.c (rev 0) +++ trunk/crackerjack/testcases/epoll_wait/man/epoll_wait.c 2008-02-17 17:56:20 UTC (rev 557) @@ -0,0 +1,226 @@ +/* + * + * Copyright (c) Crackerjack Project., 2007 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * NAME + * template.c + * + * DESCRIPTION + * This is a template file for crackerjack tests. + * + * ALGORITHM + * + * + * USAGE + * + * + * HISTORY + * + * + * RESTRICTIONS + * + */ +#if 0 +#include <usctest.h> +#include <test.h> +#else +#include "crackerjack/crackerjack.h" +#endif + +#include <sys/epoll.h> + +char tmpname[40]; +int parent; +int block = 1; + +/* + * cleanup() + * performs all the ONE TIME cleanup for this test at completion or + * premature exit + */ +void +cleanup(void) +{ + /* + * print timing status if that option was specified + * print errno log if that option was specified + */ + TEST_CLEANUP; + + tst_rmdir(); + unlink(tmpname); + + tst_exit(); +} + +/* + * setup + * performs all ONE TIME setup for this test + */ +void +setup(void) +{ + TEST_PAUSE; + + parent = getpid(); + + /* setup temporary file name */ + sprintf(tmpname, "%s.%d", __FILE__, parent); + +} + +#define ENTER(normal) tst_resm(TINFO, "Enter block %d: test %d (%s)", \ + block, Tst_count, normal?"NORMAL":"ERROR"); + +#define PASS tst_resm(TPASS, "Block %d: test %d PASSED", block, Tst_count ); +#define FAIL tst_resm(TFAIL, "Block %d: test %d FAILED", block, Tst_count ); + +int main(int ac, char **av) +{ + int lc; /* loop counter */ + char *msg; /* message returned from parse_opts */ + int fd, i; + int pid, dummy; + struct epoll_event events; + int epfd; + + /* parse standard options */ + if ((msg = parse_opts(ac, av, (option_t *)NULL, NULL)) != (char *)NULL){ + tst_brkm(TBROK, cleanup, "OPTION PARSING ERROR - %s", msg); + } + + + setup(); + + /* Check for looping state if -i option is given */ + for (lc = 0; TEST_LOOPING(lc); lc++) { + /* reset Tst_count in case we are looping */ + Tst_count = 0; +#ifdef CRACKERJACK_TEST +EPOLL_WAIT(2) Linux Programmer's Manual EPOLL_WAIT(2) + + + +NAME + epoll_wait - wait for an I/O event on an epoll file descriptor + +SYNOPSIS + #include <sys/epoll.h> + + int epoll_wait(int epfd, struct epoll_event * events, + ... [truncated message content] |