ceph/qa/qa_scripts/sample.pl

109 lines
3.2 KiB
Perl

#! /usr/bin/perl
use strict;
use warnings;
#===Variable Declarations====
my $home = "~teuthworker";
my $teuthology = "~teuthology/teuthology/virtualenv/bin/teuthology";
my $archivedir = "$home/qa/archive";
my $config_yaml = "fixed-3.yaml";
#my $test_name = qq/rbd_api_tests.pl/;
my $test_name = qq/[% script %]/;
my $get_script_name = &get_value($test_name,0,'\.');
my $targetyaml = "$home/qa/targets.yaml";
=head1
************Function Definition*************************************************************************
Name of Function: get_value
Description: get_value() function splits the given command output with the delimiter passed to it
and returns the desired index of the array
Arguments: $cmd_output, $index, $delimiter
Argument Description:
$cmd_output = String that holds the command output from which required value has to be extracted.
$index = Index of the array
$delimiter = Delimiter used in split()
********************************************************************************************************
=cut
sub get_value
{
my ($cmd_output, $index,$delimiter) = @_;
my $var = qq/$delimiter/;
my @split_cmd_output = split($var,$cmd_output);
my $return_val = $split_cmd_output[$index];
return $return_val;
}
=head1
************Function Definition*************************************************************************
Name of Function: locate_file
Description: locate_file() function locates the input file passed to it and passes the command
output to get_value() file.
Arguments: $get_yaml
Argument Description:
$get_yaml = Name of yaml file to be located
********************************************************************************************************
=cut
sub locate_file
{
my ($get_yaml) = @_;
my $loc_yaml = `locate $get_yaml`;
my $taskyaml = &get_value($loc_yaml,0,"\\n");
return $taskyaml;
}
=head1
************Function Definition*************************************************************************
Name of Function: generate_logfile
Description: Generates a path for log file in the name of test with embedded time stamp under
archivedir.
Arguments: None
Argument Description: NA
********************************************************************************************************
=cut
sub generate_log_path
{
my @time = split(/ /, localtime());
my $stamp = $time[1] . "-" . $time[2] . "-" . $time[4] . "-" . $time[3];
my $log_file = "$archivedir/$get_script_name-$stamp";
return $log_file;
}
# Main starts here
my $task_yaml = "$get_script_name"."."."yaml";
my $configyaml = &locate_file($config_yaml);
my $taskyaml = &locate_file($task_yaml);
my $logfile_loc = &generate_log_path();
my $tcommand = "$teuthology $configyaml $taskyaml $targetyaml --archive $logfile_loc";
print "$tcommand\n";
system ($tcommand);
if ($? != 0) {
printf ("Failure $?\n");
open (TCOMP, '>>test_completed.txt');
close (TCOMP);
open (TCOMP, '>>log.txt');
print TCOMP "[Failure]\n";
close (TCOMP);
exit 1;
} else {
printf ("Success $?\n");
open (TCOMP, '>>test_completed.txt');
close (TCOMP);
open (TCOMP, '>>log.txt');
print TCOMP "[Success]\n";
close (TCOMP);
exit 0;
}