检查工具

 #check the files in the first enter dir with the logsbase-second enter dir
sub getfilenameto{
 my $dir =$_[0];
 print "$_[0]/n";
 opendir DH, $dir or die "Cannot open $dir: $!";
 @allnames=();
 foreach $file(readdir DH){
 if($file=~/.log/)
  {push(@allnames,$file);  }
 }
 closedir DH;
 return @allnames;
}
sub openfile{
 my $filename=$_[0];
 my $file = "$path/$filename";
 open(MYFILE,$file)||die"cannot open $file";
}
sub searchfail{
 my $filename =$_[0];
 print "$filename/n";
# system("pause");
 my $state=0;
 openfile($filename);
 while(defined($line=<MYFILE>))
 {
  if($line=~/client/s/d*/s(.*failed)/)
  {$failreason=$1;
#   print "failreason:$failreason/n";
#   system("pause");
   if($filename=~/grammar_error.log/)
   {
    if($failreason=~/MRCP_COMMAND_DEFINE_GRAMMAR/)
    {
     $state=1;
     print "$failreason/n";
    }
   }
   else{$state=-1;}
   last;
  }
  else{$state=1;}
 } 
 return $state;
 close(MYFILE);
}
sub matchtesttype{
 
 my $filename=$_[0];
 my $testtype="";
 openfile($filename);
 while(defined($line=<MYFILE>))
 {
  if($line=~/TestTypeId/)
  {
   @values=split(//s/,$line);
   $testtype=pop(@values);
  }    
 }
 return $testtype;
 close(MYFILE);
}
sub casem002{
 my $line;
 my $numberstop=0;
 my $filename=$_[0];
 my $failrearon;
 openfile($filename);
 while(defined($line=<MYFILE>))
 {
  if($line=~/client/s/d*/s(.*failed)/)
  {$failreason=$1;
   return 1;
  }
  else{return -1;}
 } 
 close(FILE);
}
sub caseC002{
 my $line;
 my $filename=$_[0];
 my $ifcancel=0;
 openfile($filename);
 while(defined($line=<MYFILE>))
 {
  next if($line=~/SENDING RECOGNIZE REQUEST/);
  if($line=~/cancelled/)
  {
   $ifcancel=1;
  }  
 } 
 if($ifcancel==1)
 {return 1;}
 elsif($ifcancel==0)
 {return -1;}
 colse(FILE);
}
sub caseASR0001{
 my $line;
 my $filename=$_[0];
 my $ifback=0;
 openfile($filename);
 while(defined($line=<MYFILE>))
 {
  next if($line=~/SENDING STOP REQUEST/);
  next if($line=~/DEFINE-GRAMMARS/);
  if($line=~/200 COMPLETE/)
  {
   $ifback=1;
  }
 }
 if ($ifback==1)
 {return 1;}
 elsif($ifback==0)
 {return -1;}
 colse(FILE); 
}
sub cases001{
 my $line;
 my $filename=$_[0];
 my $ifoptions=0;
 openfile($filename);
 while(defined($line=<MYFILE>))
 {
  if($line=~/CSeq:.*OPTIONS/)
  {
   $ifoptions=1;
  }
 }
 if ($ifoptions==1)
 {return 1;}
 elsif($ifoptions==0)
 {return -1;}
 colse(FILE); 
}
sub compare_testcase{
 $matchnum=0;
 $matchnum0=0;
 my $filename=$_[0];
# print "file:$filename/n";
# system("pause");
 openfile($filename);
 while(defined($line=<MYFILE>))
 {
 #current thread id:bd8 [06/04/09 16:47:38:765]:client 0  TestParseResult, Test Case [0] TXLF/000.vox cai4_feng1_jun1 --> 蔡峰钧 mismatch 0.90 frameNum 118
 #[06/29/09 14:20:19:296]:client 0:                                        Test Case [0] TXLF/000.vox cai4_feng1_jun1 --> cai4_feng1_jun1 match 0.88 frameNum 118
   if($line=~/(Test Case.*]/s)(.*)(/sframeNum.*)/)
   {
    push(@testcases,$2);
#    print "now:testcase:$2/n";
  }
 }
 foreach $result(@testcases)
 {

  if($result=~/(.*-->)/s(.*)/s(.*)/s(.*)/) 
  {
   push(@ifmatch,$3);
   push(@scores,$4);
#   print "now:ifmatch:$3/n scores:$4/n";
  }
 }
 foreach (@ifmatch)
 {
  if(/^match$/)
  {
   $matchnum++;
#   print "$_ matchnum++/n";
  }
  else {$mismatchunm++;}
 }
 close(MYFILE);
 my $file0= "$path0/$filename";
 open(MYFILE,$file0)||die"cannot open $file0";
 while(defined($line0=<MYFILE>))
 {
  if($line0=~/.*-->/)
  {
  chomp($line0);
   push(@testcases0,$line0);
#   print "old:testcase:$line0/n";
   }
 }
 foreach $result0(@testcases0)
 {
  if($result0=~/(.*-->)/s(.*)/s(.*)/s(.*)/) 
  {
   push(@ifmatch0,$3);
   push(@scores0,$4);
#   print "old:ifmatch:$3/n scores:$4/n";
  }
 }
 foreach (@ifmatch0)
 {
  if(/^match$/)
  {$matchnum0++;}
  else {$mismatchunm0++;}
 }
 
 for($index=0;$index<@testcases;$index++)
 {
  if($testcases[$index]=~/^$testcases0[$index]$/i)
  {
   print "$index:the same/n";
  }
   else
   {
    print "$index:new:$ifmatch[$index] $scores[$index] /n";
    print "$index:old:$ifmatch0[$index] $scores0[$index]/n";
    if($ifmatch[$index]=~/^$ifmatch0[$index]$/i)
    {
     if($ifmatch[$index]=~/^match$/i)
     {
      $balance_match[$bothmatch_time]=$scores[$index]-$scores0[$index];
      if($balance_match[$bothmatch_time]>0)
      {print "$index:match higher:$balance_match[$bothmatch_time]/n";}
      elsif($balance_match[$bothmatch_time]<0)
      {print "$index:match lower:$balance_match[$bothmatch_time]/n";}
      $bothmatch_time++;
     }
     elsif($ifmatch[$index]=~/^mismatch$/i)
     {
      $balance_mismatch[$bothmismatch_time]=$scores[$index]-$scores0[$index];
      if($balance_mismatch[$bothmismatch_time]>0)
      {print "$index:mismatch higher:$balance_mismatch[$bothmismatch_time]/n";}
      elsif($balance_mismatch[$bothmismatch_time]<0)
      {print "$index:mismatch lower:$balance_mismatch[$bothmismatch_time]/n";}
      $bothmismatch_time++;
     }
    }
    else
    {
     print "$index:now:$testcases[$index]/n";
     print "$index:old:$testcases0[$index]/n";
    }
   } 
  }
 @testcases0=();
 @testcases=();
 @ifmatch=();
 @ifmatch0=();
 @scores=();
 @scores0=();
 close(MYFILE);
# print "$matchnum $matchnum0/n";
# system("pause");
 if($matchnum<$matchnum0)
 {return -1;}
 elsif($matchnum==$matchnum0)
 {return 0;}
 elsif($matchnum>$matchnum0)
 {return 1;}

}
sub timecost{
 my $filename =$_[0];
 openfile($filename);
 while(defined($line=<MYFILE>))
 {
  if($line=~/(Total times/s)(/d*)(/s.*)/)
  {
   $timecost=$2;
  }
  else {next;}
 }
 close(MYFILE);
 my $file0= "$path0/$filename";
 open(MYFILE,$file0)||die"cannot open $file0";
 while(defined($line0=<MYFILE>))
 {
  if($line0=~/(Total times/s)(/d*)(/s.*)/)
  {
   $timecost0=$2;
  }
  else {next;}
 }
$time_balance=$timecost-$timecost0;
return $time_balance; 
}
sub main{
 our $path=$ARGV[0];
 our $path0=$ARGV[1];
 if ((!-e $path)||(!-e $path0))
 {
  print "Cannot open $path or $path0/n" ;
  system("pause");
 }
 my @filenames=getfilenameto($path);
 my @filenames0=getfilenameto($path0);
 my $testtypeid;
 my $state=0;
 my $state_com=0;
 our @identifiers;
 my $passnum=0;
 my $errornum=0;
 our @balance_match;
 our @balance_mismatch;
 our $bothmatch_time=0;
 our $bothmismatch_time=0;
 our $allscore_match=0;
 our $allscore_mismatch=0;
 our @time_balance;
 our $failreason;
 our $matchnum;
 our $mismatchnum;
 our $matchnum0;
 our $mismatchnum0;  
  my $testtypeid=matchtesttype($filenames[$i]);
  print "TestTypeId = $testtypeid/n";
  for($i=0;$i<@filenames;$i++)
 {   
  $state_com=searchfail($filenames[$i]);

  if (($testtypeid=~/N000/i)||($testtypeid=~/C002/i)||($testtypeid=~/ASR_0001/i)||($testtypeid=~/S001/i)||($testtypeid=~/M004/i)||($testtypeid=~/M005/i))
  { 
   print "particular---/n";
   $state=compare_testcase($filenames[$i]);       
   if(($state==-1)||($state_com==-1))
   {
    print "Test Case [$i]: fail/n"; 
    if($state_com==-1)       
    {print "Reason:$failreason/n";}
    elsif($state==-1)
    {print "Reason:lower rate/n";}     
    $identifiers[$i]=-1;
   }
   elsif(($state==0)||($state==1))
   {
    print "Test Case [$i]: pass/n";
    $identifiers[$i]=1;
   }
         
  }
  
  if ($testtypeid=~/M002_1/i)
  {
   $state=casem002($filenames[$i]);
   if($state==-1)
   {
    print "Test Case [$i]: fail/n";
    print "can not stop sipsession/n";
    
    $identifiers[$i]=-1;;
   }
   else
   {
    print "can stop sipsession/n";
    $identifiers[$i]=1;
   }
   $state=0;
   $testtypeid="";  
  }
  if($testtypeid=~/C002/i)
  {
   $state=caseC002($filenames[$i]);
   if ($state==-1)
   {
    print "cancel-if-queue is disabled/n";
    $identifiers[$i]=-1;;
   }
   elsif($state==1)
   {
    print "cancel-if-queue is ok/n";
    $identifiers[$i]=1;
   }
   $state=0;
   $testtypeid="";
  }
  if($testtypeid=~/ASR_0001/i)
  {
   $state=caseASR0001($filenames[$i]);
   if($state==-1)
   {
    print "it havenot release resource after get-result/n";
    $identifiers[$i]=-1;
   }
   else
   {
    print "it have releaseed resource after get-result/n";
    $identifiers[$i]=1;
   }
   $state=0;
   $testtypeid="";
  }
   if($testtypeid=~/S001/i)
  {
   $state=cases001($filenames[$i]);
   if($state==-1)
   {
    print "options message fail/n";
    $identifiers[$i]=-1;
   }
   else
   {
    print "options message ok/n";
    $identifiers[$i]=1;
   }
   $testtypeid="";
   $state=0;
  }
  $time_balance[$i]=timecost($filenames[$i]);
  print "Time cost balance is $time_balance[$i]/n";
  print"--------------------------------------/n";
 }
# ------------count------------------------ 
 for($j=0;$j<@balance_match;$j++)
 {$allscore_match+=$balance_match[$j];}
 if($j!=0)
 {
  our $average_match=$allscore_match/$j;
  print "the average of match score balance is $average_match/n";
 }
 for($j=0;$j<@balance_mismatch;$j++)
 {$allscore_mismatch+=$balance_mismatch[$j];}
 if($j!=0)
 {
  our $average_mismatch=$allscore_mismatch/$j;
  print "the average of mismatch score balance is $average_mismatch/n";
 }
 for($j=0;$j<@time_balance;$j++)
 {$alltime_balance+=$time_balance[$j];}
 $average_timebalance=$alltime_balance/$j;
 print "the average of total time balance is $average_timebalance/n";
 for($j=0;$j<@identifiers;$j++)
 { 
 if($identifiers[$j]==-1){$errornum++;}
 else {$passnum ++;}
 }
  print"total = $i error = $errornum pass = $passnum/n";
#  system("pause");
  close(MYFILE);
}
main{};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值