On Wed, 2009-08-12 at 01:42 -0700, Garrett Cooper wrote: > On Tue, Aug 11, 2009 at 10:30 AM, Subrata > Modak<[email protected]> wrote: > > At the heart of this infrastructure is this Script, which will actually: > > 1) Change the temporary command file generated by runltp, > > 2) Create a new temporary command file which will have the following entries > > against each one entry in the command file: > > i) Same TAG COMMAND_LINE entry, > > ii) Entry to call the script to insert faults, > > iii) Entry to run as many loops as specified by the user, > > iv) Entry to call the script to restore kernel to default state, > > > > It is capable of creating new entries in the temporary command file with the > > following tags and command lines: > > TAG_NAME=tag1, COMMANDLINE="test1", > > TAG_NAME=tag1_loop1, COMMANDLINE="insert_fault_in_kernel; test1", > > TAG_NAME=tag1_loop2, COMMANDLINE="test1", > > ... > > TAG_NAME=tag1_loopn, COMMANDLINE="test1; restore_default_kernel", > > > > Signed-off-by: Subrata Modak <[email protected]> > > --- > > > > diff -uprN > > ltp-full-20090731.orig/tools/create_kernel_faults_in_loops_and_probability.pl > > ltp-full-20090731/tools/create_kernel_faults_in_loops_and_probability.pl > > --- > > ltp-full-20090731.orig/tools/create_kernel_faults_in_loops_and_probability.pl > > 1970-01-01 05:30:00.000000000 +0530 > > +++ > > ltp-full-20090731/tools/create_kernel_faults_in_loops_and_probability.pl > > 2009-08-11 20:23:54.000000000 +0530 > > @@ -0,0 +1,97 @@ > > +#!/usr/bin/perl > > +################################################################################ > > +## > > ## > > +## Copyright (c) International Business Machines Corp., 2009 > > ## > > +## > > ## > > +## 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 > > ## > > +## > > ## > > +################################################################################ > > +# > > ## > > +# File : create_kernel_faults_in_loops_and_probability.pl > > ## > > +# > > ## > > +# Usage: create_kernel_faults_in_loops_and_probability.pl\ > > ## > > +# <LTP_COMMAND_FILE> <NO_OF_LOOPS_EACH_TEST_WILL_RUN>\ > > ## > > +# <PROBABILITY_OF_FAULT_INJECTION> > > ## > > +# > > ## > > +# Description: This is a simple perl script which will take ltp command > > file ## > > +# as input and then create a final command file while will > > have ## > > +# the following entries for each test tag: > > ## > > +# 1) <tag_name_loop1> <test_binary_name> > > ## > > +# 2) <tag_name_loop2> <insert_kernel_faults.sh > > test_binary_name>## > > +# 3) tag entried from loop3 to loop(n-1) > > ## > > +# 4) <tag_name_loopn> <restore_kernel_faults_default.sh > > test_binary_name>## > > +# > > ## > > +# Author: Subrata Modak <[email protected]> > > ## > > +# > > ## > > +# History: Aug 11 2009 - Created - Subrata Modak. > > ## > > +################################################################################ > > + > > +my $command_file = shift (@ARGV) || syntax(); > > +my $loops = shift (@ARGV) || syntax(); > > +my $failure_probability = shift (@ARGV) || syntax(); > > + > > +sub syntax() { > > + print "syntax: create_fault_in_loops_and_probability.pl\ > > + <LTP_COMMAND_FILE> <NO_OF_LOOPS_EACH_TEST_WILL_RUN>\ > > + <PROBABILITY_OF_FAULT_INJECTION>\n"; > > + exit (1); > > +} > > +#$ENV{TEST_START_TIME}) > > + > > + > > +open (FILE, $command_file) || die "Cannot open file: $command_file\n"; > > +while ($line = <FILE>) { > > + if ($line =~ /^#/) { > > + print "$line"; > > + next; > > + } > > + if ($line =~ /^\n$/) { > > + next; > > + } > > + chomp $line; > > + print "$line\n"; #Print one instance for stable execution > > + @tag_and_actual_command = split(/\ /, $line); > > + > > + #The remaining loops should be running under fault injection > > + for ($counter=1; $counter<=$loops; $counter++) { > > + my $token_counter = 0; > > + foreach my $token (@tag_and_actual_command) { > > + if ($token_counter == 0 ) { > > + #Time to append the actual command tag with > > the loop no. > > + print $token . "_loop_" . $counter . " "; > > + $token_counter++; > > + next; > > + } > > + if ($token_counter == 1 && $counter == 1) { > > + #Time to include the fault injection script > > in the first loop > > + print > > "\$LTPROOT/tools/insert_kernel_faults.sh " . $failure_probability . "; " . > > $token; > > + $token_counter++; > > + next; > > + } > > + print " " . $token . " "; > > + } > > + if ($counter == $loops) { > > + #Time to withdraw the faults once the last loop has > > been executed > > + #Until all faults has been successfully restored to > > default values... > > + #Keep restoring them > > + print "; " . > > "\$LTPROOT/tools/restore_kernel_faults_default.sh; RC=\$?; while [ \$RC -ne > > 0 ]; do \$LTPROOT/tools/restore_kernel_faults_default.sh; RC=\$?; done\n" > > + } else { > > + print "\n" > > + } > > + } > > + > > +} > > +close (FILE); > > + > > Hi Subrata, > 1. Why is this written in perl? bourne shell should be the maximum > requirement for any and all infrastructure scripts.
I initially wrote this in perl as i feel more comfortable in doing regular expression in perl than in any other language. If you want you can later replace it with a shell script, i will not have any objection. > 2. Why not write this in a runtest-ish file format, e.g. > > [tag] [command] > > ? That way you can feed the command through pan at least... ThatÅ› exactly it is doing. Before the original temporary command file is passed to ltp-pan, this script is just modifying that command file and passing to ltp-pan. So, ltp-pan has no idea of what it is running. It is just parsing the tags and commands associated with them. I am exploiting that behavior only without touching anything in ltp-pan. Regards-- Subrata > Thanks > -Garrett ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
