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.
    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...
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

Reply via email to